From 06abec465a2a1847797c5e59bd8f651c22f1e7bf Mon Sep 17 00:00:00 2001
From: Titus Kristiansen <titusk@stud.ntnu.no>
Date: Thu, 5 May 2022 12:57:34 +0200
Subject: [PATCH] Linted

---
 jest.config.js                                |  2 +-
 src/components/BaseComponents/NavBar.vue      | 58 +++++++------
 .../BaseComponents/PaginationTemplate.vue     |  4 +-
 .../ChatComponents/ChatComponent.vue          | 12 ++-
 src/components/ChatComponents/ChatMessage.vue | 76 ++++++++---------
 src/components/ChatComponents/ChatProfile.vue |  2 +-
 .../ChatComponents/ChatsComponent.vue         | 10 ++-
 .../ChatComponents/RentalMessage.vue          | 27 +++---
 .../CommunityComponents/CommunityListItem.vue |  5 +-
 .../CommunityComponents/NewCommunityForm.vue  |  4 +-
 src/services/ws.js                            |  9 +-
 src/views/HelpView.vue                        |  8 +-
 .../CalendarComponent.spec.js                 | 79 +++++++++---------
 .../month-selector-test.spec.js               | 82 +++++++++----------
 14 files changed, 198 insertions(+), 180 deletions(-)

diff --git a/jest.config.js b/jest.config.js
index dfcd355..f638d89 100644
--- a/jest.config.js
+++ b/jest.config.js
@@ -1,5 +1,5 @@
 module.exports = {
   preset: "@vue/cli-plugin-unit-jest",
   collectCoverage: true,
-  collectCoverageFrom: ['src/**/*.js', 'src/**/*.vue', '!**/node_modules/**']
+  collectCoverageFrom: ["src/**/*.js", "src/**/*.vue", "!**/node_modules/**"],
 };
diff --git a/src/components/BaseComponents/NavBar.vue b/src/components/BaseComponents/NavBar.vue
index 79680fe..e6f2562 100644
--- a/src/components/BaseComponents/NavBar.vue
+++ b/src/components/BaseComponents/NavBar.vue
@@ -24,7 +24,7 @@
             class="m-6 md:mr-2 h-7 text-primary-medium float-left"
             alt="Meldinger"
           />
-          <p class="notification" v-if="newMessages > 0">{{notifications}}</p>
+          <p class="notification" v-if="newMessages > 0">{{ notifications }}</p>
           <a class="hidden md:block mt-7 text-sm float-right">Meldinger</a>
         </div>
       </li>
@@ -42,24 +42,24 @@
 <script>
 import { parseUserFromToken } from "@/utils/token-utils";
 import { PlusIcon, ChatAlt2Icon, UserCircleIcon } from "@heroicons/vue/outline";
-import ws from '@/services/ws';
+import ws from "@/services/ws";
 
 export default {
   name: "NavBar.vue",
   data() {
     return {
       newMessages: 0,
-    }
+    };
   },
   computed: {
     notifications() {
       // if  new messages is greater than 99 show +99
       if (this.newMessages > 99) {
-        return '+99'
+        return "+99";
       } else {
-        return this.newMessages
+        return this.newMessages;
       }
-    }
+    },
   },
   components: {
     PlusIcon,
@@ -79,15 +79,19 @@ export default {
     },
     loadMessages() {
       this.newMessages = 0;
-      this.$router.push('/messages');
-    }
+      this.$router.push("/messages");
+    },
   },
   created() {
-    ws.on('NEW_MESSAGE', () => {
-      if(this.$router.currentRoute.value.name == 'messages') return;
-      this.newMessages += 1;
-    }, "header");
-  }
+    ws.on(
+      "NEW_MESSAGE",
+      () => {
+        if (this.$router.currentRoute.value.name == "messages") return;
+        this.newMessages += 1;
+      },
+      "header"
+    );
+  },
 };
 </script>
 
@@ -96,19 +100,19 @@ export default {
   position: relative;
 }
 .notification {
-    position: absolute;
-    background-color: #ff5a5f;
-    top: 0;
-    min-width: 20px;
-    min-height: 20px;
-    padding: 0.25rem;
-    transform: translate(-80%, -30%);
-    color: white;
-    font-size: 10px;
-    border-radius: 50%;
-    font-weight: bold;
-    text-align: center;
-    right: 0;
-    cursor: pointer;
+  position: absolute;
+  background-color: #ff5a5f;
+  top: 0;
+  min-width: 20px;
+  min-height: 20px;
+  padding: 0.25rem;
+  transform: translate(-80%, -30%);
+  color: white;
+  font-size: 10px;
+  border-radius: 50%;
+  font-weight: bold;
+  text-align: center;
+  right: 0;
+  cursor: pointer;
 }
 </style>
diff --git a/src/components/BaseComponents/PaginationTemplate.vue b/src/components/BaseComponents/PaginationTemplate.vue
index a67eefc..939d735 100644
--- a/src/components/BaseComponents/PaginationTemplate.vue
+++ b/src/components/BaseComponents/PaginationTemplate.vue
@@ -7,7 +7,9 @@
     >
       Forrige
     </span>
-    <label class="mx-2 text-primary-light">{{ currentPage + 1 }} av {{ totalPages() }}</label>
+    <label class="mx-2 text-primary-light"
+      >{{ currentPage + 1 }} av {{ totalPages() }}</label
+    >
     <span
       v-if="showNextLink()"
       class="cursor-pointer inline-flex items-center p-2 text-sm font-medium text-primary-light bg-white rounded-lg border border-gray-300 hover:bg-gray-100 hover:text-gray-700"
diff --git a/src/components/ChatComponents/ChatComponent.vue b/src/components/ChatComponents/ChatComponent.vue
index ff6f25d..6b2252b 100644
--- a/src/components/ChatComponents/ChatComponent.vue
+++ b/src/components/ChatComponents/ChatComponent.vue
@@ -190,9 +190,13 @@ export default {
     await this.getRecipient();
     await this.reloadRents();
 
-    ws.on("NEW_MESSAGE", () => {
-      this.reloadMessages();
-    }, "chat");
+    ws.on(
+      "NEW_MESSAGE",
+      () => {
+        this.reloadMessages();
+      },
+      "chat"
+    );
   },
   updated() {
     if (this.canScroll) this.scroll();
@@ -201,7 +205,7 @@ export default {
   },
   unmounted() {
     ws.end("NEW_MESSAGE", "chat");
-  }
+  },
 };
 </script>
 
diff --git a/src/components/ChatComponents/ChatMessage.vue b/src/components/ChatComponents/ChatMessage.vue
index eb2e044..3490083 100644
--- a/src/components/ChatComponents/ChatMessage.vue
+++ b/src/components/ChatComponents/ChatMessage.vue
@@ -58,35 +58,36 @@ export default {
         : "justify-end";
     },
     calculateTime() {
-       var time = this?.message.timestamp;
-       var date = new Date(time);
-       //Todo add timing for mm and hh and week of message
-       var mmOfMessage = String(date.getMinutes());
-       var hhOfMessage = String(date.getHours());
-       var ddOfMessage = String(date.getDate()).padStart(2, '0');
-       var dayOfMessage = date.toLocaleString('default', { weekday: 'short' });
-       var monthOfMessage = String(date.getMonth() + 1).padStart(2, '0'); //January is 0!
-       const shortMonthOfMessage = date.toLocaleString('default', { month: 'short' });
-       var yyyyOfMessage = date.getFullYear();
+      var time = this?.message.timestamp;
+      var date = new Date(time);
+      //Todo add timing for mm and hh and week of message
+      var mmOfMessage = String(date.getMinutes());
+      var hhOfMessage = String(date.getHours());
+      var ddOfMessage = String(date.getDate()).padStart(2, "0");
+      var dayOfMessage = date.toLocaleString("default", { weekday: "short" });
+      var monthOfMessage = String(date.getMonth() + 1).padStart(2, "0"); //January is 0!
+      const shortMonthOfMessage = date.toLocaleString("default", {
+        month: "short",
+      });
+      var yyyyOfMessage = date.getFullYear();
 
-       var today = new Date();
-       var dd = String(today.getDate()).padStart(2, '0');
-       var mm = String(today.getMonth() + 1).padStart(2, '0'); //January is 0!
-       var yyyy = today.getFullYear();
-      if(ddOfMessage == dd){
+      var today = new Date();
+      var dd = String(today.getDate()).padStart(2, "0");
+      var mm = String(today.getMonth() + 1).padStart(2, "0"); //January is 0!
+      var yyyy = today.getFullYear();
+      if (ddOfMessage == dd) {
         return "" + hhOfMessage + ":" + mmOfMessage + "";
+      } else if (this.isDateInThisWeek(date)) {
+        return "" + dayOfMessage + "  " + hhOfMessage + ":" + mmOfMessage;
+      } else if (monthOfMessage == mm) {
+        return "" + ddOfMessage + "  " + hhOfMessage + ":" + mmOfMessage;
+      } else if (yyyyOfMessage == yyyy) {
+        return "" + shortMonthOfMessage + "  " + ddOfMessage;
       }
-      else if (this.isDateInThisWeek(date)){
-          return "" +dayOfMessage + "  " + hhOfMessage+":" + mmOfMessage;
-      }
-      else if (monthOfMessage == mm){
-          return "" + ddOfMessage + "  " + hhOfMessage + ":" + mmOfMessage;
-      }
-      else if (yyyyOfMessage == yyyy){
-          return "" + shortMonthOfMessage + "  " + ddOfMessage; 
-      }
-          return shortMonthOfMessage + "  " + ddOfMessage + "  " + yyyyOfMessage + "";
-      
+      return (
+        shortMonthOfMessage + "  " + ddOfMessage + "  " + yyyyOfMessage + ""
+      );
+
       /*
         Take timestamp and display date when message was sent
         If message was sent this day show time (HH:MM) (13:00)
@@ -95,23 +96,22 @@ export default {
         If message was sent this year show month and day of the month (MMM DD) (Jan 13)
         If message was sent more than a year ago show year with date (MMM DD YYYY) (Jan 13 2020)
       */
-
     },
     isDateInThisWeek(date) {
-  const todayObj = new Date();
-  const todayDate = todayObj.getDate();
-  const todayDay = todayObj.getDay();
+      const todayObj = new Date();
+      const todayDate = todayObj.getDate();
+      const todayDay = todayObj.getDay();
 
-  // get first date of week
-  const firstDayOfWeek = new Date(todayObj.setDate(todayDate - todayDay));
+      // get first date of week
+      const firstDayOfWeek = new Date(todayObj.setDate(todayDate - todayDay));
 
-  // get last date of week
-  const lastDayOfWeek = new Date(firstDayOfWeek);
-  lastDayOfWeek.setDate(lastDayOfWeek.getDate() + 6);
+      // get last date of week
+      const lastDayOfWeek = new Date(firstDayOfWeek);
+      lastDayOfWeek.setDate(lastDayOfWeek.getDate() + 6);
 
-  // if date is equal or within the first and last dates of the week
-  return date >= firstDayOfWeek && date <= lastDayOfWeek;
-},
+      // if date is equal or within the first and last dates of the week
+      return date >= firstDayOfWeek && date <= lastDayOfWeek;
+    },
   },
 };
 </script>
diff --git a/src/components/ChatComponents/ChatProfile.vue b/src/components/ChatComponents/ChatProfile.vue
index bfed6d6..db4c47c 100644
--- a/src/components/ChatComponents/ChatProfile.vue
+++ b/src/components/ChatComponents/ChatProfile.vue
@@ -82,6 +82,6 @@ export default {
     selectUser() {
       this.$emit("recipient", this.conversation?.recipient.userId);
     },
-  }
+  },
 };
 </script>
diff --git a/src/components/ChatComponents/ChatsComponent.vue b/src/components/ChatComponents/ChatsComponent.vue
index 90d6a30..f2cc2b0 100644
--- a/src/components/ChatComponents/ChatsComponent.vue
+++ b/src/components/ChatComponents/ChatsComponent.vue
@@ -90,9 +90,13 @@ export default {
   },
   async created() {
     await this.fetchChats();
-    ws.on("NEW_MESSAGE",async () => { 
-      await this.fetchChats()
-      }, "chats");
+    ws.on(
+      "NEW_MESSAGE",
+      async () => {
+        await this.fetchChats();
+      },
+      "chats"
+    );
     this.recipientID = this.$route.query?.userID || null;
     if (!this.recipientID) this.hambugerDisplay = "block";
   },
diff --git a/src/components/ChatComponents/RentalMessage.vue b/src/components/ChatComponents/RentalMessage.vue
index e57640b..8dab267 100644
--- a/src/components/ChatComponents/RentalMessage.vue
+++ b/src/components/ChatComponents/RentalMessage.vue
@@ -18,15 +18,15 @@
         </p>
       </div>
     </div>
-    <div class="buttons" v-if = "(!rent.isAccepted && !rent.deleted)"> 
+    <div class="buttons" v-if="!rent.isAccepted && !rent.deleted">
       <button class="button green" @click="accept">Godta</button>
       <button class="button red" @click="reject">Avslå</button>
     </div>
-    <div class="" v-if = rent.isAccepted>
-        <h1 class="green">Godtatt</h1>
+    <div class="" v-if="rent.isAccepted">
+      <h1 class="green">Godtatt</h1>
     </div>
-    <div class="" v-if = rent.deleted>
-        <h1 class="red">Avslått</h1>
+    <div class="" v-if="rent.deleted">
+      <h1 class="red">Avslått</h1>
     </div>
   </div>
 </template>
@@ -38,9 +38,9 @@ export default {
   props: {
     rent: {
       type: Object,
-     required: true
-      },
+      required: true,
     },
+  },
   computed: {
     img() {
       return "https://images.unsplash.com/photo-1453728013993-6d66e9c9123a?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxzZWFyY2h8Mnx8dmlld3xlbnwwfHwwfHw%3D&w=1000&q=80"; //this.rent.listing.imageUrl;
@@ -67,19 +67,18 @@ export default {
   },
   methods: {
     async accept() {
-       await axios.put(
-        process.env.VUE_APP_BASEURL +
-          `renting/${this.rent.rentId}/accept` ,null,
+      await axios.put(
+        process.env.VUE_APP_BASEURL + `renting/${this.rent.rentId}/accept`,
+        null,
         { headers: tokenHeader() }
       );
     },
     async reject() {
-         await axios.delete(
-        process.env.VUE_APP_BASEURL +
-          `renting/${this.rent.rentId}/delete`,null,
+      await axios.delete(
+        process.env.VUE_APP_BASEURL + `renting/${this.rent.rentId}/delete`,
+        null,
         { headers: tokenHeader() }
       );
-      
     },
   },
 };
diff --git a/src/components/CommunityComponents/CommunityListItem.vue b/src/components/CommunityComponents/CommunityListItem.vue
index 02115d7..40d9064 100644
--- a/src/components/CommunityComponents/CommunityListItem.vue
+++ b/src/components/CommunityComponents/CommunityListItem.vue
@@ -54,7 +54,10 @@
         v-if="!community.picture"
         class="h-10 w-10 flex flex-col justify-center items-center ml-2 mr-2"
       >
-        <UserGroupIcon alt="Felleskapets bilde" class="h-10 w-10 text-primary-dark" />
+        <UserGroupIcon
+          alt="Felleskapets bilde"
+          class="h-10 w-10 text-primary-dark"
+        />
       </div>
       <div
         v-else
diff --git a/src/components/CommunityComponents/NewCommunityForm.vue b/src/components/CommunityComponents/NewCommunityForm.vue
index 200db5b..7a62e90 100644
--- a/src/components/CommunityComponents/NewCommunityForm.vue
+++ b/src/components/CommunityComponents/NewCommunityForm.vue
@@ -136,8 +136,8 @@
     <!-- Images -->
     <div class="mt-6">
       <label
-          class="block mb-2 text-sm font-medium text-gray-900 dark:text-gray-400"
-          id="imageLabel"
+        class="block mb-2 text-sm font-medium text-gray-900 dark:text-gray-400"
+        id="imageLabel"
       >
         Bilde (bildet må være .png)
       </label>
diff --git a/src/services/ws.js b/src/services/ws.js
index 4a8cbbd..233ed88 100644
--- a/src/services/ws.js
+++ b/src/services/ws.js
@@ -12,9 +12,8 @@ const ws = (function () {
 
   const fire = function (event, data) {
     if (handlers[event]) {
-      
       // for each object in object fire event
-      for(const key in handlers[event]) {
+      for (const key in handlers[event]) {
         handlers[event][key](data);
       }
     }
@@ -45,9 +44,9 @@ const ws = (function () {
   return {
     on: function (event, callback, id = "none") {
       // Generate random id
-      if(!handlers[event]) {
-        handlers[event] = {}
-      };
+      if (!handlers[event]) {
+        handlers[event] = {};
+      }
       handlers[event][id] = callback;
     },
     fire: fire,
diff --git a/src/views/HelpView.vue b/src/views/HelpView.vue
index 16026a6..343f1f4 100644
--- a/src/views/HelpView.vue
+++ b/src/views/HelpView.vue
@@ -3,10 +3,14 @@
     <div id="contact" class="grid place-items-center w-full">
       <div class="lg:mb-0 text-gray-700 w-full">
         <div class="mx-4">
-          <h2 class="flex justify-center text-primary-dark mb-6 uppercase font-bold text-2xl mt-4">
+          <h2
+            class="flex justify-center text-primary-dark mb-6 uppercase font-bold text-2xl mt-4"
+          >
             Kontakt oss
           </h2>
-          <p class="flex justify-center mx-auto text-gray-500 leading-relaxed mb-12 max-w-md mt-8">
+          <p
+            class="flex justify-center mx-auto text-gray-500 leading-relaxed mb-12 max-w-md mt-8"
+          >
             {{ contact.description }}
           </p>
         </div>
diff --git a/tests/unit/component-tests/time-picker-components-tests/date-range-picker-tests/CalendarComponent.spec.js b/tests/unit/component-tests/time-picker-components-tests/date-range-picker-tests/CalendarComponent.spec.js
index 9ed6d65..e244058 100644
--- a/tests/unit/component-tests/time-picker-components-tests/date-range-picker-tests/CalendarComponent.spec.js
+++ b/tests/unit/component-tests/time-picker-components-tests/date-range-picker-tests/CalendarComponent.spec.js
@@ -2,44 +2,43 @@ import { shallowMount } from "@vue/test-utils";
 import CalendarComponent from "@/components/TimepickerComponents/DatepickerRange/CalendarComponent.vue";
 
 describe("CalendarComponent tests", () => {
-    let wrapper;
-    beforeEach(() => {
-        wrapper = shallowMount(CalendarComponent, {
-            propsData: {
-                month: new Date(1651739228545),// May 2022
-                blockedDaysRange: [
-                    [new Date(1651739228545)],  // 5 May
-                    [
-                        new Date(1652733228545), // 16 May
-                        new Date(1652833228545) // 18 May
-                    ]]
-            }
-        });
+  let wrapper;
+  beforeEach(() => {
+    wrapper = shallowMount(CalendarComponent, {
+      propsData: {
+        month: new Date(1651739228545), // May 2022
+        blockedDaysRange: [
+          [new Date(1651739228545)], // 5 May
+          [
+            new Date(1652733228545), // 16 May
+            new Date(1652833228545), // 18 May
+          ],
+        ],
+      },
     });
-
-    it("Is instansiated", () => {
-        expect(wrapper.exists()).toBeTruthy();
-    });
-
-    it("Check that all week days are rendered", () => {
-        expect(wrapper.findAll(".months").length).toBe(7);
-    })
-
-    it("Check that the correct amount of days are rendered", () => {
-        // 31 days in May, 6 for start of week from last month and 5 for end of month
-        expect(wrapper.find(".daysList").findAll("div").length).toBe(42);
-    })
-
-    it("Check select day works", () => {
-        wrapper.find(".daysList").findAll("div")[7].find("button").trigger("click");
-        expect(wrapper.emitted()).toHaveProperty('selectDate')
-    })
-
-    it("Test that selecting day outside of month does not work", () => {
-        // Click on the first day, which is not in the month 
-        wrapper.find(".daysList").findAll("div")[0].find("button").trigger("click");
-        expect(wrapper.emitted()).not.toHaveProperty('selectDate')
-    })
-
-
-});
\ No newline at end of file
+  });
+
+  it("Is instansiated", () => {
+    expect(wrapper.exists()).toBeTruthy();
+  });
+
+  it("Check that all week days are rendered", () => {
+    expect(wrapper.findAll(".months").length).toBe(7);
+  });
+
+  it("Check that the correct amount of days are rendered", () => {
+    // 31 days in May, 6 for start of week from last month and 5 for end of month
+    expect(wrapper.find(".daysList").findAll("div").length).toBe(42);
+  });
+
+  it("Check select day works", () => {
+    wrapper.find(".daysList").findAll("div")[7].find("button").trigger("click");
+    expect(wrapper.emitted()).toHaveProperty("selectDate");
+  });
+
+  it("Test that selecting day outside of month does not work", () => {
+    // Click on the first day, which is not in the month
+    wrapper.find(".daysList").findAll("div")[0].find("button").trigger("click");
+    expect(wrapper.emitted()).not.toHaveProperty("selectDate");
+  });
+});
diff --git a/tests/unit/component-tests/time-picker-components-tests/date-range-picker-tests/month-selector-test.spec.js b/tests/unit/component-tests/time-picker-components-tests/date-range-picker-tests/month-selector-test.spec.js
index bba2c88..5a7204d 100644
--- a/tests/unit/component-tests/time-picker-components-tests/date-range-picker-tests/month-selector-test.spec.js
+++ b/tests/unit/component-tests/time-picker-components-tests/date-range-picker-tests/month-selector-test.spec.js
@@ -2,45 +2,45 @@ import { shallowMount } from "@vue/test-utils";
 import monthSelector from "@/components/TimepickerComponents/DatepickerRange/MonthSelector.vue";
 
 describe("MonthSelector tests", () => {
-    let wrapper;
-    beforeEach(() => {
-        wrapper = shallowMount(monthSelector, {
-            propsData: {
-                month: new Date(1651739228545), // 05 May 2022 UTC
-                type: "type"
-            }
-        });
+  let wrapper;
+  beforeEach(() => {
+    wrapper = shallowMount(monthSelector, {
+      propsData: {
+        month: new Date(1651739228545), // 05 May 2022 UTC
+        type: "type",
+      },
     });
-
-    it("Is instansiated", () => {
-        expect(wrapper.exists()).toBeTruthy();
-    });
-
-    it("Check if fields show correct informations", () => {
-        // Check if container exists
-        expect(wrapper.find(".container-c .text"))
-        const children = wrapper.find(".container-c .text").findAll("div");
-
-        // Check if there are two children
-        expect(children.length).toBe(2);
-
-        // Check children content
-        expect(children[0].text()).toBe("MAY");
-        expect(children[1].text()).toBe("2022");
-    });
-
-    it("Check that changing are emitted", async () => {
-        // Check that there are two buttons
-        expect(wrapper.findAll(".button").length).toBe(2);
-
-        const buttons = wrapper.findAll(".button");
-        console.log(buttons[0].html());
-        // Check that the first button goes a month back
-        await buttons[0].trigger("click");
-        expect(wrapper.emitted()).toHaveProperty('back')
-
-        // Check that the second button goes a month forward
-        await buttons[1].trigger("click");
-        expect(wrapper.emitted()).toHaveProperty('forward')
-    })
-});
\ No newline at end of file
+  });
+
+  it("Is instansiated", () => {
+    expect(wrapper.exists()).toBeTruthy();
+  });
+
+  it("Check if fields show correct informations", () => {
+    // Check if container exists
+    expect(wrapper.find(".container-c .text"));
+    const children = wrapper.find(".container-c .text").findAll("div");
+
+    // Check if there are two children
+    expect(children.length).toBe(2);
+
+    // Check children content
+    expect(children[0].text()).toBe("MAY");
+    expect(children[1].text()).toBe("2022");
+  });
+
+  it("Check that changing are emitted", async () => {
+    // Check that there are two buttons
+    expect(wrapper.findAll(".button").length).toBe(2);
+
+    const buttons = wrapper.findAll(".button");
+    console.log(buttons[0].html());
+    // Check that the first button goes a month back
+    await buttons[0].trigger("click");
+    expect(wrapper.emitted()).toHaveProperty("back");
+
+    // Check that the second button goes a month forward
+    await buttons[1].trigger("click");
+    expect(wrapper.emitted()).toHaveProperty("forward");
+  });
+});
-- 
GitLab