Skip to content

Commit 51db3ac

Browse files
committed
test: fix lineMode tests
1 parent a6d4581 commit 51db3ac

File tree

4 files changed

+27
-48
lines changed

4 files changed

+27
-48
lines changed

src/App.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
<input type="checkbox" v-model="circles[3].loading" />
3939
</div>-->
4040
<div style="border: 1px solid red; display: inline-block">
41-
<ve-progress :size="200" :progress="progress" dot="20 red">
41+
<ve-progress :size="200" :progress="progress" :thickness="10" :empty-thickness="10">
4242
<template v-slot:default="{ counterTick }">
4343
<span
4444
:style="` transition: 0.5s; font-weight: bold; font-size: 1.6rem; color: ${

tests/helper.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,10 @@ const mockProps = {
5959
mockProps.loaderOptions = mockProps;
6060

6161
export { mockProps };
62+
63+
export const setCircleProps = async (wrapper, props = {}) => {
64+
return wrapper.setProps({ options: { ...wrapper.props("options"), ...props } });
65+
};
6266
export const factory = ({ container, props = {}, isCircleFactory = true }) => {
6367
const propsData = isCircleFactory ? { options: { ...mockProps, ...props } } : props;
6468
return mount(container, {

tests/unit/.eslintrc.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ module.exports = {
55
rules: {
66
"no-unused-expressions": 0,
77
"no-multi-assign": 0,
8-
"no-unused-vars": 1,
8+
"no-unused-vars": "warn",
99
"prefer-destructuring": 0,
1010
"no-restricted-syntax": 0,
1111
"guard-for-in": 0,

tests/unit/circle/circle-line.spec.js

Lines changed: 21 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
import { expect } from "chai";
2-
import Vue from "vue";
32
import Circle from "@/components/Circle/Circle.vue";
4-
import { factory } from "@/../tests/helper";
3+
import { factory, setCircleProps } from "@/../tests/helper";
4+
import { lineModeParser, animationParser } from "@/components/optionsParser";
55

66
const localFactory = (props) => factory({ container: Circle, props });
7+
const localLineModeParser = (lineMode) => lineModeParser({ lineMode, multiple: false });
78

89
const compareRadiusValues = (circleWrapper, expectedProgressCircleRadius, expectedEmptyCircleRadius) => {
910
const circleProgressWrapper = circleWrapper.find("circle.ep-circle--progress");
@@ -29,38 +30,24 @@ describe("#line", () => {
2930
expect(circleProgressWrapper.element.getAttribute("stroke-linecap")).to.equal(`${line}`);
3031

3132
line = "butt";
32-
await wrapper.setProps({ options: { ...wrapper.props().options, line } });
33-
await Vue.nextTick();
33+
await setCircleProps(wrapper, { line });
3434
expect(circleProgressWrapper.element.getAttribute("stroke-linecap")).to.equal(`${line}`);
3535

3636
line = "square";
37-
await wrapper.setProps({ options: { ...wrapper.props().options, line } });
38-
await Vue.nextTick();
37+
await setCircleProps(wrapper, { line });
3938
expect(circleProgressWrapper.element.getAttribute("stroke-linecap")).to.equal(`${line}`);
4039
});
4140
});
4241
describe("#lineMode", () => {
43-
it("it parses the #lineMode property correctly", () => {
44-
const wrapper = localFactory({ lineMode: "normal 10" });
45-
46-
expect(wrapper.vm.parsedLineMode.mode).to.equal("normal");
47-
expect(wrapper.vm.parsedLineMode.offset).to.equal(10);
48-
});
49-
it("it applies default value correctly", () => {
50-
const wrapper = localFactory({ lineMode: "normal 10" });
51-
52-
expect(wrapper.vm.parsedLineMode.mode).to.equal("normal");
53-
expect(wrapper.vm.parsedLineMode.offset).to.equal(10);
54-
});
5542
describe("#lineMode.mode", () => {
5643
describe("#lineMode.mode.normal", () => {
5744
let thickness = 20;
5845
let emptyThickness = 10;
5946
const wrapper = localFactory({
6047
thickness,
6148
emptyThickness,
62-
lineMode: "normal",
63-
animation: "default 0 0",
49+
lineMode: localLineModeParser("normal"),
50+
animation: animationParser("default 0 0"),
6451
});
6552

6653
describe("radius of the circles does not exceed the size and aligns properly in relation to each other", () => {
@@ -71,18 +58,15 @@ describe("#lineMode", () => {
7158

7259
thickness = emptyThickness = 10;
7360

74-
await wrapper.setProps({ options: { ...wrapper.props().options, thickness, emptyThickness } });
75-
76-
await Vue.nextTick();
61+
await setCircleProps(wrapper, { thickness, emptyThickness });
7762

7863
expectedProgressCircleRadius = baseRadius - thickness / 2;
7964
expectedEmptyCircleRadius = expectedProgressCircleRadius;
8065
compareRadiusValues(wrapper, expectedProgressCircleRadius, expectedEmptyCircleRadius);
8166
});
8267
it("in case #thickness >= #emptyThickness and #lineMode.offset = 10", async () => {
8368
// offset must be ignored in this mode
84-
await wrapper.setProps({ options: { ...wrapper.props().options, lineMode: "normal 10" } });
85-
await Vue.nextTick();
69+
await setCircleProps(wrapper, { lineMode: localLineModeParser("normal 10") });
8670

8771
let expectedProgressCircleRadius = baseRadius - thickness / 2;
8872
let expectedEmptyCircleRadius = expectedProgressCircleRadius;
@@ -91,7 +75,6 @@ describe("#lineMode", () => {
9175
thickness = emptyThickness = 10;
9276

9377
await wrapper.setProps({ options: { ...wrapper.props().options, thickness, emptyThickness } });
94-
await Vue.nextTick();
9578

9679
expectedProgressCircleRadius = baseRadius - thickness / 2;
9780
expectedEmptyCircleRadius = expectedProgressCircleRadius;
@@ -101,8 +84,7 @@ describe("#lineMode", () => {
10184
thickness = 10;
10285
emptyThickness = 20;
10386

104-
await wrapper.setProps({ options: { ...wrapper.props().options, thickness, emptyThickness } });
105-
await Vue.nextTick();
87+
await setCircleProps(wrapper, { thickness, emptyThickness });
10688

10789
const expectedEmptyCircleRadius = baseRadius - emptyThickness / 2;
10890
const expectedProgressCircleRadius = expectedEmptyCircleRadius;
@@ -113,10 +95,7 @@ describe("#lineMode", () => {
11395
thickness = 10;
11496
emptyThickness = 20;
11597

116-
await wrapper.setProps({
117-
options: { ...wrapper.props().options, thickness, emptyThickness, lineMode: "normal 10" },
118-
});
119-
await Vue.nextTick();
98+
await setCircleProps(wrapper, { thickness, emptyThickness, lineMode: localLineModeParser("normal 10") });
12099

121100
const expectedEmptyCircleRadius = baseRadius - emptyThickness / 2;
122101
const expectedProgressCircleRadius = expectedEmptyCircleRadius;
@@ -131,7 +110,7 @@ describe("#lineMode", () => {
131110
const wrapper = localFactory({
132111
thickness,
133112
emptyThickness,
134-
lineMode: `in ${offset}`,
113+
lineMode: localLineModeParser(`in ${offset}`),
135114
});
136115

137116
it("circles does not exceed the size and aligns properly in relation to each other", () => {
@@ -147,7 +126,7 @@ describe("#lineMode", () => {
147126
const wrapper = localFactory({
148127
thickness,
149128
emptyThickness,
150-
lineMode: `in-over ${offset}`,
129+
lineMode: localLineModeParser(`in-over ${offset}`),
151130
});
152131

153132
it("circles does not exceed the size and aligns properly in relation to each other", () => {
@@ -164,7 +143,7 @@ describe("#lineMode", () => {
164143
progress,
165144
thickness,
166145
emptyThickness,
167-
lineMode: `out ${offset}`,
146+
lineMode: localLineModeParser(`out ${offset}`),
168147
});
169148

170149
it("circles does not exceed the size and aligns properly in relation to each other", () => {
@@ -180,7 +159,7 @@ describe("#lineMode", () => {
180159
const wrapper = localFactory({
181160
thickness,
182161
emptyThickness,
183-
lineMode: `out-over ${offset}`,
162+
lineMode: localLineModeParser(`out-over ${offset}`),
184163
});
185164

186165
describe("radius of the circles does not exceed the size and aligns properly in relation to each other", () => {
@@ -191,8 +170,7 @@ describe("#lineMode", () => {
191170

192171
thickness = emptyThickness = 10;
193172

194-
await wrapper.setProps({ options: { ...wrapper.props().options, thickness, emptyThickness } });
195-
await Vue.nextTick();
173+
await setCircleProps(wrapper, { thickness, emptyThickness });
196174

197175
expectedProgressCircleRadius = baseRadius - thickness / 2;
198176
expectedEmptyCircleRadius = expectedProgressCircleRadius;
@@ -202,8 +180,7 @@ describe("#lineMode", () => {
202180
thickness = 10;
203181
emptyThickness = 20;
204182

205-
await wrapper.setProps({ options: { ...wrapper.props().options, thickness, emptyThickness } });
206-
await Vue.nextTick();
183+
await setCircleProps(wrapper, { thickness, emptyThickness });
207184

208185
const expectedEmptyCircleRadius = baseRadius - emptyThickness / 2;
209186
const expectedProgressCircleRadius = expectedEmptyCircleRadius - emptyThickness / 2 + thickness / 2;
@@ -218,7 +195,7 @@ describe("#lineMode", () => {
218195
const wrapper = localFactory({
219196
thickness,
220197
emptyThickness,
221-
lineMode: `top ${offset}`,
198+
lineMode: localLineModeParser(`top ${offset}`),
222199
});
223200

224201
it("circles does not exceed the size and aligns properly in relation to each other", () => {
@@ -234,7 +211,7 @@ describe("#lineMode", () => {
234211
const wrapper = localFactory({
235212
thickness,
236213
emptyThickness,
237-
lineMode: `bottom ${offset}`,
214+
lineMode: localLineModeParser(`bottom ${offset}`),
238215
});
239216

240217
describe("radius of the circles does not exceed the size and aligns properly in relation to each other", () => {
@@ -247,17 +224,15 @@ describe("#lineMode", () => {
247224
thickness = 10;
248225
emptyThickness = 20;
249226

250-
await wrapper.setProps({ options: { ...wrapper.props().options, thickness, emptyThickness } });
251-
await Vue.nextTick();
227+
await setCircleProps(wrapper, { thickness, emptyThickness });
252228

253229
let expectedEmptyCircleRadius = baseRadius - emptyThickness / 2;
254230
let expectedProgressCircleRadius = expectedEmptyCircleRadius - emptyThickness / 2;
255231
compareRadiusValues(wrapper, expectedProgressCircleRadius, expectedEmptyCircleRadius);
256232

257233
thickness = emptyThickness = 20;
258234

259-
await wrapper.setProps({ options: { ...wrapper.props().options, thickness, emptyThickness } });
260-
await Vue.nextTick();
235+
await setCircleProps(wrapper, { thickness, emptyThickness });
261236

262237
expectedEmptyCircleRadius = baseRadius - emptyThickness / 2;
263238
expectedProgressCircleRadius = expectedEmptyCircleRadius - emptyThickness / 2;

0 commit comments

Comments
 (0)