From 2a7d2ff1ffec4a50e82e30bd3fa43fc0af24cc51 Mon Sep 17 00:00:00 2001 From: filipcro Date: Fri, 17 May 2019 18:19:41 +0200 Subject: [PATCH] Fixed #490 --- .../api/__snapshots__/extract.test.js.snap | 18 +++++++++++++++ packages/cli/src/api/extract.js | 3 ++- packages/cli/src/api/extract.test.js | 22 +++++++++++++++++++ 3 files changed, 42 insertions(+), 1 deletion(-) diff --git a/packages/cli/src/api/__snapshots__/extract.test.js.snap b/packages/cli/src/api/__snapshots__/extract.test.js.snap index d42edaec6..0fdbf9a1f 100644 --- a/packages/cli/src/api/__snapshots__/extract.test.js.snap +++ b/packages/cli/src/api/__snapshots__/extract.test.js.snap @@ -57,6 +57,24 @@ Object { } `; +exports[`collect should use defined default 1`] = ` +Object { + msg.id: Object { + defaults: Second default, + origin: Array [ + Array [ + onlyOneDefault/First.js, + 2, + ], + Array [ + onlyOneDefault/Second.js, + 5, + ], + ], + }, +} +`; + exports[`order should order messages alphabetically 1`] = ` Object { en: Object { diff --git a/packages/cli/src/api/extract.js b/packages/cli/src/api/extract.js index 1ba835686..c87ede91a 100644 --- a/packages/cli/src/api/extract.js +++ b/packages/cli/src/api/extract.js @@ -22,7 +22,7 @@ type ExtractOptions = { * should be the same (raise an error if defaults are different). */ function mergeMessage(msgId, prev, next) { - if (prev.defaults !== next.defaults) { + if (prev.defaults && next.defaults && prev.defaults !== next.defaults) { throw new Error( `Encountered different defaults for message ${chalk.yellow(msgId)}` + `\n${chalk.yellow(prettyOrigin(prev.origin))} ${prev.defaults}` + @@ -32,6 +32,7 @@ function mergeMessage(msgId, prev, next) { return { ...next, + defaults: prev.defaults || next.defaults, origin: R.concat(prev.origin, next.origin) } } diff --git a/packages/cli/src/api/extract.test.js b/packages/cli/src/api/extract.test.js index 25a691acd..0076d82df 100644 --- a/packages/cli/src/api/extract.test.js +++ b/packages/cli/src/api/extract.test.js @@ -135,6 +135,21 @@ describe("collect", function() { origin: [["diffDefaults/Second.js", 5]] } }) + }, + + // test case for when only one defaults message is specified + onlyOneDefault: { + "First.js.json": JSON.stringify({ + "msg.id": { + origin: [["onlyOneDefault/First.js", 2]] + } + }), + "Second.js.json": JSON.stringify({ + "msg.id": { + defaults: "Second default", + origin: [["onlyOneDefault/Second.js", 5]] + } + }) } }) }) @@ -162,6 +177,13 @@ describe("collect", function() { }).toThrowErrorMatchingSnapshot() } }) + + it("should use defined default", function() { + const { collect } = require("./extract") + const catalog = collect("onlyOneDefault") + mockFs.restore() + expect(catalog).toMatchSnapshot() + }) }) describe("cleanObsolete", function() {