From c0c25673bff2db6284e1bf025fd06ee962d0f942 Mon Sep 17 00:00:00 2001 From: Benjamin ter Kuile Date: Thu, 31 Jul 2014 18:07:06 +0200 Subject: [PATCH] Current state with 6 failures is considered to be better than the previous one --- .../controllers/section_controller.js.coffee | 7 +++++ .../supplier/app/models/table.js.coffee | 2 +- .../app/templates/section_table.emblem | 4 ++- app/controllers/user_controller.rb | 8 +---- app/models/list.rb | 3 +- app/services/join_request.rb | 2 ++ config/routes.rb | 4 +-- spec/models/list_spec.rb | 31 +++++++++++++++++++ .../matchers/broadcast_to_user_matcher.rb | 2 +- 9 files changed, 50 insertions(+), 13 deletions(-) diff --git a/app/assets/javascripts/supplier/app/controllers/section_controller.js.coffee b/app/assets/javascripts/supplier/app/controllers/section_controller.js.coffee index bf8c8ee3..5626c161 100644 --- a/app/assets/javascripts/supplier/app/controllers/section_controller.js.coffee +++ b/app/assets/javascripts/supplier/app/controllers/section_controller.js.coffee @@ -18,6 +18,13 @@ Qsupplier.App.SectionController = Ember.ObjectController.extend @send 'openModal', 'modal_section_add_tables', @get('model') arrangeTables: -> @send 'openModal', 'modal_section_arrange_tables', @get('model') + editTable: (table)-> + @modal 'edit_table', + model: table + ok: -> + table.save() + close: -> + table.rollback() destroySection: -> @send 'openModal', 'modal_confirm', title: t('helpers.links.are_you_sure') diff --git a/app/assets/javascripts/supplier/app/models/table.js.coffee b/app/assets/javascripts/supplier/app/models/table.js.coffee index 9e524f09..8ff2fd85 100644 --- a/app/assets/javascripts/supplier/app/models/table.js.coffee +++ b/app/assets/javascripts/supplier/app/models/table.js.coffee @@ -8,7 +8,7 @@ Qsupplier.App.Table = DS.Model.extend # occupied: attr 'boolean' section: DS.belongsTo('section') #active_list: DS.belongsTo('list', key: 'active_list') - active_list: DS.belongsTo('list') + active_list: DS.belongsTo('list', async: true) #list: DS.belongsTo('list') #active_list: (-> #@get('list') diff --git a/app/assets/javascripts/supplier/app/templates/section_table.emblem b/app/assets/javascripts/supplier/app/templates/section_table.emblem index 6b5395ea..a9bbea1e 100644 --- a/app/assets/javascripts/supplier/app/templates/section_table.emblem +++ b/app/assets/javascripts/supplier/app/templates/section_table.emblem @@ -4,12 +4,14 @@ span.needs_help span.active_order if table.active_list - div class="table-actions table-actions-#{unbound table.id}" + div.table-actions .title= table.number .table-action-row Qsupplier.App.MarkListHelpedButtonView content=table.active_list Qsupplier.App.CloseListButtonView content=table.active_list .table-action-row=currency table.active_list.total + /.table-action-row + a{action "editTable" table}: span.fa.fa-lg.fa-wrench each user in table.active_list.users img src=user.facebook_image if editmodedisabled diff --git a/app/controllers/user_controller.rb b/app/controllers/user_controller.rb index 557ffe8a..e0b3b94b 100644 --- a/app/controllers/user_controller.rb +++ b/app/controllers/user_controller.rb @@ -124,19 +124,13 @@ class UserController < Users::ApplicationController end end - # GET /user/join_occupied_table - def join_occupied_table - #redirect_to user_root_path(message: 'table_not_found') and return unless params[:table_id].present? - #@table = Table.find(params[:table_id]) - end - # POST /user/join_occupied_table def request_to_join_occupied_table render json: json_alert('messages.table_not_found') and return unless params[:table_id].present? @table = Table.find(params[:table_id]) if @list = @table.active_list @list.send_table_join_request_for_user! current_user - end + end render nothing: true end diff --git a/app/models/list.rb b/app/models/list.rb index f8bd270b..bfe9361d 100644 --- a/app/models/list.rb +++ b/app/models/list.rb @@ -240,7 +240,8 @@ class List end def send_table_join_request_for_user!(requester) - unless join_request_user_ids.include?(requester.id) + unless join_request_user_ids.include?(requester.id) or user_ids.include?(requester.id) + @join_requests = nil # bust cache self.join_request_user_ids << requester.id self.is_dirty if save diff --git a/app/services/join_request.rb b/app/services/join_request.rb index 9eafc69e..804f7556 100644 --- a/app/services/join_request.rb +++ b/app/services/join_request.rb @@ -3,6 +3,7 @@ class JoinRequest def id "jr-#{user_id}" end + alias _id id def initialize(user: nil, list: nil) @user, @list = user, list @@ -35,6 +36,7 @@ class JoinRequest def serializable_hash { id: id, + _id: id, user_id: user.id, user_facebook_id: user.uid, user_email: user.email, diff --git a/config/routes.rb b/config/routes.rb index 30d01a53..1d0a6116 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -61,7 +61,7 @@ Qwaiter::Application.routes.draw do post '/user/order_selected_products' => 'user#order_selected_products', as: :user_order_selected_products post '/user/move_table' => 'user#move_table', as: :user_move_table get '/user/table_info' => 'user#table_info', as: :user_table_info - get '/user/join_occupied_table' => 'user#join_occupied_table', as: :user_join_occupied_table + # get '/user/join_occupied_table' => 'user#join_occupied_table', as: :user_join_occupied_table post '/user/join_occupied_table' => 'user#request_to_join_occupied_table' post '/user/reject_join_request' => 'user#reject_join_request' post '/user/approve_join_request' => 'user#approve_join_request' @@ -96,7 +96,7 @@ Qwaiter::Application.routes.draw do #get '/contact' => 'dashboard#contact' get '/s' => redirect('/scan'), as: :scan - # DEVELOPMENT ONLY + # DEVELOPMENT ONLY get '/qr' => 'dashboard#qr' get '/demo_both' => 'dashboard#demo_both' diff --git a/spec/models/list_spec.rb b/spec/models/list_spec.rb index 2f44fd1a..decb5bd0 100644 --- a/spec/models/list_spec.rb +++ b/spec/models/list_spec.rb @@ -163,4 +163,35 @@ describe List do describe 'product order creation' end + + describe 'join requests' do + describe '#send_table_join_request_for_user' do + it "does not add an existing user to join_request_user_ids" do + list.send_table_join_request_for_user! user + expect(list.join_request_user_ids).not_to include user.id + end + it "adds a user to join_request_user_ids" do + other_user = create :user + list.send_table_join_request_for_user! other_user + # test through persistance + list.reload + expect(list.join_request_user_ids).to eq [other_user.id] + end + + it "does not add a user multiple times" do + other_user = create :user + 2.times { list.send_table_join_request_for_user! other_user } + expect(list.join_request_user_ids).to eq [other_user.id] + end + + it "broadcasts it to the user" do + other_user = create :user + expect{ + list.send_table_join_request_for_user! other_user + }.to broadcast_to_user(user.id).message('user_join_request').with( + hash_including(:users, :join_request) + ) + end + end + end end diff --git a/spec/support/matchers/broadcast_to_user_matcher.rb b/spec/support/matchers/broadcast_to_user_matcher.rb index 976266ca..f015e1e5 100644 --- a/spec/support/matchers/broadcast_to_user_matcher.rb +++ b/spec/support/matchers/broadcast_to_user_matcher.rb @@ -25,7 +25,7 @@ module Matchers relevant_broadcasts = test_broadcaster.broadcasts.select{|b| b[:channel] =~ /^\/user\/#{@user_id}/ && b[:data][:event] == @message} @failure_debug_content = "was #{relevant_broadcasts.map{|b| b[:data][:data].inspect}.join(" and ")}" - relevant_broadcasts.any?{|b| b[:data][:data] == @target_object} + relevant_broadcasts.any?{|b| @target_object === b[:data][:data]} end def message(msg)