git ssb

0+

Piet / ssb-loomio



Tree: 19874c0c0d66afbcbbf49555bb33b9b4de8909e4

Files: 19874c0c0d66afbcbbf49555bb33b9b4de8909e4 / test / poll / async / get.test.js

2354 bytesRaw
1var test = require('tape')
2var Server = require('scuttle-testbot')
3var pull = require('pull-stream')
4
5var ChooseOnePoll = require('../../../poll/sync/chooseOne')
6var getPoll = require('../../../poll/async/get')
7
8Server
9 .use(require('ssb-backlinks'))
10
11var server = Server({name: 'testBotName'})
12
13var ChooseOne = require('../../../position/async/chooseOne')(server)
14
15var katie = server.createFeed()
16var piet = server.createFeed()
17
18var pollContent = ChooseOnePoll({
19 title: "what's our mascott team?",
20 choices: ['prairie dog', 'kea', 'hermit crab'],
21 closesAt: nDaysTime(2)
22})
23
24test('pull.async.get', t => {
25 piet.publish(pollContent, (err, poll) => {
26 if (err) throw err
27
28 pull(
29 pull.values([
30 { author: katie, position: { poll, choice: 1, reason: 'they are sick!' } },
31 { author: piet, position: { poll, choice: 2, reason: 'scuttles 4life' } }
32 ]),
33 pull.asyncMap((t, cb) => {
34 ChooseOne(t.position, (err, position) => {
35 t.position = position
36 cb(err, t)
37 })
38 }),
39 pull.asyncMap((t, cb) => t.author.publish(t.position, cb)),
40 pull.drain(
41 m => {}, // console.log(m.value.content.type),
42 onDone
43 )
44 )
45
46 function onDone () {
47 getPoll(server)(poll.key, (err, data) => {
48 if (err) throw err
49
50 // print(data)
51 t.equal(data.key, poll.key, 'has key')
52 t.deepEqual(data.value, poll.value, 'has value')
53
54 t.equal(data.author, poll.value.author, 'has author')
55 t.equal(data.title, poll.value.content.title, 'has title')
56
57 t.equal(data.positions.length, 2, 'has positions')
58
59 var positions = data.positions
60 t.deepEqual(positions[0].value.content.branch, [], 'first published postion has no branch')
61 t.equal(positions[1].value.content.branch[0], positions[0].key, 'second published branch has first position as branch')
62
63 t.equal(positions[0].choice, pollContent.details.choices[1], 'choice is the value from the poll, not the index.')
64
65 t.ok(data.results[1].voters[katie.id])
66 t.ok(data.results[2].voters[piet.id])
67
68 server.close()
69 t.end()
70 })
71 }
72 })
73})
74
75function print (obj) {
76 console.log(JSON.stringify(obj, null, 2))
77}
78
79function nDaysTime (n) {
80 var d = new Date()
81 d.setDate(d.getDate() + n)
82
83 return d.toISOString()
84}
85

Built with git-ssb-web