commit 2bb3da51e0a295e2d450d8dbeef4cc8546253030
parent ec24046a5984344d3c108faa93205c9f865fa38f
Author: ashermorgan <59518073+ashermorgan@users.noreply.github.com>
Date: Thu, 9 Nov 2023 20:46:36 -0800
Add unit tests for SplitCalculator view
Diffstat:
1 file changed, 31 insertions(+), 0 deletions(-)
diff --git a/tests/unit/views/SplitCalculator.spec.js b/tests/unit/views/SplitCalculator.spec.js
@@ -0,0 +1,31 @@
+/* eslint-disable no-underscore-dangle */
+
+import { test, expect } from 'vitest';
+import { shallowMount } from '@vue/test-utils';
+import SplitCalculator from '@/views/SplitCalculator.vue';
+import unitUtils from '@/utils/units';
+
+test('should correctly calculate split paces and total times', async () => {
+ // Initialize component
+ const wrapper = shallowMount(SplitCalculator);
+
+ // Override input values
+ await wrapper.setData({
+ targets: [
+ { result: 'time', distanceValue: 2, distanceUnit: 'miles', split: 60 },
+ { result: 'time', distanceValue: 4, distanceUnit: 'miles', split: 70 },
+ { result: 'time', distanceValue: 10, distanceUnit: 'kilometers', split: 80 },
+ ],
+ });
+
+ // Assert results are correct
+ const final_split_distance = 10000 - unitUtils.convertDistance(4, 'miles', 'meters');
+ const final_split_pace = unitUtils.convertPace(80 / final_split_distance, 'seconds_per_meter',
+ 'seconds_per_mile')
+ expect(wrapper.vm.results[0].totalTime).to.equal(60);
+ expect(wrapper.vm.results[0].pace).to.equal(30);
+ expect(wrapper.vm.results[1].totalTime).to.equal(130);
+ expect(wrapper.vm.results[1].pace).to.equal(35);
+ expect(wrapper.vm.results[2].totalTime).to.equal(210);
+ expect(final_split_pace - wrapper.vm.results[2].pace).to.lessThan(0.00001);
+});