1 | const tape = require('tape')
|
2 | const create = require('./helpers/create')
|
3 | const Replicator = require('./helpers/replicator')
|
4 |
|
5 | tape('simple checkout', function (t) {
|
6 | const drive = create()
|
7 |
|
8 | drive.writeFile('/hello', 'world', err => {
|
9 | t.error(err, 'no error')
|
10 | let version = drive.version
|
11 | drive.readFile('/hello', (err, data) => {
|
12 | t.error(err, 'no error')
|
13 | t.same(data, Buffer.from('world'))
|
14 | drive.unlink('/hello', err => {
|
15 | t.error(err, 'no error')
|
16 | drive.readFile('/hello', (err, data) => {
|
17 | t.true(err)
|
18 | t.same(err.code, 'ENOENT')
|
19 | testCheckout(version)
|
20 | })
|
21 | })
|
22 | })
|
23 | })
|
24 |
|
25 | function testCheckout (version) {
|
26 | let oldVersion = drive.checkout(version)
|
27 | oldVersion.readFile('/hello', (err, data) => {
|
28 | t.error(err, 'no error')
|
29 | t.same(data, Buffer.from('world'))
|
30 | t.end()
|
31 | })
|
32 | }
|
33 | })
|
34 |
|
35 |
|
36 |
|
37 | tape.skip('download a version', function (t) {
|
38 | var src = create()
|
39 | var r = new Replicator(t)
|
40 | src.on('ready', function () {
|
41 | t.ok(src.writable)
|
42 | t.ok(src.metadata.writable)
|
43 | t.ok(src.content.writable)
|
44 | src.writeFile('/first.txt', 'number 1', function (err) {
|
45 | t.error(err, 'no error')
|
46 | src.writeFile('/second.txt', 'number 2', function (err) {
|
47 | t.error(err, 'no error')
|
48 | src.writeFile('/third.txt', 'number 3', function (err) {
|
49 | t.error(err, 'no error')
|
50 | t.same(src.version, 3)
|
51 | testDownloadVersion()
|
52 | })
|
53 | })
|
54 | })
|
55 | })
|
56 |
|
57 | function testDownloadVersion () {
|
58 | var clone = create(src.key, { sparse: true })
|
59 | clone.on('content', function () {
|
60 | t.same(clone.version, 3)
|
61 | clone.checkout(2).download(function (err) {
|
62 | t.error(err)
|
63 | clone.readFile('/second.txt', { cached: true }, function (err, content) {
|
64 | t.error(err, 'block not downloaded')
|
65 | t.same(content && content.toString(), 'number 2', 'content does not match')
|
66 | clone.readFile('/third.txt', { cached: true }, function (err, content) {
|
67 | t.same(err && err.message, 'Block not downloaded')
|
68 | r.end()
|
69 | })
|
70 | })
|
71 | })
|
72 | })
|
73 | r.replicate(clone, src)
|
74 | }
|
75 | })
|
76 |
|
77 | tape.skip('closing a read-only, latest clone', function (t) {
|
78 |
|
79 | var clone = create('1d5e5a628d237787afcbfec7041a16f67ba6895e7aa31500013e94ddc638328d', {
|
80 | latest: true
|
81 | })
|
82 | clone.on('error', function (err) {
|
83 | t.fail(err)
|
84 | })
|
85 | clone.close(function (err) {
|
86 | t.error(err)
|
87 | t.end()
|
88 | })
|
89 | })
|