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