From 4e6b0d4182e1ea8b4b477f07aef519948f56b485 Mon Sep 17 00:00:00 2001 From: Danny Hieber Date: Mon, 2 Mar 2020 16:46:03 -0600 Subject: [PATCH 1/2] write test --- src/models/index.test.js | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/models/index.test.js b/src/models/index.test.js index b1493eb..9ff3fbb 100644 --- a/src/models/index.test.js +++ b/src/models/index.test.js @@ -1,3 +1,7 @@ +/* eslint-disable + max-nested-callbacks, +*/ + const { models } = require(`../../test`); const { @@ -5,10 +9,6 @@ const { Language, } = models; -/** - * Check that the models module has the expected exports - */ - describe(`models`, () => { it(`has the expected exports`, () => { @@ -16,4 +16,12 @@ describe(`models`, () => { expect(Language.name).toBe(`Language`); }); + it(`have a .toJSON() method`, () => { + + Object.keys(models).forEach(model => { + expect(model.toJSON).toBeInstanceOf(Function); + }); + + }); + }); From 4fa99bf95ec0b93802033d659329b8e10449d3de Mon Sep 17 00:00:00 2001 From: Danny Hieber Date: Mon, 2 Mar 2020 17:08:15 -0600 Subject: [PATCH 2/2] add toJSON method to MultiLangString --- src/models/MultiLangString.js | 5 +++++ src/models/MultiLangString.test.js | 24 +++++++++++++++++------- src/models/index.test.js | 8 -------- 3 files changed, 22 insertions(+), 15 deletions(-) diff --git a/src/models/MultiLangString.js b/src/models/MultiLangString.js index 437fa8f..3a06f92 100644 --- a/src/models/MultiLangString.js +++ b/src/models/MultiLangString.js @@ -103,6 +103,11 @@ class MultiLangString extends Map { super(Object.entries(data)); } + + toJSON() { + return Object.fromEntries(this); + } + } export default new Proxy(MultiLangString, classTraps); diff --git a/src/models/MultiLangString.test.js b/src/models/MultiLangString.test.js index 30b147a..c55683c 100644 --- a/src/models/MultiLangString.test.js +++ b/src/models/MultiLangString.test.js @@ -9,6 +9,8 @@ const { const modelName = `MultiLangString`; +const sampleData = { eng: 'Hello world!', spa: 'Hola mundo!' }; + describe(modelName, () => { it(`class: MultiLangString`, () => { @@ -70,28 +72,36 @@ describe(modelName, () => { describe(`MultiLangString.prototype.{language}`, () => { - const data = { eng: 'Hello world!', spa: 'Hola mundo!' }; - it(`Instantiation`, () => { - const mls = new MultiLangString(data); - expect(mls.get(`eng`)).toBe(data.eng); - expect(mls.get(`spa`)).toBe(data.spa); + const mls = new MultiLangString(sampleData); + expect(mls.get(`eng`)).toBe(sampleData.eng); + expect(mls.get(`spa`)).toBe(sampleData.spa); }); it(`Error: set bad language tag`, () => { - const mls = new MultiLangString(data); + const mls = new MultiLangString(sampleData); const setBadLanguageTag = () => mls.set(`Tlahuapa Mixtec`, `ayoo`); expect(setBadLanguageTag).toThrowMatching(e => e.name === `LanguageTagError`); }); it(`Error: set bad string`, () => { - const mls = new MultiLangString(data); + const mls = new MultiLangString(sampleData); const setBadString = () => mls.set(`mix`, true); expect(setBadString).toThrowMatching(e => e.name === `MultiLangStringError`); }); }); + it(`MultiLangString.prototype.toJSON()`, () => { + + const mls = new MultiLangString(sampleData); + const pojo = JSON.parse(JSON.stringify(mls)); + + Object.keys(sampleData) + .forEach(key => expect(pojo[key]).toBe(sampleData[key])); + + }); + it(`~~MultiLangString.prototype.type~~`, () => { expect(new MultiLangString().type).toBeUndefined(); }); diff --git a/src/models/index.test.js b/src/models/index.test.js index 9ff3fbb..2bfe14e 100644 --- a/src/models/index.test.js +++ b/src/models/index.test.js @@ -16,12 +16,4 @@ describe(`models`, () => { expect(Language.name).toBe(`Language`); }); - it(`have a .toJSON() method`, () => { - - Object.keys(models).forEach(model => { - expect(model.toJSON).toBeInstanceOf(Function); - }); - - }); - });