-
Notifications
You must be signed in to change notification settings - Fork 0
/
history_steps.js
89 lines (76 loc) · 2.51 KB
/
history_steps.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
var helpers = require('../support/helpers');
var Transaction = require('../../lib/models/transaction_model');
var request = require('request');
var _ = require('underscore');
Given(/^the transaction data has been submitted$/, function(step) {
var self = this;
var mongo = helpers.connectMongo();
mongo.open(function(err, db) {
global.mongodb = db;
// reverse proves that we should get ascending order by date later
_.each(self.transactions.reverse(), function(transaction, index) {
Transaction.insert(transaction, function(err, transaction) {
if (err) throw err;
if (index === self.transactions.length-1) {
db.close();
step.done();
}
})
})
})
})
When(/^I get the history$/, function(step) {
var self = this;
var endpoint = "http://localhost:3000/api/v1/history";
request({
method: 'GET',
uri: endpoint
}, function(err, res, body) {
if (err) throw err;
assert.equal(res.statusCode, 200);
self.resBody = JSON.parse(body);
step.done();
})
});
Then(/^I should get back the history with ids$/, function(step) {
var self = this;
_.each(this.resBody.result, function(transaction, index) {
assert.equal(transaction.date, self.expected[index].date);
assert.equal(transaction.amount, self.expected[index].amount);
assert.equal(transaction.description, self.expected[index].description);
assert.equal(transaction.category, self.expected[index].category);
assert.notEqual(transaction._id, null);
})
step.done();
});
When(/^I process transactions with the following dates$/, function(step, table) {
var self = this;
var ids = [];
_.each(table.hashes(), function(row) {
var transaction = _.find(self.resBody.result, function(transaction) {
return (transaction.date === row.date)
});
ids.push(transaction._id);
})
var endpoint = "http://localhost:3000/api/v1/process";
request({
method: 'POST',
uri: endpoint,
json: {ids: ids}
}, function(err, res, body) {
if (err) throw err;
assert.equal(res.statusCode, 200);
self.resBody = res.body;
step.done();
})
});
var pullIds = function(transactions) {
return _.map(transactions, function(transaction) {
return { date: transaction.date, amount: transaction.amount,
description: transaction.description, category: transaction.category };
});
}
Then(/^I should get back the following transactions$/, function(step, table) {
assert.deepEqual(table.hashes(), pullIds(this.resBody.result));
step.done();
});