-
Notifications
You must be signed in to change notification settings - Fork 417
/
Copy pathbook.js
151 lines (140 loc) · 3.5 KB
/
book.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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
const { chai, server, should } = require("./testConfig");
const BookModel = require("../models/BookModel");
/**
* Test cases to test all the book APIs
* Covered Routes:
* (1) Login
* (2) Store book
* (3) Get all books
* (4) Get single book
* (5) Update book
* (6) Delete book
*/
describe("Book", () => {
//Before each test we empty the database
before((done) => {
BookModel.deleteMany({}, (err) => {
done();
});
});
// Prepare data for testing
const userTestData = {
"password":"Test@123",
"email":"maitraysuthar@test12345.com"
};
// Prepare data for testing
const testData = {
"title":"testing book",
"description":"testing book desc",
"isbn":"3214htrff4"
};
/*
* Test the /POST route
*/
describe("/POST Login", () => {
it("it should do user Login for book", (done) => {
chai.request(server)
.post("/api/auth/login")
.send({"email": userTestData.email,"password": userTestData.password})
.end((err, res) => {
res.should.have.status(200);
res.body.should.have.property("message").eql("Login Success.");
userTestData.token = res.body.data.token;
done();
});
});
});
/*
* Test the /POST route
*/
describe("/POST Book Store", () => {
it("It should send validation error for store book", (done) => {
chai.request(server)
.post("/api/book")
.send()
.set("Authorization", "Bearer "+ userTestData.token)
.end((err, res) => {
res.should.have.status(400);
done();
});
});
});
/*
* Test the /POST route
*/
describe("/POST Book Store", () => {
it("It should store book", (done) => {
chai.request(server)
.post("/api/book")
.send(testData)
.set("Authorization", "Bearer "+ userTestData.token)
.end((err, res) => {
res.should.have.status(200);
res.body.should.have.property("message").eql("Book add Success.");
done();
});
});
});
/*
* Test the /GET route
*/
describe("/GET All book", () => {
it("it should GET all the books", (done) => {
chai.request(server)
.get("/api/book")
.set("Authorization", "Bearer "+ userTestData.token)
.end((err, res) => {
res.should.have.status(200);
res.body.should.have.property("message").eql("Operation success");
testData._id = res.body.data[0]._id;
done();
});
});
});
/*
* Test the /GET/:id route
*/
describe("/GET/:id book", () => {
it("it should GET the books", (done) => {
chai.request(server)
.get("/api/book/"+testData._id)
.set("Authorization", "Bearer "+ userTestData.token)
.end((err, res) => {
res.should.have.status(200);
res.body.should.have.property("message").eql("Operation success");
done();
});
});
});
/*
* Test the /PUT/:id route
*/
describe("/PUT/:id book", () => {
it("it should PUT the books", (done) => {
chai.request(server)
.put("/api/book/"+testData._id)
.send(testData)
.set("Authorization", "Bearer "+ userTestData.token)
.end((err, res) => {
res.should.have.status(200);
res.body.should.have.property("message").eql("Book update Success.");
done();
});
});
});
/*
* Test the /DELETE/:id route
*/
describe("/DELETE/:id book", () => {
it("it should DELETE the books", (done) => {
chai.request(server)
.delete("/api/book/"+testData._id)
.set("Authorization", "Bearer "+ userTestData.token)
.end((err, res) => {
res.should.have.status(200);
res.body.should.have.property("message").eql("Book delete Success.");
done();
});
});
});
});