-
My Bills
-
-
-
-
-
- {{head.label}}
-
-
-
- {{ head.label }}
-
-
-
- {{ head.label }}
-
-
-
- {{cell.item.journey.entryLocation.name }}
-
-
- {{ cell.item.journey.exitLocation.name }}
-
-
- {{ cell.item.journey.regNumber }}
-
-
- {{ formatDate(cell.item.journey.journeyDateTime) }}
-
-
- {{ formatCost(cell.item.cost) }}
-
-
- Pay Bill
-
-
-
-
- Per Page:
-
-
-
-
{{ totalCount }} bills in {{ Math.ceil(totalCount / limit) }} pages
+
+
Back
+
{{pageName}}
+
+
+
+
+
+ {{head.label}}
+
+
+
+ {{ head.label }}
+
+
+
+ {{ head.label }}
+
+
+
+ {{cell.item.journey.entryLocation.name }}
+
+
+ {{ cell.item.journey.exitLocation.name }}
+
+
+ {{ cell.item.journey.regNumber }}
+
+
+ {{ formatDate(cell.item.journey.journeyDateTime) }}
+
+
+ {{ formatCost(cell.item.cost) }}
+
+
+ Pay Bill
+
+
+
+
+ Per Page:
+
+
+
+ {{ totalCount }} bills in {{ Math.ceil(totalCount / limit) }} pages
+
-
\ No newline at end of file
From 94b4bd333f9b3f8f81af78599bf2f740e9d0ba8d Mon Sep 17 00:00:00 2001
From: Lenton99 <49190812+Lenton99@users.noreply.github.com>
Date: Thu, 10 Feb 2022 12:57:21 +0000
Subject: [PATCH 2/9] HT-29 Implemented server testing
---
server/.nyc_output/processinfo/index.json | 2 +-
server/coverage/lcov.info | 233 +++++++++++-------
server/middleware/auth/authJwt.js | 24 +-
server/routes/user.routes.js | 4 +-
.../test/integration/user.controller.test.js | 73 ++++++
server/test/unit/auth.test.js | 58 +++++
6 files changed, 294 insertions(+), 100 deletions(-)
create mode 100644 server/test/integration/user.controller.test.js
create mode 100644 server/test/unit/auth.test.js
diff --git a/server/.nyc_output/processinfo/index.json b/server/.nyc_output/processinfo/index.json
index c23d26d..39c296d 100644
--- a/server/.nyc_output/processinfo/index.json
+++ b/server/.nyc_output/processinfo/index.json
@@ -1 +1 @@
-{"processes":{"50560bfc-9d99-4dfb-92f6-1329d287dafe":{"parent":null,"children":[]}},"files":{"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\app.js":["50560bfc-9d99-4dfb-92f6-1329d287dafe"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\database\\index.js":["50560bfc-9d99-4dfb-92f6-1329d287dafe"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\config\\db.config.js":["50560bfc-9d99-4dfb-92f6-1329d287dafe"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\models\\journey.model.js":["50560bfc-9d99-4dfb-92f6-1329d287dafe"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\models\\bill.model.js":["50560bfc-9d99-4dfb-92f6-1329d287dafe"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\utilities.js":["50560bfc-9d99-4dfb-92f6-1329d287dafe"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\models\\location.model.js":["50560bfc-9d99-4dfb-92f6-1329d287dafe"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\models\\user.model.js":["50560bfc-9d99-4dfb-92f6-1329d287dafe"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\routes\\auth.routes.js":["50560bfc-9d99-4dfb-92f6-1329d287dafe"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\controllers\\auth.controller.js":["50560bfc-9d99-4dfb-92f6-1329d287dafe"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\business\\user.business.js":["50560bfc-9d99-4dfb-92f6-1329d287dafe"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\datalayer\\mongo.js":["50560bfc-9d99-4dfb-92f6-1329d287dafe"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\routes\\bill.routes.js":["50560bfc-9d99-4dfb-92f6-1329d287dafe"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\middleware\\auth\\authJwt.js":["50560bfc-9d99-4dfb-92f6-1329d287dafe"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\controllers\\bill.controller.js":["50560bfc-9d99-4dfb-92f6-1329d287dafe"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\business\\bill.business.js":["50560bfc-9d99-4dfb-92f6-1329d287dafe"]},"externalIds":{}}
\ No newline at end of file
+{"processes":{"e285f173-7f01-4ca1-be5b-403c6759180b":{"parent":null,"children":[]}},"files":{"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\app.js":["e285f173-7f01-4ca1-be5b-403c6759180b"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\database\\index.js":["e285f173-7f01-4ca1-be5b-403c6759180b"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\config\\db.config.js":["e285f173-7f01-4ca1-be5b-403c6759180b"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\models\\journey.model.js":["e285f173-7f01-4ca1-be5b-403c6759180b"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\models\\bill.model.js":["e285f173-7f01-4ca1-be5b-403c6759180b"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\utilities.js":["e285f173-7f01-4ca1-be5b-403c6759180b"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\models\\location.model.js":["e285f173-7f01-4ca1-be5b-403c6759180b"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\models\\user.model.js":["e285f173-7f01-4ca1-be5b-403c6759180b"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\routes\\auth.routes.js":["e285f173-7f01-4ca1-be5b-403c6759180b"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\controllers\\auth.controller.js":["e285f173-7f01-4ca1-be5b-403c6759180b"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\business\\user.business.js":["e285f173-7f01-4ca1-be5b-403c6759180b"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\datalayer\\mongo.js":["e285f173-7f01-4ca1-be5b-403c6759180b"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\routes\\bill.routes.js":["e285f173-7f01-4ca1-be5b-403c6759180b"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\middleware\\auth\\authJwt.js":["e285f173-7f01-4ca1-be5b-403c6759180b"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\controllers\\bill.controller.js":["e285f173-7f01-4ca1-be5b-403c6759180b"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\business\\bill.business.js":["e285f173-7f01-4ca1-be5b-403c6759180b"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\routes\\user.routes.js":["e285f173-7f01-4ca1-be5b-403c6759180b"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\controllers\\user.controller.js":["e285f173-7f01-4ca1-be5b-403c6759180b"]},"externalIds":{}}
\ No newline at end of file
diff --git a/server/coverage/lcov.info b/server/coverage/lcov.info
index 708a31e..bc25b2d 100644
--- a/server/coverage/lcov.info
+++ b/server/coverage/lcov.info
@@ -1,6 +1,6 @@
TN:
SF:app.js
-FN:31,(anonymous_0)
+FN:32,(anonymous_0)
FNF:1
FNH:0
FNDA:0,(anonymous_0)
@@ -21,7 +21,7 @@ DA:29,1
DA:30,1
DA:31,1
DA:32,1
-DA:37,1
+DA:33,1
DA:38,1
DA:39,1
DA:40,1
@@ -29,11 +29,13 @@ DA:41,1
DA:42,1
DA:43,1
DA:44,1
-DA:47,1
+DA:45,1
DA:48,1
+DA:49,1
DA:50,1
-LF:28
-LH:28
+DA:52,1
+LF:30
+LH:30
BRF:0
BRH:0
end_of_record
@@ -108,27 +110,31 @@ FN:8,(anonymous_0)
FN:16,(anonymous_1)
FN:18,(anonymous_2)
FN:50,(anonymous_3)
-FN:57,(anonymous_4)
-FN:63,(anonymous_5)
-FN:71,(anonymous_6)
-FN:82,(anonymous_7)
-FN:94,(anonymous_8)
-FN:97,(anonymous_9)
-FN:101,(anonymous_10)
-FN:110,isUserDataValid
-FNF:12
+FN:58,(anonymous_4)
+FN:64,(anonymous_5)
+FN:72,(anonymous_6)
+FN:83,(anonymous_7)
+FN:95,(anonymous_8)
+FN:98,(anonymous_9)
+FN:102,(anonymous_10)
+FN:110,(anonymous_11)
+FN:117,(anonymous_12)
+FN:126,isUserDataValid
+FNF:14
FNH:5
-FNDA:1,(anonymous_0)
-FNDA:1,(anonymous_1)
-FNDA:1,(anonymous_2)
+FNDA:2,(anonymous_0)
+FNDA:2,(anonymous_1)
+FNDA:2,(anonymous_2)
FNDA:0,(anonymous_3)
FNDA:0,(anonymous_4)
FNDA:0,(anonymous_5)
FNDA:0,(anonymous_6)
FNDA:0,(anonymous_7)
-FNDA:1,(anonymous_8)
-FNDA:1,(anonymous_9)
+FNDA:2,(anonymous_8)
+FNDA:2,(anonymous_9)
FNDA:0,(anonymous_10)
+FNDA:0,(anonymous_11)
+FNDA:0,(anonymous_12)
FNDA:0,isUserDataValid
DA:1,1
DA:2,1
@@ -136,43 +142,46 @@ DA:3,1
DA:4,1
DA:5,1
DA:7,1
-DA:10,1
-DA:17,1
-DA:19,1
-DA:24,1
+DA:10,2
+DA:17,2
+DA:19,2
+DA:24,2
DA:25,0
-DA:31,1
-DA:43,1
-DA:50,0
-DA:58,0
-DA:64,0
-DA:72,0
+DA:31,2
+DA:43,2
+DA:51,0
+DA:59,0
+DA:65,0
DA:73,0
-DA:75,0
-DA:82,0
+DA:74,0
+DA:76,0
DA:83,0
DA:84,0
DA:85,0
DA:86,0
DA:87,0
-DA:95,1
-DA:99,1
-DA:102,0
+DA:88,0
+DA:96,2
+DA:100,2
+DA:103,0
DA:111,0
-LF:29
+DA:117,0
+DA:118,0
+DA:127,0
+LF:32
LH:14
BRDA:24,0,0,0
-BRDA:24,0,1,1
-BRDA:72,1,0,0
-BRDA:72,1,1,0
-BRDA:83,2,0,0
-BRDA:83,2,1,0
-BRDA:85,3,0,0
-BRDA:85,3,1,0
-BRDA:111,4,0,0
-BRDA:111,4,1,0
-BRDA:111,4,2,0
-BRDA:111,4,3,0
+BRDA:24,0,1,2
+BRDA:73,1,0,0
+BRDA:73,1,1,0
+BRDA:84,2,0,0
+BRDA:84,2,1,0
+BRDA:86,3,0,0
+BRDA:86,3,1,0
+BRDA:127,4,0,0
+BRDA:127,4,1,0
+BRDA:127,4,2,0
+BRDA:127,4,3,0
BRF:12
BRH:1
end_of_record
@@ -196,33 +205,33 @@ FN:34,(anonymous_4)
FN:39,(anonymous_5)
FN:47,(anonymous_6)
FNF:7
-FNH:3
-FNDA:1,(anonymous_0)
-FNDA:1,(anonymous_1)
+FNH:2
+FNDA:2,(anonymous_0)
+FNDA:2,(anonymous_1)
FNDA:0,(anonymous_2)
FNDA:0,(anonymous_3)
FNDA:0,(anonymous_4)
FNDA:0,(anonymous_5)
-FNDA:1,(anonymous_6)
+FNDA:0,(anonymous_6)
DA:1,1
DA:2,1
DA:7,1
-DA:8,1
-DA:11,1
-DA:12,1
-DA:13,1
-DA:14,1
-DA:16,1
+DA:8,2
+DA:11,2
+DA:12,2
+DA:13,2
+DA:14,2
+DA:16,2
DA:24,0
DA:31,1
DA:32,0
DA:35,0
DA:40,0
DA:47,1
-DA:48,1
-DA:49,1
+DA:48,0
+DA:49,0
LF:17
-LH:13
+LH:11
BRF:0
BRH:0
end_of_record
@@ -268,6 +277,27 @@ BRF:0
BRH:0
end_of_record
TN:
+SF:controllers\user.controller.js
+FN:7,(anonymous_0)
+FN:9,(anonymous_1)
+FN:10,(anonymous_2)
+FNF:3
+FNH:0
+FNDA:0,(anonymous_0)
+FNDA:0,(anonymous_1)
+FNDA:0,(anonymous_2)
+DA:1,1
+DA:2,1
+DA:7,1
+DA:8,0
+DA:9,0
+DA:11,0
+LF:6
+LH:3
+BRF:0
+BRH:0
+end_of_record
+TN:
SF:database\index.js
FN:25,(anonymous_0)
FN:29,setRunValidators
@@ -316,35 +346,44 @@ TN:
SF:datalayer\mongo.js
FN:2,(anonymous_0)
FN:10,(anonymous_1)
-FN:15,(anonymous_2)
-FN:16,(anonymous_3)
-FN:25,(anonymous_4)
-FN:34,(anonymous_5)
-FN:41,(anonymous_6)
-FN:48,(anonymous_7)
-FN:51,(anonymous_8)
-FNF:9
+FN:16,(anonymous_2)
+FN:17,(anonymous_3)
+FN:23,(anonymous_4)
+FN:28,(anonymous_5)
+FN:29,(anonymous_6)
+FN:38,(anonymous_7)
+FN:48,(anonymous_8)
+FN:55,(anonymous_9)
+FN:62,(anonymous_10)
+FN:66,(anonymous_11)
+FNF:12
FNH:2
-FNDA:2,(anonymous_0)
+FNDA:3,(anonymous_0)
FNDA:0,(anonymous_1)
FNDA:0,(anonymous_2)
FNDA:0,(anonymous_3)
FNDA:0,(anonymous_4)
-FNDA:1,(anonymous_5)
+FNDA:0,(anonymous_5)
FNDA:0,(anonymous_6)
FNDA:0,(anonymous_7)
-FNDA:0,(anonymous_8)
-DA:4,2
+FNDA:2,(anonymous_8)
+FNDA:0,(anonymous_9)
+FNDA:0,(anonymous_10)
+FNDA:0,(anonymous_11)
+DA:4,3
DA:11,0
-DA:16,0
DA:17,0
-DA:26,0
-DA:35,1
-DA:42,0
-DA:49,0
-DA:51,0
-DA:56,1
-LF:10
+DA:18,0
+DA:24,0
+DA:29,0
+DA:30,0
+DA:39,0
+DA:49,2
+DA:56,0
+DA:63,0
+DA:67,0
+DA:72,1
+LF:13
LH:3
BRF:0
BRH:0
@@ -353,10 +392,12 @@ TN:
SF:middleware\auth\authJwt.js
FN:4,(anonymous_0)
FN:12,(anonymous_1)
-FNF:2
-FNH:0
+FN:26,(anonymous_2)
+FNF:3
+FNH:1
FNDA:0,(anonymous_0)
FNDA:0,(anonymous_1)
+FNDA:1,(anonymous_2)
DA:1,1
DA:4,1
DA:5,0
@@ -370,17 +411,24 @@ DA:19,0
DA:20,0
DA:21,0
DA:22,0
+DA:26,1
+DA:27,1
+DA:28,1
+DA:29,0
+DA:34,1
DA:37,1
-LF:14
-LH:3
+LF:19
+LH:7
BRDA:5,0,0,0
BRDA:5,0,1,0
BRDA:5,1,0,0
BRDA:5,1,1,0
BRDA:13,2,0,0
BRDA:13,2,1,0
-BRF:6
-BRH:0
+BRDA:28,3,0,0
+BRDA:28,3,1,1
+BRF:8
+BRH:1
end_of_record
TN:
SF:models\bill.model.js
@@ -481,3 +529,18 @@ LH:8
BRF:0
BRH:0
end_of_record
+TN:
+SF:routes\user.routes.js
+FNF:0
+FNH:0
+DA:1,1
+DA:2,1
+DA:3,1
+DA:6,1
+DA:9,1
+DA:11,1
+LF:6
+LH:6
+BRF:0
+BRH:0
+end_of_record
diff --git a/server/middleware/auth/authJwt.js b/server/middleware/auth/authJwt.js
index 07efcd4..aca540f 100644
--- a/server/middleware/auth/authJwt.js
+++ b/server/middleware/auth/authJwt.js
@@ -23,18 +23,18 @@ const checkJwtToken = (req, res, next) => {
});
};
-// const isOperator = (req, res, next) => {
-// const type = req.type;
-// if (type !== "Toll Operator") {
-// return res.status(403).send({
-// message:
-// "Unauthorized: You not do have permission to view this page.",
-// });
-// }
-// return next();
-// };
+const isOperator = (req, res, next) => {
+ const type = req.type;
+ if (type !== "Toll Operator") {
+ return res.status(403).send({
+ message:
+ "Unauthorized: You not do have permission to view this page.",
+ });
+ }
+ return next();
+};
module.exports = {
- checkJwtToken
- //isOperator,
+ checkJwtToken,
+ isOperator,
};
diff --git a/server/routes/user.routes.js b/server/routes/user.routes.js
index b9adb37..18c3768 100644
--- a/server/routes/user.routes.js
+++ b/server/routes/user.routes.js
@@ -1,11 +1,11 @@
const express = require("express");
const router = express.Router();
-const { checkJwtToken } = require("../middleware/auth/authJwt");
+const { checkJwtToken, isOperator } = require("../middleware/auth/authJwt");
// Get the Bill controller
const userController = require("../controllers/user.controller");
// Get All Users
-router.get("/", checkJwtToken, userController.getAllUsers);
+router.get("/", checkJwtToken, isOperator, userController.getAllUsers);
module.exports = router;
diff --git a/server/test/integration/user.controller.test.js b/server/test/integration/user.controller.test.js
new file mode 100644
index 0000000..7f95a4f
--- /dev/null
+++ b/server/test/integration/user.controller.test.js
@@ -0,0 +1,73 @@
+let chai = require("chai");
+let chaiHttp = require("chai-http");
+const { ListIndexesCursor } = require("mongoose/node_modules/mongodb");
+let server = require("../../app");
+let should = chai.should();
+chai.use(chaiHttp);
+
+before(function (done) {
+ chai.request(server)
+ .post("/auth/login")
+ .send({
+ email: "operator@email.com",
+ password: "test1",
+ })
+ .end((err, res) => {
+ authCookie = res.headers["set-cookie"].pop().split(";")[0];
+ authCookieSig = res.headers["set-cookie"].pop().split(";")[0];
+ done();
+ });
+});
+
+describe("Testing /user paths", () => {
+ it("Should get all users", (done) => {
+ // Arrange
+ const url = "/user/";
+ // Act
+ chai.request(server)
+ .get(url)
+ .set("Cookie", authCookie + "; " + authCookieSig)
+ .end((err, res) => {
+ // Assert
+ res.should.have.status(200);
+ res.should.be.a("object");
+
+ done();
+ });
+ });
+});
+
+describe("Testing /user paths", () => {
+ before(function (done) {
+ chai.request(server)
+ .post("/auth/login")
+ .send({
+ email: "test@email.com",
+ password: "test1",
+ })
+ .end((err, res) => {
+ authCookie = res.headers["set-cookie"].pop().split(";")[0];
+ authCookieSig = res.headers["set-cookie"].pop().split(";")[0];
+ done();
+ });
+ });
+
+ it("Should not get all users", (done) => {
+ // Arrange
+ const url = "/user/";
+ // Act
+ chai.request(server)
+ .get(url)
+ .set("Cookie", authCookie + "; " + authCookieSig)
+ .end((err, res) => {
+ // Assert
+ res.should.have.status(403);
+ res.should.be.a("object");
+ res.body.message.should.be.eql(
+ "Unauthorized: You not do have permission to view this page."
+ );
+
+ done();
+ });
+ });
+});
diff --git a/server/test/unit/auth.test.js b/server/test/unit/auth.test.js
new file mode 100644
index 0000000..17cc680
--- /dev/null
+++ b/server/test/unit/auth.test.js
@@ -0,0 +1,58 @@
+let chai = require("chai");
+const { isOperator } = require("../../middleware/auth/authJwt");
+let should = chai.should();
+let expect = chai.expect;
+
+describe("Testing auth functions", () => {
+ it("Testing isOperator with user Driver", (done) => {
+ // Arrange
+ let called = false;
+ let res = {
+ send: function (response) {
+ expect(response.message).to.be.equal(
+ "Unauthorized: You not do have permission to view this page."
+ );
+ },
+ status: function () {
+ return this;
+ },
+ };
+ let next = function () {
+ called = true;
+ };
+
+ // Act
+ isOperator({ type: "Driver" }, res, next);
+
+ // Assert
+ expect(called).to.be.false;
+
+ done();
+ });
+
+ it("Testing isOperator with user Toll Operator", (done) => {
+ // Arrange
+ let called = false;
+ let res = {
+ send: function (response) {
+ expect(response.message).to.be.equal(
+ "Unauthorized: You not do have permission to view this page."
+ );
+ },
+ status: function () {
+ return this;
+ },
+ };
+ let next = function () {
+ called = true;
+ };
+
+ // Act
+ isOperator({ type: "Toll Operator" }, res, next);
+
+ // Assert
+ expect(called).to.be.true;
+
+ done();
+ });
+});
From fd64b73e9e5cec193ce36962bf68baba07a169ab Mon Sep 17 00:00:00 2001
From: Lenton99 <49190812+Lenton99@users.noreply.github.com>
Date: Thu, 10 Feb 2022 13:00:24 +0000
Subject: [PATCH 3/9] HT-29 Fixed code smells
---
server/test/integration/user.controller.test.js | 3 +++
1 file changed, 3 insertions(+)
diff --git a/server/test/integration/user.controller.test.js b/server/test/integration/user.controller.test.js
index 7f95a4f..23723e8 100644
--- a/server/test/integration/user.controller.test.js
+++ b/server/test/integration/user.controller.test.js
@@ -5,6 +5,9 @@ let server = require("../../app");
let should = chai.should();
chai.use(chaiHttp);
+let authCookie;
+let authCookieSig;
+
before(function (done) {
chai.request(server)
.post("/auth/login")
From 90c40e96993b8f66b4cb3f72cd16904f5c3db9d3 Mon Sep 17 00:00:00 2001
From: Lenton99 <49190812+Lenton99@users.noreply.github.com>
Date: Thu, 10 Feb 2022 13:10:18 +0000
Subject: [PATCH 4/9] HT-29 Added console log
---
server/.nyc_output/processinfo/index.json | 2 +-
server/business/user.business.js | 1 +
server/coverage/lcov.info | 334 +++++++++++-----------
3 files changed, 169 insertions(+), 168 deletions(-)
diff --git a/server/.nyc_output/processinfo/index.json b/server/.nyc_output/processinfo/index.json
index 39c296d..34001e0 100644
--- a/server/.nyc_output/processinfo/index.json
+++ b/server/.nyc_output/processinfo/index.json
@@ -1 +1 @@
-{"processes":{"e285f173-7f01-4ca1-be5b-403c6759180b":{"parent":null,"children":[]}},"files":{"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\app.js":["e285f173-7f01-4ca1-be5b-403c6759180b"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\database\\index.js":["e285f173-7f01-4ca1-be5b-403c6759180b"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\config\\db.config.js":["e285f173-7f01-4ca1-be5b-403c6759180b"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\models\\journey.model.js":["e285f173-7f01-4ca1-be5b-403c6759180b"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\models\\bill.model.js":["e285f173-7f01-4ca1-be5b-403c6759180b"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\utilities.js":["e285f173-7f01-4ca1-be5b-403c6759180b"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\models\\location.model.js":["e285f173-7f01-4ca1-be5b-403c6759180b"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\models\\user.model.js":["e285f173-7f01-4ca1-be5b-403c6759180b"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\routes\\auth.routes.js":["e285f173-7f01-4ca1-be5b-403c6759180b"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\controllers\\auth.controller.js":["e285f173-7f01-4ca1-be5b-403c6759180b"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\business\\user.business.js":["e285f173-7f01-4ca1-be5b-403c6759180b"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\datalayer\\mongo.js":["e285f173-7f01-4ca1-be5b-403c6759180b"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\routes\\bill.routes.js":["e285f173-7f01-4ca1-be5b-403c6759180b"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\middleware\\auth\\authJwt.js":["e285f173-7f01-4ca1-be5b-403c6759180b"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\controllers\\bill.controller.js":["e285f173-7f01-4ca1-be5b-403c6759180b"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\business\\bill.business.js":["e285f173-7f01-4ca1-be5b-403c6759180b"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\routes\\user.routes.js":["e285f173-7f01-4ca1-be5b-403c6759180b"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\controllers\\user.controller.js":["e285f173-7f01-4ca1-be5b-403c6759180b"]},"externalIds":{}}
\ No newline at end of file
+{"processes":{"8dae436d-f72b-4a29-ad3b-73229128d647":{"parent":null,"children":[]}},"files":{"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\app.js":["8dae436d-f72b-4a29-ad3b-73229128d647"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\database\\index.js":["8dae436d-f72b-4a29-ad3b-73229128d647"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\config\\db.config.js":["8dae436d-f72b-4a29-ad3b-73229128d647"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\models\\journey.model.js":["8dae436d-f72b-4a29-ad3b-73229128d647"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\models\\bill.model.js":["8dae436d-f72b-4a29-ad3b-73229128d647"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\utilities.js":["8dae436d-f72b-4a29-ad3b-73229128d647"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\models\\location.model.js":["8dae436d-f72b-4a29-ad3b-73229128d647"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\models\\user.model.js":["8dae436d-f72b-4a29-ad3b-73229128d647"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\routes\\auth.routes.js":["8dae436d-f72b-4a29-ad3b-73229128d647"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\controllers\\auth.controller.js":["8dae436d-f72b-4a29-ad3b-73229128d647"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\business\\user.business.js":["8dae436d-f72b-4a29-ad3b-73229128d647"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\datalayer\\mongo.js":["8dae436d-f72b-4a29-ad3b-73229128d647"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\routes\\bill.routes.js":["8dae436d-f72b-4a29-ad3b-73229128d647"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\middleware\\auth\\authJwt.js":["8dae436d-f72b-4a29-ad3b-73229128d647"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\controllers\\bill.controller.js":["8dae436d-f72b-4a29-ad3b-73229128d647"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\business\\bill.business.js":["8dae436d-f72b-4a29-ad3b-73229128d647"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\routes\\user.routes.js":["8dae436d-f72b-4a29-ad3b-73229128d647"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\controllers\\user.controller.js":["8dae436d-f72b-4a29-ad3b-73229128d647"]},"externalIds":{}}
\ No newline at end of file
diff --git a/server/business/user.business.js b/server/business/user.business.js
index 446bfc3..f888810 100644
--- a/server/business/user.business.js
+++ b/server/business/user.business.js
@@ -115,6 +115,7 @@ module.exports = class UserBusiness {
};
return this.dataLayer.findAll(filter).catch((error) => {
+ console.log(error);
throw httpError(500, error.message);
});
}
diff --git a/server/coverage/lcov.info b/server/coverage/lcov.info
index bc25b2d..ebe1ae7 100644
--- a/server/coverage/lcov.info
+++ b/server/coverage/lcov.info
@@ -44,24 +44,24 @@ SF:utilities.js
FN:6,(anonymous_0)
FN:10,(anonymous_1)
FNF:2
-FNH:0
-FNDA:0,(anonymous_0)
-FNDA:0,(anonymous_1)
+FNH:2
+FNDA:1,(anonymous_0)
+FNDA:3,(anonymous_1)
DA:1,1
DA:2,1
DA:3,1
DA:5,1
-DA:7,0
-DA:11,0
-DA:12,0
+DA:7,1
+DA:11,3
+DA:12,3
DA:14,0
DA:17,1
LF:9
-LH:5
-BRDA:11,0,0,0
+LH:8
+BRDA:11,0,0,3
BRDA:11,0,1,0
BRF:2
-BRH:0
+BRH:1
end_of_record
TN:
SF:business\bill.business.js
@@ -73,36 +73,36 @@ FN:34,(anonymous_4)
FN:42,(anonymous_5)
FN:47,(anonymous_6)
FNF:7
-FNH:1
+FNH:5
FNDA:1,(anonymous_0)
-FNDA:0,(anonymous_1)
+FNDA:5,(anonymous_1)
FNDA:0,(anonymous_2)
-FNDA:0,(anonymous_3)
+FNDA:1,(anonymous_3)
FNDA:0,(anonymous_4)
-FNDA:0,(anonymous_5)
-FNDA:0,(anonymous_6)
+FNDA:2,(anonymous_5)
+FNDA:1,(anonymous_6)
DA:1,1
DA:2,1
DA:3,1
DA:4,1
DA:6,1
DA:9,1
-DA:16,0
-DA:22,0
+DA:16,5
+DA:22,5
DA:25,0
-DA:32,0
+DA:32,1
DA:35,0
-DA:43,0
-DA:46,0
-DA:47,0
+DA:43,2
+DA:46,2
+DA:47,1
LF:14
-LH:6
-BRDA:19,0,0,0
-BRDA:19,0,1,0
-BRDA:20,1,0,0
-BRDA:20,1,1,0
+LH:12
+BRDA:19,0,0,5
+BRDA:19,0,1,4
+BRDA:20,1,0,5
+BRDA:20,1,1,4
BRF:4
-BRH:0
+BRH:4
end_of_record
TN:
SF:business\user.business.js
@@ -121,21 +121,21 @@ FN:110,(anonymous_11)
FN:117,(anonymous_12)
FN:126,isUserDataValid
FNF:14
-FNH:5
+FNH:12
FNDA:2,(anonymous_0)
-FNDA:2,(anonymous_1)
-FNDA:2,(anonymous_2)
-FNDA:0,(anonymous_3)
-FNDA:0,(anonymous_4)
-FNDA:0,(anonymous_5)
-FNDA:0,(anonymous_6)
-FNDA:0,(anonymous_7)
-FNDA:2,(anonymous_8)
-FNDA:2,(anonymous_9)
+FNDA:5,(anonymous_1)
+FNDA:5,(anonymous_2)
+FNDA:1,(anonymous_3)
+FNDA:4,(anonymous_4)
+FNDA:3,(anonymous_5)
+FNDA:4,(anonymous_6)
+FNDA:2,(anonymous_7)
+FNDA:5,(anonymous_8)
+FNDA:5,(anonymous_9)
FNDA:0,(anonymous_10)
-FNDA:0,(anonymous_11)
+FNDA:1,(anonymous_11)
FNDA:0,(anonymous_12)
-FNDA:0,isUserDataValid
+FNDA:4,isUserDataValid
DA:1,1
DA:2,1
DA:3,1
@@ -143,47 +143,47 @@ DA:4,1
DA:5,1
DA:7,1
DA:10,2
-DA:17,2
-DA:19,2
-DA:24,2
-DA:25,0
-DA:31,2
-DA:43,2
-DA:51,0
-DA:59,0
-DA:65,0
-DA:73,0
-DA:74,0
-DA:76,0
-DA:83,0
-DA:84,0
-DA:85,0
-DA:86,0
-DA:87,0
+DA:17,5
+DA:19,5
+DA:24,5
+DA:25,1
+DA:31,4
+DA:43,4
+DA:51,1
+DA:59,4
+DA:65,3
+DA:73,4
+DA:74,1
+DA:76,3
+DA:83,3
+DA:84,2
+DA:85,1
+DA:86,1
+DA:87,1
DA:88,0
-DA:96,2
-DA:100,2
+DA:96,5
+DA:100,5
DA:103,0
-DA:111,0
-DA:117,0
+DA:111,1
+DA:117,1
DA:118,0
-DA:127,0
+DA:127,4
LF:32
-LH:14
-BRDA:24,0,0,0
-BRDA:24,0,1,2
-BRDA:73,1,0,0
-BRDA:73,1,1,0
-BRDA:84,2,0,0
-BRDA:84,2,1,0
-BRDA:86,3,0,0
+LH:29
+BRDA:24,0,0,1
+BRDA:24,0,1,4
+BRDA:73,1,0,1
+BRDA:73,1,1,3
+BRDA:84,2,0,1
+BRDA:84,2,1,1
+BRDA:86,3,0,1
BRDA:86,3,1,0
-BRDA:127,4,0,0
-BRDA:127,4,1,0
-BRDA:127,4,2,0
-BRDA:127,4,3,0
+BRDA:127,4,0,4
+BRDA:127,4,1,4
+BRDA:127,4,2,3
+BRDA:127,4,3,3
BRF:12
-BRH:1
+BRH:11
end_of_record
TN:
SF:config\db.config.js
@@ -205,33 +205,33 @@ FN:34,(anonymous_4)
FN:39,(anonymous_5)
FN:47,(anonymous_6)
FNF:7
-FNH:2
-FNDA:2,(anonymous_0)
-FNDA:2,(anonymous_1)
-FNDA:0,(anonymous_2)
-FNDA:0,(anonymous_3)
-FNDA:0,(anonymous_4)
-FNDA:0,(anonymous_5)
-FNDA:0,(anonymous_6)
+FNH:7
+FNDA:5,(anonymous_0)
+FNDA:4,(anonymous_1)
+FNDA:1,(anonymous_2)
+FNDA:4,(anonymous_3)
+FNDA:1,(anonymous_4)
+FNDA:3,(anonymous_5)
+FNDA:1,(anonymous_6)
DA:1,1
DA:2,1
DA:7,1
-DA:8,2
-DA:11,2
-DA:12,2
-DA:13,2
-DA:14,2
-DA:16,2
-DA:24,0
+DA:8,5
+DA:11,4
+DA:12,4
+DA:13,4
+DA:14,4
+DA:16,4
+DA:24,1
DA:31,1
-DA:32,0
-DA:35,0
-DA:40,0
+DA:32,4
+DA:35,1
+DA:40,3
DA:47,1
-DA:48,0
-DA:49,0
+DA:48,1
+DA:49,1
LF:17
-LH:11
+LH:17
BRF:0
BRH:0
end_of_record
@@ -247,32 +247,32 @@ FN:27,(anonymous_6)
FN:29,(anonymous_7)
FN:30,(anonymous_8)
FNF:9
-FNH:0
-FNDA:0,(anonymous_0)
-FNDA:0,(anonymous_1)
+FNH:7
+FNDA:5,(anonymous_0)
+FNDA:5,(anonymous_1)
FNDA:0,(anonymous_2)
-FNDA:0,(anonymous_3)
-FNDA:0,(anonymous_4)
+FNDA:1,(anonymous_3)
+FNDA:1,(anonymous_4)
FNDA:0,(anonymous_5)
-FNDA:0,(anonymous_6)
-FNDA:0,(anonymous_7)
-FNDA:0,(anonymous_8)
+FNDA:2,(anonymous_6)
+FNDA:1,(anonymous_7)
+FNDA:1,(anonymous_8)
DA:1,1
DA:2,1
DA:7,1
-DA:8,0
-DA:9,0
+DA:8,5
+DA:9,5
DA:11,0
DA:18,1
-DA:19,0
-DA:20,0
+DA:19,1
+DA:20,1
DA:21,0
DA:27,1
-DA:28,0
-DA:29,0
-DA:30,0
+DA:28,2
+DA:29,1
+DA:30,1
LF:14
-LH:5
+LH:12
BRF:0
BRH:0
end_of_record
@@ -282,18 +282,18 @@ FN:7,(anonymous_0)
FN:9,(anonymous_1)
FN:10,(anonymous_2)
FNF:3
-FNH:0
-FNDA:0,(anonymous_0)
-FNDA:0,(anonymous_1)
+FNH:2
+FNDA:1,(anonymous_0)
+FNDA:1,(anonymous_1)
FNDA:0,(anonymous_2)
DA:1,1
DA:2,1
DA:7,1
-DA:8,0
-DA:9,0
+DA:8,1
+DA:9,1
DA:11,0
LF:6
-LH:3
+LH:5
BRF:0
BRH:0
end_of_record
@@ -357,34 +357,34 @@ FN:55,(anonymous_9)
FN:62,(anonymous_10)
FN:66,(anonymous_11)
FNF:12
-FNH:2
+FNH:12
FNDA:3,(anonymous_0)
-FNDA:0,(anonymous_1)
-FNDA:0,(anonymous_2)
-FNDA:0,(anonymous_3)
-FNDA:0,(anonymous_4)
-FNDA:0,(anonymous_5)
-FNDA:0,(anonymous_6)
-FNDA:0,(anonymous_7)
-FNDA:2,(anonymous_8)
-FNDA:0,(anonymous_9)
-FNDA:0,(anonymous_10)
-FNDA:0,(anonymous_11)
+FNDA:5,(anonymous_1)
+FNDA:5,(anonymous_2)
+FNDA:5,(anonymous_3)
+FNDA:1,(anonymous_4)
+FNDA:1,(anonymous_5)
+FNDA:1,(anonymous_6)
+FNDA:1,(anonymous_7)
+FNDA:5,(anonymous_8)
+FNDA:3,(anonymous_9)
+FNDA:2,(anonymous_10)
+FNDA:1,(anonymous_11)
DA:4,3
-DA:11,0
-DA:17,0
-DA:18,0
-DA:24,0
-DA:29,0
-DA:30,0
-DA:39,0
-DA:49,2
-DA:56,0
-DA:63,0
-DA:67,0
+DA:11,5
+DA:17,5
+DA:18,5
+DA:24,1
+DA:29,1
+DA:30,1
+DA:39,1
+DA:49,5
+DA:56,3
+DA:63,2
+DA:67,1
DA:72,1
LF:13
-LH:3
+LH:13
BRF:0
BRH:0
end_of_record
@@ -394,41 +394,41 @@ FN:4,(anonymous_0)
FN:12,(anonymous_1)
FN:26,(anonymous_2)
FNF:3
-FNH:1
-FNDA:0,(anonymous_0)
-FNDA:0,(anonymous_1)
-FNDA:1,(anonymous_2)
+FNH:3
+FNDA:14,(anonymous_0)
+FNDA:10,(anonymous_1)
+FNDA:4,(anonymous_2)
DA:1,1
DA:4,1
-DA:5,0
-DA:6,0
-DA:10,0
-DA:12,0
-DA:13,0
+DA:5,14
+DA:6,4
+DA:10,10
+DA:12,10
+DA:13,10
DA:14,0
-DA:18,0
-DA:19,0
-DA:20,0
-DA:21,0
-DA:22,0
+DA:18,10
+DA:19,10
+DA:20,10
+DA:21,10
+DA:22,10
DA:26,1
-DA:27,1
-DA:28,1
-DA:29,0
-DA:34,1
+DA:27,4
+DA:28,4
+DA:29,2
+DA:34,2
DA:37,1
LF:19
-LH:7
-BRDA:5,0,0,0
-BRDA:5,0,1,0
-BRDA:5,1,0,0
-BRDA:5,1,1,0
+LH:18
+BRDA:5,0,0,4
+BRDA:5,0,1,10
+BRDA:5,1,0,14
+BRDA:5,1,1,14
BRDA:13,2,0,0
-BRDA:13,2,1,0
-BRDA:28,3,0,0
-BRDA:28,3,1,1
+BRDA:13,2,1,10
+BRDA:28,3,0,2
+BRDA:28,3,1,2
BRF:8
-BRH:1
+BRH:7
end_of_record
TN:
SF:models\bill.model.js
From fbf99f87aa8db6ef1396a4791ed3f6c2471ebff4 Mon Sep 17 00:00:00 2001
From: Lenton99 <49190812+Lenton99@users.noreply.github.com>
Date: Thu, 10 Feb 2022 13:16:53 +0000
Subject: [PATCH 5/9] HT-29 Added fix to the get all users test
---
server/.nyc_output/processinfo/index.json | 2 +-
server/business/user.business.js | 1 -
server/coverage/lcov.info | 15 ++++++++-------
server/test/integration/user.controller.test.js | 4 +++-
4 files changed, 12 insertions(+), 10 deletions(-)
diff --git a/server/.nyc_output/processinfo/index.json b/server/.nyc_output/processinfo/index.json
index 34001e0..7e7c6cb 100644
--- a/server/.nyc_output/processinfo/index.json
+++ b/server/.nyc_output/processinfo/index.json
@@ -1 +1 @@
-{"processes":{"8dae436d-f72b-4a29-ad3b-73229128d647":{"parent":null,"children":[]}},"files":{"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\app.js":["8dae436d-f72b-4a29-ad3b-73229128d647"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\database\\index.js":["8dae436d-f72b-4a29-ad3b-73229128d647"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\config\\db.config.js":["8dae436d-f72b-4a29-ad3b-73229128d647"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\models\\journey.model.js":["8dae436d-f72b-4a29-ad3b-73229128d647"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\models\\bill.model.js":["8dae436d-f72b-4a29-ad3b-73229128d647"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\utilities.js":["8dae436d-f72b-4a29-ad3b-73229128d647"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\models\\location.model.js":["8dae436d-f72b-4a29-ad3b-73229128d647"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\models\\user.model.js":["8dae436d-f72b-4a29-ad3b-73229128d647"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\routes\\auth.routes.js":["8dae436d-f72b-4a29-ad3b-73229128d647"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\controllers\\auth.controller.js":["8dae436d-f72b-4a29-ad3b-73229128d647"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\business\\user.business.js":["8dae436d-f72b-4a29-ad3b-73229128d647"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\datalayer\\mongo.js":["8dae436d-f72b-4a29-ad3b-73229128d647"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\routes\\bill.routes.js":["8dae436d-f72b-4a29-ad3b-73229128d647"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\middleware\\auth\\authJwt.js":["8dae436d-f72b-4a29-ad3b-73229128d647"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\controllers\\bill.controller.js":["8dae436d-f72b-4a29-ad3b-73229128d647"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\business\\bill.business.js":["8dae436d-f72b-4a29-ad3b-73229128d647"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\routes\\user.routes.js":["8dae436d-f72b-4a29-ad3b-73229128d647"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\controllers\\user.controller.js":["8dae436d-f72b-4a29-ad3b-73229128d647"]},"externalIds":{}}
\ No newline at end of file
+{"processes":{"076bf10b-2570-48ae-ba89-4c94269b643b":{"parent":null,"children":[]}},"files":{"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\app.js":["076bf10b-2570-48ae-ba89-4c94269b643b"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\database\\index.js":["076bf10b-2570-48ae-ba89-4c94269b643b"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\config\\db.config.js":["076bf10b-2570-48ae-ba89-4c94269b643b"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\models\\journey.model.js":["076bf10b-2570-48ae-ba89-4c94269b643b"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\models\\bill.model.js":["076bf10b-2570-48ae-ba89-4c94269b643b"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\utilities.js":["076bf10b-2570-48ae-ba89-4c94269b643b"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\models\\location.model.js":["076bf10b-2570-48ae-ba89-4c94269b643b"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\models\\user.model.js":["076bf10b-2570-48ae-ba89-4c94269b643b"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\routes\\auth.routes.js":["076bf10b-2570-48ae-ba89-4c94269b643b"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\controllers\\auth.controller.js":["076bf10b-2570-48ae-ba89-4c94269b643b"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\business\\user.business.js":["076bf10b-2570-48ae-ba89-4c94269b643b"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\datalayer\\mongo.js":["076bf10b-2570-48ae-ba89-4c94269b643b"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\routes\\bill.routes.js":["076bf10b-2570-48ae-ba89-4c94269b643b"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\middleware\\auth\\authJwt.js":["076bf10b-2570-48ae-ba89-4c94269b643b"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\controllers\\bill.controller.js":["076bf10b-2570-48ae-ba89-4c94269b643b"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\business\\bill.business.js":["076bf10b-2570-48ae-ba89-4c94269b643b"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\routes\\user.routes.js":["076bf10b-2570-48ae-ba89-4c94269b643b"],"E:\\UniWork\\CSSD\\CSSD-Assignment\\server\\controllers\\user.controller.js":["076bf10b-2570-48ae-ba89-4c94269b643b"]},"externalIds":{}}
\ No newline at end of file
diff --git a/server/business/user.business.js b/server/business/user.business.js
index f888810..446bfc3 100644
--- a/server/business/user.business.js
+++ b/server/business/user.business.js
@@ -115,7 +115,6 @@ module.exports = class UserBusiness {
};
return this.dataLayer.findAll(filter).catch((error) => {
- console.log(error);
throw httpError(500, error.message);
});
}
diff --git a/server/coverage/lcov.info b/server/coverage/lcov.info
index ebe1ae7..1c6967b 100644
--- a/server/coverage/lcov.info
+++ b/server/coverage/lcov.info
@@ -119,7 +119,7 @@ FN:98,(anonymous_9)
FN:102,(anonymous_10)
FN:110,(anonymous_11)
FN:117,(anonymous_12)
-FN:126,isUserDataValid
+FN:127,isUserDataValid
FNF:14
FNH:12
FNDA:2,(anonymous_0)
@@ -167,8 +167,9 @@ DA:103,0
DA:111,1
DA:117,1
DA:118,0
-DA:127,4
-LF:32
+DA:119,0
+DA:128,4
+LF:33
LH:29
BRDA:24,0,0,1
BRDA:24,0,1,4
@@ -178,10 +179,10 @@ BRDA:84,2,0,1
BRDA:84,2,1,1
BRDA:86,3,0,1
BRDA:86,3,1,0
-BRDA:127,4,0,4
-BRDA:127,4,1,4
-BRDA:127,4,2,3
-BRDA:127,4,3,3
+BRDA:128,4,0,4
+BRDA:128,4,1,4
+BRDA:128,4,2,3
+BRDA:128,4,3,3
BRF:12
BRH:11
end_of_record
diff --git a/server/test/integration/user.controller.test.js b/server/test/integration/user.controller.test.js
index 23723e8..386d7ac 100644
--- a/server/test/integration/user.controller.test.js
+++ b/server/test/integration/user.controller.test.js
@@ -25,7 +25,9 @@ before(function (done) {
describe("Testing /user paths", () => {
it("Should get all users", (done) => {
// Arrange
- const url = "/user/";
+ const limit = "10";
+ const offset = "0";
+ const url = `/user?limit=${limit}&offset=${offset}`;
// Act
chai.request(server)
.get(url)
From 10cf510f4619d5bc6620ef7eb95f9be8bb96a435 Mon Sep 17 00:00:00 2001
From: Lenton99 <49190812+Lenton99@users.noreply.github.com>
Date: Thu, 10 Feb 2022 16:57:57 +0000
Subject: [PATCH 6/9] HT-29 Review comments
---
server/datalayer/mongo.js | 4 +++-
server/middleware/auth/authJwt.js | 2 +-
server/routes/user.routes.js | 2 +-
ui/src/views/MyBills.vue | 32 ++++++++++++++++++-------------
ui/src/views/ViewUsers.vue | 9 +++++++--
5 files changed, 31 insertions(+), 18 deletions(-)
diff --git a/server/datalayer/mongo.js b/server/datalayer/mongo.js
index 3c9813a..6bc76a2 100644
--- a/server/datalayer/mongo.js
+++ b/server/datalayer/mongo.js
@@ -19,7 +19,9 @@ class DataLayer {
});
});
}
-
+ /**
+ * Find all users in the database.
+ */
async findAll(filter) {
return this.model
.find(JSON.parse(JSON.stringify(filter)))
diff --git a/server/middleware/auth/authJwt.js b/server/middleware/auth/authJwt.js
index aca540f..0b8732e 100644
--- a/server/middleware/auth/authJwt.js
+++ b/server/middleware/auth/authJwt.js
@@ -22,7 +22,7 @@ const checkJwtToken = (req, res, next) => {
return next();
});
};
-
+// Check if the active user is an operator
const isOperator = (req, res, next) => {
const type = req.type;
if (type !== "Toll Operator") {
diff --git a/server/routes/user.routes.js b/server/routes/user.routes.js
index 18c3768..1f326a0 100644
--- a/server/routes/user.routes.js
+++ b/server/routes/user.routes.js
@@ -2,7 +2,7 @@
const router = express.Router();
const { checkJwtToken, isOperator } = require("../middleware/auth/authJwt");
-// Get the Bill controller
+// Get the user controller
const userController = require("../controllers/user.controller");
// Get All Users
diff --git a/ui/src/views/MyBills.vue b/ui/src/views/MyBills.vue
index e1c5076..ba34710 100644
--- a/ui/src/views/MyBills.vue
+++ b/ui/src/views/MyBills.vue
@@ -1,7 +1,7 @@
Back
@@ -132,6 +132,7 @@ export default Vue.extend({
{key: 'Cost', sortable: true},
{key: 'Actions', sortable: false}]
},
+
/**
* Returns a filtered list of bills based on the text input filters.
*/
@@ -143,20 +144,25 @@ export default Vue.extend({
)
},
+ /**
+ * Returns a the page name depending on which user is currently logged in.
+ */
pageName() {
- if(store.getters.user.type == "Toll Operator" && this.$route.params.username)
- {
- return "Displaying bills for " + this.$route.params.username;
- }
- else
- {
- return "My Bills";
- }
+ return store.getters.user.type === "Toll Operator" && this.$route.params.username ? `Displaying bills for ${this.$route.params.username}` : "My Bills";
+ },
+
+ /**
+ * Returns if the user type is driver.
+ */
+ isDriver() {
+ return store.getters.user.type === "Driver"
}
},
+
methods: {
formatDate, //Import the format date helper function to be used in the template.
formatCost, //Import the format cost helper function to be used in the template.
+
/**
* Gets a list of bills from the api and sets the bills and totalcount variables.
*/
@@ -171,14 +177,14 @@ export default Vue.extend({
this.totalCount = data.count
},
- isDriver() {
- return store.getters.user.type == "Driver"
- },
-
+ /**
+ * Redirects back to the view users page for toll operator.
+ */
goBack() {
this.$router.push("view-users");
}
},
+
/**
* Gets a list of bills on create.
*/
diff --git a/ui/src/views/ViewUsers.vue b/ui/src/views/ViewUsers.vue
index 6459759..63fcb8d 100644
--- a/ui/src/views/ViewUsers.vue
+++ b/ui/src/views/ViewUsers.vue
@@ -72,6 +72,7 @@ export default Vue.extend({
},
}
},
+
computed: {
/**
* Returns a list of headings to be used in the table and states if they are sortable fields.
@@ -81,8 +82,9 @@ export default Vue.extend({
{key: 'email', sortable: false},
{key: 'Actions', sortable: false}]
},
+
/**
- * Returns a filtered list of bills based on the text input filters.
+ * Returns a filtered list of users based on the text input filters.
*/
filteredUsers() {
return this.users.filter((user) =>
@@ -91,9 +93,11 @@ export default Vue.extend({
)
}
},
+
methods: {
formatDate, //Import the format date helper function to be used in the template.
formatCost, //Import the format cost helper function to be used in the template.
+
/*
* Gets the users from the api functions and returns the data.
*/
@@ -103,8 +107,9 @@ export default Vue.extend({
this.totalCount = data.count
}
},
+
/**
- * Gets a list of bills on create.
+ * Gets a list of users on create.
*/
async created() {
await this.getUsers();
From bce467dba89f9a102bb6022436f2eb1808c87ec6 Mon Sep 17 00:00:00 2001
From: Jake
Date: Thu, 10 Feb 2022 18:18:44 +0000
Subject: [PATCH 7/9] HT-29 Style back button
---
ui/src/views/MyBills.vue | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/ui/src/views/MyBills.vue b/ui/src/views/MyBills.vue
index ba34710..2d7cdb2 100644
--- a/ui/src/views/MyBills.vue
+++ b/ui/src/views/MyBills.vue
@@ -1,11 +1,15 @@
+
{{pageName}}
Back
-
{{pageName}}
+ variant="link"
+ @click="goBack()"
+ class="p-0 mb-3"
+ >
+
+ Back
+
Date: Thu, 10 Feb 2022 18:19:35 +0000
Subject: [PATCH 8/9] HT-29 Added GUI tests
---
ui/cypress/support/commands.js | 29 +-
ui/src/components/navbar.vue | 5 +-
ui/src/views/MyBills.vue | 4 +-
ui/src/views/ViewUsers.vue | 5 +-
ui/tests/e2e/tests/mybills.spec.js | 98 +++--
ui/tests/e2e/tests/navbar.spec.js | 635 ++++++++++++++-------------
ui/tests/e2e/tests/routes.spec.js | 70 +--
ui/tests/e2e/tests/viewusers.spec.js | 47 ++
8 files changed, 503 insertions(+), 390 deletions(-)
create mode 100644 ui/tests/e2e/tests/viewusers.spec.js
diff --git a/ui/cypress/support/commands.js b/ui/cypress/support/commands.js
index f55e0cd..4abd6b2 100644
--- a/ui/cypress/support/commands.js
+++ b/ui/cypress/support/commands.js
@@ -23,10 +23,25 @@
//
// -- This will overwrite an existing command --
// Cypress.Commands.overwrite('visit', (originalFn, url, options) => { ... })
-Cypress.Commands.add('login', (email, password) => {
- cy.visit('/')
- cy.get('#email').type(email)
- cy.get('#password').type(password)
- cy.get('#login').click()
- cy.url().should('contain', '/my-bills')
- })
\ No newline at end of file
+Cypress.Commands.add("login", (email, password) => {
+ cy.visit("/");
+ cy.get("#email").type(email);
+ cy.get("#password").type(password);
+ cy.get("#login").click();
+ cy.url().should("contain", "/my-bills");
+});
+
+Cypress.Commands.add("adminLogin", (email, password) => {
+ cy.visit("/");
+ cy.get("#email").type(email);
+ cy.get("#password").type(password);
+ cy.get("#login").click();
+ cy.url().should("contain", "/view-users");
+});
+
+Cypress.Commands.add("signOut", () => {
+ cy.visit("/");
+ cy.get("#profile").click();
+ cy.get("#signOut").click();
+ cy.url().should("contain", "/login");
+});
diff --git a/ui/src/components/navbar.vue b/ui/src/components/navbar.vue
index e077086..0c34cd8 100644
--- a/ui/src/components/navbar.vue
+++ b/ui/src/components/navbar.vue
@@ -99,7 +99,10 @@
class="mr-2"
/>{{ username }}
- Sign Out
+ Sign Out
diff --git a/ui/src/views/MyBills.vue b/ui/src/views/MyBills.vue
index ba34710..fbf7daa 100644
--- a/ui/src/views/MyBills.vue
+++ b/ui/src/views/MyBills.vue
@@ -68,7 +68,7 @@
- View User's Bills
+ View User's Bills
diff --git a/ui/tests/e2e/tests/mybills.spec.js b/ui/tests/e2e/tests/mybills.spec.js
index 33bef8e..07e0fcc 100644
--- a/ui/tests/e2e/tests/mybills.spec.js
+++ b/ui/tests/e2e/tests/mybills.spec.js
@@ -1,44 +1,54 @@
-describe('My Bills Tests', () => {
-
- before(() => {
- cy.login('test@email.com', 'test1')
- })
-
- it('displays two rows in the bills table', () => {
- //Act
- cy.visit('/my-bills')
-
- //Assert
- cy.get('#bills-table').find('tbody tr').should('have.length', 2)
- })
-
- it('Entry Location filters the my bills table', () => {
- //Act
- cy.visit('/my-bills')
- cy.get('#bills-table').get('#entry-location-filter').type('Entry Location')
-
- //Assert
- cy.get('#bills-table').find('tbody tr').should('have.text', 'No bills match the filter.')
- })
-
-
- it('Exit Location filters the my bills table', () => {
- //Act
- cy.visit('/my-bills')
- cy.get('#bills-table').get('#exit-location-filter').type('Exit Location')
-
- //Assert
- cy.get('#bills-table').find('tbody tr').should('have.text', 'No bills match the filter.')
- })
-
- it('Car Registration Number filters the my bills table', () => {
- //Act
- cy.visit('/my-bills')
- cy.get('#bills-table').get('#car-registration-filter').type('Car Registration Number')
-
- //Assert
- cy.get('#bills-table').find('tbody tr').should('have.text', 'No bills match the filter.')
- })
-
- //TODO: TEST PAGINATION
-})
+describe("My Bills Tests", () => {
+ before(() => {
+ cy.login("test@email.com", "test1");
+ });
+
+ it("displays two rows in the bills table", () => {
+ // Act
+ cy.visit("/my-bills");
+
+ // Assert
+ cy.get("#bills-table").find("tbody tr").should("have.length", 2);
+ });
+
+ it("Entry Location filters the my bills table", () => {
+ // Act
+ cy.visit("/my-bills");
+ cy.get("#bills-table")
+ .get("#entry-location-filter")
+ .type("Entry Location");
+
+ // Assert
+ cy.get("#bills-table")
+ .find("tbody tr")
+ .should("have.text", "No bills match the filter.");
+ });
+
+ it("Exit Location filters the my bills table", () => {
+ // Act
+ cy.visit("/my-bills");
+ cy.get("#bills-table")
+ .get("#exit-location-filter")
+ .type("Exit Location");
+
+ // Assert
+ cy.get("#bills-table")
+ .find("tbody tr")
+ .should("have.text", "No bills match the filter.");
+ });
+
+ it("Car Registration Number filters the my bills table", () => {
+ // Act
+ cy.visit("/my-bills");
+ cy.get("#bills-table")
+ .get("#car-registration-filter")
+ .type("Car Registration Number");
+
+ // Assert
+ cy.get("#bills-table")
+ .find("tbody tr")
+ .should("have.text", "No bills match the filter.");
+ });
+
+ //TODO: TEST PAGINATION
+});
diff --git a/ui/tests/e2e/tests/navbar.spec.js b/ui/tests/e2e/tests/navbar.spec.js
index 0d9a95a..2173e0e 100644
--- a/ui/tests/e2e/tests/navbar.spec.js
+++ b/ui/tests/e2e/tests/navbar.spec.js
@@ -1,304 +1,331 @@
-describe('Navbar Tests', () => {
-
- before(() => {
- cy.login('test@email.com', 'test1')
- })
-
- context('Languages Dropdown', () => {
- it('shows 23 languages when the languages dropdown is clicked', () => {
- //Act
- cy.visit('/my-bills')
- cy.get('#languages').click()
-
- //Assert
- cy.get('#languages ul li').should('have.length', 23)
- })
-
- it('selected language changes to Bulgarian when the Bulgarian option is selected', () => {
- //Act
- cy.get('#Bulgarian').click()
-
- //Assert
- cy.get('#selected-language').should('have.text', 'Bulgarian')
- })
-
- it('selected language changes to Czech when the Czech option is selected', () => {
- //Act
- cy.get('#languages').click()
- cy.get('#Czech').click()
-
- //Assert
- cy.get('#selected-language').should('have.text', 'Czech')
- })
-
- it('selected language changes to Danish when the Danish option is selected', () => {
- //Act
- cy.get('#languages').click()
- cy.get('#Danish').click()
-
- //Assert
- cy.get('#selected-language').should('have.text', 'Danish')
- })
-
- it('selected language changes to Dutch when the Dutch option is selected', () => {
- //Act
- cy.get('#languages').click()
- cy.get('#Dutch').click()
-
- //Assert
- cy.get('#selected-language').should('have.text', 'Dutch')
- })
-
- it('selected language changes to English when the English option is selected', () => {
- //Act
- cy.get('#languages').click()
- cy.get('#English').click()
-
- //Assert
- cy.get('#selected-language').should('have.text', 'English')
- })
-
- it('selected language changes to Estonian when the Estonian option is selected', () => {
- //Act
- cy.get('#languages').click()
- cy.get('#Estonian').click()
-
- //Assert
- cy.get('#selected-language').should('have.text', 'Estonian')
- })
-
- it('selected language changes to Finnish when the Finnish option is selected', () => {
- //Act
- cy.get('#languages').click()
- cy.get('#Finnish').click()
-
- //Assert
- cy.get('#selected-language').should('have.text', 'Finnish')
- })
-
- it('selected language changes to French when the French option is selected', () => {
- //Act
- cy.get('#languages').click()
- cy.get('#French').click()
-
- //Assert
- cy.get('#selected-language').should('have.text', 'French')
- })
-
- it('selected language changes to German when the German option is selected', () => {
- //Act
- cy.get('#languages').click()
- cy.get('#German').click()
-
- //Assert
- cy.get('#selected-language').should('have.text', 'German')
- })
-
- it('selected language changes to Greek when the Greek option is selected', () => {
- //Act
- cy.get('#languages').click()
- cy.get('#Greek').click()
-
- //Assert
- cy.get('#selected-language').should('have.text', 'Greek')
- })
-
- it('selected language changes to Hungarian when the Hungarian option is selected', () => {
- //Act
- cy.get('#languages').click()
- cy.get('#Hungarian').click()
-
- //Assert
- cy.get('#selected-language').should('have.text', 'Hungarian')
- })
-
- it('selected language changes to Irish when the Irish option is selected', () => {
- //Act
- cy.get('#languages').click()
- cy.get('#Irish').click()
-
- //Assert
- cy.get('#selected-language').should('have.text', 'Irish')
- })
-
- it('selected language changes to Italian when the Italian option is selected', () => {
- //Act
- cy.get('#languages').click()
- cy.get('#Italian').click()
-
- //Assert
- cy.get('#selected-language').should('have.text', 'Italian')
- })
-
- it('selected language changes to Latvian when the Latvian option is selected', () => {
- //Act
- cy.get('#languages').click()
- cy.get('#Latvian').click()
-
- //Assert
- cy.get('#selected-language').should('have.text', 'Latvian')
- })
-
- it('selected language changes to Lithuanian when the Lithuanian option is selected', () => {
- //Act
- cy.get('#languages').click()
- cy.get('#Lithuanian').click()
-
- //Assert
- cy.get('#selected-language').should('have.text', 'Lithuanian')
- })
-
- it('selected language changes to Maltese when the Maltese option is selected', () => {
- //Act
- cy.get('#languages').click()
- cy.get('#Maltese').click()
-
- //Assert
- cy.get('#selected-language').should('have.text', 'Maltese')
- })
-
- it('selected language changes to Polish when the Polish option is selected', () => {
- //Act
- cy.get('#languages').click()
- cy.get('#Polish').click()
-
- //Assert
- cy.get('#selected-language').should('have.text', 'Polish')
- })
-
- it('selected language changes to Portuguese when the Portuguese option is selected', () => {
- //Act
- cy.get('#languages').click()
- cy.get('#Portuguese').click()
-
- //Assert
- cy.get('#selected-language').should('have.text', 'Portuguese')
- })
-
- it('selected language changes to Romanian when the Romanian option is selected', () => {
- //Act
- cy.get('#languages').click()
- cy.get('#Romanian').click()
-
- //Assert
- cy.get('#selected-language').should('have.text', 'Romanian')
- })
-
- it('selected language changes to Slovak when the Slovak option is selected', () => {
- //Act
- cy.get('#languages').click()
- cy.get('#Slovak').click()
-
- //Assert
- cy.get('#selected-language').should('have.text', 'Slovak')
- })
-
- it('selected language changes to Slovene when the Slovene option is selected', () => {
- //Act
- cy.get('#languages').click()
- cy.get('#Slovene').click()
-
- //Assert
- cy.get('#selected-language').should('have.text', 'Slovene')
- })
-
- it('selected language changes to Spanish when the Spanish option is selected', () => {
- //Act
- cy.get('#languages').click()
- cy.get('#Spanish').click()
-
- //Assert
- cy.get('#selected-language').should('have.text', 'Spanish')
- })
-
- it('selected language changes to Swedish when the Swedish option is selected', () => {
- //Act
- cy.get('#languages').click()
- cy.get('#Swedish').click()
-
- //Assert
- cy.get('#selected-language').should('have.text', 'Swedish')
- })
- })
-
-
- context('Profile Dropdown', () => {
- it('shows sign out when the profile dropdown is clicked', () => {
- //Act
- cy.get('#profile').click()
-
- //Assert
- cy.get('#profile ul li').should('have.text', 'Sign Out')
- })
- })
-
-
- context('Currency Dropdown', () => {
- it('shows 6 currencies when the currency dropdown is clicked', () => {
- //Act
- cy.get('#currencies').click()
-
- //Assert
- cy.get('#currencies ul li').should('have.length', 6)
- })
-
- it('cost doesnt change when NOK is selected in the currency drop down', () => {
- //Act
- cy.get('#NOK').click()
-
- //Assert
- cy.get('#selected-currency').should('have.text', 'NOK')
- cy.get('#bills-table').find('tbody tr').first().get('td').eq(4).should('have.text', ' NOK 72.94 ')
- })
-
- it('cost updates to 75.86 when SEK is selected in the currency drop down', () => {
- //Act
- cy.get('#currencies').click()
- cy.get('#SEK').click()
-
- //Assert
- cy.get('#selected-currency').should('have.text', 'SEK')
- cy.get('#bills-table').find('tbody tr').first().get('td').eq(4).should('have.text', ' SEK 75.86 ')
- })
-
- it('cost updates to 1,042 when ISK is selected in the currency drop down', () => {
- //Act
- cy.get('#currencies').click()
- cy.get('#ISK').click()
-
- //Assert
- cy.get('#selected-currency').should('have.text', 'ISK')
- cy.get('#bills-table').find('tbody tr').first().get('td').eq(4).should('have.text', ' ISK 1,042 ')
- })
-
- it('cost updates to 53.97 when DKK is selected in the currency drop down', () => {
- //Act
- cy.get('#currencies').click()
- cy.get('#DKK').click()
-
- //Assert
- cy.get('#selected-currency').should('have.text', 'DKK')
- cy.get('#bills-table').find('tbody tr').first().get('td').eq(4).should('have.text', ' DKK 53.97 ')
- })
-
- it('cost updates to 6.13 when GBP is selected in the currency drop down', () => {
- //Act
- cy.get('#currencies').click()
- cy.get('#GBP').click()
-
- //Assert
- cy.get('#selected-currency').should('have.text', 'GBP')
- cy.get('#bills-table').find('tbody tr').first().get('td').eq(4).should('have.text', ' £6.13 ')
- })
-
- it('cost updates to 7.29 when EUR is selected in the currency drop down', () => {
- //Act
- cy.get('#currencies').click()
- cy.get('#EUR').click()
-
- //Assert
- cy.get('#selected-currency').should('have.text', 'EUR')
- cy.get('#bills-table').find('tbody tr').first().get('td').eq(4).should('have.text', ' €7.29 ')
- })
- })
-})
+describe("Navbar Tests", () => {
+ before(() => {
+ cy.login("test@email.com", "test1");
+ });
+
+ context("Languages Dropdown", () => {
+ it("shows 23 languages when the languages dropdown is clicked", () => {
+ // Act
+ cy.visit("/my-bills");
+ cy.get("#languages").click();
+
+ // Assert
+ cy.get("#languages ul li").should("have.length", 23);
+ });
+
+ it("selected language changes to Bulgarian when the Bulgarian option is selected", () => {
+ // Act
+ cy.get("#Bulgarian").click();
+
+ // Assert
+ cy.get("#selected-language").should("have.text", "Bulgarian");
+ });
+
+ it("selected language changes to Czech when the Czech option is selected", () => {
+ // Act
+ cy.get("#languages").click();
+ cy.get("#Czech").click();
+
+ // Assert
+ cy.get("#selected-language").should("have.text", "Czech");
+ });
+
+ it("selected language changes to Danish when the Danish option is selected", () => {
+ // Act
+ cy.get("#languages").click();
+ cy.get("#Danish").click();
+
+ // Assert
+ cy.get("#selected-language").should("have.text", "Danish");
+ });
+
+ it("selected language changes to Dutch when the Dutch option is selected", () => {
+ // Act
+ cy.get("#languages").click();
+ cy.get("#Dutch").click();
+
+ // Assert
+ cy.get("#selected-language").should("have.text", "Dutch");
+ });
+
+ it("selected language changes to English when the English option is selected", () => {
+ // Act
+ cy.get("#languages").click();
+ cy.get("#English").click();
+
+ // Assert
+ cy.get("#selected-language").should("have.text", "English");
+ });
+
+ it("selected language changes to Estonian when the Estonian option is selected", () => {
+ // Act
+ cy.get("#languages").click();
+ cy.get("#Estonian").click();
+
+ // Assert
+ cy.get("#selected-language").should("have.text", "Estonian");
+ });
+
+ it("selected language changes to Finnish when the Finnish option is selected", () => {
+ // Act
+ cy.get("#languages").click();
+ cy.get("#Finnish").click();
+
+ // Assert
+ cy.get("#selected-language").should("have.text", "Finnish");
+ });
+
+ it("selected language changes to French when the French option is selected", () => {
+ // Act
+ cy.get("#languages").click();
+ cy.get("#French").click();
+
+ // Assert
+ cy.get("#selected-language").should("have.text", "French");
+ });
+
+ it("selected language changes to German when the German option is selected", () => {
+ // Act
+ cy.get("#languages").click();
+ cy.get("#German").click();
+
+ // Assert
+ cy.get("#selected-language").should("have.text", "German");
+ });
+
+ it("selected language changes to Greek when the Greek option is selected", () => {
+ // Act
+ cy.get("#languages").click();
+ cy.get("#Greek").click();
+
+ // Assert
+ cy.get("#selected-language").should("have.text", "Greek");
+ });
+
+ it("selected language changes to Hungarian when the Hungarian option is selected", () => {
+ // Act
+ cy.get("#languages").click();
+ cy.get("#Hungarian").click();
+
+ // Assert
+ cy.get("#selected-language").should("have.text", "Hungarian");
+ });
+
+ it("selected language changes to Irish when the Irish option is selected", () => {
+ // Act
+ cy.get("#languages").click();
+ cy.get("#Irish").click();
+
+ // Assert
+ cy.get("#selected-language").should("have.text", "Irish");
+ });
+
+ it("selected language changes to Italian when the Italian option is selected", () => {
+ // Act
+ cy.get("#languages").click();
+ cy.get("#Italian").click();
+
+ // Assert
+ cy.get("#selected-language").should("have.text", "Italian");
+ });
+
+ it("selected language changes to Latvian when the Latvian option is selected", () => {
+ // Act
+ cy.get("#languages").click();
+ cy.get("#Latvian").click();
+
+ // Assert
+ cy.get("#selected-language").should("have.text", "Latvian");
+ });
+
+ it("selected language changes to Lithuanian when the Lithuanian option is selected", () => {
+ // Act
+ cy.get("#languages").click();
+ cy.get("#Lithuanian").click();
+
+ // Assert
+ cy.get("#selected-language").should("have.text", "Lithuanian");
+ });
+
+ it("selected language changes to Maltese when the Maltese option is selected", () => {
+ // Act
+ cy.get("#languages").click();
+ cy.get("#Maltese").click();
+
+ // Assert
+ cy.get("#selected-language").should("have.text", "Maltese");
+ });
+
+ it("selected language changes to Polish when the Polish option is selected", () => {
+ // Act
+ cy.get("#languages").click();
+ cy.get("#Polish").click();
+
+ // Assert
+ cy.get("#selected-language").should("have.text", "Polish");
+ });
+
+ it("selected language changes to Portuguese when the Portuguese option is selected", () => {
+ // Act
+ cy.get("#languages").click();
+ cy.get("#Portuguese").click();
+
+ // Assert
+ cy.get("#selected-language").should("have.text", "Portuguese");
+ });
+
+ it("selected language changes to Romanian when the Romanian option is selected", () => {
+ // Act
+ cy.get("#languages").click();
+ cy.get("#Romanian").click();
+
+ // Assert
+ cy.get("#selected-language").should("have.text", "Romanian");
+ });
+
+ it("selected language changes to Slovak when the Slovak option is selected", () => {
+ // Act
+ cy.get("#languages").click();
+ cy.get("#Slovak").click();
+
+ // Assert
+ cy.get("#selected-language").should("have.text", "Slovak");
+ });
+
+ it("selected language changes to Slovene when the Slovene option is selected", () => {
+ // Act
+ cy.get("#languages").click();
+ cy.get("#Slovene").click();
+
+ // Assert
+ cy.get("#selected-language").should("have.text", "Slovene");
+ });
+
+ it("selected language changes to Spanish when the Spanish option is selected", () => {
+ // Act
+ cy.get("#languages").click();
+ cy.get("#Spanish").click();
+
+ // Assert
+ cy.get("#selected-language").should("have.text", "Spanish");
+ });
+
+ it("selected language changes to Swedish when the Swedish option is selected", () => {
+ // Act
+ cy.get("#languages").click();
+ cy.get("#Swedish").click();
+
+ // Assert
+ cy.get("#selected-language").should("have.text", "Swedish");
+ });
+ });
+
+ context("Profile Dropdown", () => {
+ it("shows sign out when the profile dropdown is clicked", () => {
+ // Act
+ cy.get("#profile").click();
+
+ // Assert
+ cy.get("#profile ul li").should("have.text", "Sign Out");
+ });
+ });
+
+ context("Currency Dropdown", () => {
+ it("shows 6 currencies when the currency dropdown is clicked", () => {
+ // Act
+ cy.get("#currencies").click();
+
+ // Assert
+ cy.get("#currencies ul li").should("have.length", 6);
+ });
+
+ it("cost doesnt change when NOK is selected in the currency drop down", () => {
+ // Act
+ cy.get("#NOK").click();
+
+ // Assert
+ cy.get("#selected-currency").should("have.text", "NOK");
+ cy.get("#bills-table")
+ .find("tbody tr")
+ .first()
+ .get("td")
+ .eq(4)
+ .should("have.text", " NOK 72.94 ");
+ });
+
+ it("cost updates to 75.86 when SEK is selected in the currency drop down", () => {
+ // Act
+ cy.get("#currencies").click();
+ cy.get("#SEK").click();
+
+ // Assert
+ cy.get("#selected-currency").should("have.text", "SEK");
+ cy.get("#bills-table")
+ .find("tbody tr")
+ .first()
+ .get("td")
+ .eq(4)
+ .should("have.text", " SEK 75.86 ");
+ });
+
+ it("cost updates to 1,042 when ISK is selected in the currency drop down", () => {
+ // Act
+ cy.get("#currencies").click();
+ cy.get("#ISK").click();
+
+ // Assert
+ cy.get("#selected-currency").should("have.text", "ISK");
+ cy.get("#bills-table")
+ .find("tbody tr")
+ .first()
+ .get("td")
+ .eq(4)
+ .should("have.text", " ISK 1,042 ");
+ });
+
+ it("cost updates to 53.97 when DKK is selected in the currency drop down", () => {
+ // Act
+ cy.get("#currencies").click();
+ cy.get("#DKK").click();
+
+ // Assert
+ cy.get("#selected-currency").should("have.text", "DKK");
+ cy.get("#bills-table")
+ .find("tbody tr")
+ .first()
+ .get("td")
+ .eq(4)
+ .should("have.text", " DKK 53.97 ");
+ });
+
+ it("cost updates to 6.13 when GBP is selected in the currency drop down", () => {
+ // Act
+ cy.get("#currencies").click();
+ cy.get("#GBP").click();
+
+ // Assert
+ cy.get("#selected-currency").should("have.text", "GBP");
+ cy.get("#bills-table")
+ .find("tbody tr")
+ .first()
+ .get("td")
+ .eq(4)
+ .should("have.text", " £6.13 ");
+ });
+
+ it("cost updates to 7.29 when EUR is selected in the currency drop down", () => {
+ // Act
+ cy.get("#currencies").click();
+ cy.get("#EUR").click();
+
+ // Assert
+ cy.get("#selected-currency").should("have.text", "EUR");
+ cy.get("#bills-table")
+ .find("tbody tr")
+ .first()
+ .get("td")
+ .eq(4)
+ .should("have.text", " €7.29 ");
+ });
+ });
+});
diff --git a/ui/tests/e2e/tests/routes.spec.js b/ui/tests/e2e/tests/routes.spec.js
index 6de6d3a..128baab 100644
--- a/ui/tests/e2e/tests/routes.spec.js
+++ b/ui/tests/e2e/tests/routes.spec.js
@@ -1,31 +1,39 @@
-describe('Route Tests', () => {
-
- before(() => {
- cy.login('test@email.com', 'test1')
- })
-
- it('loads the my bills page', () => {
- //Act
- cy.visit('/my-bills')
-
- //Assert
- cy.contains('h1', 'My Bills')
- })
-
-
- it('bounces the root to the my bills page', () => {
- //Act
- cy.visit('/')
-
- //Assert
- cy.contains('h1', 'My Bills')
- })
-
- it('loads the help page', () => {
- //Act
- cy.visit('/help')
-
- //Assert
- cy.contains('h1', 'Frequently Asked Questions (FAQ)')
- })
-})
\ No newline at end of file
+describe("Bills Route Tests", () => {
+ before(() => {
+ cy.login("test@email.com", "test1");
+ });
+
+ it("loads the my bills page", () => {
+ // Act
+ cy.visit("/my-bills");
+
+ // Assert
+ cy.contains("h1", "My Bills");
+ });
+
+ it("bounces the root to the my bills page", () => {
+ // Act
+ cy.visit("/");
+
+ // Assert
+ cy.contains("h1", "My Bills");
+ });
+
+ it("loads the help page", () => {
+ // Act
+ cy.visit("/help");
+
+ // Assert
+ cy.contains("h1", "Frequently Asked Questions (FAQ)");
+ });
+
+ it("loads the all users page", () => {
+ // Act
+ cy.signOut();
+ cy.adminLogin("operator@email.com", "test1");
+ cy.visit("/view-users");
+
+ // Assert
+ cy.contains("h1", "View Users");
+ });
+});
diff --git a/ui/tests/e2e/tests/viewusers.spec.js b/ui/tests/e2e/tests/viewusers.spec.js
new file mode 100644
index 0000000..5bbebe8
--- /dev/null
+++ b/ui/tests/e2e/tests/viewusers.spec.js
@@ -0,0 +1,47 @@
+describe("My Users Tests", () => {
+ before(() => {
+ cy.adminLogin("operator@email.com", "test1");
+ });
+
+ it("displays two rows in the users table", () => {
+ // Act
+ cy.visit("/view-users");
+
+ // Assert
+ cy.get("#users-table").find("tbody tr").should("have.length", 2);
+ });
+
+ it("Username filters the my users table", () => {
+ // Act
+ cy.get("#users-table").get("#username-filter").type("Username");
+
+ // Assert
+ cy.get("#users-table")
+ .find("tbody tr")
+ .should("have.text", "No users match the filter.");
+ });
+
+ it("Email filters the my users table", () => {
+ // Act
+ cy.get("#users-table").get("#email-filter").type("Email");
+
+ // Assert
+ cy.get("#users-table")
+ .find("tbody tr")
+ .should("have.text", "No users match the filter.");
+ });
+
+ it("Clicking pay bill redirects to the users bill page", () => {
+ // Act
+ cy.get("#users-table")
+ .get("#email-filter")
+ .focus()
+ .clear()
+ .type("test@email.com");
+ cy.get("#users-table").get("#username-filter").focus().clear();
+ cy.get("#viewUserBills").click();
+
+ // Assert
+ cy.get("h1").should("have.text", "Displaying bills for test_username");
+ });
+});
From b5d4195af7e83c729601c990434e4af9e110628e Mon Sep 17 00:00:00 2001
From: Lenton99 <49190812+Lenton99@users.noreply.github.com>
Date: Thu, 10 Feb 2022 18:24:58 +0000
Subject: [PATCH 9/9] HT-29 Added comment for review
---
ui/src/components/navbar.vue | 3 +++
1 file changed, 3 insertions(+)
diff --git a/ui/src/components/navbar.vue b/ui/src/components/navbar.vue
index 0c34cd8..c8f420a 100644
--- a/ui/src/components/navbar.vue
+++ b/ui/src/components/navbar.vue
@@ -145,6 +145,9 @@ export default Vue.extend({
});
},
+ /**
+ * Return to the landing page depending on the user that is logged in.
+ */
goToHome() {
if (store.getters.user.type == "Toll Operator") {
this.$router.push("view-users");