Files: 6d51512c0a6ee2e9c2d4efe211c22333055c8c03 / test / poll / async / get.test.js
1919 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 ChooseOne = require('../../../position/sync/chooseOne') |
7 | var getPoll = require('../../../poll/async/get') |
8 | |
9 | Server |
10 | .use(require('ssb-backlinks')) |
11 | |
12 | var server = Server({name: 'testBotName'}) |
13 | |
14 | var katie = server.createFeed() |
15 | var piet = server.createFeed() |
16 | |
17 | var pollContent = ChooseOnePoll({ |
18 | title: "what's our mascott team?", |
19 | choices: ['prairie dog', 'kea', 'hermit crab'], |
20 | closesAt: nDaysTime(2) |
21 | }) |
22 | |
23 | test('pull.async.get', t => { |
24 | piet.publish(pollContent, (err, poll) => { |
25 | if (err) throw err |
26 | |
27 | pull( |
28 | pull.values([ |
29 | { author: katie, position: ChooseOne({ poll, choice: 1, reason: 'they are sick!' }) }, |
30 | { author: piet, position: ChooseOne({ poll, choice: 2, reason: 'scuttles 4life' }) } |
31 | ]), |
32 | pull.asyncMap((t, cb) => t.author.publish(t.position, cb)), |
33 | pull.drain( |
34 | m => {}, // console.log(m.value.content.type), |
35 | onDone |
36 | ) |
37 | ) |
38 | |
39 | function onDone () { |
40 | getPoll(server)(poll.key, (err, data) => { |
41 | if (err) throw err |
42 | |
43 | print(data) |
44 | t.equal(data.key, poll.key, 'has key') |
45 | t.deepEqual(data.value, poll.value, 'has value') |
46 | |
47 | t.equal(data.author, poll.value.author, 'has author') |
48 | t.equal(data.title, poll.value.content.title, 'has title') |
49 | |
50 | t.equal(data.positions.length, 2, 'has positions') |
51 | |
52 | t.deepEqual(data.results, { |
53 | 1: [katie.id], // TODO update this data structure |
54 | 2: [piet.id], |
55 | errors: [] // TODO prune this later |
56 | }, 'has results!') |
57 | |
58 | server.close() |
59 | t.end() |
60 | }) |
61 | } |
62 | }) |
63 | }) |
64 | |
65 | function print (obj) { |
66 | console.log(JSON.stringify(obj, null, 2)) |
67 | } |
68 | |
69 | function nDaysTime (n) { |
70 | var d = new Date() |
71 | return d.setDate(d.getDate() + n) |
72 | // returns integer! |
73 | } |
74 |
Built with git-ssb-web