diff --git a/server/controllers/placeOrderController.js b/server/controllers/placeOrderController.js index ca5b065..3a1e477 100644 --- a/server/controllers/placeOrderController.js +++ b/server/controllers/placeOrderController.js @@ -31,7 +31,7 @@ class placeOrderHandler { const presentLocation = "Jos"; const total = (quantity * price) + parcelTypeCost(parcelType); const status = 'pending'; - const id = placeOrders.length; + const id = placeOrder.length; const trackingID = uuidv5(`${senderName}${new Date()}${id}`, uuidv5.URL) const sendOrder = { email, @@ -55,8 +55,8 @@ class placeOrderHandler { placeOrder.push(sendOrder); return response.status(201) .json({ - message: "Your delivery order is booked successfully", - sendOrder + message: "Your delivery order is booked successfully" + // sendOrder }); } diff --git a/server/middlewares/placeOrderValidator.js b/server/middlewares/placeOrderValidator.js index 2f1ba75..248d5cc 100644 --- a/server/middlewares/placeOrderValidator.js +++ b/server/middlewares/placeOrderValidator.js @@ -126,7 +126,7 @@ class placeOrderValidators { if (!validEmail.test(email)) { return response.status(400) .json({ - status: "!Unsuccessful", + status: "Unsuccessful!", message: "You are sending invalid email format" }); } @@ -167,7 +167,7 @@ class placeOrderValidators { } weight = parseFloat(weight); - if (weight < 0 || weight > 1000) { + if (weight <= 0 || weight > 1000) { return response.status(400) .json({ status: "Unsuccessful!", @@ -269,7 +269,7 @@ class placeOrderValidators { }); } - if (quantity.length < 1 || quantity.length > 2) { + if (quantity.length > 2) { return response.status(400) .json({ status: "Unsuccessful!", @@ -302,15 +302,6 @@ class placeOrderValidators { message: "Wrong format, please enter parcelType as 'delicate' or 'non-delicate'" }); } - - if (parcelType.length < 8 || parcelType.length > 11) { - return response.status(400) - .json({ - status: "Unsuccessful!", - message: "parcelType should be 8 to 12 characters long" - }); - } - request.body.senderName = senderName; request.body.receiverName = receiverName request.body.senderPhone = senderPhone; @@ -343,13 +334,6 @@ class placeOrderValidators { static getSpecificOrderValidator(request, response, next) { let {parcelId} = request.params; - if (!(parcelId)) { - return response.status(400) - .json({ - status: 'Unsuccessful!', - message: 'Sorry! this is an invalid URL' - }); - } const isExistOrder = placeOrder.find(placeOrder => placeOrder.trackingID === (parcelId)); if (!isExistOrder) { return response.status(404) diff --git a/server/tests/placeOrderMock.js b/server/tests/placeOrderMock.js index 272e38f..6968a27 100644 --- a/server/tests/placeOrderMock.js +++ b/server/tests/placeOrderMock.js @@ -1,9 +1,10 @@ const successfulOrder = { email: 'joyce@gmail.com', - weight: "1.5", + weight: "1.5kg", parcelContent: "Books", price: "200", quantity: "2", + pickupAddress: '12 Owerri Street, Jos', parcelType: "delicate", senderPhone: "02383837300", senderName: "luke Ben", @@ -13,7 +14,7 @@ const successfulOrder = { status: "pending", total: "500", presentLocation: "Jos", - trackingID: "381148a4-d861-5652-a697-730a865bccfe" + trackingID: "219b1e64-afe5-5e71-ac0b-8b6a4c605a01" }; const undefinedName = { @@ -21,6 +22,7 @@ const undefinedName = { parcelContent: "Books", price: "200", quantity: "2", + pickupAddress: '12 Owerri Street, Jos', parcelType: "delicate", senderPhone: "02383837300", destinationAddress: "12 roag road Benin", @@ -37,6 +39,7 @@ const emptyName = { parcelContent: "Books", price: "200", quantity: "2", + pickupAddress: '12 Owerri Street, Jos', parcelType: "delicate", senderPhone: "02383837300", senderName: "", @@ -50,14 +53,15 @@ const emptyName = { }; const invalidSenderNameLt = { - email: "joyce@gmail.", - weight: "1.5", + email: "joyce@gmail.com", + weight: "1.5kg", parcelContent: "Books", price: "200", quantity: "2", + pickupAddress: '12 Owerri Street, Jos', parcelType: "delicate", senderPhone: "02383837300", - senderName: "23Ben", + senderName: "23", receiverName: "Pamela Okoro", destinationAddress: "12 roag road Benin", receiverPhone: "02383837388", @@ -73,6 +77,7 @@ const invalidReceiverLt = { parcelContent: "Books", price: "200", quantity: "2", + pickupAddress: '12 Owerri Street, Jos', parcelType: "delicate", senderPhone: "02383837300", senderName: "luke Ben", @@ -86,14 +91,15 @@ const invalidReceiverLt = { } const invalidNameChar = { email: 'joyce@gmail.com', - weight: "1.5", + weight: "1.5kg", parcelContent: "Books", price: "200", quantity: "2", + pickupAddress: '12 Owerri Street, Jos', parcelType: "delicate", senderPhone: "02383837300", - senderName: "2lu", - receiverName: "@foro", + senderName: "209", + receiverName: "5667", destinationAddress: "12 roag road Benin", receiverPhone: "02383837388", status: "pending", @@ -104,10 +110,11 @@ const invalidNameChar = { const undefinedPhone = { email: 'joyce@gmail.com', - weight: "1.5", + weight: "1.5kg", parcelContent: "Books", price: "200", quantity: "2", + pickupAddress: '12 Owerri Street, Jos', parcelType: "delicate", senderName: "luke Ben", receiverName: "Pamela Okoro", @@ -120,10 +127,11 @@ const undefinedPhone = { const emptyPhone = { email: 'joyce@gmail.com', - weight: "1.5", + weight: "1.5kg", parcelContent: "Books", price: "200", quantity: "2", + pickupAddress: '12 Owerri Street, Jos', parcelType: "delicate", senderPhone: "", senderName: "luke Ben", @@ -138,10 +146,11 @@ const emptyPhone = { const invalidPhoneFormat = { email: 'joyce@gmail.com', - weight: "1.5", + weight: "1.5kg", parcelContent: "Books", price: "200", quantity: "2", + pickupAddress: '12 Owerri Street, Jos', parcelType: "delicate", senderPhone: "rt4553", senderName: "luke Ben", @@ -156,10 +165,11 @@ const invalidPhoneFormat = { const invalidSenderPhoneLt = { email: 'joyce@gmail.com', - weight: "1.5", + weight: "1.5kg", parcelContent: "Books", price: "200", quantity: "2", + pickupAddress: '12 Owerri Street, Jos', parcelType: "delicate", senderPhone: "0238", senderName: "luke Ben", @@ -174,10 +184,11 @@ const invalidSenderPhoneLt = { const invalidReceiverPhoneLt = { email: 'joyce@gmail.com', - weight: "1.5", + weight: "1.5kg", parcelContent: "Books", price: "200", quantity: "2", + pickupAddress: '12 Owerri Street, Jos', parcelType: "delicate", senderPhone: "0238908669", senderName: "luke Ben", @@ -191,10 +202,11 @@ const invalidReceiverPhoneLt = { }; const undefinedEmail = { - weight: "1.5", + weight: "1.5kg", parcelContent: "Books", price: "200", quantity: "2", + pickupAddress: '12 Owerri Street, Jos', parcelType: "delicate", senderPhone: "02383837300", senderName: "luke Ben", @@ -209,10 +221,11 @@ const undefinedEmail = { const emptyEmail = { email: "", - weight: "1.5", + weight: "1.5kg", parcelContent: "Books", price: "200", quantity: "2", + pickupAddress: '12 Owerri Street, Jos', parcelType: "delicate", senderPhone: "02383837300", senderName: "luke Ben", @@ -226,11 +239,12 @@ const emptyEmail = { }; const invalidEmailFormat = { - email: "joycegmail.", - weight: "1.5", + email: "joycegail.", + weight: "1.5kg", parcelContent: "Books", price: "200", quantity: "2", + pickupAddress: '12 Owerri Street, Jos', parcelType: "delicate", senderPhone: "02383837300", senderName: "luke Ben", @@ -244,11 +258,12 @@ const invalidEmailFormat = { }; const invalidEmailLength = { - email: 'e@gcm', - weight: "1.5:", + email: 'e@gma.com', + weight: "1.5kg", parcelContent: "Books", price: "200", quantity: "2", + pickupAddress: '12 Owerri Street, Jos', parcelType: "delicate", senderPhone: "02383837300", senderName: "luke Ben", @@ -266,6 +281,7 @@ const undefinedWeight = { parcelContent: "Books", price: "200", quantity: "2", + pickupAddress: '12 Owerri Street, Jos', parcelType: "delicate", senderPhone: "02383837300", senderName: "luke Ben", @@ -283,6 +299,7 @@ const emptyWeight = { parcelContent: "Books", price: "200", quantity: "2", + pickupAddress: '12 Owerri Street, Jos', parcelType: "delicate", senderPhone: "02383837300", senderName: "luke Ben", @@ -297,10 +314,11 @@ const emptyWeight = { const invalidWeightLength = { email: 'joyce@gmail.com', - weight: "0", + weight: "0kg", parcelContent: "Books", price: "200", quantity: "2", + pickupAddress: '12 Owerri Street, Jos', parcelType: "delicate", senderPhone: "02383837300", senderName: "luke Ben", @@ -319,6 +337,7 @@ const invalidWeigthChar = { parcelContent: "Books", price: "200", quantity: "2", + pickupAddress: '12 Owerri Street, Jos', parcelType: "delicate", senderPhone: "02383837300", senderName: "luke Ben", @@ -333,9 +352,10 @@ const invalidWeigthChar = { const undefinedParcelContent = { email: 'joyce@gmail.com', - weight: "1.5", + weight: "1.5kg", price: "200", quantity: "2", + pickupAddress: '12 Owerri Street, Jos', parcelType: "delicate", senderPhone: "02383837300", senderName: "luke Ben", @@ -350,10 +370,11 @@ const undefinedParcelContent = { const emptyParcelContent = { email: 'joyce@gmail.com', - weight: "1.5", + weight: "1.5kg", parcelContent: "", price: "200", quantity: "2", + pickupAddress: '12 Owerri Street, Jos', parcelType: "delicate", senderPhone: "02383837300", senderName: "luke Ben", @@ -368,10 +389,11 @@ const emptyParcelContent = { const invalidParcelContentLt = { email: 'joyce@gmail.com', - weight: "1.5", + weight: "1.5kg", parcelContent: "Bo", price: "200", quantity: "2", + pickupAddress: '12 Owerri Street, Jos', parcelType: "delicate", senderPhone: "02383837300", senderName: "luke Ben", @@ -386,10 +408,11 @@ const invalidParcelContentLt = { const invalidParcelContentChar = { email: 'joyce@gmail.com', - weight: "1.5", + weight: "1.5kg", parcelContent: "79Bo", price: "200", quantity: "2", + pickupAddress: '12 Owerri Street, Jos', parcelType: "delicate", senderPhone: "02383837300", senderName: "luke Ben", @@ -403,9 +426,10 @@ const invalidParcelContentChar = { }; const undefinedPrice = { email: 'joyce@gmail.com', - weight: "1.5", + weight: "1.5kg", parcelContent: "Books", quantity: "2", + pickupAddress: '12 Owerri Street, Jos', parcelType: "delicate", senderPhone: "02383837300", senderName: "luke Ben", @@ -420,10 +444,11 @@ const undefinedPrice = { const emptyPrice = { email: 'joyce@gmail.com', - weight: "1.5", + weight: "1.5kg", parcelContent: "Books", price: "", quantity: "2", + pickupAddress: '12 Owerri Street, Jos', parcelType: "delicate", senderPhone: "02383837300", senderName: "luke Ben", @@ -438,10 +463,11 @@ const emptyPrice = { const invalidPriceLength = { email: 'joyce@gmail.com', - weight: "1.5", + weight: "1.5kg", parcelContent: "Books", price: "20", quantity: "2", + pickupAddress: '12 Owerri Street, Jos', parcelType: "delicate", senderPhone: "02383837300", senderName: "luke Ben", @@ -456,10 +482,11 @@ const invalidPriceLength = { const invalidPriceChar = { email: 'joyce@gmail.com', - weight: "1.5", + weight: "1.5kg", parcelContent: "Books", - price: "9ab", + price: "ab", quantity: "2", + pickupAddress: '12 Owerri Street, Jos', parcelType: "delicate", senderPhone: "02383837300", senderName: "luke Ben", @@ -475,9 +502,10 @@ const invalidPriceChar = { const undefinedQty = { email: 'joyce@gmail.com', - weight: "1.5", + weight: "1.5kg", parcelContent: "Books", price: "200", + pickupAddress: '12 Owerri Street, Jos', parcelType: "delicate", senderPhone: "02383837300", senderName: "luke Ben", @@ -492,10 +520,11 @@ const undefinedQty = { const emptyQty = { email: 'joyce@gmail.com', - weight: "1.5", + weight: "1.5kg", parcelContent: "Books", price: "200", quantity: "", + pickupAddress: '12 Owerri Street, Jos', parcelType: "delicate", senderPhone: "02383837300", senderName: "luke Ben", @@ -510,10 +539,11 @@ const emptyQty = { const invalidQtyLength = { email: 'joyce@gmail.com', - weight: "1.5", + weight: "1.5kg", parcelContent: "Books", price: "200", - quantity: "0", + quantity: "234", + pickupAddress: '12 Owerri Street, Jos', parcelType: "delicate", senderPhone: "02383837300", senderName: "luke Ben", @@ -528,10 +558,11 @@ const invalidQtyLength = { const invalidQtyChar = { email: 'joyce@gmail.com', - weight: "1.5", + weight: "1.5kg", parcelContent: "Books", price: "200", quantity: "dg", + pickupAddress: '12 Owerri Street, Jos', parcelType: "delicate", senderPhone: "02383837300", senderName: "luke Ben", @@ -546,9 +577,11 @@ const invalidQtyChar = { const undefinedParcelType = { email: 'joyce@gmail.com', - weight: "1.5", + weight: "1.5kg", + parcelContent: "Books", price: "200", quantity: "2", + pickupAddress: '12 Owerri Street, Jos', senderPhone: "02383837300", senderName: "luke Ben", receiverName: "Pamela Okoro", @@ -562,29 +595,12 @@ const undefinedParcelType = { const emptyParcelType = { email: 'joyce@gmail.com', - weight: "1.5", + weight: "1.5kg", parcelContent: "Books", price: "200", quantity: "2", parcelType: "", - senderPhone: "02383837300", - senderName: "luke Ben", - receiverName: "Pamela Okoro", - destinationAddress: "12 roag road Benin", - receiverPhone: "02383837388", - status: "pending", - total: "500", - presentLocation: "Jos", - trackingID: "381148a4-d861-5652-a697-730a865bccfe" -}; - -const invalidParcelTypeLt = { - email: 'joyce@gmail.com', - weight: "1.5", - parcelContent: "Books", - price: "200", - quantity: "2", - parcelType: "deli", + pickupAddress: '12 Owerri Street, Jos', senderPhone: "02383837300", senderName: "luke Ben", receiverName: "Pamela Okoro", @@ -598,10 +614,11 @@ const invalidParcelTypeLt = { const invalidParcelTypeChar = { email: 'joyce@gmail.com', - weight: "1.5", + weight: "1.5kg", parcelContent: "Books", price: "200", quantity: "2", + pickupAddress: '12 Owerri Street, Jos', parcelType: "78hg", senderPhone: "02383837300", senderName: "luke Ben", @@ -619,5 +636,5 @@ export { emptyEmail, invalidEmailFormat, invalidEmailLength, undefinedWeight, emptyWeight, invalidWeightLength, invalidWeigthChar, undefinedParcelContent, emptyParcelContent, invalidParcelContentLt, invalidParcelContentChar, undefinedPrice, - emptyPrice, invalidPriceLength, invalidPriceChar, undefinedQty, emptyQty, invalidQtyLength, invalidQtyChar, undefinedParcelType, emptyParcelType, invalidParcelTypeLt, invalidParcelTypeChar + emptyPrice, invalidPriceLength, invalidPriceChar, undefinedQty, emptyQty, invalidQtyLength, invalidQtyChar, undefinedParcelType, emptyParcelType, invalidParcelTypeChar }; \ No newline at end of file diff --git a/server/tests/placeOrderTest.js b/server/tests/placeOrderTest.js index 771ab45..f9a5597 100644 --- a/server/tests/placeOrderTest.js +++ b/server/tests/placeOrderTest.js @@ -6,7 +6,7 @@ import { emptyEmail, invalidEmailFormat, invalidEmailLength, undefinedWeight, emptyWeight, invalidWeightLength, invalidWeigthChar, undefinedParcelContent, emptyParcelContent, invalidParcelContentLt, invalidParcelContentChar, undefinedPrice, - emptyPrice, invalidPriceLength, invalidPriceChar, undefinedQty, emptyQty, invalidQtyLength, invalidQtyChar, undefinedParcelType, emptyParcelType, invalidParcelTypeLt, invalidParcelTypeChar + emptyPrice, invalidPriceLength, invalidPriceChar, undefinedQty, emptyQty, invalidQtyLength, invalidQtyChar, undefinedParcelType, emptyParcelType, invalidParcelTypeChar } from './placeOrderMock'; import placeOrder from '../inMemoryData/placeOrder'; @@ -45,7 +45,7 @@ describe('Test for Parcel Order Endpoints', () => { it('Should return 201 for success', (done) => { chai.request(app) .post('/api/v1/placeOrder') - .send(successOrder) + .send(successfulOrder) .end((error, response) => { expect(response).to.have.status(201); expect(response.body.message).to.equal("Your delivery order is booked successfully"); @@ -66,10 +66,10 @@ describe('Test for Parcel Order Endpoints', () => { it('Should return 400 for empty name', (done) => { chai.request(app) .post('/api/v1/placeOrder') - .send(emptySenderName) + .send(emptyName) .end((error, response) => { expect(response).to.have.status(400); - expect(response.body.message).to.equal('Please enter senderName'); + expect(response.body.message).to.equal('Please enter senderName or receiverName'); done(); }); }); @@ -394,16 +394,7 @@ describe('Test for Parcel Order Endpoints', () => { done(); }); }); - it('Should return 400 for invalid parcel type length', (done) => { - chai.request(app) - .post('/api/v1/placeOrder') - .send(invalidParcelTypeLt) - .end((error, response) => { - expect(response).to.have.status(400); - expect(response.body.message).to.equal('parcelType should be 8 to 12 characters long'); - done(); - }); - }); + }); describe('Test for Fetch all Parcels Orders Endpoint', () => { @@ -421,28 +412,20 @@ describe('Test for Parcel Order Endpoints', () => { describe('Test for Fetch specific Parcel Order Endpoint', () => { it('should return 200 for success', (done) => { chai.request(app) - .get('/api/v1/parcels/:219b1e64-afe5-5e71-ac0b-8b6a4c605a01') + .get('/api/v1/parcels/219b1e64-afe5-5e71-ac0b-8b6a4c605a01') .end((error, response) => { expect(response).to.have.status(200); expect(response.body.message).to.equal('Fetched order successfull!'); done(); }); }); - it('should return 400 for invalid URL', (done) => { - chai.request(app) - .get('/api/v1/orders/fat') - .end((error, response) => { - expect(response).to.have.status(400); - expect(response.body.message).to.equal('Sorry! this is an invalid URL'); - done(); - }); - }); + it('return 404 for orderTrackId number that does not exist', (done) => { chai.request(app) .get('/api/v1/orders/:00001') .end((error, response) => { expect(response).to.have.status(404); - expect(response.body.message).to.equal('Sorry! Order does not exist'); + expect(response.body.message).to.equal('Sorry! This page does not exist, enter a valid url.'); done(); }); });