UNPKG

3.08 kBJavaScriptView Raw
1'use strict'
2var tape = require('tape')
3var pull = require('pull-stream')
4var ssbKeys = require('ssb-keys')
5var createFeed = require('../')
6var opts = ssbKeys
7
8tape('simple', function (t) {
9
10 var ssb = require('./mock')()
11
12 var feed = createFeed(ssb, opts.generate(), opts)
13
14 feed.add({type: 'msg', value: 'hello there!'}, function (err, msg) {
15 if(err) throw err
16 console.log('added', msg)
17 t.assert(!!msg)
18 t.assert(!!msg.key)
19 t.assert(!!msg.value)
20 pull(
21 ssb.createFeedStream(),
22 pull.collect(function (err, ary) {
23 if(err) throw err
24 console.log('**************************')
25 console.log(JSON.stringify(ary, null, 2))
26
27 t.equal(ary.length, 1)
28 t.ok(!!ary[0].key)
29 t.ok(!!ary[0].value)
30 t.end()
31 })
32 )
33 })
34
35})
36
37tape('tail', function (t) {
38
39 var ssb = require('./mock')()
40
41 var feed = createFeed(ssb, opts.generate(), opts)
42
43 console.log('add 1'); console.log('add 2');
44 var nDrains = 0, nAdds = 2;
45
46 feed.add({
47 type: 'msg',
48 value:'hello there!'
49 }, function (err, msg1) {
50
51 if(err) throw err
52 var lasthash = msg1.key
53
54 function addAgain() {
55 feed.add({type: 'msg', value: 'message '+nDrains}, function(err, msgX) {
56 if(err) throw err
57 t.equal(msgX.value.previous, lasthash)
58 console.log(msgX.value.previous, lasthash)
59 lasthash = msgX.key;
60 nAdds++;
61 console.log('add', nAdds);
62 if (err) throw err;
63 if (nAdds > 7) {
64 console.log('TIMEOUT');
65 throw new Error('Should have had 5 drains by now.');
66 }
67 });
68 }
69
70 var int = setInterval(addAgain, 100);
71
72 pull(
73 ssb.createFeedStream({ live: true }),
74 pull.drain(function (ary) {
75 nDrains++;
76 if (nDrains == 5) {
77 t.assert(true);
78 t.end()
79 clearInterval(int);
80 }
81 })
82 )
83 addAgain();
84 })
85})
86
87tape('tail, parallel add', function (t) {
88
89 var ssb = require('./mock')()
90
91 var feed = createFeed(ssb, opts.generate(), opts)
92
93 var nDrains = 0, nAdds = 2, l = 7
94 feed.add({type: 'msg', value: 'hello there!'}, function (err, msg1) {
95 if(err) throw err
96
97 var lasthash = msg1.key
98 function addAgain() {
99 feed.add('msg', 'message '+nDrains, function(err, msgX) {
100 t.equal(msgX.value.previous, lasthash)
101 lasthash = msgX.key;
102 nAdds++;
103 if (err) throw err;
104 });
105 if(--l) addAgain()
106 }
107
108 pull(
109 ssb.createFeedStream({ live: true }),
110 pull.drain(function (ary) {
111 nDrains++;
112 console.log('drain', nDrains)
113 if (nDrains == 7) {
114 t.assert(true);
115 t.end()
116 }
117 })
118 )
119 addAgain()
120 })
121})
122
123tape('too big', function (t) {
124 var ssb = require('./mock')()
125 var keys = opts.generate()
126 var feed = createFeed(ssb, opts.generate(), opts)
127 var str = ''
128 for (var i=0; i < 808; i++) str += '1234567890'
129
130 feed.add({type: 'msg', value: str}, function (err, msg) {
131 if(!err) throw new Error('too big was allowed')
132 t.end()
133 })
134})
135