diff --git a/jest.config.js b/jest.config.js index 4c77e01d3410777323b92648e8016883082e555b..e8682c866dabd37063b477389d8c29f5f5da113b 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,vue}', '!**/node_modules/**'] + collectCoverageFrom: ["src/**/*.{js,vue}", "!**/node_modules/**"], }; diff --git a/src/components/ChatComponents/ChatMessage.vue b/src/components/ChatComponents/ChatMessage.vue index 25aaf5cc00772c8eb024d837e9cdcfdc7a141ae0..0d05a808f6f0fc95f7170144436a6332dc7672be 100644 --- a/src/components/ChatComponents/ChatMessage.vue +++ b/src/components/ChatComponents/ChatMessage.vue @@ -110,6 +110,6 @@ export default { // 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/CommunityComponents/CommunityHeader.vue b/src/components/CommunityComponents/CommunityHeader.vue index 06d915710434da303964f7ebc99b0f042d6306b7..d5d55e2c09c7b5c8e329444d11a3a35eb5fcd1dd 100644 --- a/src/components/CommunityComponents/CommunityHeader.vue +++ b/src/components/CommunityComponents/CommunityHeader.vue @@ -149,7 +149,7 @@ export default { this.hamburgerOpen = !this.hamburgerOpen; }, leaveCommunity: async function () { - await LeaveCommunity(this.community.communityID); + await LeaveCommunity(this.community.communityId); this.$router.push("/"); }, async load() { diff --git a/src/components/UserAuthComponents/DeleteUserModal.vue b/src/components/UserAuthComponents/DeleteUserModal.vue index fd72ea52de88494162c320db0386e2777ef65ae3..df77c6e66c069e6315707f4c648f4386dc2abcab 100644 --- a/src/components/UserAuthComponents/DeleteUserModal.vue +++ b/src/components/UserAuthComponents/DeleteUserModal.vue @@ -1,40 +1,45 @@ <template> <!-- Main modal --> <div - v-if="visible" - class="fixed grid place-items-center bg-gray-600 bg-opacity-50 top-0 left-0 right-0 z-50 w-full overflow-x-hidden overflow-y-auto inset-0 h-full" + v-if="visible" + class="fixed grid place-items-center bg-gray-600 bg-opacity-50 top-0 left-0 right-0 z-50 w-full overflow-x-hidden overflow-y-auto inset-0 h-full" > <div class="relative w-full h-full max-w-2xl p-4 md:h-auto"> <!-- Modal content --> <div class="relative bg-white rounded-lg shadow dark:bg-gray-700"> <!-- Modal header --> <div - class="flex items-start justify-between p-4 border-b rounded-t dark:border-gray-600" + class="flex items-start justify-between p-4 border-b rounded-t dark:border-gray-600" > <h3 class="text-xl font-semibold text-gray-900 dark:text-white"> Er du helt sikker? </h3> <button - @click="close()" - class="text-gray-400 bg-transparent hover:bg-gray-200 hover:text-gray-900 rounded-lg text-sm p-1.5 ml-auto inline-flex items-center dark:hover:bg-gray-600 dark:hover:text-white" + @click="close()" + class="text-gray-400 bg-transparent hover:bg-gray-200 hover:text-gray-900 rounded-lg text-sm p-1.5 ml-auto inline-flex items-center dark:hover:bg-gray-600 dark:hover:text-white" > <svg - class="w-5 h-5" - fill="currentColor" - viewBox="0 0 20 20" - xmlns="http://www.w3.org/2000/svg" + class="w-5 h-5" + fill="currentColor" + viewBox="0 0 20 20" + xmlns="http://www.w3.org/2000/svg" > <path - fill-rule="evenodd" - d="M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z" - clip-rule="evenodd" + fill-rule="evenodd" + d="M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z" + clip-rule="evenodd" ></path> </svg> </button> </div> <!-- Modal body --> <div class="p-6 space-y-6"> - <div @click="deleteUser" class="flex justify-center text-xl text-error-dark cursor-pointer">Slett bruker</div> + <div + @click="deleteUser" + class="flex justify-center text-xl text-error-dark cursor-pointer" + > + Slett bruker + </div> </div> </div> </div> @@ -51,7 +56,7 @@ export default { close() { this.$emit("close"); }, - deleteUser(){ + deleteUser() { this.$emit("deleteUser"); }, }, diff --git a/src/components/UserAuthComponents/LoginForm.vue b/src/components/UserAuthComponents/LoginForm.vue index add14c8052ca57b452893b4397a02ff5c5fe6066..ac4ab429ff491b04f3671995e853f4a70c6d2372 100644 --- a/src/components/UserAuthComponents/LoginForm.vue +++ b/src/components/UserAuthComponents/LoginForm.vue @@ -66,7 +66,11 @@ >Glemt passord?</router-link > - <Button class="login" @click="loginClicked" :text="'Logg på'"></Button> + <Button + class="login" + @click="loginClicked" + :text="'Logg på'" + ></Button> </div> </div> </div> diff --git a/src/components/UserProfileComponents/UserProfile.vue b/src/components/UserProfileComponents/UserProfile.vue index b14c8062b29d5dfef4eab56812b539184731f14e..c7c39da640c00bc06ee1e4b39ee0f38b8579e721 100644 --- a/src/components/UserProfileComponents/UserProfile.vue +++ b/src/components/UserProfileComponents/UserProfile.vue @@ -2,8 +2,11 @@ <div class="w-full max-w-xl m-auto md:ring-1 ring-gray-300 overflow-hidden rounded-xl p-4" > - <DeleteUserModal :visible="show" @close="this.show = false" - @deleteUser="deleteUser"/> + <DeleteUserModal + :visible="show" + @close="this.show = false" + @deleteUser="deleteUser" + /> <div v-show="isCurrentUser" class="float-right px-4 pt-4"> <button id="dropdownDefault" @@ -70,9 +73,10 @@ > </li> <li> - <div class="block py-2 px-4 text-sm text-error-dark cursor-pointer" - @click="toggleModal" - > + <div + class="block py-2 px-4 text-sm text-error-dark cursor-pointer" + @click="toggleModal" + > Slett bruker </div> </li> @@ -173,9 +177,9 @@ export default { toggleModal() { this.show = !this.show; }, - async deleteUser(){ + async deleteUser() { await UserService.deleteUser(); - this.logout() + this.logout(); }, }, beforeMount() { diff --git a/tests/unit/component-tests/ChatComponentsTest/ChatMessage.spec.js b/tests/unit/component-tests/ChatComponentsTest/ChatMessage.spec.js index 27da3c0276d5f7425a05773b96b1371ae750a0af..f336809f545adfa0628640644a5f5e67acb75775 100644 --- a/tests/unit/component-tests/ChatComponentsTest/ChatMessage.spec.js +++ b/tests/unit/component-tests/ChatComponentsTest/ChatMessage.spec.js @@ -1,41 +1,43 @@ import { shallowMount } from "@vue/test-utils"; import ChatMessage from "@/components/ChatComponents/ChatMessage.vue"; -jest.mock('@/utils/token-utils', () =>{ - return { - parseCurrentUser: () => { - return {accountId: 1} - } - } +jest.mock("@/utils/token-utils", () => { + return { + parseCurrentUser: () => { + return { accountId: 1 }; + }, + }; }); describe("ChatMessage.vue", () => { - let wrapper; - jest.mock('jwt-decode', () => () => ({ })); - - beforeEach(() => { - wrapper = shallowMount(ChatMessage, { - propsData: { - message: { - id: 1, - content: "Hello", - timestamp: new Date(), - from: 1, - to: 0 - } - } - }); - }) + let wrapper; + jest.mock("jwt-decode", () => () => ({})); - it("Is instansiated", () => { - expect(wrapper.exists()).toBeTruthy(); + beforeEach(() => { + wrapper = shallowMount(ChatMessage, { + propsData: { + message: { + id: 1, + content: "Hello", + timestamp: new Date(), + from: 1, + to: 0, + }, + }, }); + }); - it("Test that message contains text", () => { - expect(wrapper.find(".message-container").findAll("span")[0].text()).toBe("Hello"); - }) + it("Is instansiated", () => { + expect(wrapper.exists()).toBeTruthy(); + }); - it("Check that side is correct", () => { - expect(wrapper.vm.side()).toBe("justify-start"); - }) -}) \ No newline at end of file + it("Test that message contains text", () => { + expect(wrapper.find(".message-container").findAll("span")[0].text()).toBe( + "Hello" + ); + }); + + it("Check that side is correct", () => { + expect(wrapper.vm.side()).toBe("justify-start"); + }); +}); diff --git a/tests/unit/component-tests/ChatComponentsTest/ChatProfile.spec.js b/tests/unit/component-tests/ChatComponentsTest/ChatProfile.spec.js index cd4994bc6a2c257babf1ce609b28d8b6e686956d..94fe46b123d933bab3fcdc12c869dec917193178 100644 --- a/tests/unit/component-tests/ChatComponentsTest/ChatProfile.spec.js +++ b/tests/unit/component-tests/ChatComponentsTest/ChatProfile.spec.js @@ -2,66 +2,67 @@ import { shallowMount } from "@vue/test-utils"; import ChatProfile from "@/components/ChatComponents/ChatProfile.vue"; describe("ChatProfile.vue", () => { - let wrapper; - const props = { - conversation: { - recipient: { - userId: 1, - firstName: "Test", - lastName: "Testersen", - picture: "www.google.com" - }, - lastMessage: { - id: 0, - content: "Hello", - timestamp: new Date(), - from: 0, - to: 0 - } - } - } - beforeEach(() => { - wrapper = shallowMount(ChatProfile, { - propsData: props - }) + let wrapper; + const props = { + conversation: { + recipient: { + userId: 1, + firstName: "Test", + lastName: "Testersen", + picture: "www.google.com", + }, + lastMessage: { + id: 0, + content: "Hello", + timestamp: new Date(), + from: 0, + to: 0, + }, + }, + }; + beforeEach(() => { + wrapper = shallowMount(ChatProfile, { + propsData: props, }); + }); - it("Is instansiated", () => { - expect(wrapper.exists()).toBeTruthy(); - }); + it("Is instansiated", () => { + expect(wrapper.exists()).toBeTruthy(); + }); - it("Test that selecting the user works", () => { - wrapper.find("a").trigger("click"); - expect(wrapper.emitted()).toHaveProperty('recipient') - }) + it("Test that selecting the user works", () => { + wrapper.find("a").trigger("click"); + expect(wrapper.emitted()).toHaveProperty("recipient"); + }); - it("Test that last message renders", () => { - // Check that all information is rendered - expect(wrapper.findAll("span").length).toBe(3); - expect(wrapper.findAll("span")[0].text()).toBe("Test Testersen"); - expect(wrapper.findAll("span")[1].text()).toBe("Just now"); - expect(wrapper.findAll("span")[2].text()).toBe("Hello"); - }) + it("Test that last message renders", () => { + // Check that all information is rendered + expect(wrapper.findAll("span").length).toBe(3); + expect(wrapper.findAll("span")[0].text()).toBe("Test Testersen"); + expect(wrapper.findAll("span")[1].text()).toBe("Just now"); + expect(wrapper.findAll("span")[2].text()).toBe("Hello"); + }); - it("Test that timestamp changes message", async () => { - expect(wrapper.findAll("span")[1].text()).toBe("Just now"); + it("Test that timestamp changes message", async () => { + expect(wrapper.findAll("span")[1].text()).toBe("Just now"); - // update wrapper with a new instance and add 30 min to timestamp - const updatedProps = props; - let times = [ - {value: 30 * 60 * 1000, expected: "30 minutes ago"}, - {value: 60 * 60 * 1000, expected: "1 hours ago"}, - {value: 24 * 60 * 60 * 1000, expected: "1 days ago"}, - {value: 30 * 24 * 60 * 60 * 1000, expected: "1 months ago"}, - {value: 365 * 24 * 60 * 60 * 1000, expected: "1 years ago"} - ]; - for (let i = 0; i < times.length; i++) { - updatedProps.conversation.lastMessage.timestamp = Date.now() - times[i].value; - const newWrapper = shallowMount(ChatProfile, { - propsData: updatedProps - }); - expect(newWrapper.exists()).toBeTruthy(); - expect(newWrapper.findAll("span")[1].text()).toBe(times[i].expected); - } - }); + // update wrapper with a new instance and add 30 min to timestamp + const updatedProps = props; + let times = [ + { value: 30 * 60 * 1000, expected: "30 minutes ago" }, + { value: 60 * 60 * 1000, expected: "1 hours ago" }, + { value: 24 * 60 * 60 * 1000, expected: "1 days ago" }, + { value: 30 * 24 * 60 * 60 * 1000, expected: "1 months ago" }, + { value: 365 * 24 * 60 * 60 * 1000, expected: "1 years ago" }, + ]; + for (let i = 0; i < times.length; i++) { + updatedProps.conversation.lastMessage.timestamp = + Date.now() - times[i].value; + const newWrapper = shallowMount(ChatProfile, { + propsData: updatedProps, + }); + expect(newWrapper.exists()).toBeTruthy(); + expect(newWrapper.findAll("span")[1].text()).toBe(times[i].expected); + } + }); }); diff --git a/tests/unit/component-tests/ChatComponentsTest/RentalMessage.spec.js b/tests/unit/component-tests/ChatComponentsTest/RentalMessage.spec.js index d08bdbd335afcdf68876552047f821b7ac9a1b57..c6a267b902afb0b858e97a92dbe37148612e6629 100644 --- a/tests/unit/component-tests/ChatComponentsTest/RentalMessage.spec.js +++ b/tests/unit/component-tests/ChatComponentsTest/RentalMessage.spec.js @@ -2,149 +2,154 @@ import { shallowMount } from "@vue/test-utils"; import RentalMessage from "@/components/ChatComponents/RentalMessage.vue"; import axios from "axios"; -jest.mock('@/utils/token-utils', () => { - return { - tokenHeader: () => { - return {} - } - } +jest.mock("@/utils/token-utils", () => { + return { + tokenHeader: () => { + return {}; + }, + }; }); jest.mock("axios"); describe("RentalMessage.vue", () => { - let wrapper; - beforeEach(() => { - wrapper = shallowMount(RentalMessage, { - propsData: { - rent: { - rentId: 0, - fromTime: new Date(1652733228545), // 16 May 2022 - toTime: new Date(1652833228545), // 18 May 2022 - isAccepted: false, - listingId: 1, - listing: { - listingID: 1, - title: "Test", - description: "Test", - pricePerDay: 100 - }, - renterId: 1, - message: "Hello", - deleted: false - } - } - }); + let wrapper; + beforeEach(() => { + wrapper = shallowMount(RentalMessage, { + propsData: { + rent: { + rentId: 0, + fromTime: new Date(1652733228545), // 16 May 2022 + toTime: new Date(1652833228545), // 18 May 2022 + isAccepted: false, + listingId: 1, + listing: { + listingID: 1, + title: "Test", + description: "Test", + pricePerDay: 100, + }, + renterId: 1, + message: "Hello", + deleted: false, + }, + }, }); - - it("Is instansiated", () => { - expect(wrapper.exists()).toBeTruthy(); - }); - - it("Check that dates render correct", () => { - const text = wrapper.find(".text").findAll("p"); - expect(text[0].text()).toBe("Dato: " + new Date(1652733228545).toLocaleDateString() + " - " + new Date(1652833228545).toLocaleDateString()); - }); - - it("Check that buttons render", () => { - expect(wrapper.find(".buttons").exists()).toBeTruthy(); - expect(wrapper.find(".buttons").findAll("button").length).toBe(2); - }); - - it("Check that the price is rendered correct", () => { - const text = wrapper.find(".text").findAll("p"); - expect(text[1].text()).toBe("Pris: " + 100 * 2 + "kr"); - }) - - it("Check that message is rendered", () => { - expect(wrapper.find(".more").find("p").text()).toBe("Hello"); - }) - - it("Check accepted button click", async () => { - const button = wrapper.find(".buttons").findAll("button")[0]; - axios.put.mockResolvedValueOnce(); - button.trigger("click"); - //Wait a tick - await wrapper.vm.$nextTick(); - expect(axios.put).toHaveBeenCalledTimes(1); - }) - - it("Check reject button click", async () => { - const button = wrapper.find(".buttons").findAll("button")[1]; - axios.delete.mockResolvedValueOnce(); - button.trigger("click"); - //Wait a tick - await wrapper.vm.$nextTick(); - expect(axios.delete).toHaveBeenCalledTimes(1); - }) + }); + + it("Is instansiated", () => { + expect(wrapper.exists()).toBeTruthy(); + }); + + it("Check that dates render correct", () => { + const text = wrapper.find(".text").findAll("p"); + expect(text[0].text()).toBe( + "Dato: " + + new Date(1652733228545).toLocaleDateString() + + " - " + + new Date(1652833228545).toLocaleDateString() + ); + }); + + it("Check that buttons render", () => { + expect(wrapper.find(".buttons").exists()).toBeTruthy(); + expect(wrapper.find(".buttons").findAll("button").length).toBe(2); + }); + + it("Check that the price is rendered correct", () => { + const text = wrapper.find(".text").findAll("p"); + expect(text[1].text()).toBe("Pris: " + 100 * 2 + "kr"); + }); + + it("Check that message is rendered", () => { + expect(wrapper.find(".more").find("p").text()).toBe("Hello"); + }); + + it("Check accepted button click", async () => { + const button = wrapper.find(".buttons").findAll("button")[0]; + axios.put.mockResolvedValueOnce(); + button.trigger("click"); + //Wait a tick + await wrapper.vm.$nextTick(); + expect(axios.put).toHaveBeenCalledTimes(1); + }); + + it("Check reject button click", async () => { + const button = wrapper.find(".buttons").findAll("button")[1]; + axios.delete.mockResolvedValueOnce(); + button.trigger("click"); + //Wait a tick + await wrapper.vm.$nextTick(); + expect(axios.delete).toHaveBeenCalledTimes(1); + }); }); describe("RentalMessage.vue - Accepted", () => { - let wrapper; - beforeEach(() => { - wrapper = shallowMount(RentalMessage, { - propsData: { - rent: { - rentId: 0, - fromTime: new Date(1652733228545), // 16 May 2022 - toTime: new Date(1652833228545), // 18 May 2022 - isAccepted: true, - listingId: 1, - listing: { - listingID: 1, - title: "Test", - description: "Test", - pricePerDay: 100 - }, - renterId: 1, - message: "", - deleted: false - } - } - }); + let wrapper; + beforeEach(() => { + wrapper = shallowMount(RentalMessage, { + propsData: { + rent: { + rentId: 0, + fromTime: new Date(1652733228545), // 16 May 2022 + toTime: new Date(1652833228545), // 18 May 2022 + isAccepted: true, + listingId: 1, + listing: { + listingID: 1, + title: "Test", + description: "Test", + pricePerDay: 100, + }, + renterId: 1, + message: "", + deleted: false, + }, + }, }); + }); - it("Check that buttons are not rendered", () => { - expect(wrapper.find(".buttons").exists()).toBeFalsy(); - }); + it("Check that buttons are not rendered", () => { + expect(wrapper.find(".buttons").exists()).toBeFalsy(); + }); - it("Check that text of last div in message is Godtatt", () => { - const divs = wrapper.find(".message").findAll("div"); - expect(divs[divs.length - 1].text()).toBe("Godtatt"); - }); -}) + it("Check that text of last div in message is Godtatt", () => { + const divs = wrapper.find(".message").findAll("div"); + expect(divs[divs.length - 1].text()).toBe("Godtatt"); + }); +}); describe("RentalMessage.vue - Declined", () => { - let wrapper; - beforeEach(() => { - wrapper = shallowMount(RentalMessage, { - propsData: { - rent: { - rentId: 0, - fromTime: new Date(1652733228545), // 16 May 2022 - toTime: new Date(1652833228545), // 18 May 2022 - isAccepted: false, - listingId: 1, - listing: { - listingID: 1, - title: "Test", - description: "Test", - pricePerDay: 100 - }, - renterId: 1, - message: "", - deleted: true - } - } - }); + let wrapper; + beforeEach(() => { + wrapper = shallowMount(RentalMessage, { + propsData: { + rent: { + rentId: 0, + fromTime: new Date(1652733228545), // 16 May 2022 + toTime: new Date(1652833228545), // 18 May 2022 + isAccepted: false, + listingId: 1, + listing: { + listingID: 1, + title: "Test", + description: "Test", + pricePerDay: 100, + }, + renterId: 1, + message: "", + deleted: true, + }, + }, }); + }); - it("Check that buttons are not rendered", () => { - expect(wrapper.find(".buttons").exists()).toBeFalsy(); - }); + it("Check that buttons are not rendered", () => { + expect(wrapper.find(".buttons").exists()).toBeFalsy(); + }); - it("Check that text of last div in message is Avslått", () => { - const divs = wrapper.find(".message").findAll("div"); - expect(divs[divs.length - 1].text()).toBe("Avslått"); - }); -}) \ No newline at end of file + it("Check that text of last div in message is Avslått", () => { + const divs = wrapper.find(".message").findAll("div"); + expect(divs[divs.length - 1].text()).toBe("Avslått"); + }); +}); diff --git a/tests/unit/component-tests/time-picker-components-tests/date-range-picker-tests/DateRangePicker.spec.js b/tests/unit/component-tests/time-picker-components-tests/date-range-picker-tests/DateRangePicker.spec.js index 1867c2ddd1b63fbebb7ac405cdb820642f45ee9a..a0e296d344e68c930589b39c7e232cf8547134d7 100644 --- a/tests/unit/component-tests/time-picker-components-tests/date-range-picker-tests/DateRangePicker.spec.js +++ b/tests/unit/component-tests/time-picker-components-tests/date-range-picker-tests/DateRangePicker.spec.js @@ -2,93 +2,94 @@ import { shallowMount } from "@vue/test-utils"; import DateRangePicker from "@/components/TimepickerComponents/DatepickerRange/DatepickerRange.vue"; describe("DateRangePicker.vue", () => { - let wrapper; - beforeEach(() => { - wrapper = shallowMount(DateRangePicker, { - propsData: { - blockedDaysRange: [ - [new Date(1651739228545)], // 5 May - [ - new Date(1652733228545), // 16 May - new Date(1652833228545) // 18 May - ]] - } - }); + let wrapper; + beforeEach(() => { + wrapper = shallowMount(DateRangePicker, { + propsData: { + 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 calendar is closed", () => { - expect(wrapper.find(".picker").attributes().style).toBe("display: none;"); - }) - - it("Click input to open calender", async () => { - wrapper.find("input").trigger("click"); - // wait a tick - await wrapper.vm.$nextTick(); - expect(wrapper.find(".picker").attributes().style).toBe("display: flex;"); - }) - - it("Select blocked date", async () => { - wrapper.vm.$emit('selectDate', new Date(1651739228545)); - await wrapper.vm.$nextTick(); - // Check if startDate is set - expect(wrapper.vm.startDate).not.toBe(new Date(1651739228545)); - }) - - it("Select valid date", async () => { - await wrapper.vm.selectDate(new Date(1661739228545)); - // wait a tick - await wrapper.vm.$nextTick(); - expect(wrapper.vm.startDate.getTime()).toBe(1661739228545); - }) - - it("Select valid range", async () => { - await wrapper.vm.selectDate(new Date(1661739228545)); - await wrapper.vm.selectDate(new Date(1661939228545)); - - // wait a tick - await wrapper.vm.$nextTick(); - expect(wrapper.vm.startDate.getTime()).toBe(1661739228545); - expect(wrapper.vm.endDate.getTime()).toBe(1661939228545); - - // Click on the complete button to close the calendar - wrapper.find(".buttons").findAll("button")[1].trigger("click"); - await wrapper.vm.$nextTick(); - expect(wrapper.find(".picker").attributes().style).toBe("display: none;"); - }) - - it("Select invalid range", async () => { - // Check that error is not present. - expect(wrapper.find(".error").exists()).not.toBeTruthy(); - - const start = 1652433228545; - const end = 1652933228545; - - await wrapper.vm.selectDate(new Date(start)); - await wrapper.vm.selectDate(new Date(end)); - // Ceck that present is invalid - expect(wrapper.find(".error").exists()).toBeTruthy(); - }) - - it("Check reset button", async () => { - // Check that error is not present. - expect(wrapper.find(".error").exists()).not.toBeTruthy(); - - const start = 1652433228545; - const end = 1652933228545; - - await wrapper.vm.selectDate(new Date(start)); - await wrapper.vm.selectDate(new Date(end)); - // Ceck that present is invalid - expect(wrapper.find(".error").exists()).toBeTruthy(); - - wrapper.find(".buttons").findAll("button")[0].trigger("click"); - await wrapper.vm.$nextTick(); - - expect(wrapper.vm.startDate.getTime()).not.toBe(1652433228545); - expect(wrapper.vm.endDate).toBe(null); - }) -}) + }); + + it("Is instansiated", () => { + expect(wrapper.exists()).toBeTruthy(); + }); + + it("Check that calendar is closed", () => { + expect(wrapper.find(".picker").attributes().style).toBe("display: none;"); + }); + + it("Click input to open calender", async () => { + wrapper.find("input").trigger("click"); + // wait a tick + await wrapper.vm.$nextTick(); + expect(wrapper.find(".picker").attributes().style).toBe("display: flex;"); + }); + + it("Select blocked date", async () => { + wrapper.vm.$emit("selectDate", new Date(1651739228545)); + await wrapper.vm.$nextTick(); + // Check if startDate is set + expect(wrapper.vm.startDate).not.toBe(new Date(1651739228545)); + }); + + it("Select valid date", async () => { + await wrapper.vm.selectDate(new Date(1661739228545)); + // wait a tick + await wrapper.vm.$nextTick(); + expect(wrapper.vm.startDate.getTime()).toBe(1661739228545); + }); + + it("Select valid range", async () => { + await wrapper.vm.selectDate(new Date(1661739228545)); + await wrapper.vm.selectDate(new Date(1661939228545)); + + // wait a tick + await wrapper.vm.$nextTick(); + expect(wrapper.vm.startDate.getTime()).toBe(1661739228545); + expect(wrapper.vm.endDate.getTime()).toBe(1661939228545); + + // Click on the complete button to close the calendar + wrapper.find(".buttons").findAll("button")[1].trigger("click"); + await wrapper.vm.$nextTick(); + expect(wrapper.find(".picker").attributes().style).toBe("display: none;"); + }); + + it("Select invalid range", async () => { + // Check that error is not present. + expect(wrapper.find(".error").exists()).not.toBeTruthy(); + + const start = 1652433228545; + const end = 1652933228545; + + await wrapper.vm.selectDate(new Date(start)); + await wrapper.vm.selectDate(new Date(end)); + // Ceck that present is invalid + expect(wrapper.find(".error").exists()).toBeTruthy(); + }); + + it("Check reset button", async () => { + // Check that error is not present. + expect(wrapper.find(".error").exists()).not.toBeTruthy(); + + const start = 1652433228545; + const end = 1652933228545; + + await wrapper.vm.selectDate(new Date(start)); + await wrapper.vm.selectDate(new Date(end)); + // Ceck that present is invalid + expect(wrapper.find(".error").exists()).toBeTruthy(); + + wrapper.find(".buttons").findAll("button")[0].trigger("click"); + await wrapper.vm.$nextTick(); + + expect(wrapper.vm.startDate.getTime()).not.toBe(1652433228545); + expect(wrapper.vm.endDate).toBe(null); + }); +}); diff --git a/tests/unit/component-tests/user-component-tests/login-form-component/login-form-component.spec.js b/tests/unit/component-tests/user-component-tests/login-form-component/login-form-component.spec.js index a055978df9c003fdc21407df4e3acb8ce6c8e172..0d38a20726926554ecc8a4fb5e7164600b07db97 100644 --- a/tests/unit/component-tests/user-component-tests/login-form-component/login-form-component.spec.js +++ b/tests/unit/component-tests/user-component-tests/login-form-component/login-form-component.spec.js @@ -1,75 +1,75 @@ import { shallowMount } from "@vue/test-utils"; import LoginForm from "@/components/UserAuthComponents/LoginForm.vue"; -jest.mock('@/utils/apiutil', () => { - return { - doLogin: () => { - return new Promise((resolve) => { - resolve({ - isLoggedIn: false - }); - }) - } - } +jest.mock("@/utils/apiutil", () => { + return { + doLogin: () => { + return new Promise((resolve) => { + resolve({ + isLoggedIn: false, + }); + }); + }, + }; }); describe("LoginForm component", () => { - let wrapper; - const mockRouter = { - push: jest.fn() - } - const mockStore = { - commit: jest.fn() - } - - beforeEach(() => { - wrapper = shallowMount(LoginForm, { - global: { - mocks: { - $router: mockRouter, - $store: mockStore - } - } - }); - }); - - it("is instantiated", () => { - console.log(wrapper.html()); - expect(wrapper.exists()).toBeTruthy(); - }); + let wrapper; + const mockRouter = { + push: jest.fn(), + }; + const mockStore = { + commit: jest.fn(), + }; - it("Check that two input fields are rendered" , () => { - expect(wrapper.findAll("input").length).toBe(2); + beforeEach(() => { + wrapper = shallowMount(LoginForm, { + global: { + mocks: { + $router: mockRouter, + $store: mockStore, + }, + }, }); + }); - it("Insert invalid email into the first input field", () => { - const field = wrapper.findAll("input")[0]; - field.setValue("test"); - expect(field.element.validity.valid).toBeFalsy(); - }); + it("is instantiated", () => { + console.log(wrapper.html()); + expect(wrapper.exists()).toBeTruthy(); + }); - it("Insert valid email into the first input field", () => { - const field = wrapper.findAll("input")[0]; - field.setValue("test@test.com"); - expect(field.element.validity.valid).toBeTruthy(); - }); + it("Check that two input fields are rendered", () => { + expect(wrapper.findAll("input").length).toBe(2); + }); + + it("Insert invalid email into the first input field", () => { + const field = wrapper.findAll("input")[0]; + field.setValue("test"); + expect(field.element.validity.valid).toBeFalsy(); + }); - it("Check invalid login", async () => { - // Verify that the error message is empty - expect(wrapper.vm.message).toBe(""); - const field = wrapper.findAll("input")[0]; - field.setValue("test@test.com"); - const field2 = wrapper.findAll("input")[1]; - field2.setValue("testtest"); + it("Insert valid email into the first input field", () => { + const field = wrapper.findAll("input")[0]; + field.setValue("test@test.com"); + expect(field.element.validity.valid).toBeTruthy(); + }); - // Click on the login button - const button = wrapper.find(".login"); - button.trigger("click"); + it("Check invalid login", async () => { + // Verify that the error message is empty + expect(wrapper.vm.message).toBe(""); + const field = wrapper.findAll("input")[0]; + field.setValue("test@test.com"); + const field2 = wrapper.findAll("input")[1]; + field2.setValue("testtest"); - // wait a tick - await wrapper.vm.$nextTick(); + // Click on the login button + const button = wrapper.find(".login"); + button.trigger("click"); - // Check that the error message is not empty - expect(wrapper.vm.message).not.toBe(""); - }) -}); \ No newline at end of file + // wait a tick + await wrapper.vm.$nextTick(); + + // Check that the error message is not empty + expect(wrapper.vm.message).not.toBe(""); + }); +}); diff --git a/tests/unit/component-tests/user-component-tests/login-form-component/login-form-valid-login.spec.js b/tests/unit/component-tests/user-component-tests/login-form-component/login-form-valid-login.spec.js index 0c8ed03c9692a4681704c9a8bfd1eff2d68435e4..5e1ef25903ddabfc7897c8b6ac956e8477674d91 100644 --- a/tests/unit/component-tests/user-component-tests/login-form-component/login-form-valid-login.spec.js +++ b/tests/unit/component-tests/user-component-tests/login-form-component/login-form-valid-login.spec.js @@ -2,63 +2,62 @@ import { shallowMount } from "@vue/test-utils"; import LoginForm from "@/components/UserAuthComponents/LoginForm.vue"; jest.mock("@/services/user.service", () => { - return { - getAdminList: () => { - return new Promise((resolve) => { - resolve([]); - }); - } - }; + return { + getAdminList: () => { + return new Promise((resolve) => { + resolve([]); + }); + }, + }; }); -jest.mock('@/utils/apiutil', () => { - return { - doLogin: () => { - return new Promise((resolve) => { - resolve({ - isLoggedIn: true - }); - }) - } - } +jest.mock("@/utils/apiutil", () => { + return { + doLogin: () => { + return new Promise((resolve) => { + resolve({ + isLoggedIn: true, + }); + }); + }, + }; }); describe("LoginForm component", () => { - let wrapper; - const mockRouter = { - push: jest.fn() - } - const mockStore = { - commit: jest.fn() - } + let wrapper; + const mockRouter = { + push: jest.fn(), + }; + const mockStore = { + commit: jest.fn(), + }; - beforeEach(() => { - wrapper = shallowMount(LoginForm, { - global: { - mocks: { - $router: mockRouter, - $store: mockStore - }, - } - }); + beforeEach(() => { + wrapper = shallowMount(LoginForm, { + global: { + mocks: { + $router: mockRouter, + $store: mockStore, + }, + }, }); + }); - it("Check valid login", async () => { + it("Check valid login", async () => { + // Verify that the error message is empty + expect(wrapper.vm.message).toBe(""); + const field = wrapper.findAll("input")[0]; + field.setValue("test@test.com"); + const field2 = wrapper.findAll("input")[1]; + field2.setValue("testtest"); - // Verify that the error message is empty - expect(wrapper.vm.message).toBe(""); - const field = wrapper.findAll("input")[0]; - field.setValue("test@test.com"); - const field2 = wrapper.findAll("input")[1]; - field2.setValue("testtest"); + // Click on the login button + const button = wrapper.find(".login"); + button.trigger("click"); - // Click on the login button - const button = wrapper.find(".login"); - button.trigger("click"); - - // wait for two ticks - await wrapper.vm.$nextTick(); - await wrapper.vm.$nextTick(); - // Check that the error message is not empty - expect(mockRouter.push).toBeCalledTimes(1); - }) -}) \ No newline at end of file + // wait for two ticks + await wrapper.vm.$nextTick(); + await wrapper.vm.$nextTick(); + // Check that the error message is not empty + expect(mockRouter.push).toBeCalledTimes(1); + }); +});