From 3bbca24e8e321c0e26e9bc28a77d74c7aa34d4b1 Mon Sep 17 00:00:00 2001 From: Nicholas Koh Date: Fri, 2 Oct 2020 21:37:08 +0800 Subject: [PATCH 1/3] Add failing test for setProperty --- __tests__/BaseModel.test.js | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/__tests__/BaseModel.test.js b/__tests__/BaseModel.test.js index c9d0991..730982d 100644 --- a/__tests__/BaseModel.test.js +++ b/__tests__/BaseModel.test.js @@ -85,7 +85,8 @@ describe('actions', () => { static get columnMapping() { return { id: { type: types.INTEGER }, - nome: { type: types.TEXT } + nome: { type: types.TEXT }, + timestamp: { default: () => '123456' } } } } @@ -100,14 +101,23 @@ describe('actions', () => { expect(Tmp.repository.dropTable).toHaveBeenCalledTimes(1) }) - it('create', () => { - const obj = { id: 1, nome: 'Daniel' } - return Tmp.create(obj) - .then(res => { - expect(Tmp.repository.insert).toHaveBeenCalledTimes(1) - expect(Tmp.repository.insert).toBeCalledWith(obj) - expect(res).toBeInstanceOf(Tmp) - }) + describe('create', () => { + it('inserts the obj into the db', () => { + const obj = { id: 1, nome: 'Daniel', timestamp: 'abcdef' } + return Tmp.create(obj) + .then(res => { + expect(Tmp.repository.insert).toHaveBeenCalledTimes(1) + expect(Tmp.repository.insert).toBeCalledWith(obj) + expect(res).toBeInstanceOf(Tmp) + }) + }); + + it('sets defaults before inserting into the db', () => { + const originalObj = { id: 1, nome: 'Daniel' } + const settedObj = Object.assign({ timestamp: '123456' }, originalObj); + return Tmp.create(originalObj) + .then(res => expect(Tmp.repository.insert).toBeCalledWith(settedObj)); + }); }) it('update', () => { From 55d6aa7e41a72e5573d45f5e67f220f33aa15ecb Mon Sep 17 00:00:00 2001 From: Nicholas Koh Date: Fri, 2 Oct 2020 21:41:44 +0800 Subject: [PATCH 2/3] Set defaults before create --- src/BaseModel.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/BaseModel.js b/src/BaseModel.js index 4da182f..ad33863 100644 --- a/src/BaseModel.js +++ b/src/BaseModel.js @@ -47,7 +47,7 @@ export default class BaseModel { } static create(obj) { - return this.repository.insert(obj).then(res => new this(res)) + return this.repository.insert(new this(obj)).then(res => new this(res)) } static update(obj) { From 3e2a44d2f459a95d35ba465b74c1043e2e0c09d2 Mon Sep 17 00:00:00 2001 From: Nicholas Koh Date: Fri, 2 Oct 2020 21:45:26 +0800 Subject: [PATCH 3/3] Remove semicolons --- __tests__/BaseModel.test.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/__tests__/BaseModel.test.js b/__tests__/BaseModel.test.js index 730982d..d6cec05 100644 --- a/__tests__/BaseModel.test.js +++ b/__tests__/BaseModel.test.js @@ -110,14 +110,14 @@ describe('actions', () => { expect(Tmp.repository.insert).toBeCalledWith(obj) expect(res).toBeInstanceOf(Tmp) }) - }); + }) it('sets defaults before inserting into the db', () => { const originalObj = { id: 1, nome: 'Daniel' } - const settedObj = Object.assign({ timestamp: '123456' }, originalObj); + const settedObj = Object.assign({ timestamp: '123456' }, originalObj) return Tmp.create(originalObj) - .then(res => expect(Tmp.repository.insert).toBeCalledWith(settedObj)); - }); + .then(res => expect(Tmp.repository.insert).toBeCalledWith(settedObj)) + }) }) it('update', () => {