From 7022197dbd92847347da192d91650343abdabf90 Mon Sep 17 00:00:00 2001 From: abnercarleto Date: Wed, 27 Sep 2017 11:19:56 -0300 Subject: [PATCH] update peek model --- src/models/json-api.model.spec.ts | 22 ++++++++++++++++++++++ src/models/json-api.model.ts | 2 ++ 2 files changed, 24 insertions(+) diff --git a/src/models/json-api.model.spec.ts b/src/models/json-api.model.spec.ts index e29b729f..fc179c03 100644 --- a/src/models/json-api.model.spec.ts +++ b/src/models/json-api.model.spec.ts @@ -130,6 +130,28 @@ describe('JsonApiModel', () => { }); }); }); + + describe('update relationships', () => { + it ('should return updated relationship', () => { + const REL = 'books'; + const BOOK_NUMBER = 1; + const CHAPTERS_NUMBER = 4; + const DATA = getAuthorData(REL, BOOK_NUMBER); + const INCLUDED = getIncludedBooks(BOOK_NUMBER); + const NEW_BOOK_TITLE = 'The Hobbit' + author = new Author(datastore, DATA); + author.syncRelationships(DATA, INCLUDED, 0); + INCLUDED.forEach(model => { + if (model.type === 'books') { + model.attributes.title = NEW_BOOK_TITLE; + } + }) + author.syncRelationships(DATA, INCLUDED, 0); + author.books.forEach(book => { + expect(book.title).toBe(NEW_BOOK_TITLE); + }); + }); + }); }); }); }); diff --git a/src/models/json-api.model.ts b/src/models/json-api.model.ts index c4c83d86..cc2f257c 100644 --- a/src/models/json-api.model.ts +++ b/src/models/json-api.model.ts @@ -3,6 +3,7 @@ import find from 'lodash-es/find'; import { Observable } from 'rxjs/Observable'; import { JsonApiDatastore, ModelType } from '../services/json-api-datastore.service'; import { ModelConfig } from '../interfaces/model-config.interface'; +import * as _ from 'lodash'; export class JsonApiModel { id: string; @@ -142,6 +143,7 @@ export class JsonApiModel { private createOrPeek(modelType: ModelType, data: any): T { let peek = this._datastore.peekRecord(modelType, data.id); if (peek) { + _.extend(peek, data.attributes); return peek; } let newObject: T = new modelType(this._datastore, data);