Add specs for user changing table

This commit is contained in:
2013-12-26 09:30:57 +01:00
parent 50a95fa6fb
commit c6f0976d11
7 changed files with 94 additions and 4 deletions
+2 -2
View File
@@ -20,7 +20,7 @@ window.Qwaiter=
.append('<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>') .append('<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>')
.append('<h3>'+title+'</h3>').appendTo(wrapper) .append('<h3>'+title+'</h3>').appendTo(wrapper)
body = $('<div class="modal-body"></div>').append('<p>'+content+'</p>').appendTo(wrapper) body = $('<div class="modal-body"></div>').append('<p>'+content+'</p>').appendTo(wrapper)
ok_button = $('<a href="#" class="btn btn-primary">Yes</a>') ok_button = $('<a href="#" class="btn btn-primary confirm-ok">Yes</a>')
if typeof(options.ok) == 'function' if typeof(options.ok) == 'function'
ok_button.click(callback_wrapper) ok_button.click(callback_wrapper)
else else
@@ -28,7 +28,7 @@ window.Qwaiter=
eval(options.ok) eval(options.ok)
wrapper.modal('hide') wrapper.modal('hide')
footer = $('<div class="modal-footer"></div>') footer = $('<div class="modal-footer"></div>')
.append($('<a href="#" class="btn">Close</a>').click(callback_cancel_wrapper)) .append($('<a href="#" class="btn confirm-cancel">Close</a>').click(callback_cancel_wrapper))
.append(ok_button) .append(ok_button)
.appendTo(wrapper) .appendTo(wrapper)
wrapper.modal() wrapper.modal()
@@ -79,7 +79,7 @@ var $translations = {
cannot_move_to_occupied_table: 'You cannot move to an occupied table', cannot_move_to_occupied_table: 'You cannot move to an occupied table',
moved_to_another_table: 'The table is changed.', moved_to_another_table: 'The table is changed.',
confirmation_title: 'Move to another table?', confirmation_title: 'Move to another table?',
confirmation_body: 'Are you sure you want to move to another table?' confirmation_body: 'Do you want to move to another table?'
}, },
models: <%= I18n.t('activemodel.models', locale: :en).to_json %>, models: <%= I18n.t('activemodel.models', locale: :en).to_json %>,
attributes: <%= I18n.t('activemodel.attributes', locale: :en).to_json %>, attributes: <%= I18n.t('activemodel.attributes', locale: :en).to_json %>,
@@ -120,7 +120,7 @@ var $translations = {
cannot_move_to_occupied_table: 'Je kan niet verhuizen naar een tafel die reeds gebruikt wordt.', cannot_move_to_occupied_table: 'Je kan niet verhuizen naar een tafel die reeds gebruikt wordt.',
moved_to_another_table: 'De tafel is gewijzigd.', moved_to_another_table: 'De tafel is gewijzigd.',
confirmation_title: 'Naar een andere tafel verhuizen?', confirmation_title: 'Naar een andere tafel verhuizen?',
confirmation_body: 'Ben je aan een andere tafel gaan zitten?' confirmation_body: 'Wil je aan een andere tafel gaan zitten?'
}, },
models: <%= I18n.t('activemodel.models', locale: :nl).to_json %>, models: <%= I18n.t('activemodel.models', locale: :nl).to_json %>,
attributes: <%= I18n.t('activemodel.attributes', locale: :nl).to_json %>, attributes: <%= I18n.t('activemodel.attributes', locale: :nl).to_json %>,
+5
View File
@@ -59,6 +59,11 @@ class User
active_list_id.present? active_list_id.present?
end end
# only used for testing so far
def active_list
has_active_list? ? List.find(active_list_id) : nil
end
##################################### #####################################
# Taken from devise 2.2 # Taken from devise 2.2
##################################### #####################################
@@ -0,0 +1,24 @@
Feature: Changing table
@javascript
Scenario: Scanning a table not yet occupied and change to it
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 homepage
And there is another table
When the user scans a QR code of another not occupied table
Then the user should see a popup asking the user if he would like to change table
When the uses indicates in the popup that he wants to change the table
And I wait 1 second
Then the user should see the supplier menu having the other table as base
And the user list should have been moved to the other table
@javascript
Scenario: Scanning a table already occupied
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 homepage
And there is another table with an active list of another user
When the user scans a QR code of another occupied table
Then the user should see a popup telling him that the table is already occupied
And the user list should not have been moved to the other table
@@ -1,4 +1,5 @@
Feature: Sign up as user using facebook Feature: Sign up as user using facebook
Note that facebook is automatically signing in
@javascript @javascript
Scenario: Happy flow Scenario: Happy flow
@@ -27,3 +28,5 @@ Feature: Sign up as user using facebook
And I wait 4 seconds And I wait 4 seconds
Then the newly created user info should be stored in the local storage Then the newly created user info should be stored in the local storage
Scenario: Facebook problem OmniAuth.config.mock_auth[:facebook] = :invalid_credentials
Scenario: Valid facebook login, but declines information requested by scope
@@ -1,4 +1,8 @@
step "I am on the user homepage" do step "I am on the user homepage" do
step "the user is on the homepage"
end
step "the user is on the homepage" do
visit user_root_path visit user_root_path
end end
@@ -0,0 +1,54 @@
step "there is another table" do
@other_table = create :table, number: 89, section: @section, supplier: @supplier
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}'})"
end
step "the user should see a popup asking the user if he would like to change table" do
move_table_body = page.evaluate_script "t('move_table.confirmation_body')"
move_table_body.should be_present
page.should have_content move_table_body
end
step "the uses indicates in the popup that he wants to change the table" do
find('.confirm-ok').click
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
end
step "the user list should have been moved to the other table" do
@user.active_list.table.should == @other_table
@other_table.active_list.should == @user.active_list
@table.active_list.should_not be_present
end
step "there is another table with an active list of another user" do
step "there is another table"
step 'there is another user'
@other_user_list = List.from_table @other_table, @other_user
end
step "the user scans a QR code of another occupied table" do
# same as not, since this is just a scan action. Whether the table
# is occupied is a responsibility of other steps
step "the user scans a QR code of another not occupied table"
end
step "the user should see a popup telling him that the table is already occupied" do
table_occupied_body = page.evaluate_script "t('messages.table_is_occupied')"
table_occupied_body.should be_present
page.should have_content table_occupied_body
end
step "the user list should not have been moved to the other table" do
@user.active_list.table.should == @table
@table.active_list.should == @user.active_list
@other_table.active_list.user_ids.should_not include @user.id
end