From 98e186505fad9a6afca3fef49b99174c2b9c067d Mon Sep 17 00:00:00 2001 From: Kevin Cantrell Date: Wed, 9 Oct 2024 00:08:56 +0900 Subject: [PATCH] added anti-pinch meta --- setupTests.ts | 1 + src/app.html | 3 +- .../ui/Sensors/SensorHeader.test.ts | 71 +++++++++++++++++++ 3 files changed, 74 insertions(+), 1 deletion(-) create mode 100644 setupTests.ts create mode 100644 src/lib/components/ui/Sensors/SensorHeader.test.ts diff --git a/setupTests.ts b/setupTests.ts new file mode 100644 index 0000000..331666c --- /dev/null +++ b/setupTests.ts @@ -0,0 +1 @@ +import '@testing-library/jest-dom'; \ No newline at end of file diff --git a/src/app.html b/src/app.html index 9b72ed7..6bf7ce3 100644 --- a/src/app.html +++ b/src/app.html @@ -17,7 +17,8 @@ - + + diff --git a/src/lib/components/ui/Sensors/SensorHeader.test.ts b/src/lib/components/ui/Sensors/SensorHeader.test.ts new file mode 100644 index 0000000..3b43f9d --- /dev/null +++ b/src/lib/components/ui/Sensors/SensorHeader.test.ts @@ -0,0 +1,71 @@ +// SensorStatus.test.ts + +import { readable } from 'svelte/store'; +import { render, screen } from '@testing-library/svelte'; +import { describe, it, vi, beforeEach, afterEach } from 'vitest'; + +// Mock the svelte-i18n module +vi.mock('svelte-i18n', () => { + return { _: readable((key: string) => key) }; +}); + +// Mock image imports +vi.mock('$lib/images/UI/cw-10.svg', () => ({ + default: 'active-image-mock', +})); +vi.mock('$lib/images/UI/cw_sensor_status_inactive.svg', () => ({ + default: 'inactive-image-mock', +})); + +// Mock svelte-ux components +vi.mock('svelte-ux', () => ({ + CopyButton: {}, + Duration: {}, + Tooltip: {}, +})); + +// Import the component under test after the mocks +import SensorHeader from './SensorHeader.svelte'; + +describe('SensorHeader component', () => { + beforeEach(() => { + vi.useFakeTimers(); + vi.setSystemTime(new Date('2023-01-01T12:00:00Z')); + }); + + afterEach(() => { + vi.useRealTimers(); + }); + + it('renders active status when isActiveRecently is true', () => { + const sensorName = 'Test Sensor'; + const lastSeen = new Date('2023-01-01T11:55:00Z'); // 5 minutes ago + const upload_interval = 10; // 10 minutes + + render(SensorHeader, { + props: { + sensorName, + lastSeen, + upload_interval, + }, + }); + + + }); + + it('renders inactive status when isActiveRecently is false', () => { + const sensorName = 'Test Sensor'; + const lastSeen = new Date('2023-01-01T11:20:00Z'); // 40 minutes ago + const upload_interval = 10; // 10 minutes + + render(SensorHeader, { + props: { + sensorName, + lastSeen, + upload_interval, + }, + }); + + + }); +});