Fixed a bug in modeling, when receiving a sub model as ID with value 0, the value wouldn't get modeled.

This commit is contained in:
Yossi Kolesnicov 2018-09-02 21:53:04 +03:00
Родитель 50aa362b2d
Коммит b3a4e5719b
3 изменённых файлов: 17 добавлений и 1 удалений

Просмотреть файл

@ -213,7 +213,7 @@ export class Modeler {
entityFieldRawData = defaultValue;
}
if (entityFieldRawData && !(entityFieldRawData instanceof ModelBase)) {
if (entityFieldRawData !== undefined && entityFieldRawData !== null && !(entityFieldRawData instanceof ModelBase)) {
const fieldData$ = this.getSubModel<TData>(entityField, entityFieldRawData, options);
if (fieldData$)
return fieldData$;

Просмотреть файл

@ -3,6 +3,7 @@ import {EntityModelBase} from "../../lib/config/entity-model.base";
import {EntityField} from "../../lib/config/decorators/entity-field.decorator";
export const todoStatusValues = [
{ id: 0, name: 'Pending' },
{ id: 1, name: "Open" },
{ id: 2, name: "In progress" },
{ id: 3, name: "Done" },

Просмотреть файл

@ -14,6 +14,7 @@ import {Entity} from "../../lib/config/decorators/entity.decorator";
import {EntityModelBase} from "../../lib/config/entity-model.base";
import {Repository} from "../../lib/api/repository/repository";
import {EntityField} from "../../lib/config/decorators/entity-field.decorator";
import {TodoStatus} from "../mock/todo-status.entity";
describe('Modeler', () => {
let paris: Paris;
@ -96,6 +97,20 @@ describe('Modeler', () => {
done();
});
});
it("assigns a sub-model that has id === 0 from values", done => {
const todoRawData = {
id: 6,
text: 'Pending...',
time: 1534433193347,
status: 0
};
paris.modeler.modelEntity(todoRawData, todoEntityConfig).subscribe(todoItem => {
expect(todoItem.status).toBeInstanceOf(TodoStatus);
done();
});
});
});
describe('model configuration', () => {