Skip to content

Commit 61901ab

Browse files
committed
test: extend color tests
1 parent 338b8f5 commit 61901ab

File tree

2 files changed

+74
-23
lines changed

2 files changed

+74
-23
lines changed

src/components/Circle/HalfCircle.vue

+1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
<path
1111
v-if="options.emptyColorFill !== 'transparent'"
1212
:fill="computedEmptyColorFill"
13+
class="ep-half-circle--empty__fill"
1314
:d="emptyFillPath"
1415
:style="{
1516
transition: styles.transition,

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

+73-23
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,10 @@ const gradientColor = {
2121
],
2222
};
2323

24-
const colorTests = (colorProp, color, selector, fill = false) => {
24+
const colorAsStringTests = (colorProp, color, selector, fill = false) => {
2525
describe("applies color as string", () => {
2626
const wrapper = localFactory({ ...colorProp });
27-
const circleProgressWrapper = wrapper.find(selector);
27+
const circleWrapper = wrapper.find(selector);
2828

2929
it("do not recognize gradient colors", () => {
3030
const type = selector.includes("empty") ? "EmptyColor" : "Color";
@@ -37,12 +37,12 @@ const colorTests = (colorProp, color, selector, fill = false) => {
3737
});
3838

3939
it("applies color correctly to SVG stroke", () => {
40-
expect(circleProgressWrapper.element.getAttribute(`${fill ? "fill" : "stroke"}`)).to.equal(`${color}`);
40+
expect(circleWrapper.element.getAttribute(`${fill ? "fill" : "stroke"}`)).to.equal(`${color}`);
4141
});
4242
});
4343
};
4444

45-
const gradientColorTests = (colorProp, selector, urlPrefix, fill = false) => {
45+
const gradientColorTests = (colorProp, selector, gradientURLPrefix, fill = false) => {
4646
describe("applies gradient color correctly", () => {
4747
const wrapper = localFactory(colorProp);
4848
const circleWrapper = wrapper.find(selector);
@@ -59,7 +59,7 @@ const gradientColorTests = (colorProp, selector, urlPrefix, fill = false) => {
5959
});
6060
it(`applies gradient URL to SVG ${fill ? "fill" : "stroke"}`, () => {
6161
expect(circleWrapper.element.getAttribute(`${fill ? "fill" : "stroke"}`)).to.equal(
62-
`url(#${urlPrefix}-gradient-${id})`
62+
`url(#${gradientURLPrefix}-gradient-${id})`
6363
);
6464
});
6565
it("renders corresponding amount of stop colors SVG elements", () => {
@@ -81,23 +81,73 @@ const gradientColorTests = (colorProp, selector, urlPrefix, fill = false) => {
8181
});
8282
};
8383

84-
describe("#color", () => {
84+
const colorTests = (colorProp, half = false, empty = false, gradientURLPrefix) => {
85+
const circleClassPrefix = `ep-${half ? "half-" : ""}circle--`;
86+
const circleClassPostfix = `${empty ? "empty" : "progress"}`;
87+
const circleSelector = `.${circleClassPrefix}${circleClassPostfix}`;
88+
8589
const color = "#ff0020";
86-
colorTests({ color }, color, "circle.ep-circle--progress");
87-
gradientColorTests({ color: gradientColor }, "circle.ep-circle--progress", "ep-progress");
88-
});
89-
describe("#emptyColor", () => {
90-
const emptyColor = "#a617ff";
91-
colorTests({ emptyColor }, emptyColor, "circle.ep-circle--empty");
92-
gradientColorTests({ emptyColor: gradientColor }, "circle.ep-circle--empty", "ep-empty");
93-
});
94-
describe("#colorFill", () => {
95-
const colorFill = "#fff149";
96-
colorTests({ colorFill }, colorFill, "circle.ep-circle--progress", true);
97-
gradientColorTests({ colorFill: gradientColor }, "circle.ep-circle--progress", "ep-progress-fill", true);
98-
});
99-
describe("#emptyColorFill", () => {
100-
const emptyColorFill = "#3f79ff";
101-
colorTests({ emptyColorFill }, emptyColorFill, "circle.ep-circle--empty", true);
102-
gradientColorTests({ emptyColorFill: gradientColor }, "circle.ep-circle--empty", "ep-empty-fill", true);
90+
91+
it("does not render fill circle", () => {
92+
expect(
93+
localFactory({ [colorProp]: color })
94+
.find(`.ep-${half ? "half-" : ""}circle--${empty ? "empty" : "progress"}__fill`)
95+
.exists()
96+
).to.be.false;
97+
});
98+
99+
colorAsStringTests({ [colorProp]: color }, color, circleSelector, false);
100+
gradientColorTests({ [colorProp]: gradientColor }, circleSelector, gradientURLPrefix, false);
101+
};
102+
103+
const colorFillTests = (colorProp, half = false, empty = false, gradientURLPrefix) => {
104+
const circleClassPrefix = `ep-${half ? "half-" : ""}circle--`;
105+
const circleClassPostfix = `${empty ? "empty" : "progress"}__fill`;
106+
const circleSelector = `.${circleClassPrefix}${circleClassPostfix}`;
107+
108+
const color = "#ff0020";
109+
110+
it("renders fill circle", () => {
111+
expect(
112+
localFactory({ [colorProp]: color })
113+
.find(circleSelector)
114+
.exists()
115+
).to.be.true;
116+
});
117+
118+
colorAsStringTests({ [colorProp]: color }, color, circleSelector, true);
119+
gradientColorTests({ [colorProp]: gradientColor }, circleSelector, gradientURLPrefix, true);
120+
};
121+
122+
describe("Colors", () => {
123+
describe("Circle", () => {
124+
const half = false;
125+
describe("#color", () => {
126+
colorTests("color", half, false, "ep-progress");
127+
});
128+
describe("#emptyColor", () => {
129+
colorTests("emptyColor", half, true, "ep-empty");
130+
});
131+
describe("#colorFill", () => {
132+
colorFillTests("colorFill", half, false, "ep-progress-fill");
133+
});
134+
describe("#emptyColorFill", () => {
135+
colorFillTests("emptyColorFill", half, true, "ep-empty-fill");
136+
});
137+
});
138+
describe("Half Circle", () => {
139+
const half = true;
140+
describe("#color", () => {
141+
colorTests("color", half, false, "ep-progress");
142+
});
143+
describe("#emptyColor", () => {
144+
colorTests("emptyColor", half, true, "ep-empty");
145+
});
146+
describe("#colorFill", () => {
147+
colorFillTests("colorFill", half, false, "ep-progress-fill");
148+
});
149+
describe("#emptyColorFill", () => {
150+
colorFillTests("emptyColorFill", half, true, "ep-empty-fill");
151+
});
152+
});
103153
});

0 commit comments

Comments
 (0)