UNPKG

2.62 kBJavaScriptView Raw
1const tape = require('tape')
2const create = require('./helpers/create')
3const Replicator = require('./helpers/replicator')
4
5tape('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// TODO: Re-enable the following tests once the `download` and `fetchLatest` APIs are reimplemented.
36
37tape.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
77tape.skip('closing a read-only, latest clone', function (t) {
78 // This is just a sample key of a dead dat
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})