add test for collapsing project containers

This commit is contained in:
Reinier Balt 2013-03-18 13:33:30 +01:00
parent 3fd2b175f5
commit 42566b6fee
6 changed files with 89 additions and 23 deletions

View file

@ -3,12 +3,12 @@ class TodosController < ApplicationController
skip_before_filter :login_required, :only => [:index, :calendar, :tag]
prepend_before_filter :login_or_feed_token_required, :only => [:index, :calendar, :tag]
append_before_filter :find_and_activate_ready, :only => [:index, :list_deferred]
append_before_filter :set_group_view_by, :only => [:index, :tag]
protect_from_forgery :except => :check_deferred
def index
@source_view = params['_source_view'] || 'todo'
@group_view_by = cookies['group_view_by'] || 'context'
init_data_for_sidebar unless mobile?
@ -885,6 +885,10 @@ class TodosController < ApplicationController
private
def set_group_view_by
@group_view_by = params['group_view_by'] || cookies['group_view_by'] || 'context'
end
def do_mobile_todo_redirection
if cookies[:mobile_url]
old_path = cookies[:mobile_url]
@ -934,8 +938,6 @@ class TodosController < ApplicationController
@single_tag = @tag_expr.size == 1 && @tag_expr[0].size == 1
@tag_name = @tag_expr[0][0]
@tag_title = @single_tag ? @tag_name : tag_title(@tag_expr)
@group_view_by = cookies['group_view_by'] || 'context'
end
def get_ids_from_tag_expr(tag_expr)

View file

@ -73,7 +73,6 @@
<li><%= navigation_link( t('layouts.navigation.stats'), stats_path, :title => t('layouts.navigation.stats_title')) %></li>
<li><hr/></li>
<%= group_view_by_menu_entry %>
<%= show_empty_containers_menu_entry %>
</ul>
</li>
<li><a href="#"><%= t('layouts.navigation.admin') %></a>

View file

@ -8,6 +8,16 @@ When /^I collapse the context container of "([^"]*)"$/ do |context_name|
toggle.click
end
When(/^I collapse the project container of "(.*?)"$/) do |project_name|
project = @current_user.projects.where(:name => project_name).first
project.should_not be_nil
xpath = "//a[@id='toggle_p#{project.id}']"
toggle = page.find(:xpath, xpath)
toggle.should be_visible
toggle.click
end
When /^I toggle all collapsed context containers$/ do
click_link 'Toggle collapsed contexts'
end
@ -46,24 +56,14 @@ Then /^the container for the context "([^"]*)" should be visible$/ do |context_n
step "I should see the container for context \"#{context_name}\""
end
Then /^I should see "([^"]*)" in the context container for "([^"]*)"$/ do |todo_description, context_name|
Then /^I should (see|not see) "([^"]*)" in the context container for "([^"]*)"$/ do |visible, todo_description, context_name|
context = @current_user.contexts.where(:name => context_name).first
context.should_not be_nil
todo = @current_user.todos.where(:description => todo_description).first
todo.should_not be_nil
xpath = "//div[@id=\"c#{context.id}\"]//div[@id='line_todo_#{todo.id}']"
page.should have_xpath(xpath)
end
Then /^I should not see "([^"]*)" in the context container for "([^"]*)"$/ do |todo_description, context_name|
context = @current_user.contexts.where(:name => context_name).first
context.should_not be_nil
todo = @current_user.todos.where(:description => todo_description).first
todo.should_not be_nil
xpath = "//div[@id=\"c#{context.id}\"]//div[@id='line_todo_#{todo.id}']"
page.should_not have_xpath(xpath)
page.send( visible=='see' ? :should : :should_not, have_xpath(xpath))
end
####### Deferred #######
@ -120,6 +120,18 @@ Then /^I should see "([^"]*)" in project container for "([^"]*)"$/ do |todo_desc
page.should have_xpath(xpath)
end
Then(/^I should see "(.*?)" in the project container for "(.*?)"$/) do |todo_description, project_name|
step "I should see \"#{todo_description}\" in project container for \"#{project_name}\""
end
Then /^I should not see the project container for "([^"]*)"$/ do |project_name|
project = @current_user.projects.where(:name => project_name).first
project.should_not be_nil
xpath = "//div[@id='p#{project.id}']"
page.should_not have_xpath(xpath, :visible => true)
end
####### Completed #######
Then /^I should (not see|see) "([^"]*)" in the (completed|done today|done this week|done this month) container$/ do |visible, todo_description, container|

View file

@ -2,7 +2,7 @@ Given /this is a pending scenario/ do
pending
end
Given /^I set the locale to "([^"]*)"$/ do |locale|
Given(/^I set the locale to "([^"]*)"$/) do |locale|
@locale = locale
end
@ -15,12 +15,16 @@ Given /^the date is "(.*?)"$/ do |date|
Timecop.travel(date)
end
Given(/^I have selected the view for group by project$/) do
@group_view_by='projects'
end
Then /the badge should show (.*)/ do |number|
badge = find("span#badge_count").text.to_i
badge.should == number.to_i
end
Then /^I should see an error flash message saying "([^"]*)"$/ do |message|
Then(/^I should see an error flash message saying "([^"]*)"$/) do |message|
xpath = "//div[@id='message_holder']/h4[@id='flash']"
page.should have_xpath(xpath, :visible => true)

View file

@ -6,8 +6,10 @@ module NavigationHelpers
# step definition in web_steps.rb
#
def path_to(page_name)
options = @mobile_interface ? {:format => :m} : {}
options = {:locale => @locale}.merge(options) if @locale
options = {}
options[:format] = :m if @mobile_interface
options[:locale] = @locale if @locale
options[:group_view_by] = @group_view_by if @group_view_by
@source_view = nil
case page_name

View file

@ -1,7 +1,7 @@
Feature: Toggle the context containers
Feature: Toggle the containers
In order to only see the todos relevant on this moment
As a Tracks user
I want to toggle the contexts so the todos in that context are not shown
I want to toggle the containers so the todos in that container (context or project) are not shown
Background:
Given the following user record
@ -38,8 +38,30 @@ Feature: Toggle the context containers
And I should not see the todo "test 2"
And I should not see the todo "test 3"
@javascript @wip
Scenario: I can toggle a project container
Given I have the following contexts
| context | hide |
| @ipad | false |
| @home | false |
| @boss | false |
And I have a project "collapse those containers" that has the following todos
| description | context |
| test 1 | @ipad |
| test 2 | @home |
| test 3 | @boss |
And I have selected the view for group by project
When I go to the home page
Then I should see "test 1" in the project container for "collapse those containers"
And I should see "test 2" in the project container for "collapse those containers"
And I should see "test 3" in the project container for "collapse those containers"
When I collapse the project container of "collapse those containers"
Then I should not see the todo "test 1"
And I should not see the todo "test 2"
And I should not see the todo "test 3"
@javascript
Scenario: I can hide all collapsed containers
Scenario: I can hide all collapsed context containers
Given I have the following contexts
| context | hide |
| @ipad | false |
@ -64,3 +86,28 @@ Feature: Toggle the context containers
Then I should not see the context container for "@home"
And I should not see the context container for "@boss"
And I should not see the context container for "@ipad"
@javascript @wip
Scenario: I can hide all collapsed project containers
Given I have the following contexts
| context | hide |
| @ipad | false |
And I have a project "collapse those containers" that has the following todos
| description | context |
| test 1 | @ipad |
And I have a project "collapse those other containers" that has the following todos
| description | context |
| test 2 | @ipad |
And I have selected the view for group by project
When I go to the home page
Then I should see "test 1" in the project container for "collapse those containers"
And I should see "test 2" in the project container for "collapse those other containers"
When I collapse the project container of "collapse those containers"
Then I should not see the todo "test 1"
And I should see the todo "test 2"
When I collapse the project container of "collapse those other containers"
Then I should not see the todo "test 1"
And I should not see the todo "test 2"
When I toggle all collapsed context containers
Then I should not see the project container for "collapse those containers"
Then I should not see the project container for "collapse those other containers"