Make ember route expectations smarter

This commit is contained in:
2014-10-17 18:23:48 +02:00
parent 84b1060c6f
commit 8837037b05
6 changed files with 19 additions and 7 deletions
@@ -38,6 +38,7 @@ Feature: Ordering a product as a user
Then the user should see an empty active order panel
And the user clicks on the order 'Heineken beer' twice
And the user clicks on the user order button
And I wait 1 second
Then an order with 2 products 'Heineken beer' should have been created
And no order for the product 'Apple pie' should have been created
@@ -24,7 +24,6 @@ end
step "the user should be redirected to the archived list path" do
#route_should_be 'user#history_list'
sleep 1
ember_route_should_be "/lists/#{@order.list_id}"
page.should have_selector ".order-row-#{@order.id}"
end
@@ -27,5 +27,5 @@ end
## ASSERTIONS
step "the supplier should be redirected to the root path" do
ember_route.should == '/'
ember_route_should_be '/'
end
@@ -37,7 +37,7 @@ end
step "the supplier should be redirected to the supplier settings path" do
# route_should_be 'supplier#edit'
ember_route.should == '/settings'
ember_route_should_be '/settings'
end
step "the supplier email is the new email and the unconfirmed email is empty" do
@@ -13,7 +13,6 @@ end
step "the user clicks on the user order button" do
find('.order-selected-products-button').click
sleep 1
end
step "the user has an active order" do
+16 -3
View File
@@ -15,13 +15,26 @@ module SpecRouteHelpers
end
def ember_route_should_be(route_def)
ember_route.should == route_def
max_wait = 4
time = 0.0
time_step = 0.25
while time < max_wait && ember_route != route_def
time += time_step
sleep time_step
end
ember_route(omit_should_raise: true).should == route_def
end
def ember_route
def ember_route(omit_should_raise: nil)
# currentRouteName does not include model information: /list/123 => currentRouteName == 'list'
# page.evaluate_script %|App.__container__.lookup('controller:application').get('currentRouteName')|
# page.evaluate_script %|App.__container__.lookup('router:main').location.lastSetURL| # not working for direct path supplier#/settings
page.evaluate_script %{App.__container__ && (window.location.hash || "#/").substr(1)}
route = page.evaluate_script %{App.__container__ && (window.location.hash || "#/").substr(1)}
unless omit_should_raise
def route.should(*)
raise "Cannot call should on ember route. Use ember_route_should_be instead"
end
end
route
end
end