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