feat: run vitest on non-component files (#35)

### Explanation

This gives us coverage for all of our non-rendering logic, so we can use Playwright E2E testing for the actual components.

### Issue

_No response_

### Attestations

- [x] I have read and agree to the [Code of Conduct](https://docs.nhcarrigan.com/community/coc/)
- [x] I have read and agree to the [Community Guidelines](https://docs.nhcarrigan.com/community/guide/).
- [x] My contribution complies with the [Contributor Covenant](https://docs.nhcarrigan.com/dev/covenant/).

### Dependencies

- [x] I have pinned the dependencies to a specific patch version.

### Style

- [x] I have run the linter and resolved any errors.
- [x] My pull request uses an appropriate title, matching the conventional commit standards.
- [x] My scope of feat/fix/chore/etc. correctly matches the nature of changes in my pull request.

### Tests

- [x] My contribution adds new code, and I have added tests to cover it.
- [x] My contribution modifies existing code, and I have updated the tests to reflect these changes.
- [x] All new and existing tests pass locally with my changes.
- [x] Code coverage remains at or above the configured threshold.

### Documentation

_No response_

### Versioning

Major - My pull request introduces a breaking change.

Reviewed-on: https://codeberg.org/nhcarrigan/portfolio/pulls/35
Co-authored-by: Naomi Carrigan <commits@nhcarrigan.com>
Co-committed-by: Naomi Carrigan <commits@nhcarrigan.com>
This commit is contained in:
2024-10-31 01:54:12 +00:00
committed by Naomi the Technomancer
parent fe370dabb5
commit c43635fa44
42 changed files with 3045 additions and 36 deletions

View File

@ -0,0 +1,38 @@
/**
* @copyright nhcarrigan
* @license Naomi's Public License
* @author Naomi Carrigan
*/
import { describe, it, expect } from "vitest";
import { Codeberg } from "../../src/icons/Codeberg";
describe("codeberg icon", () => {
it("should have a valid width", () => {
expect.assertions(1);
expect(Codeberg.icon[0], "width is negative").toBeGreaterThan(0);
});
it("should have a valid height", () => {
expect.assertions(1);
expect(Codeberg.icon[1], "height is negative").toBeGreaterThan(0);
});
it("should not have any ligatures", () => {
expect.assertions(1);
expect(Codeberg.icon[2], "ligatures are present").toStrictEqual([]);
});
it("should have a valid unicode set", () => {
expect.assertions(1);
expect(Codeberg.icon[3], "unicode set is wrong").toBe("U+E002");
});
it("should have valid SVG path data", () => {
expect.assertions(1);
expect(Codeberg.icon[4], "path data is bad").toMatch(
// eslint-disable-next-line stylistic/max-len
/(?:[lm]\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+)))|(?:[hv]\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+)))|(?:c\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){5})|(?:q\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){3}(?:\s?t?\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+)))*)|(?:a\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){2}[\s,]?(?:[01][\s,]+){2}(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){2})|(?:s\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){3})|z/gi,
);
});
});

View File

@ -0,0 +1,38 @@
/**
* @copyright nhcarrigan
* @license Naomi's Public License
* @author Naomi Carrigan
*/
import { describe, it, expect } from "vitest";
import { Coursera } from "../../src/icons/Coursera";
describe("coursera icon", () => {
it("should have a valid width", () => {
expect.assertions(1);
expect(Coursera.icon[0], "width is negative").toBeGreaterThan(0);
});
it("should have a valid height", () => {
expect.assertions(1);
expect(Coursera.icon[1], "height is negative").toBeGreaterThan(0);
});
it("should not have any ligatures", () => {
expect.assertions(1);
expect(Coursera.icon[2], "ligatures are present").toStrictEqual([]);
});
it("should have a valid unicode set", () => {
expect.assertions(1);
expect(Coursera.icon[3], "unicode set is wrong").toBe("U+E002");
});
it("should have valid SVG path data", () => {
expect.assertions(1);
expect(Coursera.icon[4], "path data is bad").toMatch(
// eslint-disable-next-line stylistic/max-len
/(?:[lm]\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+)))|(?:[hv]\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+)))|(?:c\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){5})|(?:q\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){3}(?:\s?t?\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+)))*)|(?:a\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){2}[\s,]?(?:[01][\s,]+){2}(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){2})|(?:s\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){3})|z/gi,
);
});
});

38
test/icons/Fiverr.spec.ts Normal file
View File

@ -0,0 +1,38 @@
/**
* @copyright nhcarrigan
* @license Naomi's Public License
* @author Naomi Carrigan
*/
import { describe, it, expect } from "vitest";
import { Fiverr } from "../../src/icons/Fiverr";
describe("fiverr icon", () => {
it("should have a valid width", () => {
expect.assertions(1);
expect(Fiverr.icon[0], "width is negative").toBeGreaterThan(0);
});
it("should have a valid height", () => {
expect.assertions(1);
expect(Fiverr.icon[1], "height is negative").toBeGreaterThan(0);
});
it("should not have any ligatures", () => {
expect.assertions(1);
expect(Fiverr.icon[2], "ligatures are present").toStrictEqual([]);
});
it("should have a valid unicode set", () => {
expect.assertions(1);
expect(Fiverr.icon[3], "unicode set is wrong").toBe("U+E002");
});
it("should have valid SVG path data", () => {
expect.assertions(1);
expect(Fiverr.icon[4], "path data is bad").toMatch(
// eslint-disable-next-line stylistic/max-len
/(?:[lm]\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+)))|(?:[hv]\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+)))|(?:c\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){5})|(?:q\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){3}(?:\s?t?\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+)))*)|(?:a\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){2}[\s,]?(?:[01][\s,]+){2}(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){2})|(?:s\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){3})|z/gi,
);
});
});

38
test/icons/Gather.spec.ts Normal file
View File

@ -0,0 +1,38 @@
/**
* @copyright nhcarrigan
* @license Naomi's Public License
* @author Naomi Carrigan
*/
import { describe, it, expect } from "vitest";
import { Gather } from "../../src/icons/Gather";
describe("gather icon", () => {
it("should have a valid width", () => {
expect.assertions(1);
expect(Gather.icon[0], "width is negative").toBeGreaterThan(0);
});
it("should have a valid height", () => {
expect.assertions(1);
expect(Gather.icon[1], "height is negative").toBeGreaterThan(0);
});
it("should not have any ligatures", () => {
expect.assertions(1);
expect(Gather.icon[2], "ligatures are present").toStrictEqual([]);
});
it("should have a valid unicode set", () => {
expect.assertions(1);
expect(Gather.icon[3], "unicode set is wrong").toBe("U+E002");
});
it("should have valid SVG path data", () => {
expect.assertions(1);
expect(Gather.icon[4], "path data is bad").toMatch(
// eslint-disable-next-line stylistic/max-len
/(?:[lm]\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+)))|(?:[hv]\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+)))|(?:c\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){5})|(?:q\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){3}(?:\s?t?\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+)))*)|(?:a\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){2}[\s,]?(?:[01][\s,]+){2}(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){2})|(?:s\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){3})|z/gi,
);
});
});

38
test/icons/Gog.spec.ts Normal file
View File

@ -0,0 +1,38 @@
/**
* @copyright nhcarrigan
* @license Naomi's Public License
* @author Naomi Carrigan
*/
import { describe, it, expect } from "vitest";
import { Gog } from "../../src/icons/Gog";
describe("gog icon", () => {
it("should have a valid width", () => {
expect.assertions(1);
expect(Gog.icon[0], "width is negative").toBeGreaterThan(0);
});
it("should have a valid height", () => {
expect.assertions(1);
expect(Gog.icon[1], "height is negative").toBeGreaterThan(0);
});
it("should not have any ligatures", () => {
expect.assertions(1);
expect(Gog.icon[2], "ligatures are present").toStrictEqual([]);
});
it("should have a valid unicode set", () => {
expect.assertions(1);
expect(Gog.icon[3], "unicode set is wrong").toBe("U+E002");
});
it("should have valid SVG path data", () => {
expect.assertions(1);
expect(Gog.icon[4], "path data is bad").toMatch(
// eslint-disable-next-line stylistic/max-len
/(?:[lm]\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+)))|(?:[hv]\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+)))|(?:c\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){5})|(?:q\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){3}(?:\s?t?\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+)))*)|(?:a\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){2}[\s,]?(?:[01][\s,]+){2}(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){2})|(?:s\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){3})|z/gi,
);
});
});

38
test/icons/Kofi.spec.ts Normal file
View File

@ -0,0 +1,38 @@
/**
* @copyright nhcarrigan
* @license Naomi's Public License
* @author Naomi Carrigan
*/
import { describe, it, expect } from "vitest";
import { Kofi } from "../../src/icons/KoFi";
describe("kofi icon", () => {
it("should have a valid width", () => {
expect.assertions(1);
expect(Kofi.icon[0], "width is negative").toBeGreaterThan(0);
});
it("should have a valid height", () => {
expect.assertions(1);
expect(Kofi.icon[1], "height is negative").toBeGreaterThan(0);
});
it("should not have any ligatures", () => {
expect.assertions(1);
expect(Kofi.icon[2], "ligatures are present").toStrictEqual([]);
});
it("should have a valid unicode set", () => {
expect.assertions(1);
expect(Kofi.icon[3], "unicode set is wrong").toBe("U+E002");
});
it("should have valid SVG path data", () => {
expect.assertions(1);
expect(Kofi.icon[4], "path data is bad").toMatch(
// eslint-disable-next-line stylistic/max-len
/(?:[lm]\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+)))|(?:[hv]\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+)))|(?:c\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){5})|(?:q\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){3}(?:\s?t?\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+)))*)|(?:a\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){2}[\s,]?(?:[01][\s,]+){2}(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){2})|(?:s\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){3})|z/gi,
);
});
});

38
test/icons/Matrix.spec.ts Normal file
View File

@ -0,0 +1,38 @@
/**
* @copyright nhcarrigan
* @license Naomi's Public License
* @author Naomi Carrigan
*/
import { describe, it, expect } from "vitest";
import { Matrix } from "../../src/icons/Matrix";
describe("matrix icon", () => {
it("should have a valid width", () => {
expect.assertions(1);
expect(Matrix.icon[0], "width is negative").toBeGreaterThan(0);
});
it("should have a valid height", () => {
expect.assertions(1);
expect(Matrix.icon[1], "height is negative").toBeGreaterThan(0);
});
it("should not have any ligatures", () => {
expect.assertions(1);
expect(Matrix.icon[2], "ligatures are present").toStrictEqual([]);
});
it("should have a valid unicode set", () => {
expect.assertions(1);
expect(Matrix.icon[3], "unicode set is wrong").toBe("U+E002");
});
it("should have valid SVG path data", () => {
expect.assertions(1);
expect(Matrix.icon[4], "path data is bad").toMatch(
// eslint-disable-next-line stylistic/max-len
/(?:[lm]\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+)))|(?:[hv]\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+)))|(?:c\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){5})|(?:q\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){3}(?:\s?t?\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+)))*)|(?:a\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){2}[\s,]?(?:[01][\s,]+){2}(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){2})|(?:s\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){3})|z/gi,
);
});
});

View File

@ -0,0 +1,38 @@
/**
* @copyright nhcarrigan
* @license Naomi's Public License
* @author Naomi Carrigan
*/
import { describe, it, expect } from "vitest";
import { Peerlist } from "../../src/icons/Peerlist";
describe("peerlist icon", () => {
it("should have a valid width", () => {
expect.assertions(1);
expect(Peerlist.icon[0], "width is negative").toBeGreaterThan(0);
});
it("should have a valid height", () => {
expect.assertions(1);
expect(Peerlist.icon[1], "height is negative").toBeGreaterThan(0);
});
it("should not have any ligatures", () => {
expect.assertions(1);
expect(Peerlist.icon[2], "ligatures are present").toStrictEqual([]);
});
it("should have a valid unicode set", () => {
expect.assertions(1);
expect(Peerlist.icon[3], "unicode set is wrong").toBe("U+E002");
});
it("should have valid SVG path data", () => {
expect.assertions(1);
expect(Peerlist.icon[4], "path data is bad").toMatch(
// eslint-disable-next-line stylistic/max-len
/(?:[lm]\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+)))|(?:[hv]\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+)))|(?:c\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){5})|(?:q\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){3}(?:\s?t?\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+)))*)|(?:a\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){2}[\s,]?(?:[01][\s,]+){2}(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){2})|(?:s\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){3})|z/gi,
);
});
});

38
test/icons/Pixiv.spec.ts Normal file
View File

@ -0,0 +1,38 @@
/**
* @copyright nhcarrigan
* @license Naomi's Public License
* @author Naomi Carrigan
*/
import { describe, it, expect } from "vitest";
import { Pixiv } from "../../src/icons/Pixiv";
describe("pixiv icon", () => {
it("should have a valid width", () => {
expect.assertions(1);
expect(Pixiv.icon[0], "width is negative").toBeGreaterThan(0);
});
it("should have a valid height", () => {
expect.assertions(1);
expect(Pixiv.icon[1], "height is negative").toBeGreaterThan(0);
});
it("should not have any ligatures", () => {
expect.assertions(1);
expect(Pixiv.icon[2], "ligatures are present").toStrictEqual([]);
});
it("should have a valid unicode set", () => {
expect.assertions(1);
expect(Pixiv.icon[3], "unicode set is wrong").toBe("U+E002");
});
it("should have valid SVG path data", () => {
expect.assertions(1);
expect(Pixiv.icon[4], "path data is bad").toMatch(
// eslint-disable-next-line stylistic/max-len
/(?:[lm]\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+)))|(?:[hv]\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+)))|(?:c\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){5})|(?:q\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){3}(?:\s?t?\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+)))*)|(?:a\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){2}[\s,]?(?:[01][\s,]+){2}(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){2})|(?:s\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){3})|z/gi,
);
});
});

View File

@ -0,0 +1,38 @@
/**
* @copyright nhcarrigan
* @license Naomi's Public License
* @author Naomi Carrigan
*/
import { describe, it, expect } from "vitest";
import { Polywork } from "../../src/icons/Polywork";
describe("polywork icon", () => {
it("should have a valid width", () => {
expect.assertions(1);
expect(Polywork.icon[0], "width is negative").toBeGreaterThan(0);
});
it("should have a valid height", () => {
expect.assertions(1);
expect(Polywork.icon[1], "height is negative").toBeGreaterThan(0);
});
it("should not have any ligatures", () => {
expect.assertions(1);
expect(Polywork.icon[2], "ligatures are present").toStrictEqual([]);
});
it("should have a valid unicode set", () => {
expect.assertions(1);
expect(Polywork.icon[3], "unicode set is wrong").toBe("U+E002");
});
it("should have valid SVG path data", () => {
expect.assertions(1);
expect(Polywork.icon[4], "path data is bad").toMatch(
// eslint-disable-next-line stylistic/max-len
/(?:[lm]\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+)))|(?:[hv]\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+)))|(?:c\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){5})|(?:q\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){3}(?:\s?t?\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+)))*)|(?:a\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){2}[\s,]?(?:[01][\s,]+){2}(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){2})|(?:s\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){3})|z/gi,
);
});
});

38
test/icons/Saylor.spec.ts Normal file
View File

@ -0,0 +1,38 @@
/**
* @copyright nhcarrigan
* @license Naomi's Public License
* @author Naomi Carrigan
*/
import { describe, it, expect } from "vitest";
import { Saylor } from "../../src/icons/Saylor";
describe("saylor icon", () => {
it("should have a valid width", () => {
expect.assertions(1);
expect(Saylor.icon[0], "width is negative").toBeGreaterThan(0);
});
it("should have a valid height", () => {
expect.assertions(1);
expect(Saylor.icon[1], "height is negative").toBeGreaterThan(0);
});
it("should not have any ligatures", () => {
expect.assertions(1);
expect(Saylor.icon[2], "ligatures are present").toStrictEqual([]);
});
it("should have a valid unicode set", () => {
expect.assertions(1);
expect(Saylor.icon[3], "unicode set is wrong").toBe("U+E002");
});
it("should have valid SVG path data", () => {
expect.assertions(1);
expect(Saylor.icon[4], "path data is bad").toMatch(
// eslint-disable-next-line stylistic/max-len
/(?:[lm]\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+)))|(?:[hv]\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+)))|(?:c\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){5})|(?:q\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){3}(?:\s?t?\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+)))*)|(?:a\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){2}[\s,]?(?:[01][\s,]+){2}(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){2})|(?:s\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){3})|z/gi,
);
});
});

View File

@ -0,0 +1,38 @@
/**
* @copyright nhcarrigan
* @license Naomi's Public License
* @author Naomi Carrigan
*/
import { describe, it, expect } from "vitest";
import { TeeSpring } from "../../src/icons/TeeSpring";
describe("teespring icon", () => {
it("should have a valid width", () => {
expect.assertions(1);
expect(TeeSpring.icon[0], "width is negative").toBeGreaterThan(0);
});
it("should have a valid height", () => {
expect.assertions(1);
expect(TeeSpring.icon[1], "height is negative").toBeGreaterThan(0);
});
it("should not have any ligatures", () => {
expect.assertions(1);
expect(TeeSpring.icon[2], "ligatures are present").toStrictEqual([]);
});
it("should have a valid unicode set", () => {
expect.assertions(1);
expect(TeeSpring.icon[3], "unicode set is wrong").toBe("U+E002");
});
it("should have valid SVG path data", () => {
expect.assertions(1);
expect(TeeSpring.icon[4], "path data is bad").toMatch(
// eslint-disable-next-line stylistic/max-len
/(?:[lm]\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+)))|(?:[hv]\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+)))|(?:c\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){5})|(?:q\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){3}(?:\s?t?\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+)))*)|(?:a\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){2}[\s,]?(?:[01][\s,]+){2}(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){2})|(?:s\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){3})|z/gi,
);
});
});

38
test/icons/Throne.spec.ts Normal file
View File

@ -0,0 +1,38 @@
/**
* @copyright nhcarrigan
* @license Naomi's Public License
* @author Naomi Carrigan
*/
import { describe, it, expect } from "vitest";
import { Throne } from "../../src/icons/Throne";
describe("throne icon", () => {
it("should have a valid width", () => {
expect.assertions(1);
expect(Throne.icon[0], "width is negative").toBeGreaterThan(0);
});
it("should have a valid height", () => {
expect.assertions(1);
expect(Throne.icon[1], "height is negative").toBeGreaterThan(0);
});
it("should not have any ligatures", () => {
expect.assertions(1);
expect(Throne.icon[2], "ligatures are present").toStrictEqual([]);
});
it("should have a valid unicode set", () => {
expect.assertions(1);
expect(Throne.icon[3], "unicode set is wrong").toBe("U+E002");
});
it("should have valid SVG path data", () => {
expect.assertions(1);
expect(Throne.icon[4], "path data is bad").toMatch(
// eslint-disable-next-line stylistic/max-len
/(?:[lm]\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+)))|(?:[hv]\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+)))|(?:c\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){5})|(?:q\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){3}(?:\s?t?\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+)))*)|(?:a\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){2}[\s,]?(?:[01][\s,]+){2}(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){2})|(?:s\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){3})|z/gi,
);
});
});

View File

@ -0,0 +1,38 @@
/**
* @copyright nhcarrigan
* @license Naomi's Public License
* @author Naomi Carrigan
*/
import { describe, it, expect } from "vitest";
import { TreeNation } from "../../src/icons/TreeNation";
describe("treenation icon", () => {
it("should have a valid width", () => {
expect.assertions(1);
expect(TreeNation.icon[0], "width is negative").toBeGreaterThan(0);
});
it("should have a valid height", () => {
expect.assertions(1);
expect(TreeNation.icon[1], "height is negative").toBeGreaterThan(0);
});
it("should not have any ligatures", () => {
expect.assertions(1);
expect(TreeNation.icon[2], "ligatures are present").toStrictEqual([]);
});
it("should have a valid unicode set", () => {
expect.assertions(1);
expect(TreeNation.icon[3], "unicode set is wrong").toBe("U+E002");
});
it("should have valid SVG path data", () => {
expect.assertions(1);
expect(TreeNation.icon[4], "path data is bad").toMatch(
// eslint-disable-next-line stylistic/max-len
/(?:[lm]\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+)))|(?:[hv]\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+)))|(?:c\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){5})|(?:q\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){3}(?:\s?t?\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+)))*)|(?:a\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){2}[\s,]?(?:[01][\s,]+){2}(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){2})|(?:s\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){3})|z/gi,
);
});
});

38
test/icons/Udemy.spec.ts Normal file
View File

@ -0,0 +1,38 @@
/**
* @copyright nhcarrigan
* @license Naomi's Public License
* @author Naomi Carrigan
*/
import { describe, it, expect } from "vitest";
import { Udemy } from "../../src/icons/Udemy";
describe("udemy icon", () => {
it("should have a valid width", () => {
expect.assertions(1);
expect(Udemy.icon[0], "width is negative").toBeGreaterThan(0);
});
it("should have a valid height", () => {
expect.assertions(1);
expect(Udemy.icon[1], "height is negative").toBeGreaterThan(0);
});
it("should not have any ligatures", () => {
expect.assertions(1);
expect(Udemy.icon[2], "ligatures are present").toStrictEqual([]);
});
it("should have a valid unicode set", () => {
expect.assertions(1);
expect(Udemy.icon[3], "unicode set is wrong").toBe("U+E002");
});
it("should have valid SVG path data", () => {
expect.assertions(1);
expect(Udemy.icon[4], "path data is bad").toMatch(
// eslint-disable-next-line stylistic/max-len
/(?:[lm]\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+)))|(?:[hv]\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+)))|(?:c\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){5})|(?:q\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){3}(?:\s?t?\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+)))*)|(?:a\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){2}[\s,]?(?:[01][\s,]+){2}(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){2})|(?:s\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){3})|z/gi,
);
});
});

38
test/icons/VRoid.spec.ts Normal file
View File

@ -0,0 +1,38 @@
/**
* @copyright nhcarrigan
* @license Naomi's Public License
* @author Naomi Carrigan
*/
import { describe, it, expect } from "vitest";
import { VRoid } from "../../src/icons/VRoid";
describe("vroid icon", () => {
it("should have a valid width", () => {
expect.assertions(1);
expect(VRoid.icon[0], "width is negative").toBeGreaterThan(0);
});
it("should have a valid height", () => {
expect.assertions(1);
expect(VRoid.icon[1], "height is negative").toBeGreaterThan(0);
});
it("should not have any ligatures", () => {
expect.assertions(1);
expect(VRoid.icon[2], "ligatures are present").toStrictEqual([]);
});
it("should have a valid unicode set", () => {
expect.assertions(1);
expect(VRoid.icon[3], "unicode set is wrong").toBe("U+E002");
});
it("should have valid SVG path data", () => {
expect.assertions(1);
expect(VRoid.icon[4], "path data is bad").toMatch(
// eslint-disable-next-line stylistic/max-len
/(?:[lm]\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+)))|(?:[hv]\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+)))|(?:c\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){5})|(?:q\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){3}(?:\s?t?\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+)))*)|(?:a\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){2}[\s,]?(?:[01][\s,]+){2}(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){2})|(?:s\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){3})|z/gi,
);
});
});

View File

@ -0,0 +1,38 @@
/**
* @copyright nhcarrigan
* @license Naomi's Public License
* @author Naomi Carrigan
*/
import { describe, it, expect } from "vitest";
import { Volunteer } from "../../src/icons/Volunteer";
describe("volunteer icon", () => {
it("should have a valid width", () => {
expect.assertions(1);
expect(Volunteer.icon[0], "width is negative").toBeGreaterThan(0);
});
it("should have a valid height", () => {
expect.assertions(1);
expect(Volunteer.icon[1], "height is negative").toBeGreaterThan(0);
});
it("should not have any ligatures", () => {
expect.assertions(1);
expect(Volunteer.icon[2], "ligatures are present").toStrictEqual([]);
});
it("should have a valid unicode set", () => {
expect.assertions(1);
expect(Volunteer.icon[3], "unicode set is wrong").toBe("U+E002");
});
it("should have valid SVG path data", () => {
expect.assertions(1);
expect(Volunteer.icon[4], "path data is bad").toMatch(
// eslint-disable-next-line stylistic/max-len
/(?:[lm]\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+)))|(?:[hv]\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+)))|(?:c\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){5})|(?:q\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){3}(?:\s?t?\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+)))*)|(?:a\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){2}[\s,]?(?:[01][\s,]+){2}(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){2})|(?:s\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){3})|z/gi,
);
});
});