-
Notifications
You must be signed in to change notification settings - Fork 0
/
server.js
88 lines (85 loc) · 2.33 KB
/
server.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
var fs = require("fs");
var request = require("supertest");
describe("Server API", () => {
var testData = JSON.parse(fs.readFileSync(__dirname + "/../../test/data.json", "utf-8"));
before(async () => {
var config = require("../libs/config");
var app = require("../libs/news.js");
request = await request("http://localhost:" + config.get("port"));
var db = await require("mongodb").MongoClient.connect(config.get("db:uri"));
await db.collection("articles").remove();
await db.collection("articles").insertMany(testData.articles.map(el => Object.assign(new Object(), el)));
await db.collection("users").remove();
// await db.collection("users").insertMany(testData.users.map(el => Object.assign(new Object(), el)));
await db.close();
});
describe("on request GET /articles", () => {
it("respond with json", done => {
request
.get("/articles")
.expect("Content-Type", /json/)
.expect(200)
.end(done)
;
});
describe("with public access", () => {
var articles = testData.articles
.sort((a, b) => b.createdAt.localeCompare(a.createdAt))
.filter(el => !el.invisible)
.map(el => new Object({
id: el._id,
title: el.title,
text: el.text,
author: el.author,
createdAt: el.createdAt,
modifiedAt: el.modifiedAt,
modifiedCounter: el.modifiedCounter
}))
;
it("returns 10 first visible articles", done => {
request
.get("/articles")
.expect(200)
.expect({
skiped: 0,
total: articles.length,
articles: articles.slice(0, 10)
})
.end(done)
;
});
for (var i = 0; i < articles.length; i++) {
it("skips "+i+" articles from beginning if passed the parameter skip="+i, (i => {
return done => {
request
.get("/articles?skip="+i)
.expect(200)
.expect({
skiped: i,
total: articles.length,
articles: articles.slice(i, i + 10)
})
.end(done)
;
}
})(i));
}
for (var i = 0; i < articles.length; i++) {
it("returns only "+i+" articles if passed the parameter limit="+i, (i => {
return done => {
request
.get("/articles?limit="+i)
.expect(200)
.expect({
skiped: 0,
total: articles.length,
articles: articles.slice(0, i)
})
.end(done)
;
}
})(i));
}
});
});
});