1 | const test = require('tape')
|
2 | const create = require('./helpers/create')
|
3 |
|
4 | test('can create a tag for the current version', t => {
|
5 | var drive = create()
|
6 | drive.writeFile('/hello.txt', 'world', err => {
|
7 | t.error(err, 'no error')
|
8 | const taggedVersion = drive.version
|
9 | drive.createTag('version1', err => {
|
10 | t.error(err, 'no error')
|
11 | drive.getTaggedVersion('version1', (err, version) => {
|
12 | t.error(err, 'no error')
|
13 | t.same(version, taggedVersion)
|
14 | t.end()
|
15 | })
|
16 | })
|
17 | })
|
18 | })
|
19 |
|
20 | test('can create a tag for an explicit version', t => {
|
21 | var drive = create()
|
22 | drive.writeFile('/hello.txt', 'world', err => {
|
23 | t.error(err, 'no error')
|
24 | const taggedVersion = drive.version
|
25 | drive.writeFile('/goodbye.txt', 'goodbye', err => {
|
26 | t.error(err, 'no error')
|
27 | drive.createTag('version1', taggedVersion, err => {
|
28 | t.error(err, 'no error')
|
29 | drive.getTaggedVersion('version1', (err, version) => {
|
30 | t.error(err, 'no error')
|
31 | t.same(version, taggedVersion)
|
32 | t.end()
|
33 | })
|
34 | })
|
35 | })
|
36 | })
|
37 | })
|
38 |
|
39 | test('can list all tags', t => {
|
40 | var drive = create()
|
41 | const versions = new Map()
|
42 |
|
43 | drive.writeFile('/hello.txt', 'world', err => {
|
44 | t.error(err, 'no error')
|
45 | versions.set('version1', drive.version)
|
46 | drive.createTag('version1', err => {
|
47 | t.error(err, 'no error')
|
48 | drive.writeFile('/goodbye.txt', 'goodbye', err => {
|
49 | t.error(err, 'no error')
|
50 | versions.set('version2', drive.version)
|
51 | drive.createTag('version2', err => {
|
52 | t.error(err, 'no error')
|
53 | return ontagged()
|
54 | })
|
55 | })
|
56 | })
|
57 | })
|
58 |
|
59 | function ontagged () {
|
60 | drive.getAllTags((err, tagMap) => {
|
61 | t.error(err, 'no error')
|
62 | t.same(tagMap.size, 2)
|
63 | t.same(tagMap.get('version1'), versions.get('version1'))
|
64 | t.same(tagMap.get('version2'), versions.get('version2'))
|
65 | t.end()
|
66 | })
|
67 | }
|
68 | })
|
69 |
|
70 | test('can delete a tag', t => {
|
71 | var drive = create()
|
72 | const versions = new Map()
|
73 |
|
74 | drive.writeFile('/hello.txt', 'world', err => {
|
75 | t.error(err, 'no error')
|
76 | versions.set('version1', drive.version)
|
77 | drive.createTag('version1', err => {
|
78 | t.error(err, 'no error')
|
79 | drive.writeFile('/goodbye.txt', 'goodbye', err => {
|
80 | t.error(err, 'no error')
|
81 | versions.set('version2', drive.version)
|
82 | drive.createTag('version2', err => {
|
83 | t.error(err, 'no error')
|
84 | drive.deleteTag('version1', err => {
|
85 | t.error(err, 'no error')
|
86 | return ontagged()
|
87 | })
|
88 | })
|
89 | })
|
90 | })
|
91 | })
|
92 |
|
93 | function ontagged () {
|
94 | drive.getAllTags((err, tagMap) => {
|
95 | t.error(err, 'no error')
|
96 | t.same(tagMap.size, 1)
|
97 | t.same(tagMap.get('version2'), versions.get('version2'))
|
98 | t.false(tagMap.get('version1'))
|
99 | t.end()
|
100 | })
|
101 | }
|
102 | })
|