From 43db68f0f78d3bd34d5e4c981bb089a23aab2812 Mon Sep 17 00:00:00 2001 From: Sverre <sverrefh@stud.ntnu.no> Date: Mon, 29 Apr 2024 14:16:39 +0200 Subject: [PATCH] Wrote unit test for ActiveMilestoneDisplay --- .../__tests__/ActiveMilestoneDisplay.spec.ts | 60 +++++++++++++++++++ .../InactiveChallengeDisplay.spec.ts | 2 - 2 files changed, 60 insertions(+), 2 deletions(-) create mode 100644 src/components/__tests__/ActiveMilestoneDisplay.spec.ts diff --git a/src/components/__tests__/ActiveMilestoneDisplay.spec.ts b/src/components/__tests__/ActiveMilestoneDisplay.spec.ts new file mode 100644 index 0000000..6f6cc79 --- /dev/null +++ b/src/components/__tests__/ActiveMilestoneDisplay.spec.ts @@ -0,0 +1,60 @@ +import { mount } from '@vue/test-utils'; +import { describe, it, expect, beforeEach } from 'vitest' +import { createPinia, setActivePinia } from 'pinia' +import ActiveMilestoneDisplay from '../milestone/ActiveMilestoneDisplay.vue' +import ProgressBar from '../ProgressBar.vue' + +describe('ActiveMilestoneDisplay', () => { + + beforeEach(() => { + setActivePinia(createPinia()) + }) + + const propsData = { + id: 1, + title: 'Test Milestone', + description: 'Test Description', + goalSum: 1000, + currentSum: 500, + deadline: new Date('2024-05-01'), + startDate: new Date('2024-04-01'), + image: 'test.jpg' + } + + const id = 1; + const title = 'Test Milestone' + const description = 'Test Description' + const goalSum = 1000 + const currentSum = 500 + const deadline = new Date('2024-05-01') + const startDate = new Date('2024-04-01') + const image = 'test.jpg' + + it('renders correctly', () => { + const wrapper = mount(ActiveMilestoneDisplay, { + props: { id, title, description, goalSum, currentSum, deadline, startDate, image } + }) + expect(wrapper.find('.active-milestone-display').exists()).toBe(true) + expect(wrapper.find('.title').text()).toBe(propsData.title) + expect(wrapper.find('.description').text()).toBe( + `${propsData.currentSum}kr av ${propsData.goalSum}kr` + ) + expect(wrapper.findComponent(ProgressBar).props('Max')).toBe( + propsData.goalSum + ) + expect(wrapper.findComponent(ProgressBar).props('Current')).toBe( + propsData.currentSum + ) + }) + + it('displays default image if image prop is not provided', async () => { + const wrapper = mount(ActiveMilestoneDisplay, { + props: { propsData } + }) + await wrapper.setProps({ image: '' }) + + const activeMilestoneDisplay = wrapper.find('.active-milestone-display').element as HTMLDivElement + expect(activeMilestoneDisplay.style.backgroundImage).toContain('src/assets/pig.png') + }) + +}); diff --git a/src/components/__tests__/InactiveChallengeDisplay.spec.ts b/src/components/__tests__/InactiveChallengeDisplay.spec.ts index a17f145..55addb1 100644 --- a/src/components/__tests__/InactiveChallengeDisplay.spec.ts +++ b/src/components/__tests__/InactiveChallengeDisplay.spec.ts @@ -2,8 +2,6 @@ import { mount } from '@vue/test-utils'; import InactiveChallengeDisplay from '@/components/challenge/InactiveChallengeDisplay.vue'; import { describe, it, expect, beforeEach } from 'vitest' import { createPinia, setActivePinia } from 'pinia' -import { activateChallenge } from '../../utils/challengeutils' -import eventBus from '@/components/service/eventBus.js' describe('InactiveChallengeDisplay', () => { -- GitLab