From 09b037f5ec2d01b5aaa5028f98a8749c76385253 Mon Sep 17 00:00:00 2001 From: saschrad <saschrad@stud.ntnu.no> Date: Fri, 6 May 2022 14:49:17 +0200 Subject: [PATCH] Added iteminfo tests --- src/components/RentingComponents/ItemInfo.vue | 7 ++++++- .../renting-compnents-tests/item-info.spec.js | 16 +++++++++++++++- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/components/RentingComponents/ItemInfo.vue b/src/components/RentingComponents/ItemInfo.vue index beee721..bfe9c9a 100644 --- a/src/components/RentingComponents/ItemInfo.vue +++ b/src/components/RentingComponents/ItemInfo.vue @@ -75,6 +75,7 @@ <p class="text-xl font-semibold text-gray-900"> Total pris: {{ totPrice }} kr </p> + <p v-if="error" style="color: red;">Dato er påkrevd</p> <button class="px-4 py-2 font-medium tracking-wide text-white capitalize transition-colors duration-200 transform bg-gray-500 rounded-md focus:outline-none focus:ring focus:ring-opacity-80" v-bind:class="{ colorChange: allowForRent }" @@ -107,6 +108,7 @@ export default { data() { return { confirm: false, + error: false, item: { listingID: 0, title: "", @@ -153,6 +155,8 @@ export default { if (this.allowForRent) { this.confirm = true; this.createPushItem(); + } else { + this.error = true; } }, createPushItem() { @@ -212,11 +216,12 @@ export default { this.rentingEndDate = dateOfsomthing.endDate; this.calculateTotPrice(); this.allowForRent = true; + this.error = false; } }, calculateTotPrice() { let amountOfDays = this.rentingEndDate - this.rentingStartDate; - amountOfDays = amountOfDays / 86400000; + amountOfDays = Math.ceil(amountOfDays / 86400000); this.totPrice = this.item.pricePerDay * amountOfDays; }, }, diff --git a/tests/unit/component-tests/renting-compnents-tests/item-info.spec.js b/tests/unit/component-tests/renting-compnents-tests/item-info.spec.js index 9f5d7e2..e987467 100644 --- a/tests/unit/component-tests/renting-compnents-tests/item-info.spec.js +++ b/tests/unit/component-tests/renting-compnents-tests/item-info.spec.js @@ -64,17 +64,21 @@ describe("ItemInfo component", () => { }) it("Check that button cannot be clicked if date is not selected", async () => { - const jestCreatePushItemMock = jest.fn(); wrapper.vm.createPushItem = jestCreatePushItemMock; + // Click rent button wrapper.find("button").trigger("click"); + // wait a tick await wrapper.vm.$nextTick(); // Check that jestMock was not clicked expect(mockMethod).toHaveBeenCalledTimes(1); expect(mockCreatePush).toHaveBeenCalledTimes(0); + // Check that the last p contains "Dato er påkrevd" + expect(wrapper.findAll("p")[wrapper.findAll("p").length - 1].text()).toBe("Dato er påkrevd"); + }) it("Check that send to confirm works", async () => { @@ -91,5 +95,15 @@ describe("ItemInfo component", () => { expect(mockCreatePush).toHaveBeenCalledTimes(1); }) + it("Test that price calculation works", async () => { + wrapper.vm.setDate({ + startDate: new Date("2022-01-01"), + endDate: new Date("2022-01-03"), + }) + // wait a tick + await wrapper.vm.$nextTick(); + await wrapper.vm.$nextTick(); + expect(wrapper.vm.totPrice).toBe(200); + }) }); \ No newline at end of file -- GitLab