diff --git a/test/mem-server.model.bulkDelete.js b/test/mem-server.model.bulkDelete.js new file mode 100644 index 0000000..e69de29 diff --git a/test/mem-server.model.bulkUpdate.js b/test/mem-server.model.bulkUpdate.js new file mode 100644 index 0000000..e69de29 diff --git a/test/mem-server.model.delete.js b/test/mem-server.model.delete.js new file mode 100644 index 0000000..584d590 --- /dev/null +++ b/test/mem-server.model.delete.js @@ -0,0 +1,79 @@ +const assert = require('assert'); +const fs = require('fs'); +const rimraf = require('rimraf'); + +describe('MemServer.Model Delete Interface', function() { + before(function() { + const modelFileContent = `import Model from '${process.cwd()}/lib/mem-server/model'; + export default Model({});`; + + fs.mkdirSync(`./memserver`); + fs.mkdirSync(`./memserver/models`); + fs.writeFileSync(`${process.cwd()}/memserver/models/user.js`, modelFileContent); + fs.writeFileSync(`${process.cwd()}/memserver/models/photo.js`, modelFileContent); + fs.writeFileSync(`${process.cwd()}/memserver/models/photo-comment.js`, modelFileContent); + fs.writeFileSync(`${process.cwd()}/memserver/server.js`, 'export default function(Models) {}'); + fs.mkdirSync(`./memserver/fixtures`); + fs.writeFileSync(`${process.cwd()}/memserver/fixtures/photos.js`, `export default [ + { + id: 1, + name: 'Ski trip', + href: 'ski-trip.jpeg', + is_public: false + }, + { + id: 2, + name: 'Family photo', + href: 'family-photo.jpeg', + is_public: true + }, + { + id: 3, + name: 'Selfie', + href: 'selfie.jpeg', + is_public: false + } + ];`); + fs.writeFileSync(`${process.cwd()}/memserver/fixtures/photo-comments.js`, `export default [ + { + uuid: '499ec646-493f-4eea-b92e-e383d94182f4', + content: 'What a nice photo!', + photo_id: 1, + user_id: 1 + }, + { + uuid: '77653ad3-47e4-4ec2-b49f-57ea36a627e7', + content: 'I agree', + photo_id: 1, + user_id: 2 + }, + { + uuid: 'd351963d-e725-4092-a37c-1ca1823b57d3', + content: 'I was kidding', + photo_id: 1, + user_id: 1 + }, + { + uuid: '374c7f4a-85d6-429a-bf2a-0719525f5f29', + content: 'Interesting indeed', + photo_id: 2, + user_id: 1 + } + ];`); + }); + + beforeEach(function() { + Object.keys(require.cache).forEach((key) => delete require.cache[key]); + }); + + after(function(done) { + if (fs.existsSync(`${process.cwd()}/memserver`)) { + rimraf.sync(`${process.cwd()}/memserver`); + } + done(); + }); + + describe('$Model.delete() interface', function() { + + }); +}); diff --git a/test/mem-server.model.js b/test/mem-server.model.js index bfdfecf..643156e 100644 --- a/test/mem-server.model.js +++ b/test/mem-server.model.js @@ -183,14 +183,13 @@ describe('MemServer.Model Interface', function() { assert.equal(Photo.count(), 3); assert.equal(PhotoComment.count(), 4); }); + + // TODO: it('can have custom queries for a Model', function() { + // + // }); }); }); - // describe('update factory interface'); - // describe('destroy factory interface'); - - // describe('serialization interface'); - - // describe('complex operations') // multiple edit updates at once - // describe('custom query interface') // adding new queries etc -// }); +// describe('update factory interface'); +// describe('delete factory interface'); +// describe('serialization interface'); diff --git a/test/mem-server.model.serialize.js b/test/mem-server.model.serialize.js new file mode 100644 index 0000000..e69de29 diff --git a/test/mem-server.model.update.js b/test/mem-server.model.update.js new file mode 100644 index 0000000..9c8bc9a --- /dev/null +++ b/test/mem-server.model.update.js @@ -0,0 +1,101 @@ +const assert = require('assert'); +const fs = require('fs'); +const rimraf = require('rimraf'); + +describe('MemServer.Model Update Interface', function() { + before(function() { + const modelFileContent = `import Model from '${process.cwd()}/lib/mem-server/model'; + export default Model({});`; + + fs.mkdirSync(`./memserver`); + fs.mkdirSync(`./memserver/models`); + fs.writeFileSync(`${process.cwd()}/memserver/models/user.js`, modelFileContent); + fs.writeFileSync(`${process.cwd()}/memserver/models/photo.js`, ` + import Model from '${process.cwd()}/lib/mem-server/model'; + + export default Model({ + defaultAttributes: { + is_public: true, + name() { + return 'Some default name'; + } + } + }); + `); + fs.writeFileSync(`${process.cwd()}/memserver/models/photo-comment.js`, ` + import Model from '${process.cwd()}/lib/mem-server/model'; + + export default Model({ + defaultAttributes: { + inserted_at() { + return '2017-10-25T20:54:04.447Z'; + }, + is_important: true + } + }); + `); + fs.writeFileSync(`${process.cwd()}/memserver/server.js`, 'export default function(Models) {}'); + fs.mkdirSync(`./memserver/fixtures`); + fs.writeFileSync(`${process.cwd()}/memserver/fixtures/photos.js`, `export default [ + { + id: 1, + name: 'Ski trip', + href: 'ski-trip.jpeg', + is_public: false + }, + { + id: 2, + name: 'Family photo', + href: 'family-photo.jpeg', + is_public: true + }, + { + id: 3, + name: 'Selfie', + href: 'selfie.jpeg', + is_public: false + } + ];`); + fs.writeFileSync(`${process.cwd()}/memserver/fixtures/photo-comments.js`, `export default [ + { + uuid: '499ec646-493f-4eea-b92e-e383d94182f4', + content: 'What a nice photo!', + photo_id: 1, + user_id: 1 + }, + { + uuid: '77653ad3-47e4-4ec2-b49f-57ea36a627e7', + content: 'I agree', + photo_id: 1, + user_id: 2 + }, + { + uuid: 'd351963d-e725-4092-a37c-1ca1823b57d3', + content: 'I was kidding', + photo_id: 1, + user_id: 1 + }, + { + uuid: '374c7f4a-85d6-429a-bf2a-0719525f5f29', + content: 'Interesting indeed', + photo_id: 2, + user_id: 1 + } + ];`); + }); + + beforeEach(function() { + Object.keys(require.cache).forEach((key) => delete require.cache[key]); + }); + + after(function(done) { + if (fs.existsSync(`${process.cwd()}/memserver`)) { + rimraf.sync(`${process.cwd()}/memserver`); + } + done(); + }); + + describe('$Model.update() interface', function() { + + }); +});