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 b1493eb..2bfe14e 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`, () => {