Skip to content

Commit

Permalink
✅ Make tests passing
Browse files Browse the repository at this point in the history
  • Loading branch information
Lukas Horak committed Oct 30, 2020
1 parent 4783f69 commit 4dfae3f
Show file tree
Hide file tree
Showing 4 changed files with 37 additions and 40 deletions.
34 changes: 16 additions & 18 deletions packages/lokse/src/core/reader/spreadsheet-reader.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,21 +19,18 @@ class MissingAuthError extends CLIError {
}
}

class LoadDataError extends CLIError {
constructor(reason: string) {
super(reason);
this.name = "LoadDataError";
const cliInvariant = (
expression: any,
message: string,
options: object = {}
) => {
if (!expression) {
throw new CLIError(message, options);
}
}
};

class ColumnDataError extends CLIError {
constructor(reason: string) {
super(reason, {
exit: false,
});
this.name = "ColumnDataError";
}
}
const noExitCliInvariant = (expression: any, message: string) =>
cliInvariant(expression, message, { exit: false });

export class SpreadsheetReader {
private spreadsheet: GoogleSpreadsheet;
Expand Down Expand Up @@ -76,7 +73,7 @@ export class SpreadsheetReader {
try {
await this.spreadsheet.loadInfo();
} catch (error) {
throw new LoadDataError(error.message);
cliInvariant(false, error.message);
}

this.worksheets = await this.sheetsReader.read(this.spreadsheet);
Expand All @@ -103,12 +100,13 @@ export class SpreadsheetReader {
}

if (!keyColumnId) {
warn(`Key column "${keyColumn}" not found in sheet ${worksheet.title}.`)
warn(`Key column "${keyColumn}" not found in sheet ${worksheet.title}.`);
}

if (!valueColumnId) {
throw new ColumnDataError(`Language column "${valueColumn}" not found in sheet ${worksheet.title}!`);
}
noExitCliInvariant(
valueColumnId,
`Language column "${valueColumn}" not found in sheet ${worksheet.title}!`
);

return worksheet.rows.map(
(row) => new Line(row[keyColumnId], row[valueColumnId])
Expand Down
15 changes: 7 additions & 8 deletions packages/lokse/test/core/reader/spreadsheet-reader.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ describe("SpreadsheetReader.extractFromWorksheet", () => {
const reader = new SpreadsheetReader("api_key", "*");

const worksheet: Worksheet = {
title: "Worksheet1",
header: ["Key", "Value_fr", "Value_nl"],
rows: [
createRow(1, {
Expand Down Expand Up @@ -42,10 +43,11 @@ describe("SpreadsheetReader.extractFromWorksheet", () => {
expect(lines[4].isEmpty()).toEqual(true);
});

it("should still work when val column doesnt exist ", () => {
it("should throw when val column doesnt exist ", () => {
const reader = new SpreadsheetReader("api_key", "*");

const worksheet: Worksheet = {
title: "Worksheet2",
header: ["Key", "Value_fr", "Value_nl"],
rows: [
createRow(1, {
Expand All @@ -56,19 +58,14 @@ describe("SpreadsheetReader.extractFromWorksheet", () => {
],
};

const result = reader.extractFromWorksheet(worksheet, "Key", "NotExist");

expect(result.length).toEqual(1);
expect(result[0].key).toEqual("MaClé1");
expect(result[0].value).toEqual("");

expect(result[0].isComment()).toEqual(false);
expect(() => reader.extractFromWorksheet(worksheet, "Key", "NotExist")).toThrow(/column "NotExist" not found/);
});

it("should keep empty lines", () => {
const reader = new SpreadsheetReader("api_key", "*");

const worksheet: Worksheet = {
title: "Worksheet3",
header: ["Key", "Value_fr", "Value_nl"],
rows: [
createRow(1, {}),
Expand All @@ -91,6 +88,7 @@ describe("SpreadsheetReader.extractFromWorksheet", () => {
const reader = new SpreadsheetReader("api_key", "*");

let worksheet: Worksheet = {
title: "Worksheet4",
header: ["Key", "Value_FR"],
rows: [createRow(1, { Key: "MaClé1", Value_FR: "La valeur 1" })],
};
Expand All @@ -102,6 +100,7 @@ describe("SpreadsheetReader.extractFromWorksheet", () => {
expect(result[0].value).toEqual("La valeur 1");

worksheet = {
title: "Worksheet5",
header: ["key", "value_fr"],
rows: [createRow(1, { key: "MaClé2", value_fr: "La valeur 2" })],
};
Expand Down
16 changes: 8 additions & 8 deletions packages/lokse/test/core/transformer/android.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -54,9 +54,9 @@ describe("AndroidTransformer.transformKeyValue", () => {
});

describe("AndroidTransformer.insert", () => {
it("should create resources tag when empty", () => {
it("should create resources tag when empty", async () => {
const xmlHeader = '<?xml version="1.0" encoding="utf-8"?>';
const result = transformer.insert("", "à insérer");
const result = await transformer.insert("", "à insérer");
expect(result).toEqual(
xmlHeader +
EOL +
Expand All @@ -70,8 +70,8 @@ describe("AndroidTransformer.insert", () => {
);
});

it("should insert before end tag when has resource tag", () => {
const result = transformer.insert(
it("should insert before end tag when has resource tag", async () => {
const result = await transformer.insert(
"<resources>" + EOL + "aa" + EOL + "</resources>",
"à insérer"
);
Expand All @@ -88,8 +88,8 @@ describe("AndroidTransformer.insert", () => {
);
});

it("should replace auto generated tag when available", () => {
const result = transformer.insert(
it("should replace auto generated tag when available", async () => {
const result = await transformer.insert(
"<resources>" +
EOL +
"aa" +
Expand All @@ -114,7 +114,7 @@ describe("AndroidTransformer.insert", () => {
);
});

it("inserts after same as before if new value dont change", () => {
it("inserts after same as before if new value dont change", async () => {
const before =
"<resources>" +
EOL +
Expand All @@ -125,7 +125,7 @@ describe("AndroidTransformer.insert", () => {
"before" +
EOL +
"</resources>";
const result = transformer.insert(before, "before");
const result = await transformer.insert(before, "before");
expect(result).toEqual(before);
});
});
12 changes: 6 additions & 6 deletions packages/lokse/test/core/transformer/ios.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@ describe("iOSTransformer.transformKeyValue", () => {
});

describe("iOSTransformer.insert", () => {
it("should insert after when not empty", () => {
const result = transformer.insert(
it("should insert after when not empty", async () => {
const result = await transformer.insert(
"// header" + EOL + '"aa" = "bb";' + EOL,
"à insérer"
);
Expand All @@ -38,8 +38,8 @@ describe("iOSTransformer.insert", () => {
);
});

it("should replace it when has auto generate tag should", () => {
const result = transformer.insert(
it("should replace it when has auto generate tag should", async () => {
const result = await transformer.insert(
"// header" + EOL + transformer.AUTOGENERATED_TAG + EOL + "à effacer",
"à insérer"
);
Expand All @@ -48,10 +48,10 @@ describe("iOSTransformer.insert", () => {
);
});

it("should insert after same as before if new value doesnt change", () => {
it("should insert after same as before if new value doesnt change", async () => {
const before =
"// header" + EOL + transformer.AUTOGENERATED_TAG + EOL + "before";
const result = transformer.insert(before, "before");
const result = await transformer.insert(before, "before");
expect(result).toEqual(before);
});
});

0 comments on commit 4dfae3f

Please sign in to comment.