diff --git a/src/components/RentingComponents/ItemInfo.vue b/src/components/RentingComponents/ItemInfo.vue index beee721738d6feb6896c2c15cbb65ab6f9dda62f..bfe9c9af67080b66f1e26e13f7a021f4772b05c9 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 9f5d7e2d0cbf5be5541b98067a36d0f2360dfd0e..e9874670c92f064b47df05e727f8e9dff03953e8 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