Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions src/models/MultiLangString.js
Original file line numberDiff line numberDiff line change
Expand Up@@ -103,6 +103,11 @@ class MultiLangString extends Map {
super(Object.entries(data));

}

toJSON() {
return Object.fromEntries(this);
}

}

export default new Proxy(MultiLangString, classTraps);
24 changes: 17 additions & 7 deletions src/models/MultiLangString.test.js
Original file line numberDiff line numberDiff line change
Expand Up@@ -9,6 +9,8 @@ const {

const modelName = `MultiLangString`;

const sampleData = { eng: 'Hello world!', spa: 'Hola mundo!' };

describe(modelName, () => {

it(`class: MultiLangString`, () => {
Expand DownExpand Up@@ -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();
});
Expand Down
8 changes: 4 additions & 4 deletions src/models/index.test.js
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
/* eslint-disable
max-nested-callbacks,
*/

const { models } = require(`../../test`);

const {
MultiLangString,
Language,
} = models;

/**
* Check that the models module has the expected exports
*/

describe(`models`, () => {

it(`has the expected exports`, () => {
Expand Down