changing table user acceptance specs in the green

This commit is contained in:
2014-06-25 16:11:29 +02:00
parent 0e4993e8a6
commit 58f0937570
9 changed files with 89 additions and 45 deletions
@@ -1,7 +1,6 @@
App.SelectQrcodeController = Ember.Controller.extend
actions:
selectQr: (table)->
Qstorage.setItem 'table_id', table._id
@secured ->
$.getJSON($data_host + '/user/table_info.json?'+@authentication_string+'&table_id='+table._id).then (res)=>
if res.current_table_id
@@ -29,6 +28,8 @@ App.SelectQrcodeController = Ember.Controller.extend
if res2.occupied
@redirect_to 'user_root', message: 'move_table.cannot_move_to_occupied_tabe'
else
# Now we can move table
Qstorage.setItem 'table_id', table._id
@redirect_to 'table', table._id, message: 'move_table.moved_to_another_table'
cancel: =>
@redirect_to 'table', res.current_table_id
@@ -2,5 +2,5 @@ modal-dialog action="close"
h3.flush--top= title
p=body
hr
button{action "close"}= t 'confirm.cancel'
button.right{action 'confirm'}= t 'confirm.confirm'
button.confirm-cancel{action "close"}= t 'confirm.cancel'
button.confirm-ok.right{action 'confirm'}= t 'confirm.confirm'
@@ -1,2 +1,2 @@
each table in tables
img{action selectQr table} 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}"
+5 -1
View File
@@ -8,7 +8,11 @@ class DashboardController < ApplicationController
# Testing action
def select_qrcode
#@tables = Table.all.sample(2) | List.active.map(&:table)
@tables = (current_supplier || Supplier.first).tables.sample(5) | List.active.map(&:table)
if Rails.env.test?
@tables = Table.all
else
@tables = (current_supplier || Supplier.first).tables.sample(5) | List.active.map(&:table)
end
respond_to do |format|
format.html { render layout: 'phone' }
format.json { render json: @tables.to_json }
+45 -28
View File
@@ -36,23 +36,51 @@ class UserController < Users::ApplicationController
#end
# GET /user/table_info.json
#def table_info
#respond_to do |format|
#format.json do
#render json: json_alert('messages.table_not_found') and return unless params[:table_id].present?
#@table = Table.find(params[:table_id])
#res = {}
#res[:occupied] = @table.occupied?
#res[:reserved] = @table.reserved?
#res[:supplier_closed] = @table.supplier.closed?
#if list.present?
#res[:other_supplier] = true if list.supplier_id != @table.supplier_id
#res[:current_table_id] = list.table_id
#end
#render json: res
#end
#end
#end
# used for moving table request
# TODO wrap logic of actions
# - table_info
# - move_table
# into separate class and implement security in a non stupid way as it is now
def table_info
respond_to do |format|
format.json do
render json: json_alert('messages.table_not_found') and return unless params[:table_id].present?
@table = Table.find(params[:table_id])
res = {}
res[:occupied] = @table.occupied?
res[:reserved] = @table.reserved?
res[:supplier_closed] = @table.supplier.closed?
if list.present?
res[:other_supplier] = true if list.supplier_id != @table.supplier_id
res[:current_table_id] = list.table_id
end
render json: res
end
end
end
# POST /user/move_table.json
# used to move the table
# TODO wrap logic of actions
# - table_info
# - move_table
# into separate class and implement security in a non stupid way as it is now
def move_table
render json: json_alert('messages.no_active_list', list_active: false) and return unless list.present?
render json: json_alert('messages.table_not_found') and return unless params[:table_id].present?
@table = Table.find(params[:table_id])
if @table.occupied?
render json: {occupied: true}
elsif @table.reserved?
render json: {reserved: true}
elsif list.supplier_id != @table.supplier_id
res[:other_supplier] = true if list.supplier_id != @table.supplier_id
res[:current_table_id] = list.table_id
else
list.move_to_table! @table
render json: {occupied: false, reserved: false}
end
end
# GET /suppliers/1/product_list
# GET /suppliers/1/product_list.json
@@ -285,15 +313,4 @@ class UserController < Users::ApplicationController
end
end
#def move_table
#render json: json_alert('messages.no_active_list', list_active: false) and return unless list.present?
#render json: json_alert('messages.table_not_found') and return unless params[:table_id].present?
#@table = Table.find(params[:table_id])
#if @table.occupied?
#render json: {occupied: true}
#else
#list.move_to_table! @table
#render json: {occupied: false}
#end
#end
end
+1 -1
View File
@@ -202,7 +202,7 @@ class List
UserTableMove.create list: self, from_table_id: table_id, to_table: to_table
from_table_id = self.table_id.try(:dup)
self.table = to_table
self.section_id = to_table.section_id
self.section_id = to_table.section_id
if save
# Update the section of an order
orders.each do |order|
@@ -14,8 +14,9 @@ step "the uses indicates in the popup that he wants to change the table" do
end
step "the user should see the supplier menu having the other table as base" do
route_should_be 'user#list_products'
find('.table-number').text.should == @other_table.number.to_s
#route_should_be 'user#list_products'
page.should have_content 'Apple pie'
find('.table-number').text.should == "Tafel #{@other_table.number.to_s}"
end
step "the user list should have been moved to the other table" do
@@ -32,7 +33,12 @@ step "there is another table with an active list of another user" do
end
step "the user scans a QR code of another not occupied table" do
page.execute_script "Quser.actions_for_table({table_id: '#{@other_table.id}'})"
r = page.evaluate_script %|
c = App.__container__.lookup('controller:select_qrcode');
c.send('selectQr', {_id: "#{@other_table.id}"});
c.toString()
|
#page.execute_script "Quser.actions_for_table({table_id: '#{@other_table.id}'})"
end
step "the user scans a QR code of another occupied table" do
+4
View File
@@ -108,6 +108,10 @@ RSpec.configure do |config|
Qwaiter::Couchbase.load_design_docs!
# NOT THREADSAFE!!!!!! but good enough for testing since the real couchbase flush is slowwwwww....
Qwaiter::Counter.connection = InMemoryQCounter.new
# Threadsafe would be using the drb counter
# require 'drb'
# counter = DRbObject.new nil, 'druby://:9000'
# Qwaiter::Counter.connection = counter
end
config.before :each do
+20 -8
View File
@@ -3,27 +3,39 @@
# a clean start and Hash#clear is soooo much faster than
# a couchbase bucket flush
class InMemoryQCounter
STORE = {}
attr_reader :store
def initialize
@store = {}
end
def get(key, options = {})
STORE[key]
store[key]
end
def set(key, value)
STORE[key] = value
store[key] = value
end
def incr(key, options = {})
STORE[key] ||= options[:initial].to_i
STORE[key] += 1
store[key] ||= options[:initial].to_i
store[key] += 1
end
def decr(key, options = {})
STORE[key] ||= options[:initial].to_i
STORE[key] -= 1
store[key] ||= options[:initial].to_i
store[key] -= 1
end
def flush
STORE.clear
store.clear
end
end
=begin Make drb server
require 'drb'
DRb.start_service 'druby://:9000', InMemoryQCounter.new
puts "Counter server running at #{DRb.uri}"
trap("INT") { DRb.stop_service }
DRb.thread.join
=end