diff --git a/app/controllers/racks.js b/app/controllers/racks.js index c37c5023333fd276f2aca0ab2e8a66fb9372d6f3..e6dca9efeb3de04753ecbd348c4f546965469b68 100644 --- a/app/controllers/racks.js +++ b/app/controllers/racks.js @@ -1,11 +1,13 @@ import Ember from 'ember'; + +// app/controllers/rack.js export default Ember.Controller.extend({ rackTableColumns: Ember.computed(function() { var col = Ember.A([ Ember.Object.create({ propertyName: "name", - title: "Name" + title: "Name", }), Ember.Object.create({ propertyName: 'nbColumns', @@ -15,6 +17,10 @@ rackTableColumns: Ember.computed(function() { propertyName: 'nbRows', title: 'Nombre de lignes', }), + Ember.Object.create({ + propertyName: 'capacity', + title: 'Capacité total', + }), Ember.Object.create({ "template": "customcell/imagecell", title: 'Image', diff --git a/app/models/bottle.js b/app/models/bottle.js new file mode 100644 index 0000000000000000000000000000000000000000..d38a3e306f018080844ee327793077f5d90ce416 --- /dev/null +++ b/app/models/bottle.js @@ -0,0 +1,12 @@ +import Ember from 'ember'; +import DS from 'ember-data'; + +export default DS.Model.extend({ + name: DS.attr('string'), + createdAt: DS.attr('date', {defaultValue() { return new Date(); }}), + yrow: DS.attr('number'), + xcolumn: DS.attr('number'), + flipped: DS.attr('boolean', {defaultValue: false}), + + rack: DS.belongsTo('rack') +}); diff --git a/app/models/rack.js b/app/models/rack.js index 42a99fc2fb7bca220289fa6e5b84e9c1afde9903..f192f225e3fce1ff70b01abe9ef0e28a0b549bd5 100644 --- a/app/models/rack.js +++ b/app/models/rack.js @@ -10,4 +10,5 @@ export default DS.Model.extend({ capacity: Ember.computed('nbColumns', 'nbRows', function() { return this.get('nbColumns')*this.get('nbRows'); }), + bottles : DS.hasMany('bottle') }); diff --git a/app/routes/racks.js b/app/routes/racks.js index 4db1385fa9c1263d3d63632638004b8d7134e26f..9daacc8c814704e4e79092c7f67004bbcae00b2a 100644 --- a/app/routes/racks.js +++ b/app/routes/racks.js @@ -2,6 +2,5 @@ import Ember from 'ember'; export default Ember.Route.extend({ model() { - return this.store.findAll('rack'); - } + return this.store.findAll('rack', {include: 'bottles'}); } }); diff --git a/mirage/config.js b/mirage/config.js index 360d8379733d6da72855ddd7d3e7b6b8d6ed9759..8ac78948fa8cd3b666d12e402773d04660c4dfd9 100644 --- a/mirage/config.js +++ b/mirage/config.js @@ -1,21 +1,17 @@ export default function() { - // this.urlPrefix = ''; // make this `http://localhost:8080`, for example, if your API is on a different server - // this.namespace = ''; // make this `api`, for example, if your API is namespaced - // this.timing = 400; // delay for each request, automatically set to 0 during testing - /* - Shorthand cheatsheet: - this.get('/posts'); - this.post('/posts'); - this.get('/posts/:id'); - this.put('/posts/:id'); // or this.patch - this.del('/posts/:id'); - - http://www.ember-cli-mirage.com/docs/v0.2.x/shorthands/ - */ this.namespace = 'api'; -this.get('/racks', function(schema) { - return schema.racks.all(); + this.get('/racks', function(schema) { + return schema.racks.all(); + }); + this.get('/racks/:id', (schema, request) => { + return schema.racks.find(request.params.id); + }); + this.get('/bottles', function(schema) { + return schema.bottles.all(); + }); + this.get('/bottles/:id', (schema, request) => { + return schema.bottles.find(request.params.id); }); } diff --git a/mirage/factories/bottle.js b/mirage/factories/bottle.js new file mode 100644 index 0000000000000000000000000000000000000000..6da8d5f583126467abc9e649c2433e58cf440850 --- /dev/null +++ b/mirage/factories/bottle.js @@ -0,0 +1,22 @@ +import { Factory, faker } from 'ember-cli-mirage'; + +export default Factory.extend({ + name: faker.list.cycle('Château Beychevelle', + 'Ribera del Duero', + 'Clos Fourtet St.-Emilion', + 'Romanée Conti', + 'Chambolle Musigny Guillon', + 'Tenet Syrah Columbia Valley', + 'Oddero Barolo', + 'Gigondas Lavau', + 'Duorum Douro', + 'Philippe Alliet Chinon', + 'Orin Swift Machete', + 'Château Lagrezette', + 'Château Puech Haut', + 'Château Haut Bellevue'), + createdAt() { return new Date(); }, + yrow() { return faker.random.number({min:1, max:3}); }, + xcolumn() { return faker.random.number({min:3, max:20}); }, + flipped() { return faker.random.boolean; } +}); diff --git a/mirage/models/bottle.js b/mirage/models/bottle.js new file mode 100644 index 0000000000000000000000000000000000000000..00373b2fe53e6c0d9a0f7b946a87f7a5e22181c9 --- /dev/null +++ b/mirage/models/bottle.js @@ -0,0 +1,5 @@ +import { Model, belongsTo } from 'ember-cli-mirage'; + +export default Model.extend({ + rack: belongsTo() +}); diff --git a/mirage/models/rack.js b/mirage/models/rack.js index 1486a724095b97ee02a6e6d5dd82b7f9aa1781bc..c10654fa4b3eb69402d6ec129c6bebd3490d980e 100644 --- a/mirage/models/rack.js +++ b/mirage/models/rack.js @@ -1,4 +1,5 @@ -import { Model } from 'ember-cli-mirage'; +import { Model, hasMany } from 'ember-cli-mirage'; export default Model.extend({ + bottles: hasMany() }); diff --git a/mirage/scenarios/default.js b/mirage/scenarios/default.js index c2c2a85f7f63e5fcd23d0f0268ef3c0440bca569..b2d4ebca45b1bcb1244119edea9e486bc7bddca6 100644 --- a/mirage/scenarios/default.js +++ b/mirage/scenarios/default.js @@ -1,12 +1,26 @@ export default function(server) { - /* Seed your development database using your factories. This data will not be loaded in your tests. Make sure to define a factory for each model you want to create. */ + let numberOfRacks = 4; + let numberOfBottles = 0; - // server.createList('post', 10); - server.createList('rack', 32); + let racks = server.createList('rack', numberOfRacks); + for (let i=0; i<numberOfRacks; i++) { + for (let col=0; col < racks[i].nbColumns; col++) { + for (let lig=0; lig < racks[i].nbRows; lig++) { + if (random(0,10)<5) { + server.create('bottle', { yrow: lig, xcolumn: col, rack: racks[i] }); + numberOfBottles++; + } + } + } + } + console.log(numberOfBottles+" bottles created in "+numberOfRacks+" racks"); + function random(min, max) { + return Math.floor(Math.random() * (max - min)) + min; + } } diff --git a/tests/unit/models/bottle-test.js b/tests/unit/models/bottle-test.js new file mode 100644 index 0000000000000000000000000000000000000000..9e8407db0ded0c2cd42a4e95f38381a5a67bf396 --- /dev/null +++ b/tests/unit/models/bottle-test.js @@ -0,0 +1,12 @@ +import { moduleForModel, test } from 'ember-qunit'; + +moduleForModel('bottle', 'Unit | Model | bottle', { + // Specify the other units that are required for this test. + needs: [] +}); + +test('it exists', function(assert) { + let model = this.subject(); + // let store = this.store(); + assert.ok(!!model); +});