From eda93a17571ef129f3fb9020971cf5e5b5e9d874 Mon Sep 17 00:00:00 2001 From: Alexander Alemayhu Date: Thu, 14 Sep 2023 17:21:41 +0200 Subject: [PATCH] test: stub out all the functionality --- src/csv-to-apkg.test.ts | 40 +++++++++++++++++++++++++++++++++++++--- src/csv-to-apkg.ts | 17 +++++++++++++++++ 2 files changed, 54 insertions(+), 3 deletions(-) diff --git a/src/csv-to-apkg.test.ts b/src/csv-to-apkg.test.ts index 65a404b..1812321 100644 --- a/src/csv-to-apkg.test.ts +++ b/src/csv-to-apkg.test.ts @@ -1,11 +1,45 @@ // eslint-disable-next-line import/no-extraneous-dependencies -import { describe, it, expect } from 'vitest'; +import { describe, it, expect, fail } from 'vitest'; -import convertCSVToAPKG from './csv-to-apkg'; +import convertCSVToAPKG, { CSVReader } from './csv-to-apkg'; + +const CSV_EXAMPLE = ` +Word,Meaning,Tags +お願いします,Please,one +ありがとう,Thank you (impolite),two +ありがとうございます。,Thank you (polite),three +`; describe("Convert CSV to APKG", () => { - it("converts CSV to APKG format", () => { + it.skip("converts CSV to APKG format", () => { expect(convertCSVToAPKG()).toContain("magic") }); + + it.skip("reads the CSV content correctly", () => { + const reader = new CSVReader(CSV_EXAMPLE); + expect(reader.getHeaders()).toBe(['Word', 'Meaning', 'Tags']); + expect(reader.getRows()).toBe( + [ + ['お願いします', 'Please', 'one'], + ['ありがとう', 'Thank you (impolite)', 'two'], + ['ありがとうございます。', 'Thank you (polite)', 'three'] + ] + ) + }); + + it.skip("Transform to decks / notes", () => { + const reader = new CSVReader(CSV_EXAMPLE); + const mapper = new DataMapper(reader.parseSync()) + expect(mapper.getDecks()).toBe(['Default']) + }); + + it.skip("uses filename as deck name", () => { + console.info("to be implemented"); + }) + + it.skip("uses custom filename as deck name", () => { + console.info("to be implemented"); + }) + }) diff --git a/src/csv-to-apkg.ts b/src/csv-to-apkg.ts index e4b08ac..7bcb8d0 100644 --- a/src/csv-to-apkg.ts +++ b/src/csv-to-apkg.ts @@ -1,3 +1,20 @@ export default function convertCSVToAPKG(): string | null { throw new Error("To be implemented") +} + + +export type CSVColumnHeader = string +export type CSVRow = string + +export class CSVReader { + + constructor(readonly content: string) {} + + getHeaders(): CSVColumnHeader { + throw new Error("not implemented") + } + + getRows(): CSVRow { + throw new Error("not implemented") + } } \ No newline at end of file