Files: 19874c0c0d66afbcbbf49555bb33b9b4de8909e4 / test / poll / async / get.test.js
2354 bytesRaw
1 | var test = require('tape') |
2 | var Server = require('scuttle-testbot') |
3 | var pull = require('pull-stream') |
4 | |
5 | var ChooseOnePoll = require('../../../poll/sync/chooseOne') |
6 | var getPoll = require('../../../poll/async/get') |
7 | |
8 | Server |
9 | .use(require('ssb-backlinks')) |
10 | |
11 | var server = Server({name: 'testBotName'}) |
12 | |
13 | var ChooseOne = require('../../../position/async/chooseOne')(server) |
14 | |
15 | var katie = server.createFeed() |
16 | var piet = server.createFeed() |
17 | |
18 | var pollContent = ChooseOnePoll({ |
19 | title: "what's our mascott team?", |
20 | choices: ['prairie dog', 'kea', 'hermit crab'], |
21 | closesAt: nDaysTime(2) |
22 | }) |
23 | |
24 | test('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 | |
75 | function print (obj) { |
76 | console.log(JSON.stringify(obj, null, 2)) |
77 | } |
78 | |
79 | function 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