From 1a3f528731ac901312da1526d0e0aaf3bee05ab9 Mon Sep 17 00:00:00 2001 From: Benjamin ter Kuile Date: Fri, 5 Dec 2014 14:48:20 +0100 Subject: [PATCH] Better tests --- .../product_orders_controller.js.coffee | 3 +- .../javascripts/user/app/store.js.coffee | 62 ++++++++++--------- .../user/app/templates/application.emblem | 12 ++-- .../user/app/templates/lists/index.emblem | 2 +- .../user/app/templates/select_qrcode.emblem | 2 +- app/controllers/users/orders_controller.rb | 4 +- .../user_extended_supplier_serializer.rb | 2 +- lib/qwaiter/broadcaster/faye.rb | 2 + .../users/order_products_steps.rb | 4 +- .../acceptance_steps/users/side_menu_steps.rb | 2 + spec/support/ember_helpers.rb | 7 +++ 11 files changed, 59 insertions(+), 43 deletions(-) diff --git a/app/assets/javascripts/user/app/controllers/product_orders_controller.js.coffee b/app/assets/javascripts/user/app/controllers/product_orders_controller.js.coffee index c8bf729d..8394f103 100644 --- a/app/assets/javascripts/user/app/controllers/product_orders_controller.js.coffee +++ b/app/assets/javascripts/user/app/controllers/product_orders_controller.js.coffee @@ -33,7 +33,8 @@ App.ProductOrdersController = Ember.ArrayController.extend #data = @get('product_orders').map( (po)->po.serialize() ) dataObject = order: {table_id: @get('controllers.table.model.id')} @get('product_orders').forEach (product_order)-> dataObject['order'][product_order.get('product.id')] = product_order.get('quantity') - Ember.$.post "#{$data_host}/user/orders.json", dataObject + Ember.$.post "#{$data_host}/user/orders.json", dataObject, (response) => + @store.pushPayload('order', response) if response.order @transitionToRoute 'active_list' @get('product_orders').invoke 'unloadRecord' diff --git a/app/assets/javascripts/user/app/store.js.coffee b/app/assets/javascripts/user/app/store.js.coffee index 77710678..8d2cf55f 100644 --- a/app/assets/javascripts/user/app/store.js.coffee +++ b/app/assets/javascripts/user/app/store.js.coffee @@ -1,34 +1,38 @@ -App.ApplicationSerializer = DS.ActiveModelSerializer.extend - serializeBelongsTo: (record, json, relationship) -> - console.log "Serialize belongsTo #{record.toString()}" - key = relationship.key - belongsTo = Ember.get(record, key) - key = (if @keyForRelationship then @keyForRelationship(key, "belongsTo") else key) - if relationship.options.embedded is "always" - json[key] = belongsTo.serialize() - else - @_super record, json, relationship +#App.ApplicationSerializer = DS.ActiveModelSerializer.extend + #serializeBelongsTo: (record, json, relationship) -> + #console.log "Serialize belongsTo #{record.toString()}" + #key = relationship.key + #belongsTo = Ember.get(record, key) + #key = (if @keyForRelationship then @keyForRelationship(key, "belongsTo") else key) + #if relationship.options.embedded is "always" + #json[key] = belongsTo.serialize() + #else + #@_super record, json, relationship - serializeHasMany: (record, json, relationship) -> - console.log "Serialize hasMany #{record.toString()}" - key = relationship.key - hasMany = Ember.get(record, key) - relationshipType = DS.RelationshipChange.determineRelationshipType(record.constructor, relationship) - if relationship.options.embedded is "always" - if hasMany and relationshipType is "manyToNone" or relationshipType is "manyToMany" or relationshipType is "manyToOne" - json[key] = [] - hasMany.forEach (item, index) -> - json[key].push item.serialize() - else - @_super record, json, relationship + #serializeHasMany: (record, json, relationship) -> + #console.log "Serialize hasMany #{record.toString()}" + #key = relationship.key + #hasMany = Ember.get(record, key) + #relationshipType = DS.RelationshipChange.determineRelationshipType(record.constructor, relationship) + #if relationship.options.embedded is "always" + #if hasMany and relationshipType is "manyToNone" or relationshipType is "manyToMany" or relationshipType is "manyToOne" + #json[key] = [] + #hasMany.forEach (item, index) -> + #json[key].push item.serialize() + #else + #@_super record, json, relationship +App.ApplicationSerializer = DS.ActiveModelSerializer.extend() App.ApplicationStore = DS.Store.extend - adapter: DS.RESTAdapter.extend + #adapter: DS.RESTAdapter.extend + #host: $data_host + #namespace: 'user' + ## user underscored paths + #pathForType: (type)-> + #decamelized = Ember.String.decamelize(type) + #Ember.String.pluralize(decamelized) + #headers: + #Accept: 'application/json' + adapter: DS.ActiveModelAdapter.extend host: $data_host namespace: 'user' - # user underscored paths - pathForType: (type)-> - decamelized = Ember.String.decamelize(type) - Ember.String.pluralize(decamelized) - headers: - Accept: 'application/json' diff --git a/app/assets/javascripts/user/app/templates/application.emblem b/app/assets/javascripts/user/app/templates/application.emblem index 887b011d..817950b3 100644 --- a/app/assets/javascripts/user/app/templates/application.emblem +++ b/app/assets/javascripts/user/app/templates/application.emblem @@ -6,15 +6,15 @@ header.top-menu if list.id link-to 'index' class="top-menu-logo with-list" = image_tag 'user/logo-small.png' - App.MenuItemView route="active_list" - App.MenuItemView route='table' route_param=list.table.id - App.MenuItemListNeedsHelpView - App.MenuItemListNeedsPaymentView + = view "menu-item" route="active_list" + = view "menu-item" route="table" route_param=list.table.id + = view "menu-item-list-needs-help" + = view "menu-item-list-needs-payment" else link-to 'index' class="top-menu-logo without-list" = image_tag 'user/logo-small.png' - App.MenuItemScanQrView - App.MenuItemProductOrdersView + = view "menu-item-scan-qr" + = view "menu-item-product-orders" if list .extra-info .supplier-info-row diff --git a/app/assets/javascripts/user/app/templates/lists/index.emblem b/app/assets/javascripts/user/app/templates/lists/index.emblem index 7031fc6c..164b68c7 100644 --- a/app/assets/javascripts/user/app/templates/lists/index.emblem +++ b/app/assets/javascripts/user/app/templates/lists/index.emblem @@ -1,6 +1,6 @@ .row h2=t 'models.plural.list' - each list in lists: App.ListIndexView contentBinding='list' + each list in lists: = view "list-index" contentBinding='list' .clearfix if hasMore button{action "showMore"}=t 'lists.show_more' diff --git a/app/assets/javascripts/user/app/templates/select_qrcode.emblem b/app/assets/javascripts/user/app/templates/select_qrcode.emblem index 33488bc0..522477b5 100644 --- a/app/assets/javascripts/user/app/templates/select_qrcode.emblem +++ b/app/assets/javascripts/user/app/templates/select_qrcode.emblem @@ -1,2 +1,2 @@ each table in tables - a{action selectQr table}: img src="/table_qr_image.svg?table_id=#{unbound table._id}" + a{action "selectQr" table}: img src="/table_qr_image.svg?table_id=#{unbound table._id}" diff --git a/app/controllers/users/orders_controller.rb b/app/controllers/users/orders_controller.rb index a56de5c0..e1e8da1f 100644 --- a/app/controllers/users/orders_controller.rb +++ b/app/controllers/users/orders_controller.rb @@ -28,8 +28,8 @@ module Users list = List.from_table( table, current_user ) end order = list.place_order products: converted_order, user: current_user - # render json: order, serializer: OrderSerializer - render nothing: true + render json: order, serializer: OrderSerializer + #render nothing: true end end end diff --git a/app/serializers/user_extended_supplier_serializer.rb b/app/serializers/user_extended_supplier_serializer.rb index 8568f084..1904cd96 100644 --- a/app/serializers/user_extended_supplier_serializer.rb +++ b/app/serializers/user_extended_supplier_serializer.rb @@ -3,7 +3,7 @@ class UserExtendedSupplierSerializer < Qwaiter::Serializer embed :ids, include: true attributes :extended_version, :open, :name, :orders_in_process_count, :orders_placed_count has_many :product_categories - has_many :products + #has_many :products only product in category!!!!!! def extended_version true diff --git a/lib/qwaiter/broadcaster/faye.rb b/lib/qwaiter/broadcaster/faye.rb index dff531a3..4d46a34d 100644 --- a/lib/qwaiter/broadcaster/faye.rb +++ b/lib/qwaiter/broadcaster/faye.rb @@ -4,6 +4,8 @@ module Qwaiter def broadcast(message) @uri ||= URI.parse(Qwaiter.event_host) Net::HTTP.post_form(@uri, message: message.merge(ext: {auth_token: '6be65f9b5e7d21b8ca8de4ccfad5ba24cf40d440b370af79'}).to_json) + rescue => e + Rails.logger.error("[FAYE] #{e.message}") end end end diff --git a/spec/acceptance_steps/users/order_products_steps.rb b/spec/acceptance_steps/users/order_products_steps.rb index 972983d9..b4e112f4 100644 --- a/spec/acceptance_steps/users/order_products_steps.rb +++ b/spec/acceptance_steps/users/order_products_steps.rb @@ -64,8 +64,8 @@ end step "the user order :product_name should be in the order list with price" do |product_name| concerning_product = Product.find_by_name(product_name) #ember_order = ember_store['product_orders'].find{|po| po['product_id'] == concerning_product.id} - ember_order = ember_find('product_order', concerning_product.id) - binding.pry + #ember_order = ember_find('product_order', concerning_product.id) + ember_order = ember_all('product_order').find{|po| po['product_id'] == concerning_product.id } quantity = ember_order['quantity'] order_price = quantity * concerning_product.price within '.product-orders .product-order' do diff --git a/spec/acceptance_steps/users/side_menu_steps.rb b/spec/acceptance_steps/users/side_menu_steps.rb index a070c799..651ddbe2 100644 --- a/spec/acceptance_steps/users/side_menu_steps.rb +++ b/spec/acceptance_steps/users/side_menu_steps.rb @@ -9,6 +9,7 @@ end step "the user clicks on the lists link in the side menu" do page.execute_script %|$('.side-menu-lists').click()| + sleep 1 end step "the user clicks on the about link in the side menu" do @@ -16,6 +17,7 @@ step "the user clicks on the about link in the side menu" do end step "the user clicks on the active list link in the side menu" do + binding.pry page.execute_script %|$('.side-menu-active-list').click()| end diff --git a/spec/support/ember_helpers.rb b/spec/support/ember_helpers.rb index c0acf9a6..5bbe11f2 100644 --- a/spec/support/ember_helpers.rb +++ b/spec/support/ember_helpers.rb @@ -23,6 +23,13 @@ module SpecEmberHelpers SCRIPT end + def ember_all(typeKey) + h = page.evaluate_script <<-SCRIPT + $s = App.__container__.lookup('store:main'); + $s.all('#{typeKey}').invoke('serialize') + SCRIPT + end + def js_path page.evaluate_script 'location.pathname + location.hash' end