aboutsummaryrefslogtreecommitdiffhomepage
path: root/test/exporter.test.ts
diff options
context:
space:
mode:
authorAjay <[email protected]>2022-06-22 18:58:49 -0400
committerAjay <[email protected]>2022-06-22 18:58:49 -0400
commitfc81e020260d6ada651a40c4c00cc256432d8577 (patch)
treebff2c8916477f651be886858cd510b3ec9029cae /test/exporter.test.ts
parente12d5ff10a6b7e251533b57732b69aa57df8a1a2 (diff)
downloadSponsorBlock-fc81e020260d6ada651a40c4c00cc256432d8577.tar.gz
SponsorBlock-fc81e020260d6ada651a40c4c00cc256432d8577.zip
Fix exporter test
Diffstat (limited to 'test/exporter.test.ts')
-rw-r--r--test/exporter.test.ts241
1 files changed, 241 insertions, 0 deletions
diff --git a/test/exporter.test.ts b/test/exporter.test.ts
new file mode 100644
index 00000000..dd589db1
--- /dev/null
+++ b/test/exporter.test.ts
@@ -0,0 +1,241 @@
+/**
+ * @jest-environment jsdom
+ */
+
+import { ActionType, Category, SegmentUUID, SponsorSourceType, SponsorTime } from "../src/types";
+import { exportTimes, importTimes } from "../src/utils/exporter";
+
+describe("Export segments", () => {
+ it("Some segments", () => {
+ const segments: SponsorTime[] = [{
+ segment: [0, 10],
+ category: "chapter" as Category,
+ actionType: ActionType.Chapter,
+ description: "Chapter 1",
+ source: SponsorSourceType.Server,
+ UUID: "1" as SegmentUUID
+ }, {
+ segment: [20, 20],
+ category: "poi_highlight" as Category,
+ actionType: ActionType.Poi,
+ description: "Highlight",
+ source: SponsorSourceType.Server,
+ UUID: "2" as SegmentUUID
+ }, {
+ segment: [30, 40],
+ category: "sponsor" as Category,
+ actionType: ActionType.Skip,
+ description: "Sponsor", // Force a description since chrome is not defined
+ source: SponsorSourceType.Server,
+ UUID: "3" as SegmentUUID
+ }, {
+ segment: [50, 60],
+ category: "selfpromo" as Category,
+ actionType: ActionType.Mute,
+ description: "Selfpromo",
+ source: SponsorSourceType.Server,
+ UUID: "4" as SegmentUUID
+ }, {
+ segment: [0, 0],
+ category: "selfpromo" as Category,
+ actionType: ActionType.Full,
+ description: "Selfpromo",
+ source: SponsorSourceType.Server,
+ UUID: "5" as SegmentUUID
+ }, {
+ segment: [80, 90],
+ category: "interaction" as Category,
+ actionType: ActionType.Skip,
+ description: "Interaction",
+ source: SponsorSourceType.YouTube,
+ UUID: "6" as SegmentUUID
+ }];
+
+ const result = exportTimes(segments);
+
+ expect(result).toBe(
+ "0:00.000 - 0:10.000 Chapter 1\n" +
+ "0:20.000 Highlight\n" +
+ "0:30.000 - 0:40.000 Sponsor"
+ );
+ });
+
+});
+
+describe("Import segments", () => {
+ it("1:20 to 1:21 thing", () => {
+ const input = ` 1:20 to 1:21 thing
+ 1:25 to 1:28 another thing`;
+
+ const result = importTimes(input, 120);
+ expect(result).toMatchObject([{
+ segment: [80, 81],
+ description: "thing",
+ category: "chapter" as Category
+ }, {
+ segment: [85, 88],
+ description: "another thing",
+ category: "chapter" as Category
+ }]);
+ });
+
+ it("thing 1:20 to 1:21", () => {
+ const input = ` thing 1:20 to 1:21
+ another thing 1:25 to 1:28 ext`;
+
+ const result = importTimes(input, 120);
+ expect(result).toMatchObject([{
+ segment: [80, 81],
+ description: "thing",
+ category: "chapter" as Category
+ }, {
+ segment: [85, 88],
+ description: "another thing",
+ category: "chapter" as Category
+ }]);
+ });
+
+ it("1:20 - 1:21 thing", () => {
+ const input = ` 1:20 - 1:21 thing
+ 1:25 - 1:28 another thing`;
+
+ const result = importTimes(input, 120);
+ expect(result).toMatchObject([{
+ segment: [80, 81],
+ description: "thing",
+ category: "chapter" as Category
+ }, {
+ segment: [85, 88],
+ description: "another thing",
+ category: "chapter" as Category
+ }]);
+ });
+
+ it("1:20 1:21 thing", () => {
+ const input = ` 1:20 1:21 thing
+ 1:25 1:28 another thing`;
+
+ const result = importTimes(input, 120);
+ expect(result).toMatchObject([{
+ segment: [80, 81],
+ description: "thing",
+ category: "chapter" as Category
+ }, {
+ segment: [85, 88],
+ description: "another thing",
+ category: "chapter" as Category
+ }]);
+ });
+
+ it("1:20 thing", () => {
+ const input = ` 1:20 thing
+ 1:25 another thing`;
+
+ const result = importTimes(input, 120);
+ expect(result).toMatchObject([{
+ segment: [80, 85],
+ description: "thing",
+ category: "chapter" as Category
+ }, {
+ segment: [85, 120],
+ description: "another thing",
+ category: "chapter" as Category
+ }]);
+ });
+
+ it("1:20: thing", () => {
+ const input = ` 1:20: thing
+ 1:25: another thing`;
+
+ const result = importTimes(input, 120);
+ expect(result).toMatchObject([{
+ segment: [80, 85],
+ description: "thing",
+ category: "chapter" as Category
+ }, {
+ segment: [85, 120],
+ description: "another thing",
+ category: "chapter" as Category
+ }]);
+ });
+
+ it("1:20 (thing)", () => {
+ const input = ` 1:20 (thing)
+ 1:25 (another thing)`;
+
+ const result = importTimes(input, 120);
+ expect(result).toMatchObject([{
+ segment: [80, 85],
+ description: "thing",
+ category: "chapter" as Category
+ }, {
+ segment: [85, 120],
+ description: "another thing",
+ category: "chapter" as Category
+ }]);
+ });
+
+ it("thing 1:20", () => {
+ const input = ` thing 1:20
+ another thing 1:25`;
+
+ const result = importTimes(input, 120);
+ expect(result).toMatchObject([{
+ segment: [80, 85],
+ description: "thing",
+ category: "chapter" as Category
+ }, {
+ segment: [85, 120],
+ description: "another thing",
+ category: "chapter" as Category
+ }]);
+ });
+
+ it("thing at 1:20", () => {
+ const input = ` thing at 1:20
+ another thing at 1:25`;
+
+ const result = importTimes(input, 120);
+ expect(result).toMatchObject([{
+ segment: [80, 85],
+ description: "thing",
+ category: "chapter" as Category
+ }, {
+ segment: [85, 120],
+ description: "another thing",
+ category: "chapter" as Category
+ }]);
+ });
+
+ it("thing at 1s", () => {
+ const input = ` thing at 1s
+ another thing at 5s`;
+
+ const result = importTimes(input, 120);
+ expect(result).toMatchObject([{
+ segment: [1, 5],
+ description: "thing",
+ category: "chapter" as Category
+ }, {
+ segment: [5, 120],
+ description: "another thing",
+ category: "chapter" as Category
+ }]);
+ });
+
+ it("thing at 1 second", () => {
+ const input = ` thing at 1 second
+ another thing at 5 seconds`;
+
+ const result = importTimes(input, 120);
+ expect(result).toMatchObject([{
+ segment: [1, 5],
+ description: "thing",
+ category: "chapter" as Category
+ }, {
+ segment: [5, 120],
+ description: "another thing",
+ category: "chapter" as Category
+ }]);
+ });
+}); \ No newline at end of file