Fix bug with unlinking user orders on lists load over active list

This commit is contained in:
2014-08-11 13:40:20 +02:00
parent af45377679
commit 28192f8e39
18 changed files with 66 additions and 62 deletions
@@ -9,4 +9,4 @@ App.Order = DS.Model.extend
).property('product_orders.@each.quantity')
display: (->
@get('product_orders').map((po) -> "#{po.get('quantity')} x #{po.get('product.name')}").join(', ')
).property('product_orders.@each.quantity')
).property('product_orders.@each.quantity', 'product_orders.@each.product.@each.name')
@@ -1,15 +1,14 @@
attr = DS.attr
App.ProductOrder = DS.Model.extend
quantity: attr 'number', defaultValue: 1
product: DS.belongsTo('product')
price: attr 'number'
product_name: attr('string')
product: DS.belongsTo('product')
order: DS.belongsTo('order')
placed: attr('boolean', defaultValue: false)
placed: attr('boolean', defaultValue: false) # virtual attribute for new orders to be placed, should be more elegant
increment: ->
@set('quantity', @get('quantity') + 1)
total: (-> @get('quantity') * @get('product.price')).property('quantity')
total: (-> @get('quantity') * @get('price')).property('quantity', 'price')
setOrder: (order)->
@set('placed', true)
@set('order', order)
@@ -0,0 +1 @@
App.Section = DS.Model.extend {}
@@ -1,50 +1,3 @@
/.top-menu.off-canvas-wrap
.inner-wrap
nav.tab-bar
section.left-small
a.left-off-canvas-toggle.menu-icon
span
section.right.tab-bar-section
= link-to 'index'
= image_tag 'icons/logo-small.png'
a{ action "openDebugger"} alt=""
span.fa.fa-wrench.fa-lg
.right
if list.id
App.MenuItemView route="active_list"
App.MenuItemView route='table' route_param=list.table.id
App.MenuItemListNeedsHelpView
App.MenuItemListNeedsPaymentView
aside.left-off-canvas-menu
ul.off-canvas-list
li: h3 Menu
li
= link-to 'index'
span Home
li
a{action scanQr bubbles=false}
span Scan QR
if list.id
li
=link-to 'table' list.table.id
span= t 'list_products.title'
li
=link-to 'active_list'
span= t 'active_list.title'
li
=link-to 'lists'
span= t 'models.plural.list'
li
=link-to 'join_requests'
span= t 'models.plural.join_request'
section.main-section
if notice
#notice.alert-box{action clearNotice} data-alert=true
a.right href="#"
span.fa.fa-times.fa-lg
span= notice
= outlet
a.exit-off-canvas
header.top-menu
.toggle-side-menu
span
@@ -85,16 +38,16 @@ aside.side-menu
span Scan QR
if list.id
li
=link-to 'table' list.table.id
=link-to 'table' list.table.id class="side-menu-list-products"
span.fa.fa-cutlery
span.fa.fa-glass
= t 'list_products.title'
li
=link-to 'active_list'
=link-to 'active_list' class="side-menu-active-list"
span.active-list-icon
span= t 'active_list.title'
li
=link-to 'lists'
=link-to 'lists' class="side-menu-lists"
span= t 'models.plural.list'
li
=link-to 'join_requests'
@@ -1,11 +1,11 @@
.row
h2=t 'models.plural.list'
each list in controller
.lists-overview-entry{action showList list}
.lists-overview-entry{action "showList" list}
span.created_at=time list.created_at
span.price.currency= currency list.price
span.name= list.supplier_name
hr
.clearfix
if hasMore
button{action showMore} Show more
button{action "showMore"}=t 'lists.show_more'
@@ -5,3 +5,4 @@ $green: #7BB459 //Heineken
//$wood: image-url('textures/wood001-vertical.jpg')
$wood: image-url('textures/theme1.jpg')
$background-brown: #57351f
$active-link-color: #ff0
@@ -49,8 +49,8 @@ header.top-menu
margin-top: 10px
color: #999
&.active
color: yellow
border-color: yellow
color: $active-link-color
border-color: $active-link-color
&.callout
color: #f70
border-color: #f70
@@ -26,6 +26,8 @@ aside.side-menu
margin-right: 18px
@extend .fa
@extend .fa-list
a.active
color: $active-link-color
.toggle-side-menu
position: absolute
@@ -5,6 +5,7 @@ module Users
#lists = current_user.lists.include_relation(:supplier, :table)
lists = List.for_user(current_user, page: params[:page], per_page: params[:per_page].presence || 25).include_relation(:supplier, :table)
#lists.include_relation(:supplier)
lists.include_relation(:users, :orders)
render json: lists, each_serializer: UserListSerializer, meta: {total_pages: lists.total_pages, page: lists.current_page} #, root: :lists
end
@@ -3,6 +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
def extended_version
true
+3 -1
View File
@@ -1,6 +1,6 @@
class UserListSerializer < Qwaiter::Serializer
# user ids for facebook pictures
#embed :ids
embed :ids
attributes :state, :needs_help, :needs_payment, :user_requests_closing, :is_paid, :price, :table_id, :table_number, :section_id, :user_ids, :supplier_name, :closed_at, :supplier_id
#def has_active_orders
@@ -9,4 +9,6 @@ class UserListSerializer < Qwaiter::Serializer
def supplier_name
object.supplier.name
end
has_many :users
has_many :orders
end
+2
View File
@@ -88,3 +88,5 @@ en:
list:
active: 'Active'
closed: 'Closed'
lists:
show_more: Show more
+2
View File
@@ -86,3 +86,5 @@ nl:
list:
active: 'Actief'
closed: 'Afgesloten'
lists:
show_more: Meer tonen
+12
View File
@@ -0,0 +1,12 @@
Feature: Active list view
@javascript
Scenario: Loading lists and switching back to the active list
Given There is an open supplier with a menu
And there is a signed in user with an active order
And the user is on the active list page
When the user opens the side menu
And the user clicks on the lists link in the side menu
And the user opens the side menu again
And the user clicks on the active list link in the side menu
Then the user should see the order in the active list view
+3 -1
View File
@@ -9,6 +9,9 @@ end
step "the user has an active list" do
@list = create :list, supplier: @supplier, table: @table, user_ids: [@user.id]
@product ||= create :product, supplier: @supplier, name: 'Beer', price: 2.34
@order = create :order, supplier: @supplier, list: @list
@product_order = create :product_order, order: @order, product: @product, quantity: 2, price: 2.34
@user.reload
@user.active_list_id = @list.id
@user.save
@@ -29,4 +32,3 @@ end
step "I am signed in as a user" do
step "I visit the user obtain token path"
end
@@ -0,0 +1,7 @@
step "the user is on the active list page" do
visit "/user#/active_list"
end
step "the user should see the order in the active list view" do
page.evaluate_script(%|$('.order-row-#{@order.id}').text()|).first(14).should == '2 x Beer€ 4.68'
end
@@ -0,0 +1,15 @@
step "the user opens the side menu" do
page.execute_script %|$('.toggle-side-menu').click()|
sleep 1
end
step "the user opens the side menu again" do
step "the user opens the side menu"
end
step "the user clicks on the lists link in the side menu" do
page.execute_script %|$('.side-menu-lists').click()|
end
step "the user clicks on the active list link in the side menu" do
page.execute_script %|$('.side-menu-active-list').click()|
end
+4
View File
@@ -14,4 +14,8 @@ module SpecEmberHelpers
SCRIPT
JSON.parse(h)
end
def js_path
page.evaluate_script 'location.pathname + location.hash'
end
end