Skip to content

Commit ac56a12

Browse files
committed
Applied Changes
2 parents c31c388 + 784195d commit ac56a12

File tree

9 files changed

+114
-21
lines changed

9 files changed

+114
-21
lines changed

src/controllers/bookings-controller.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
const db = require("../models");
2-
const { getPropertyById } = require("./property-controller");
2+
const { getPropertyById } = require("../utils/properties");
33

44
async function bookProperty(req, res, next) {
55
const { uid } = req.user;
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
const fetch = require("node-fetch");
2+
const config = require("../config");
3+
const { getPropertyById } = require("../utils/properties");
4+
5+
async function getProperty(req, res, next) {
6+
const { propertyId } = req.params;
7+
try {
8+
const response = await getPropertyById(propertyId);
9+
res.status(200).send(response);
10+
} catch (err) {
11+
next(err);
12+
}
13+
}
14+
15+
async function searchProperties(req, res, next) {
16+
try {
17+
const response = await searchAdminProperties(req.query);
18+
res.status(200).send(response);
19+
} catch (err) {
20+
next(err);
21+
}
22+
}
23+
24+
module.exports = { getProperty, searchProperties };

src/controllers/property-controller.js

Lines changed: 0 additions & 16 deletions
This file was deleted.

src/routes/__tests__/bookings-routes.test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ const setupTestDB = require("../../mock/seedTestDB");
1010

1111
const mockHome = setupTestDB.getHome();
1212

13-
jest.mock("../../controllers/property-controller", () => ({
13+
jest.mock("../../utils/properties", () => ({
1414
getPropertyById: () => mockHome
1515
}))
1616

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
// Mock Firebase Auth
2+
const MOCK_CLIENT_ID = "5d6ede6a0ba62570afcedd3a";
3+
const mockAuth = require("../../mock/middleware/auth-middleware")(MOCK_CLIENT_ID, "[email protected]");
4+
jest.mock('../../middleware/auth-middleware.js', () => mockAuth);
5+
// Require everything else
6+
const supertest = require("supertest");
7+
const testServer = require("../../mock/db-test-server");
8+
const app = require("../../server");
9+
const setupTestDB = require("../../mock/seedTestDB");
10+
const { parseQueryParams } = require("../../utils/properties");
11+
12+
const request = supertest(app);
13+
14+
beforeAll(async () => {
15+
await testServer.initTestServer();
16+
await setupTestDB.seedTestBookingsDB();
17+
});
18+
19+
afterAll(async () => {
20+
await testServer.clearCollections();
21+
await testServer.stopTestServer();
22+
});
23+
24+
describe("Properties routes", () => {
25+
it("Query params conversion", () => {
26+
const queryParams = {
27+
name: "Patata",
28+
age: 19,
29+
homeType: ["patata", "queso", "macarrones"],
30+
names: ["Victor", "Martinez", "Montané"],
31+
sold: true
32+
};
33+
//insert into db test_property with create property
34+
const string = parseQueryParams(queryParams);
35+
expect(string).toEqual("name=Patata&age=19&homeType[]=patata&homeType[]=queso&homeType[]=macarrones&names[]=Victor&names[]=Martinez&names[]=Montané&sold=true&");
36+
});
37+
});

src/routes/bookings-routes.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ bookingsRouter.get("/employees/:eid", validateJWT, getBookingsByEmployeeId);
2121

2222
bookingsRouter.post("/:propertyId", validateJWT, validateSetStatus, setStatus);
2323

24-
25-
bookingsRouter.patch("/:propertyId", validateUpdateBookingAddress, updateBookingAddress);
24+
bookingsRouter.patch("/:propertyId", validateJWT, validateUpdateBookingAddress, updateBookingAddress);
2625

2726
module.exports = bookingsRouter;

src/routes/properties-routes.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
const { Router } = require("express");
2+
const auth = require("../middleware/auth-middleware");
3+
4+
const router = Router();
5+
6+
const {
7+
getProperty,
8+
searchProperties
9+
} = require("../controllers/properties-controller");
10+
11+
router.get("/:propertyId", auth(), getProperty);
12+
router.get("/", auth(), searchProperties);
13+
14+
module.exports = router;

src/server.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ const validateJWT = require("./middleware/jwt-middleware")
88
const errorMiddleware = require("./middleware/error-middleware");
99
const userRouter = require("./routes/user-routes")
1010
const bookingsRouter = require("./routes/bookings-routes");
11+
const propertiesRouter = require("./routes/properties-routes");
1112

1213
const app = express();
1314

@@ -16,9 +17,9 @@ app.use(helmet());
1617
app.use(json());
1718
app.use(cors());
1819

19-
app.get("/admin", validateJWT, (req, res, next) => res.status(200).send("Authorized"));
2020
app.use("/user", userRouter);
2121
app.use("/bookings", bookingsRouter);
22+
app.use("/properties", propertiesRouter);
2223
app.use(errorMiddleware);
2324

2425
module.exports = app;

src/utils/properties/index.js

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
async function getPropertyById(propertyId) {
2+
const res = await fetch(`${config.admin_server_url}/client/properties/${propertyId}`, {
3+
method: 'get',
4+
headers: {
5+
'Accept': 'application/json',
6+
'auth': config.jwt.token
7+
},
8+
});
9+
if (!res.ok) throw new Error(res.statusText);
10+
return await res.json();
11+
}
12+
13+
async function searchAdminProperties(queryParams) {
14+
const queryString = parseQueryParams(queryParams);
15+
const res = await fetch(`${config.admin_server_url}/client/properties?${queryString}`, {
16+
method: 'get',
17+
headers: {
18+
'Accept': 'application/json',
19+
'auth': config.jwt.token
20+
},
21+
});
22+
if (!res.ok) throw new Error(res.statusText);
23+
return await res.json();
24+
}
25+
26+
const parseQueryParams = (params) => {
27+
return Object.entries(params).reduce((acc, [key, value]) => {
28+
return acc + (Array.isArray(value) ?
29+
value.reduce((last, curr) => last + `${key}[]=${curr}&`, "") :
30+
`${key}=${value}&`)
31+
}, "")
32+
}
33+
34+
module.exports = { getPropertyById, searchAdminProperties, parseQueryParams };

0 commit comments

Comments
 (0)