From ee199d7da844ecb86948c2b854b6fee977948e49 Mon Sep 17 00:00:00 2001 From: Benjamin ter Kuile Date: Mon, 21 Sep 2015 18:25:37 +0200 Subject: [PATCH] Spec squashing --- .../dashboard/active-order.js.coffee | 2 +- .../app/components/form/my-select.js.coffee | 9 +++++- .../app/controllers/employees.js.coffee | 3 ++ .../employees_index_controller.js.coffee | 2 -- .../modals/table_edit_controller.js.coffee | 5 ---- .../tables_index_controller.js.coffee | 3 +- .../mixins/employee-actions-mixin.js.coffee | 22 ++++++++++++++ .../javascripts/supplier/app/router.js.coffee | 4 +-- .../supplier/app/routes/employee.js.coffee | 1 + .../supplier/app/routes/employees.js.coffee | 25 ++-------------- .../supplier/app/templates/employees.emblem | 30 ++++++++++++++++++- .../app/templates/employees/index.emblem | 29 ------------------ .../app/templates/modals/table_edit.emblem | 2 +- spec/acceptance/suppliers/employees.feature | 2 ++ .../suppliers/employees_steps.rb | 4 +++ .../suppliers/section_view_steps.rb | 2 +- spec/support/ember_helpers.rb | 8 ++--- spec/support/route_helpers.rb | 2 +- 18 files changed, 82 insertions(+), 73 deletions(-) create mode 100644 app/assets/javascripts/supplier/app/controllers/employees.js.coffee delete mode 100644 app/assets/javascripts/supplier/app/controllers/employees_index_controller.js.coffee create mode 100644 app/assets/javascripts/supplier/app/mixins/employee-actions-mixin.js.coffee create mode 100644 app/assets/javascripts/supplier/app/routes/employee.js.coffee delete mode 100644 app/assets/javascripts/supplier/app/templates/employees/index.emblem diff --git a/app/assets/javascripts/supplier/app/components/dashboard/active-order.js.coffee b/app/assets/javascripts/supplier/app/components/dashboard/active-order.js.coffee index 98d4b4b8..ed00aa3d 100644 --- a/app/assets/javascripts/supplier/app/components/dashboard/active-order.js.coffee +++ b/app/assets/javascripts/supplier/app/components/dashboard/active-order.js.coffee @@ -1,5 +1,5 @@ App.DashboardActiveOrderComponent = Ember.Component.extend tagName: 'tr' layoutName: 'dashboard/active-order' - classNameBindings: ['content.active:active', 'content.delivered:delivered', 'classIdentifier'] + classNameBindings: ['order.active:active', 'order.delivered:delivered', 'classIdentifier'] classIdentifier: Ember.computed 'order.id', -> "order-row-#{@get('order.id')}" diff --git a/app/assets/javascripts/supplier/app/components/form/my-select.js.coffee b/app/assets/javascripts/supplier/app/components/form/my-select.js.coffee index d61e2eab..142dd7a7 100644 --- a/app/assets/javascripts/supplier/app/components/form/my-select.js.coffee +++ b/app/assets/javascripts/supplier/app/components/form/my-select.js.coffee @@ -17,6 +17,13 @@ App.MySelectComponent = Ember.Component.extend @set('content', []) unless @get('content') ).on('init') + didRender: -> + # Set select to current value if can be found + key = @get('optionValuePath') + index = @get('content').mapBy(key).indexOf(@get("selection.#{key}")) + if index > -1 + @$('select:first').prop('selectedIndex', index) + actions: change: -> selectedIndex = @$('select:first').get(0).selectedIndex @@ -25,7 +32,7 @@ App.MySelectComponent = Ember.Component.extend hasPrompt = !!@get('prompt') contentIndex = if hasPrompt then selectedIndex - 1 else selectedIndex - selection = @get('content')[contentIndex] + selection = @get('content').toArray()[contentIndex] # set the local, shadowed selection to avoid leaking # changes to `selection` out via 2-way binding diff --git a/app/assets/javascripts/supplier/app/controllers/employees.js.coffee b/app/assets/javascripts/supplier/app/controllers/employees.js.coffee new file mode 100644 index 00000000..0d63f19a --- /dev/null +++ b/app/assets/javascripts/supplier/app/controllers/employees.js.coffee @@ -0,0 +1,3 @@ +App.EmployeesController = Ember.Controller.extend + employeeSorting: ['name'] + employees: Ember.computed.sort 'model', 'employeeSorting' diff --git a/app/assets/javascripts/supplier/app/controllers/employees_index_controller.js.coffee b/app/assets/javascripts/supplier/app/controllers/employees_index_controller.js.coffee deleted file mode 100644 index 2265442c..00000000 --- a/app/assets/javascripts/supplier/app/controllers/employees_index_controller.js.coffee +++ /dev/null @@ -1,2 +0,0 @@ -App.EmployeesIndexController = Ember.Controller.extend - employees: (-> @get('model').sortBy('name')).property('model.@each.name') diff --git a/app/assets/javascripts/supplier/app/controllers/modals/table_edit_controller.js.coffee b/app/assets/javascripts/supplier/app/controllers/modals/table_edit_controller.js.coffee index e699a5c2..f8febba2 100644 --- a/app/assets/javascripts/supplier/app/controllers/modals/table_edit_controller.js.coffee +++ b/app/assets/javascripts/supplier/app/controllers/modals/table_edit_controller.js.coffee @@ -3,10 +3,5 @@ App.modals.TableEditController = App.modals.BaseController.extend sections: (-> @store.peekAll('section')).property() #setSelectedSection: (-> @set 'selectedSection', @get('model.section')).on('init') actions: - confirm: -> - @get('model').then (l)->l.close() - @send 'closeModal' saveTable: -> - #@set 'model.section', @get('selectedSection') - @set 'model.section', @get('model.section') @send 'save' diff --git a/app/assets/javascripts/supplier/app/controllers/tables_index_controller.js.coffee b/app/assets/javascripts/supplier/app/controllers/tables_index_controller.js.coffee index 4851c542..a3fa7147 100644 --- a/app/assets/javascripts/supplier/app/controllers/tables_index_controller.js.coffee +++ b/app/assets/javascripts/supplier/app/controllers/tables_index_controller.js.coffee @@ -2,7 +2,8 @@ App.TablesIndexController = Ember.Controller.extend tables: (-> @get('model').sortBy('casted_number')).property('model.@each.number') actions: newTable: -> - table = @store.createRecord('table') + section = @get('globals.active_section') || @store.peekAll('section').toArray()[0] + table = @store.createRecord('table', section: section) @modal 'table_edit', model: table close: -> table.deleteRecord() diff --git a/app/assets/javascripts/supplier/app/mixins/employee-actions-mixin.js.coffee b/app/assets/javascripts/supplier/app/mixins/employee-actions-mixin.js.coffee new file mode 100644 index 00000000..de69114d --- /dev/null +++ b/app/assets/javascripts/supplier/app/mixins/employee-actions-mixin.js.coffee @@ -0,0 +1,22 @@ +App.EmployeeActionsMixin = Ember.Mixin.create + actions: + newEmployee: -> + employee = @store.createRecord('employee') + @get('controller').modal 'employee_edit', + model: employee + title_path: 'employee.modal.new_title' + close: -> employee.deleteRecord() + editEmployee: (employee)-> + @get('controller').modal 'employee_edit', + model: employee + title_path: 'employee.modal.edit_title' + close: -> employee.rollbackAttributes() + destroyEmployee: (employee)-> + ac = @controllerFor('application') + if @get('globals.current_employee.id') isnt employee.id + ac.modal 'confirm', + title: t('employee.destroy.modal.title', employee.toJSON()) + ok: -> employee.destroyRecord() + else + ac.modal 'alert', + title: 'You cannot remove yourself' diff --git a/app/assets/javascripts/supplier/app/router.js.coffee b/app/assets/javascripts/supplier/app/router.js.coffee index a4121975..9edd09ea 100644 --- a/app/assets/javascripts/supplier/app/router.js.coffee +++ b/app/assets/javascripts/supplier/app/router.js.coffee @@ -12,8 +12,8 @@ App.Router.map -> @resource 'table', path: ':table_id' @resource 'lists', -> @resource 'list', path: ':list_id' - @resource 'employees', -> - @resource 'employee', path: ':employee_id' + @route 'employees' + @route 'employee', path: '/employees/:employee_id' @resource 'pages', -> @resource 'page', path: ':page_id' @route 'orders_display' # chromecast etc diff --git a/app/assets/javascripts/supplier/app/routes/employee.js.coffee b/app/assets/javascripts/supplier/app/routes/employee.js.coffee new file mode 100644 index 00000000..c39ad157 --- /dev/null +++ b/app/assets/javascripts/supplier/app/routes/employee.js.coffee @@ -0,0 +1 @@ +App.EmployeeRoute = Ember.Route.extend App.EmployeeActionsMixin diff --git a/app/assets/javascripts/supplier/app/routes/employees.js.coffee b/app/assets/javascripts/supplier/app/routes/employees.js.coffee index cc308dbd..e7038425 100644 --- a/app/assets/javascripts/supplier/app/routes/employees.js.coffee +++ b/app/assets/javascripts/supplier/app/routes/employees.js.coffee @@ -1,23 +1,2 @@ -App.EmployeesRoute = Ember.Route.extend - model: -> @store.peekAll 'employee' - actions: - newEmployee: -> - employee = @store.createRecord('employee') - @get('controller').modal 'employee_edit', - model: employee - title_path: 'employee.modal.new_title' - close: -> employee.deleteRecord() - editEmployee: (employee)-> - @get('controller').modal 'employee_edit', - model: employee - title_path: 'employee.modal.edit_title' - close: -> employee.rollbackAttributes() - destroyEmployee: (employee)-> - ac = @controllerFor('application') - if ac.get('employee.id') isnt employee.id - ac.modal 'confirm', - title: t('employee.destroy.modal.title', employee.toJSON()) - ok: -> employee.destroyRecord() - else - ac.modal 'alert', - title: 'You cannot remove yourself' +App.EmployeesRoute = Ember.Route.extend App.EmployeeActionsMixin, + model: -> @store.findAll 'employee' diff --git a/app/assets/javascripts/supplier/app/templates/employees.emblem b/app/assets/javascripts/supplier/app/templates/employees.emblem index 26191258..c4159ca9 100644 --- a/app/assets/javascripts/supplier/app/templates/employees.emblem +++ b/app/assets/javascripts/supplier/app/templates/employees.emblem @@ -1 +1,29 @@ -= outlet +.row: .small-12.columns + h2.main-section-header=t 'models.plural.employee' + if employees + table.table + thead + tr + th.name=t 'attributes.employee.name' + th.email=t 'attributes.employee.email' + th.boolean= t 'attributes.employee.manager' + th.boolean= t 'attributes.employee.active' + th.colorbox= t 'attributes.employee.color' + th.actions=t 'helpers.actions.title' + tbody + each employees as |employee| + tr + td: link-to 'employee' employee: span= employee.name + td.email + = employee.email + = errors employee.errors.email + td.boolean= boolean employee.manager + td.boolean= boolean employee.active + td.colorbox= colorbox employee.color + td.actions + if (can "manage" "employees") + a.table-edit{ action 'editEmployee' employee }: span + a.table-destroy{ action 'destroyEmployee' employee }: span + .form-actions + if (can "manage" "employees") + a.form-action-new.new-employee-button{action "newEmployee"}= t 'employee.new_button' diff --git a/app/assets/javascripts/supplier/app/templates/employees/index.emblem b/app/assets/javascripts/supplier/app/templates/employees/index.emblem deleted file mode 100644 index 0ca02bd4..00000000 --- a/app/assets/javascripts/supplier/app/templates/employees/index.emblem +++ /dev/null @@ -1,29 +0,0 @@ -.row: .small-12.columns - h2.main-section-header=t 'models.plural.employee' - if employees - table.table - thead - tr - th.name=t 'attributes.employee.name' - th.email=t 'attributes.employee.email' - th.boolean= t 'attributes.employee.manager' - th.boolean= t 'attributes.employee.active' - th.colorbox= t 'attributes.employee.color' - th.actions=t 'helpers.actions.title' - tbody - each employees as |employee| - tr - td: link-to 'employee' employee: span= employee.name - td.email - = employee.email - = errors employee.errors.email - td.boolean= boolean employee.manager - td.boolean= boolean employee.active - td.colorbox= colorbox employee.color - td.actions - if (can "manage" "sections") - a.table-edit{ action 'editEmployee' employee }: span - a.table-destroy{ action 'destroyEmployee' employee }: span - .form-actions - if (can "manage" "employees") - a.form-action-new.new-employee-button{action "newEmployee"}= t 'employee.new_button' diff --git a/app/assets/javascripts/supplier/app/templates/modals/table_edit.emblem b/app/assets/javascripts/supplier/app/templates/modals/table_edit.emblem index d4b9dff6..9f530c3b 100644 --- a/app/assets/javascripts/supplier/app/templates/modals/table_edit.emblem +++ b/app/assets/javascripts/supplier/app/templates/modals/table_edit.emblem @@ -13,5 +13,5 @@ p=t 'table.modal.body_header' .form-field= number-field numericValue=model.height hr button.modal-close{action "close"}=t 'table.modal.close_button' -button.modal-confirm.right{action "save"}=t 'table.modal.save_button' +button.modal-confirm.right{action "saveTable"}=t 'table.modal.save_button' = qr-codes-link table=model diff --git a/spec/acceptance/suppliers/employees.feature b/spec/acceptance/suppliers/employees.feature index 0392ae8f..6f1c8485 100644 --- a/spec/acceptance/suppliers/employees.feature +++ b/spec/acceptance/suppliers/employees.feature @@ -12,6 +12,8 @@ Feature: Manage employees And I click on selector '.modal-confirm' And I wait 1 second Then the new employee should be added to the supplier + When I reload the page + Then the supplier employee should see content 'new-employee@example.com' @javascript Scenario: adding an already existing employee that was firstly added as manager without manager and active diff --git a/spec/acceptance_steps/suppliers/employees_steps.rb b/spec/acceptance_steps/suppliers/employees_steps.rb index f981f3c7..ad7d35aa 100644 --- a/spec/acceptance_steps/suppliers/employees_steps.rb +++ b/spec/acceptance_steps/suppliers/employees_steps.rb @@ -8,6 +8,10 @@ step "the supplier employee clicks on the other employee table edit button" do all('tr').last.find('.table-edit').click end +step "the supplier employee should see content :content" do |content| + page.should have_content content +end + step "the supplier employee clicks on the existing employee table destroy button" do find 'table.table' sleep 0.2 diff --git a/spec/acceptance_steps/suppliers/section_view_steps.rb b/spec/acceptance_steps/suppliers/section_view_steps.rb index fbab147b..c14d0e8c 100644 --- a/spec/acceptance_steps/suppliers/section_view_steps.rb +++ b/spec/acceptance_steps/suppliers/section_view_steps.rb @@ -70,7 +70,7 @@ step "the section table should not have any active list markings anymore" do css_class.should_not include 'occupied' css_class.should_not include 'active_order' css_class.should_not include 'needs_payment' - ember_find('table', @table.id)['active_list_id'].should_not be_present + ember_find('table', @table.id)['active_list'].should_not be_present end step "I should be redirected to the supplier section view" do diff --git a/spec/support/ember_helpers.rb b/spec/support/ember_helpers.rb index 23989353..7c75b1aa 100644 --- a/spec/support/ember_helpers.rb +++ b/spec/support/ember_helpers.rb @@ -1,7 +1,7 @@ module SpecEmberHelpers def ember_store h = page.evaluate_script <<-SCRIPT - $s = (MozoUser || App).__container__.lookup('store:main'); + $s = (window.MozoUser || App).__container__.lookup('store:main'); JSON.stringify({ lists: $s.all('list').invoke('serialize'), orders: $s.all('order').invoke('serialize'), @@ -84,14 +84,12 @@ module SpecEmberHelpers end def ember_find(typeKey, id) - h = page.evaluate_script <<-SCRIPT - (MozoUser || App).__container__.lookup('service:store').peekRecord('#{typeKey}', '#{id}').toJSON() - SCRIPT + h = page.evaluate_script "(window.MozoUser || App).__container__.lookup('service:store').peekRecord('#{typeKey}', '#{id}').toJSON()" end def ember_all(typeKey) h = page.evaluate_script <<-SCRIPT - (MozoUser || App).__container__.lookup('service:store').peekAll('#{typeKey}').map(function(r){ result = r.toJSON(); result['id'] = r.id; return result }) + (window.MozoUser || App).__container__.lookup('service:store').peekAll('#{typeKey}').map(function(r){ result = r.toJSON(); result['id'] = r.id; return result }) SCRIPT end diff --git a/spec/support/route_helpers.rb b/spec/support/route_helpers.rb index dde3d3fa..6d57abbd 100644 --- a/spec/support/route_helpers.rb +++ b/spec/support/route_helpers.rb @@ -31,7 +31,7 @@ module SpecRouteHelpers # currentRouteName does not include model information: /list/123 => currentRouteName == 'list' # page.evaluate_script %|App.__container__.lookup('controller:application').get('currentRouteName')| # page.evaluate_script %|App.__container__.lookup('router:main').location.lastSetURL| # not working for direct path supplier#/settings - route = page.evaluate_script(%{(MozoUser || App).__container__ && (window.location.hash || "#/").substr(1)}) + route = page.evaluate_script(%{(window.MozoUser || App).__container__ && (window.location.hash || "#/").substr(1)}) unless omit_should_raise def route.should(*) raise "Cannot call should on ember route. Use ember_route_should_be instead"