mirror of
https://github.com/TracksApp/tracks.git
synced 2025-12-16 15:20:13 +01:00
rename repeating -> recurring, repeat -> recurrence
This commit is contained in:
parent
ab02d09830
commit
dfe8735c0d
35 changed files with 125 additions and 125 deletions
|
|
@ -815,7 +815,7 @@ var RecurringTodosPage = {
|
||||||
$( "#new-recurring-todo" ).dialog( "open" );
|
$( "#new-recurring-todo" ).dialog( "open" );
|
||||||
});
|
});
|
||||||
|
|
||||||
/* setup dialog for new repeating action */
|
/* setup dialog for new recurring action */
|
||||||
$( "#new-recurring-todo" ).dialog({
|
$( "#new-recurring-todo" ).dialog({
|
||||||
autoOpen: false,
|
autoOpen: false,
|
||||||
height: 690,
|
height: 690,
|
||||||
|
|
@ -847,7 +847,7 @@ var RecurringTodosPage = {
|
||||||
$('#recurring_'+this.id.split('_')[4]).show();
|
$('#recurring_'+this.id.split('_')[4]).show();
|
||||||
});
|
});
|
||||||
|
|
||||||
/* setup dialog for new repeating action */
|
/* setup dialog for new recurring action */
|
||||||
$( "#edit-recurring-todo" ).dialog({
|
$( "#edit-recurring-todo" ).dialog({
|
||||||
autoOpen: false,
|
autoOpen: false,
|
||||||
height: 690,
|
height: 690,
|
||||||
|
|
|
||||||
|
|
@ -129,7 +129,7 @@ class ContextsController < ApplicationController
|
||||||
# actions, you'll get a warning dialogue. If you choose to go ahead, any
|
# actions, you'll get a warning dialogue. If you choose to go ahead, any
|
||||||
# actions in the context will also be deleted.
|
# actions in the context will also be deleted.
|
||||||
def destroy
|
def destroy
|
||||||
# make sure the deleted recurring patterns are removed from associated todos
|
# make sure the deleted recurrence patterns are removed from associated todos
|
||||||
@context.recurring_todos.each { |rt| rt.clear_todos_association } unless @context.recurring_todos.nil?
|
@context.recurring_todos.each { |rt| rt.clear_todos_association } unless @context.recurring_todos.nil?
|
||||||
|
|
||||||
@context.destroy
|
@context.destroy
|
||||||
|
|
|
||||||
|
|
@ -23,19 +23,19 @@ module RecurringTodos
|
||||||
end
|
end
|
||||||
|
|
||||||
def daily_pattern
|
def daily_pattern
|
||||||
@daily_pattern ||= create_pattern(DailyRepeatPattern)
|
@daily_pattern ||= create_pattern(DailyRecurrencePattern)
|
||||||
end
|
end
|
||||||
|
|
||||||
def weekly_pattern
|
def weekly_pattern
|
||||||
@weekly_pattern ||= create_pattern(WeeklyRepeatPattern)
|
@weekly_pattern ||= create_pattern(WeeklyRecurrencePattern)
|
||||||
end
|
end
|
||||||
|
|
||||||
def monthly_pattern
|
def monthly_pattern
|
||||||
@monthly_pattern ||= create_pattern(MonthlyRepeatPattern)
|
@monthly_pattern ||= create_pattern(MonthlyRecurrencePattern)
|
||||||
end
|
end
|
||||||
|
|
||||||
def yearly_pattern
|
def yearly_pattern
|
||||||
@yearly_pattern ||= create_pattern(YearlyRepeatPattern)
|
@yearly_pattern ||= create_pattern(YearlyRecurrencePattern)
|
||||||
end
|
end
|
||||||
|
|
||||||
def method_missing(method, *args)
|
def method_missing(method, *args)
|
||||||
|
|
|
||||||
|
|
@ -72,7 +72,7 @@ class RecurringTodo < ActiveRecord::Base
|
||||||
|
|
||||||
def pattern
|
def pattern
|
||||||
if valid_period?
|
if valid_period?
|
||||||
@pattern = eval("RecurringTodos::#{recurring_period.capitalize}RepeatPattern.new(user)")
|
@pattern = eval("RecurringTodos::#{recurring_period.capitalize}RecurrencePattern.new(user)")
|
||||||
@pattern.build_from_recurring_todo(self)
|
@pattern.build_from_recurring_todo(self)
|
||||||
end
|
end
|
||||||
@pattern
|
@pattern
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
module RecurringTodos
|
module RecurringTodos
|
||||||
|
|
||||||
class AbstractRepeatPattern
|
class AbstractRecurrencePattern
|
||||||
|
|
||||||
attr_accessor :attributes
|
attr_accessor :attributes
|
||||||
|
|
||||||
|
|
@ -41,7 +41,7 @@ module RecurringTodos
|
||||||
end
|
end
|
||||||
|
|
||||||
def recurrence_pattern
|
def recurrence_pattern
|
||||||
raise "Should not call AbstractRepeatPattern.recurrence_pattern directly. Overwrite in subclass"
|
raise "Should not call AbstractRecurrencePattern.recurrence_pattern directly. Overwrite in subclass"
|
||||||
end
|
end
|
||||||
|
|
||||||
def xth(x)
|
def xth(x)
|
||||||
|
|
@ -151,7 +151,7 @@ module RecurringTodos
|
||||||
end
|
end
|
||||||
|
|
||||||
def get_next_date(previous)
|
def get_next_date(previous)
|
||||||
raise "Should not call AbstractRepeatPattern.get_next_date directly. Overwrite in subclass"
|
raise "Should not call AbstractRecurrencePattern.get_next_date directly. Overwrite in subclass"
|
||||||
end
|
end
|
||||||
|
|
||||||
def continues_recurring?(previous)
|
def continues_recurring?(previous)
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
module RecurringTodos
|
module RecurringTodos
|
||||||
|
|
||||||
class DailyRepeatPattern < AbstractRepeatPattern
|
class DailyRecurrencePattern < AbstractRecurrencePattern
|
||||||
|
|
||||||
def initialize(user)
|
def initialize(user)
|
||||||
super user
|
super user
|
||||||
|
|
@ -4,7 +4,7 @@ module RecurringTodos
|
||||||
attr_reader :recurring_todo, :pattern
|
attr_reader :recurring_todo, :pattern
|
||||||
|
|
||||||
def initialize(user, attributes)
|
def initialize(user, attributes)
|
||||||
super(user, attributes, DailyRepeatPattern)
|
super(user, attributes, DailyRecurrencePattern)
|
||||||
end
|
end
|
||||||
|
|
||||||
def attributes_to_filter
|
def attributes_to_filter
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
module RecurringTodos
|
module RecurringTodos
|
||||||
|
|
||||||
class MonthlyRepeatPattern < AbstractRepeatPattern
|
class MonthlyRecurrencePattern < AbstractRecurrencePattern
|
||||||
|
|
||||||
def initialize(user)
|
def initialize(user)
|
||||||
super user
|
super user
|
||||||
|
|
@ -4,7 +4,7 @@ module RecurringTodos
|
||||||
attr_reader :recurring_todo
|
attr_reader :recurring_todo
|
||||||
|
|
||||||
def initialize(user, attributes)
|
def initialize(user, attributes)
|
||||||
super(user, attributes, MonthlyRepeatPattern)
|
super(user, attributes, MonthlyRecurrencePattern)
|
||||||
end
|
end
|
||||||
|
|
||||||
def attributes_to_filter
|
def attributes_to_filter
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
module RecurringTodos
|
module RecurringTodos
|
||||||
|
|
||||||
class WeeklyRepeatPattern < AbstractRepeatPattern
|
class WeeklyRecurrencePattern < AbstractRecurrencePattern
|
||||||
|
|
||||||
def initialize(user)
|
def initialize(user)
|
||||||
super user
|
super user
|
||||||
|
|
@ -4,7 +4,7 @@ module RecurringTodos
|
||||||
attr_reader :recurring_todo
|
attr_reader :recurring_todo
|
||||||
|
|
||||||
def initialize(user, attributes)
|
def initialize(user, attributes)
|
||||||
super(user, attributes, WeeklyRepeatPattern)
|
super(user, attributes, WeeklyRecurrencePattern)
|
||||||
end
|
end
|
||||||
|
|
||||||
def attributes_to_filter
|
def attributes_to_filter
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
module RecurringTodos
|
module RecurringTodos
|
||||||
|
|
||||||
class YearlyRepeatPattern < AbstractRepeatPattern
|
class YearlyRecurrencePattern < AbstractRecurrencePattern
|
||||||
|
|
||||||
def initialize(user)
|
def initialize(user)
|
||||||
super user
|
super user
|
||||||
|
|
@ -4,7 +4,7 @@ module RecurringTodos
|
||||||
attr_reader :recurring_todo
|
attr_reader :recurring_todo
|
||||||
|
|
||||||
def initialize(user, attributes)
|
def initialize(user, attributes)
|
||||||
super(user, attributes, YearlyRepeatPattern)
|
super(user, attributes, YearlyRecurrencePattern)
|
||||||
end
|
end
|
||||||
|
|
||||||
def attributes_to_filter
|
def attributes_to_filter
|
||||||
|
|
|
||||||
|
|
@ -254,7 +254,7 @@ en:
|
||||||
common:
|
common:
|
||||||
back: Back
|
back: Back
|
||||||
third: Third
|
third: Third
|
||||||
recurring_todos: Repeating Actions
|
recurring_todos: Recurring Actions
|
||||||
actions: Actions
|
actions: Actions
|
||||||
actions_midsentence:
|
actions_midsentence:
|
||||||
zero: actions
|
zero: actions
|
||||||
|
|
@ -387,7 +387,7 @@ en:
|
||||||
home: Home
|
home: Home
|
||||||
navigation:
|
navigation:
|
||||||
manage_users_title: Add or delete users
|
manage_users_title: Add or delete users
|
||||||
recurring_todos: Repeating todos
|
recurring_todos: Recurring todos
|
||||||
api_docs: REST API Docs
|
api_docs: REST API Docs
|
||||||
feeds: Feeds
|
feeds: Feeds
|
||||||
starred: Starred
|
starred: Starred
|
||||||
|
|
@ -697,7 +697,7 @@ en:
|
||||||
due_date: with a due date %{due_date} or earlier
|
due_date: with a due date %{due_date} or earlier
|
||||||
overdue: Overdue
|
overdue: Overdue
|
||||||
add_new_recurring: Add a new recurring action
|
add_new_recurring: Add a new recurring action
|
||||||
edit_recurring_todo: Edit repeating action
|
edit_recurring_todo: Edit recurring action
|
||||||
see_all_completed: You can see all completed actions %{link}
|
see_all_completed: You can see all completed actions %{link}
|
||||||
all_completed_here: here
|
all_completed_here: here
|
||||||
contexts:
|
contexts:
|
||||||
|
|
@ -705,7 +705,7 @@ en:
|
||||||
all_completed_tasks_title: "TRACKS::All Completed actions in the context '%{context_name}'"
|
all_completed_tasks_title: "TRACKS::All Completed actions in the context '%{context_name}'"
|
||||||
hide_form: Hide form
|
hide_form: Hide form
|
||||||
show_form_title: Add a context
|
show_form_title: Add a context
|
||||||
delete_context_confirmation: "Are you sure that you want to delete the context '%{name}'? Be aware that this will also delete all (repeating) actions in this context!"
|
delete_context_confirmation: "Are you sure that you want to delete the context '%{name}'? Be aware that this will also delete all (recurring) actions in this context!"
|
||||||
delete_context: Delete context
|
delete_context: Delete context
|
||||||
edit_context: Edit context
|
edit_context: Edit context
|
||||||
hide_form_title: Hide new context form
|
hide_form_title: Hide new context form
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,7 @@ Feature: Existing user logging in
|
||||||
| contexts page | contexts page | Logout (Test User) |
|
| contexts page | contexts page | Logout (Test User) |
|
||||||
| projects page | projects page | Logout (Test User) |
|
| projects page | projects page | Logout (Test User) |
|
||||||
| notes page | notes page | Logout (Test User) |
|
| notes page | notes page | Logout (Test User) |
|
||||||
| repeating todos page | repeating todos page | Logout (Test User) |
|
| recurring todos page | recurring todos page | Logout (Test User) |
|
||||||
| statistics page | statistics page | Logout (Test User) |
|
| statistics page | statistics page | Logout (Test User) |
|
||||||
| manage users page | manage users page | 401 Unauthorized |
|
| manage users page | manage users page | 401 Unauthorized |
|
||||||
| integrations page | integrations page | Logout (Test User) |
|
| integrations page | integrations page | Logout (Test User) |
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
Feature: Manage recurring todos
|
Feature: Manage recurring todos
|
||||||
In order to manage repeating todos
|
In order to manage recurring todos
|
||||||
As a Tracks user
|
As a Tracks user
|
||||||
I want to view, edit, add, or remove recurrence patterns of repeating todos
|
I want to view, edit, add, or remove recurrence patterns of recurring todos
|
||||||
|
|
||||||
Background:
|
Background:
|
||||||
Given the following user record
|
Given the following user record
|
||||||
|
|
@ -9,11 +9,11 @@ Feature: Manage recurring todos
|
||||||
| testuser | secret | false |
|
| testuser | secret | false |
|
||||||
And I have logged in as "testuser" with password "secret"
|
And I have logged in as "testuser" with password "secret"
|
||||||
And I have a context called "test context"
|
And I have a context called "test context"
|
||||||
And I have a repeat pattern called "run tests"
|
And I have a recurrence pattern called "run tests"
|
||||||
|
|
||||||
@javascript
|
@javascript
|
||||||
Scenario: Being able to select daily, weekly, monthly and yearly pattern
|
Scenario: Being able to select daily, weekly, monthly and yearly pattern
|
||||||
When I go to the repeating todos page
|
When I go to the recurring todos page
|
||||||
And I follow "Add a new recurring action"
|
And I follow "Add a new recurring action"
|
||||||
Then I should see the form for "Daily" recurrence pattern
|
Then I should see the form for "Daily" recurrence pattern
|
||||||
When I select "Weekly" recurrence pattern
|
When I select "Weekly" recurrence pattern
|
||||||
|
|
@ -26,27 +26,27 @@ Feature: Manage recurring todos
|
||||||
Then I should see the form for "Daily" recurrence pattern
|
Then I should see the form for "Daily" recurrence pattern
|
||||||
|
|
||||||
@javascript
|
@javascript
|
||||||
Scenario: I can mark a repeat pattern as starred
|
Scenario: I can mark a recurrence pattern as starred
|
||||||
When I go to the repeating todos page
|
When I go to the recurring todos page
|
||||||
And I star the pattern "run tests"
|
And I star the pattern "run tests"
|
||||||
Then the pattern "run tests" should be starred
|
Then the pattern "run tests" should be starred
|
||||||
|
|
||||||
@javascript
|
@javascript
|
||||||
Scenario: I can edit a repeat pattern
|
Scenario: I can edit a recurrence pattern
|
||||||
When I go to the repeating todos page
|
When I go to the recurring todos page
|
||||||
And I edit the name of the pattern "run tests" to "report test results"
|
And I edit the name of the pattern "run tests" to "report test results"
|
||||||
Then the pattern "report test results" should be in the state list "active"
|
Then the pattern "report test results" should be in the state list "active"
|
||||||
And I should not see "run tests"
|
And I should not see "run tests"
|
||||||
|
|
||||||
@javascript
|
@javascript
|
||||||
Scenario: I can delete a repeat pattern
|
Scenario: I can delete a recurrence pattern
|
||||||
When I go to the repeating todos page
|
When I go to the recurring todos page
|
||||||
And I delete the pattern "run tests"
|
And I delete the pattern "run tests"
|
||||||
And I should not see "run tests"
|
And I should not see "run tests"
|
||||||
|
|
||||||
@javascript
|
@javascript
|
||||||
Scenario: I can mark a repeat pattern as done
|
Scenario: I can mark a recurrence pattern as done
|
||||||
When I go to the repeating todos page
|
When I go to the recurring todos page
|
||||||
Then the pattern "run tests" should be in the state list "active"
|
Then the pattern "run tests" should be in the state list "active"
|
||||||
And the state list "completed" should be empty
|
And the state list "completed" should be empty
|
||||||
When I mark the pattern "run tests" as complete
|
When I mark the pattern "run tests" as complete
|
||||||
|
|
@ -54,9 +54,9 @@ Feature: Manage recurring todos
|
||||||
And the state list "active" should be empty
|
And the state list "active" should be empty
|
||||||
|
|
||||||
@javascript
|
@javascript
|
||||||
Scenario: I can reactivate a repeat pattern
|
Scenario: I can reactivate a recurrence pattern
|
||||||
Given I have a completed repeat pattern "I'm done"
|
Given I have a completed recurrence pattern "I'm done"
|
||||||
When I go to the repeating todos page
|
When I go to the recurring todos page
|
||||||
Then the pattern "I'm done" should be in the state list "completed"
|
Then the pattern "I'm done" should be in the state list "completed"
|
||||||
When I mark the pattern "I'm done" as active
|
When I mark the pattern "I'm done" as active
|
||||||
Then the pattern "I'm done" should be in the state list "active"
|
Then the pattern "I'm done" should be in the state list "active"
|
||||||
|
|
@ -67,11 +67,11 @@ Feature: Manage recurring todos
|
||||||
When I go to the home page
|
When I go to the home page
|
||||||
Then I should see the todo "run tests"
|
Then I should see the todo "run tests"
|
||||||
When I follow the recurring todo link of "run tests"
|
When I follow the recurring todo link of "run tests"
|
||||||
Then I should be on the repeating todos page
|
Then I should be on the recurring todos page
|
||||||
|
|
||||||
@javascript
|
@javascript
|
||||||
Scenario: Deleting a recurring todo with ending pattern will show message
|
Scenario: Deleting a recurring todo with ending pattern will show message
|
||||||
When I go to the repeating todos page
|
When I go to the recurring todos page
|
||||||
And I mark the pattern "run tests" as complete
|
And I mark the pattern "run tests" as complete
|
||||||
And I go to the home page
|
And I go to the home page
|
||||||
Then I should see "run tests"
|
Then I should see "run tests"
|
||||||
|
|
|
||||||
|
|
@ -111,27 +111,27 @@ Then /^I should see "([^"]*)" in the due next month container$/ do |todo_descrip
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
####### Repeat patterns #######
|
####### Recurrence patterns #######
|
||||||
|
|
||||||
Then /^I should (see|not see) "([^"]*)" in the active recurring todos container$/ do |visibility, repeat_pattern|
|
Then /^I should (see|not see) "([^"]*)" in the active recurring todos container$/ do |visibility, recurrence_pattern|
|
||||||
repeat = @current_user.recurring_todos.where(:description => repeat_pattern).first
|
recurrence = @current_user.recurring_todos.where(:description => recurrence_pattern).first
|
||||||
|
|
||||||
unless repeat.nil?
|
unless recurrence.nil?
|
||||||
xpath = "//div[@id='active_recurring_todos_container']//div[@id='recurring_todo_#{repeat.id}']"
|
xpath = "//div[@id='active_recurring_todos_container']//div[@id='recurring_todo_#{recurrence.id}']"
|
||||||
check_xpath_visibility(visibility, xpath)
|
check_xpath_visibility(visibility, xpath)
|
||||||
else
|
else
|
||||||
step "I should #{visibility} \"#{repeat_pattern}\""
|
step "I should #{visibility} \"#{recurrence_pattern}\""
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
Then /^I should (see|not see) "([^"]*)" in the completed recurring todos container$/ do |visible, repeat_pattern|
|
Then /^I should (see|not see) "([^"]*)" in the completed recurring todos container$/ do |visible, recurrence_pattern|
|
||||||
repeat = @current_user.todos.where(:description => repeat_pattern).first
|
recurrence = @current_user.todos.where(:description => recurrence_pattern).first
|
||||||
|
|
||||||
unless repeat.nil?
|
unless recurrence.nil?
|
||||||
xpath = "//div[@id='completed_recurring_todos_container']//div[@id='recurring_todo_#{repeat.id}']"
|
xpath = "//div[@id='completed_recurring_todos_container']//div[@id='recurring_todo_#{recurrence.id}']"
|
||||||
check_xpath_visibility(visible, xpath)
|
check_xpath_visibility(visible, xpath)
|
||||||
else
|
else
|
||||||
step "I should #{visible} \"#{repeat_pattern}\""
|
step "I should #{visible} \"#{recurrence_pattern}\""
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ When /^I delete the context "([^\"]*)"$/ do |context_name|
|
||||||
handle_js_confirm do
|
handle_js_confirm do
|
||||||
click_link "delete_context_#{context.id}"
|
click_link "delete_context_#{context.id}"
|
||||||
end
|
end
|
||||||
expect(get_confirm_text).to eq("Are you sure that you want to delete the context '#{context_name}'? Be aware that this will also delete all (repeating) actions in this context!")
|
expect(get_confirm_text).to eq("Are you sure that you want to delete the context '#{context_name}'? Be aware that this will also delete all (recurring) actions in this context!")
|
||||||
|
|
||||||
# wait until the context is removed
|
# wait until the context is removed
|
||||||
expect(page).to_not have_css("a#delete_context_#{context.id}")
|
expect(page).to_not have_css("a#delete_context_#{context.id}")
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
Given /^I have a repeat pattern called "([^"]*)"$/ do |pattern_name|
|
Given /^I have a recurrence pattern called "([^"]*)"$/ do |pattern_name|
|
||||||
context = @current_user.contexts.first
|
context = @current_user.contexts.first
|
||||||
|
|
||||||
@recurring_todo = @current_user.recurring_todos.create!(
|
@recurring_todo = @current_user.recurring_todos.create!(
|
||||||
|
|
@ -21,15 +21,15 @@ Given /^I have a repeat pattern called "([^"]*)"$/ do |pattern_name|
|
||||||
:recurring_todo_id => @recurring_todo.id)
|
:recurring_todo_id => @recurring_todo.id)
|
||||||
end
|
end
|
||||||
|
|
||||||
Given /^I have a completed repeat pattern "([^"]*)"$/ do |pattern_name|
|
Given /^I have a completed recurrence pattern "([^"]*)"$/ do |pattern_name|
|
||||||
step "I have a repeat pattern called \"#{pattern_name}\""
|
step "I have a recurrence pattern called \"#{pattern_name}\""
|
||||||
@recurring_todo.toggle_completion!
|
@recurring_todo.toggle_completion!
|
||||||
expect(@recurring_todo.completed?).to be true
|
expect(@recurring_todo.completed?).to be true
|
||||||
end
|
end
|
||||||
|
|
||||||
Given /^I have (\d+) completed repeat patterns$/ do |number_of_patterns|
|
Given /^I have (\d+) completed recurrence patterns$/ do |number_of_patterns|
|
||||||
1.upto number_of_patterns.to_i do |i|
|
1.upto number_of_patterns.to_i do |i|
|
||||||
step "I have a completed repeat pattern \"Repeating Todo #{i}\""
|
step "I have a completed recurrence pattern \"Recurring Todo #{i}\""
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -74,7 +74,7 @@ module NavigationHelpers
|
||||||
projects_path(options)
|
projects_path(options)
|
||||||
when /the manage users page/
|
when /the manage users page/
|
||||||
users_path(options)
|
users_path(options)
|
||||||
when /the repeating todos page/
|
when /the recurring todos page/
|
||||||
recurring_todos_path(options)
|
recurring_todos_path(options)
|
||||||
when /the integrations page/
|
when /the integrations page/
|
||||||
integrations_path(options)
|
integrations_path(options)
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@ Feature: Show done
|
||||||
When I go to the done page
|
When I go to the done page
|
||||||
Then I should see "Last Completed Actions"
|
Then I should see "Last Completed Actions"
|
||||||
And I should see "Last Completed Projects"
|
And I should see "Last Completed Projects"
|
||||||
And I should see "Last Completed Repeating Actions"
|
And I should see "Last Completed Recurring Actions"
|
||||||
|
|
||||||
Scenario Outline: Page with actions links to show all completed actions
|
Scenario Outline: Page with actions links to show all completed actions
|
||||||
When I go to the <page>
|
When I go to the <page>
|
||||||
|
|
@ -95,7 +95,7 @@ Feature: Show done
|
||||||
And the page should be "2"
|
And the page should be "2"
|
||||||
|
|
||||||
Scenario: The recurring todos page shows a link to all completed recurring todos
|
Scenario: The recurring todos page shows a link to all completed recurring todos
|
||||||
Given I have a completed repeat pattern "finished"
|
Given I have a completed recurrence pattern "finished"
|
||||||
When I go to the recurring todos page
|
When I go to the recurring todos page
|
||||||
Then I should see "finished"
|
Then I should see "finished"
|
||||||
And I should see "Show all"
|
And I should see "Show all"
|
||||||
|
|
@ -104,7 +104,7 @@ Feature: Show done
|
||||||
And I should see "finished"
|
And I should see "finished"
|
||||||
|
|
||||||
Scenario: I can browse all completed recurring todos by page
|
Scenario: I can browse all completed recurring todos by page
|
||||||
Given I have 40 completed repeat patterns
|
Given I have 40 completed recurrence patterns
|
||||||
When I go to the recurring todos page
|
When I go to the recurring todos page
|
||||||
And I follow "Show all"
|
And I follow "Show all"
|
||||||
Then I should see the page selector
|
Then I should see the page selector
|
||||||
|
|
@ -115,7 +115,7 @@ Feature: Show done
|
||||||
|
|
||||||
@javascript
|
@javascript
|
||||||
Scenario: I can toggle a done recurring todo active from done page
|
Scenario: I can toggle a done recurring todo active from done page
|
||||||
Given I have a completed repeat pattern "test pattern"
|
Given I have a completed recurrence pattern "test pattern"
|
||||||
When I go to the done recurring todos page
|
When I go to the done recurring todos page
|
||||||
Then I should see "test pattern"
|
Then I should see "test pattern"
|
||||||
When I mark the pattern "test pattern" as active
|
When I mark the pattern "test pattern" as active
|
||||||
|
|
@ -125,7 +125,7 @@ Feature: Show done
|
||||||
|
|
||||||
@javascript
|
@javascript
|
||||||
Scenario: I can delete a recurring todo from the done page
|
Scenario: I can delete a recurring todo from the done page
|
||||||
Given I have a completed repeat pattern "test pattern"
|
Given I have a completed recurrence pattern "test pattern"
|
||||||
When I go to the done recurring todos page
|
When I go to the done recurring todos page
|
||||||
Then I should see "test pattern"
|
Then I should see "test pattern"
|
||||||
When I delete the pattern "test pattern"
|
When I delete the pattern "test pattern"
|
||||||
|
|
|
||||||
|
|
@ -37,7 +37,7 @@ class RecurringTodosControllerTest < ActionController::TestCase
|
||||||
{
|
{
|
||||||
"daily_every_x_days"=>"1",
|
"daily_every_x_days"=>"1",
|
||||||
"daily_selector"=>"daily_every_x_day",
|
"daily_selector"=>"daily_every_x_day",
|
||||||
"description"=>"new recurring pattern",
|
"description"=>"new recurrence pattern",
|
||||||
"end_date" => "31/08/2010",
|
"end_date" => "31/08/2010",
|
||||||
"ends_on" => "ends_on_end_date",
|
"ends_on" => "ends_on_end_date",
|
||||||
"monthly_day_of_week" => "1",
|
"monthly_day_of_week" => "1",
|
||||||
|
|
@ -122,7 +122,7 @@ class RecurringTodosControllerTest < ActionController::TestCase
|
||||||
login_as(:admin_user)
|
login_as(:admin_user)
|
||||||
|
|
||||||
# check new rec todo is not there
|
# check new rec todo is not there
|
||||||
assert_nil RecurringTodo.where(:description => "new recurring pattern").first
|
assert_nil RecurringTodo.where(:description => "new recurrence pattern").first
|
||||||
|
|
||||||
put :create,
|
put :create,
|
||||||
"context_name"=>"library",
|
"context_name"=>"library",
|
||||||
|
|
@ -131,7 +131,7 @@ class RecurringTodosControllerTest < ActionController::TestCase
|
||||||
{
|
{
|
||||||
"daily_every_x_days"=>"1",
|
"daily_every_x_days"=>"1",
|
||||||
"daily_selector"=>"daily_every_x_day",
|
"daily_selector"=>"daily_every_x_day",
|
||||||
"description"=>"new recurring pattern",
|
"description"=>"new recurrence pattern",
|
||||||
"end_date" => "31/08/2010",
|
"end_date" => "31/08/2010",
|
||||||
"ends_on" => "ends_on_end_date",
|
"ends_on" => "ends_on_end_date",
|
||||||
"monthly_day_of_week" => "1",
|
"monthly_day_of_week" => "1",
|
||||||
|
|
@ -158,7 +158,7 @@ class RecurringTodosControllerTest < ActionController::TestCase
|
||||||
},
|
},
|
||||||
"tag_list"=>"one, two, three, four", :format => :js
|
"tag_list"=>"one, two, three, four", :format => :js
|
||||||
|
|
||||||
new_rec_todo = RecurringTodo.where(:description => "new recurring pattern").first
|
new_rec_todo = RecurringTodo.where(:description => "new recurrence pattern").first
|
||||||
|
|
||||||
assert_not_nil new_rec_todo
|
assert_not_nil new_rec_todo
|
||||||
|
|
||||||
|
|
@ -245,7 +245,7 @@ class RecurringTodosControllerTest < ActionController::TestCase
|
||||||
{
|
{
|
||||||
"daily_every_x_days"=>"1",
|
"daily_every_x_days"=>"1",
|
||||||
"daily_selector"=>"daily_every_x_day",
|
"daily_selector"=>"daily_every_x_day",
|
||||||
"description"=>"new recurring pattern",
|
"description"=>"new recurrence pattern",
|
||||||
"end_date" => "",
|
"end_date" => "",
|
||||||
"ends_on" => "no_end_date",
|
"ends_on" => "no_end_date",
|
||||||
"monthly_day_of_week" => "1",
|
"monthly_day_of_week" => "1",
|
||||||
|
|
@ -278,7 +278,7 @@ class RecurringTodosControllerTest < ActionController::TestCase
|
||||||
assert_equal orig_todo_count+1, Todo.count
|
assert_equal orig_todo_count+1, Todo.count
|
||||||
|
|
||||||
# find the newly created todo
|
# find the newly created todo
|
||||||
new_todo = Todo.where(:description => "new recurring pattern").first
|
new_todo = Todo.where(:description => "new recurrence pattern").first
|
||||||
assert !new_todo.nil?
|
assert !new_todo.nil?
|
||||||
|
|
||||||
# the date should be 31 march 2013
|
# the date should be 31 march 2013
|
||||||
|
|
@ -299,7 +299,7 @@ class RecurringTodosControllerTest < ActionController::TestCase
|
||||||
{
|
{
|
||||||
"daily_every_x_days"=>"1",
|
"daily_every_x_days"=>"1",
|
||||||
"daily_selector"=>"daily_every_x_day",
|
"daily_selector"=>"daily_every_x_day",
|
||||||
"description"=>"new recurring pattern",
|
"description"=>"new recurrence pattern",
|
||||||
"end_date" => "",
|
"end_date" => "",
|
||||||
"ends_on" => "no_end_date",
|
"ends_on" => "no_end_date",
|
||||||
"monthly_day_of_week" => "1",
|
"monthly_day_of_week" => "1",
|
||||||
|
|
@ -332,7 +332,7 @@ class RecurringTodosControllerTest < ActionController::TestCase
|
||||||
assert_equal orig_todo_count+1, Todo.count
|
assert_equal orig_todo_count+1, Todo.count
|
||||||
|
|
||||||
# find the newly created recurring todo
|
# find the newly created recurring todo
|
||||||
recurring_todo = RecurringTodo.where(:description => "new recurring pattern").first
|
recurring_todo = RecurringTodo.where(:description => "new recurrence pattern").first
|
||||||
assert !recurring_todo.nil?
|
assert !recurring_todo.nil?
|
||||||
|
|
||||||
assert_equal "due_date", recurring_todo.target
|
assert_equal "due_date", recurring_todo.target
|
||||||
|
|
@ -351,7 +351,7 @@ class RecurringTodosControllerTest < ActionController::TestCase
|
||||||
{
|
{
|
||||||
"daily_every_x_days"=>"1",
|
"daily_every_x_days"=>"1",
|
||||||
"daily_selector"=>"daily_every_x_day",
|
"daily_selector"=>"daily_every_x_day",
|
||||||
"description"=>"new recurring pattern",
|
"description"=>"new recurrence pattern",
|
||||||
"end_date" => nil,
|
"end_date" => nil,
|
||||||
"ends_on" => "no_end_date",
|
"ends_on" => "no_end_date",
|
||||||
"monthly_day_of_week" => "2",
|
"monthly_day_of_week" => "2",
|
||||||
|
|
@ -378,7 +378,7 @@ class RecurringTodosControllerTest < ActionController::TestCase
|
||||||
},
|
},
|
||||||
"tag_list"=>"one, two, three, four", format: :js
|
"tag_list"=>"one, two, three, four", format: :js
|
||||||
|
|
||||||
assert_equal "new recurring pattern", assigns['recurring_todo'].description
|
assert_equal "new recurrence pattern", assigns['recurring_todo'].description
|
||||||
assert_equal "2013-01-02 00:00:00 +0000", assigns['recurring_todo'].start_from.to_s
|
assert_equal "2013-01-02 00:00:00 +0000", assigns['recurring_todo'].start_from.to_s
|
||||||
todo = assigns['recurring_todo'].todos.first
|
todo = assigns['recurring_todo'].todos.first
|
||||||
assert_equal "2013-01-02 00:00:00 +0000", todo.show_from.to_s
|
assert_equal "2013-01-02 00:00:00 +0000", todo.show_from.to_s
|
||||||
|
|
@ -393,12 +393,12 @@ class RecurringTodosControllerTest < ActionController::TestCase
|
||||||
|
|
||||||
assert_not_nil todo
|
assert_not_nil todo
|
||||||
assert_equal "active", todo.state, "todo should be active"
|
assert_equal "active", todo.state, "todo should be active"
|
||||||
assert_equal "active", rt.state, "repeat pattern should be active"
|
assert_equal "active", rt.state, "recurrence pattern should be active"
|
||||||
|
|
||||||
get :index # will call find_and_inactivate
|
get :index # will call find_and_inactivate
|
||||||
|
|
||||||
rt.reload
|
rt.reload
|
||||||
assert_equal "active", rt.state, "repeat pattern should still be active"
|
assert_equal "active", rt.state, "recurrence pattern should still be active"
|
||||||
|
|
||||||
# disconnect todo from pattern thus leaving the pattern without
|
# disconnect todo from pattern thus leaving the pattern without
|
||||||
# any active todos, but in active state
|
# any active todos, but in active state
|
||||||
|
|
@ -408,11 +408,11 @@ class RecurringTodosControllerTest < ActionController::TestCase
|
||||||
|
|
||||||
todo.reload
|
todo.reload
|
||||||
rt.reload
|
rt.reload
|
||||||
assert_equal "active", rt.state, "repeat pattern should still be active and not changed"
|
assert_equal "active", rt.state, "recurrence pattern should still be active and not changed"
|
||||||
|
|
||||||
get :index
|
get :index
|
||||||
rt.reload
|
rt.reload
|
||||||
assert_equal "completed", rt.state, "repeat pattern should be completed"
|
assert_equal "completed", rt.state, "recurrence pattern should be completed"
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_update_recurring_todo
|
def test_update_recurring_todo
|
||||||
|
|
|
||||||
|
|
@ -676,7 +676,7 @@ class TodosControllerTest < ActionController::TestCase
|
||||||
count = Todo.where(:recurring_todo_id => recurring_todo_1.id, :state => 'active').count
|
count = Todo.where(:recurring_todo_id => recurring_todo_1.id, :state => 'active').count
|
||||||
assert_equal 1, count
|
assert_equal 1, count
|
||||||
|
|
||||||
# check there is a new todo linked to the recurring pattern
|
# check there is a new todo linked to the recurrence pattern
|
||||||
next_todo = Todo.where(:recurring_todo_id => recurring_todo_1.id, :state => 'active').first
|
next_todo = Todo.where(:recurring_todo_id => recurring_todo_1.id, :state => 'active').first
|
||||||
assert_equal "Call Bill Gates every day", next_todo.description
|
assert_equal "Call Bill Gates every day", next_todo.description
|
||||||
# check that the new todo is not the same as todo_1
|
# check that the new todo is not the same as todo_1
|
||||||
|
|
@ -706,7 +706,7 @@ class TodosControllerTest < ActionController::TestCase
|
||||||
count = Todo.where(:recurring_todo_id => recurring_todo_1.id).count
|
count = Todo.where(:recurring_todo_id => recurring_todo_1.id).count
|
||||||
assert_equal 3, count
|
assert_equal 3, count
|
||||||
|
|
||||||
# check there is a new todo linked to the recurring pattern in the tickler
|
# check there is a new todo linked to the recurrence pattern in the tickler
|
||||||
next_todo = Todo.where(:recurring_todo_id => recurring_todo_1.id, :state => 'deferred').first
|
next_todo = Todo.where(:recurring_todo_id => recurring_todo_1.id, :state => 'deferred').first
|
||||||
assert !next_todo.nil?
|
assert !next_todo.nil?
|
||||||
assert_equal "Call Bill Gates every day", next_todo.description
|
assert_equal "Call Bill Gates every day", next_todo.description
|
||||||
|
|
@ -758,16 +758,16 @@ class TodosControllerTest < ActionController::TestCase
|
||||||
|
|
||||||
tomorrow = Time.zone.now + 1.day
|
tomorrow = Time.zone.now + 1.day
|
||||||
|
|
||||||
# Given a repeat pattern with recurring date set to tomorrow
|
# Given a recurrence pattern with recurring date set to tomorrow
|
||||||
recurring_todo_1 = RecurringTodo.find(5)
|
recurring_todo_1 = RecurringTodo.find(5)
|
||||||
recurring_todo_1.every_other1 = tomorrow.day
|
recurring_todo_1.every_other1 = tomorrow.day
|
||||||
recurring_todo_1.every_other2 = tomorrow.month
|
recurring_todo_1.every_other2 = tomorrow.month
|
||||||
recurring_todo_1.save
|
recurring_todo_1.save
|
||||||
|
|
||||||
# Given a recurring todo (todo) that belongs to the repeat pattern (recurring_todo_1) and is due tomorrow
|
# Given a recurring todo (todo) that belongs to the recurrence pattern (recurring_todo_1) and is due tomorrow
|
||||||
todo = Todo.where(:recurring_todo_id => 1).first
|
todo = Todo.where(:recurring_todo_id => 1).first
|
||||||
assert todo.from_recurring_todo?
|
assert todo.from_recurring_todo?
|
||||||
todo.recurring_todo_id = 5 # rewire todo to the repeat pattern above
|
todo.recurring_todo_id = 5 # rewire todo to the recurrence pattern above
|
||||||
todo.due = tomorrow
|
todo.due = tomorrow
|
||||||
todo.save!
|
todo.save!
|
||||||
|
|
||||||
|
|
@ -776,7 +776,7 @@ class TodosControllerTest < ActionController::TestCase
|
||||||
todo = Todo.find(todo.id) #reload does not seem to work here
|
todo = Todo.find(todo.id) #reload does not seem to work here
|
||||||
assert todo.completed?
|
assert todo.completed?
|
||||||
|
|
||||||
# Then there should not be an active todo belonging to the repeat pattern
|
# Then there should not be an active todo belonging to the recurrence pattern
|
||||||
next_todo = Todo.where(:recurring_todo_id => recurring_todo_1.id, :state => 'active').first
|
next_todo = Todo.where(:recurring_todo_id => recurring_todo_1.id, :state => 'active').first
|
||||||
assert next_todo.nil?
|
assert next_todo.nil?
|
||||||
|
|
||||||
|
|
@ -794,7 +794,7 @@ class TodosControllerTest < ActionController::TestCase
|
||||||
|
|
||||||
tomorrow = Time.zone.now + 1.day
|
tomorrow = Time.zone.now + 1.day
|
||||||
|
|
||||||
# Given a monthly repeat pattern
|
# Given a monthly recurrence pattern
|
||||||
recurring_todo = RecurringTodo.find(5)
|
recurring_todo = RecurringTodo.find(5)
|
||||||
recurring_todo.target = "due_date"
|
recurring_todo.target = "due_date"
|
||||||
recurring_todo.recurring_period = "monthly"
|
recurring_todo.recurring_period = "monthly"
|
||||||
|
|
@ -802,10 +802,10 @@ class TodosControllerTest < ActionController::TestCase
|
||||||
recurring_todo.every_other2 = 1
|
recurring_todo.every_other2 = 1
|
||||||
recurring_todo.save
|
recurring_todo.save
|
||||||
|
|
||||||
# Given a recurring todo (todo) that belongs to the repeat pattern (recurring_todo) and is due tomorrow
|
# Given a recurring todo (todo) that belongs to the recurrence pattern (recurring_todo) and is due tomorrow
|
||||||
todo = Todo.where(:recurring_todo_id => 1).first
|
todo = Todo.where(:recurring_todo_id => 1).first
|
||||||
assert todo.from_recurring_todo?
|
assert todo.from_recurring_todo?
|
||||||
todo.recurring_todo_id = 5 # rewire todo to the repeat pattern above
|
todo.recurring_todo_id = 5 # rewire todo to the recurrence pattern above
|
||||||
todo.due = tomorrow
|
todo.due = tomorrow
|
||||||
todo.save!
|
todo.save!
|
||||||
|
|
||||||
|
|
@ -814,7 +814,7 @@ class TodosControllerTest < ActionController::TestCase
|
||||||
todo.reload
|
todo.reload
|
||||||
assert todo.completed?
|
assert todo.completed?
|
||||||
|
|
||||||
# Then there should not be an active todo belonging to the repeat pattern
|
# Then there should not be an active todo belonging to the recurrence pattern
|
||||||
next_todo = Todo.where(:recurring_todo_id => recurring_todo.id, :state => 'active').first
|
next_todo = Todo.where(:recurring_todo_id => recurring_todo.id, :state => 'active').first
|
||||||
assert next_todo.nil?
|
assert next_todo.nil?
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ require 'test_helper'
|
||||||
|
|
||||||
module RecurringTodos
|
module RecurringTodos
|
||||||
|
|
||||||
class AbstractRepeatPatternTest < ActiveSupport::TestCase
|
class AbstractRecurrencePatternTest < ActiveSupport::TestCase
|
||||||
fixtures :users
|
fixtures :users
|
||||||
|
|
||||||
def setup
|
def setup
|
||||||
|
|
@ -14,7 +14,7 @@ module RecurringTodos
|
||||||
rt = @admin.recurring_todos.first
|
rt = @admin.recurring_todos.first
|
||||||
|
|
||||||
pattern = rt.pattern
|
pattern = rt.pattern
|
||||||
assert pattern.is_a?(DailyRepeatPattern), "recurring todo should have daily pattern"
|
assert pattern.is_a?(DailyRecurrencePattern), "recurring todo should have daily pattern"
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_validation_on_due_date
|
def test_validation_on_due_date
|
||||||
|
|
@ -156,7 +156,7 @@ module RecurringTodos
|
||||||
create_pattern(attributes.reverse_merge({
|
create_pattern(attributes.reverse_merge({
|
||||||
'recurring_period' => 'weekly',
|
'recurring_period' => 'weekly',
|
||||||
'recurring_target' => 'due_date',
|
'recurring_target' => 'due_date',
|
||||||
'description' => 'a repeating todo', # generic
|
'description' => 'a recurring todo', # generic
|
||||||
'ends_on' => 'ends_on_end_date',
|
'ends_on' => 'ends_on_end_date',
|
||||||
'end_date' => Time.zone.now + 1.week,
|
'end_date' => Time.zone.now + 1.week,
|
||||||
'context_id' => @admin.contexts.first.id,
|
'context_id' => @admin.contexts.first.id,
|
||||||
|
|
@ -5,7 +5,7 @@ module RecurringTodos
|
||||||
class AbstractRecurringTodosBuilderTest < ActiveSupport::TestCase
|
class AbstractRecurringTodosBuilderTest < ActiveSupport::TestCase
|
||||||
fixtures :users
|
fixtures :users
|
||||||
|
|
||||||
class TestRepeatPattern < AbstractRepeatPattern
|
class TestRecurringPattern < AbstractRecurrencePattern
|
||||||
def selector_key
|
def selector_key
|
||||||
'test'
|
'test'
|
||||||
end
|
end
|
||||||
|
|
@ -33,7 +33,7 @@ module RecurringTodos
|
||||||
})
|
})
|
||||||
|
|
||||||
assert_raise(Exception, "should have exception since we are using abstract builder") do
|
assert_raise(Exception, "should have exception since we are using abstract builder") do
|
||||||
builder = AbstractRecurringTodosBuilder.new(@admin, attributes, DailyRepeatPattern)
|
builder = AbstractRecurringTodosBuilder.new(@admin, attributes, DailyRecurrencePattern)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ require 'test_helper'
|
||||||
|
|
||||||
module RecurringTodos
|
module RecurringTodos
|
||||||
|
|
||||||
class DailyRepeatPatternTest < ActiveSupport::TestCase
|
class DailyRecurrencePatternTest < ActiveSupport::TestCase
|
||||||
fixtures :users
|
fixtures :users
|
||||||
|
|
||||||
def setup
|
def setup
|
||||||
|
|
@ -17,7 +17,7 @@ module RecurringTodos
|
||||||
def test_filter_non_daily_attributes
|
def test_filter_non_daily_attributes
|
||||||
attributes = {
|
attributes = {
|
||||||
'recurring_period' => 'daily',
|
'recurring_period' => 'daily',
|
||||||
'description' => 'a repeating todo', # generic
|
'description' => 'a recurring todo', # generic
|
||||||
'daily_selector' => 'daily_every_x_day', # daily specific
|
'daily_selector' => 'daily_every_x_day', # daily specific
|
||||||
'bla_bla' => 'go away' # irrelevant for daily
|
'bla_bla' => 'go away' # irrelevant for daily
|
||||||
}
|
}
|
||||||
|
|
@ -27,7 +27,7 @@ module RecurringTodos
|
||||||
assert_nil result.get('bla_bla'), "bla_bla should be filtered"
|
assert_nil result.get('bla_bla'), "bla_bla should be filtered"
|
||||||
assert_nil result.get(:bla_bla), "bla_bla should be filtered"
|
assert_nil result.get(:bla_bla), "bla_bla should be filtered"
|
||||||
assert_equal false, result.get(:only_work_days), "daily attributes should be preserved"
|
assert_equal false, result.get(:only_work_days), "daily attributes should be preserved"
|
||||||
assert_equal "a repeating todo", result.get(:description), "description should be preserved"
|
assert_equal "a recurring todo", result.get(:description), "description should be preserved"
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_valid_selector
|
def test_valid_selector
|
||||||
|
|
@ -54,7 +54,7 @@ module RecurringTodos
|
||||||
def test_mapping_of_attributes
|
def test_mapping_of_attributes
|
||||||
attributes = Tracks::AttributeHandler.new(@admin, {
|
attributes = Tracks::AttributeHandler.new(@admin, {
|
||||||
'recurring_period' => 'daily',
|
'recurring_period' => 'daily',
|
||||||
'description' => 'a repeating todo', # generic
|
'description' => 'a recurring todo', # generic
|
||||||
'daily_selector' => 'daily_every_x_day', # daily specific --> mapped to only_work_days=false
|
'daily_selector' => 'daily_every_x_day', # daily specific --> mapped to only_work_days=false
|
||||||
'daily_every_x_days' => '5' # mapped to every_other1
|
'daily_every_x_days' => '5' # mapped to every_other1
|
||||||
})
|
})
|
||||||
|
|
@ -66,7 +66,7 @@ module RecurringTodos
|
||||||
|
|
||||||
attributes = Tracks::AttributeHandler.new(@admin, {
|
attributes = Tracks::AttributeHandler.new(@admin, {
|
||||||
'recurring_period' => 'daily',
|
'recurring_period' => 'daily',
|
||||||
'description' => 'a repeating todo', # generic
|
'description' => 'a recurring todo', # generic
|
||||||
'daily_selector' => 'daily_every_work_day', # daily specific --> mapped to only_work_days=true
|
'daily_selector' => 'daily_every_work_day', # daily specific --> mapped to only_work_days=true
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -13,11 +13,11 @@ module RecurringTodos
|
||||||
|
|
||||||
h = FormHelper.new(rt)
|
h = FormHelper.new(rt)
|
||||||
|
|
||||||
assert_equal 42, h.daily_every_x_days, "should be passed to DailyRepeatPattern"
|
assert_equal 42, h.daily_every_x_days, "should be passed to DailyRecurrencePattern"
|
||||||
assert_equal 42, h.weekly_every_x_week, "should be passed to WeeklyRepeatPattern"
|
assert_equal 42, h.weekly_every_x_week, "should be passed to WeeklyRecurrencePattern"
|
||||||
assert_equal 42, h.monthly_every_x_day, "should be passed to MonthlyRepeatPattern"
|
assert_equal 42, h.monthly_every_x_day, "should be passed to MonthlyRecurrencePattern"
|
||||||
assert_equal 42, h.yearly_every_x_day, "should be passed to YearlyRepeatPattern"
|
assert_equal 42, h.yearly_every_x_day, "should be passed to YearlyRecurrencePattern"
|
||||||
assert h.on_monday, "should be passed to WeeklyRepeatPattern"
|
assert h.on_monday, "should be passed to WeeklyRecurrencePattern"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ require 'test_helper'
|
||||||
|
|
||||||
module RecurringTodos
|
module RecurringTodos
|
||||||
|
|
||||||
class MonthlyRepeatPatternTest < ActiveSupport::TestCase
|
class MonthlyRecurrencePatternTest < ActiveSupport::TestCase
|
||||||
fixtures :users
|
fixtures :users
|
||||||
|
|
||||||
def setup
|
def setup
|
||||||
|
|
@ -13,7 +13,7 @@ module RecurringTodos
|
||||||
def test_attribute_mapping
|
def test_attribute_mapping
|
||||||
builder = RecurringTodosBuilder.new(@admin, {
|
builder = RecurringTodosBuilder.new(@admin, {
|
||||||
'recurring_period' => 'monthly',
|
'recurring_period' => 'monthly',
|
||||||
'description' => 'a repeating todo', # generic
|
'description' => 'a recurring todo', # generic
|
||||||
'recurring_target' => 'show_from_date',
|
'recurring_target' => 'show_from_date',
|
||||||
'ends_on' => 'ends_on_end_date',
|
'ends_on' => 'ends_on_end_date',
|
||||||
'end_date' => Time.zone.now + 1.week,
|
'end_date' => Time.zone.now + 1.week,
|
||||||
|
|
@ -28,7 +28,7 @@ module RecurringTodos
|
||||||
assert builder.save, "should save: #{builder.errors.full_messages}"
|
assert builder.save, "should save: #{builder.errors.full_messages}"
|
||||||
rt = builder.saved_recurring_todo
|
rt = builder.saved_recurring_todo
|
||||||
|
|
||||||
assert builder.pattern.is_a?(MonthlyRepeatPattern), "should be monthly pattern, but is #{builder.pattern.class}"
|
assert builder.pattern.is_a?(MonthlyRecurrencePattern), "should be monthly pattern, but is #{builder.pattern.class}"
|
||||||
assert builder.pattern.every_x_day?, "should be true for monthly_every_x_day"
|
assert builder.pattern.every_x_day?, "should be true for monthly_every_x_day"
|
||||||
assert 1, rt.recurrence_selector
|
assert 1, rt.recurrence_selector
|
||||||
|
|
||||||
|
|
@ -42,7 +42,7 @@ module RecurringTodos
|
||||||
def test_every_x_month
|
def test_every_x_month
|
||||||
builder = RecurringTodosBuilder.new(@admin, {
|
builder = RecurringTodosBuilder.new(@admin, {
|
||||||
'recurring_period' => 'monthly',
|
'recurring_period' => 'monthly',
|
||||||
'description' => 'a repeating todo', # generic
|
'description' => 'a recurring todo', # generic
|
||||||
'recurring_target' => 'show_from_date',
|
'recurring_target' => 'show_from_date',
|
||||||
'ends_on' => 'ends_on_end_date',
|
'ends_on' => 'ends_on_end_date',
|
||||||
'end_date' => Time.zone.now + 1.week,
|
'end_date' => Time.zone.now + 1.week,
|
||||||
|
|
@ -61,7 +61,7 @@ module RecurringTodos
|
||||||
|
|
||||||
builder = RecurringTodosBuilder.new(@admin, {
|
builder = RecurringTodosBuilder.new(@admin, {
|
||||||
'recurring_period' => 'monthly',
|
'recurring_period' => 'monthly',
|
||||||
'description' => 'a repeating todo', # generic
|
'description' => 'a recurring todo', # generic
|
||||||
'recurring_target' => 'show_from_date',
|
'recurring_target' => 'show_from_date',
|
||||||
'ends_on' => 'ends_on_end_date',
|
'ends_on' => 'ends_on_end_date',
|
||||||
'end_date' => Time.zone.now + 1.week,
|
'end_date' => Time.zone.now + 1.week,
|
||||||
|
|
@ -17,7 +17,7 @@ module RecurringTodos
|
||||||
def test_filter_non_daily_attributes
|
def test_filter_non_daily_attributes
|
||||||
attributes = {
|
attributes = {
|
||||||
'recurring_period' => 'monthly',
|
'recurring_period' => 'monthly',
|
||||||
'description' => 'a repeating todo', # generic
|
'description' => 'a recurring todo', # generic
|
||||||
'monthly_selector' => 'monthly_every_x_day', # monthly specific
|
'monthly_selector' => 'monthly_every_x_day', # monthly specific
|
||||||
'monthly_every_x_day' => 5, # should be preserved as :every_other1
|
'monthly_every_x_day' => 5, # should be preserved as :every_other1
|
||||||
'bla_bla' => 'go away' # irrelevant for daily
|
'bla_bla' => 'go away' # irrelevant for daily
|
||||||
|
|
@ -54,7 +54,7 @@ module RecurringTodos
|
||||||
def test_mapping_of_attributes
|
def test_mapping_of_attributes
|
||||||
attributes = Tracks::AttributeHandler.new(@admin, {
|
attributes = Tracks::AttributeHandler.new(@admin, {
|
||||||
'recurring_period' => 'monthly',
|
'recurring_period' => 'monthly',
|
||||||
'description' => 'a repeating todo', # generic
|
'description' => 'a recurring todo', # generic
|
||||||
'monthly_selector' => 'monthly_every_x_day', # monthly specific
|
'monthly_selector' => 'monthly_every_x_day', # monthly specific
|
||||||
'monthly_every_x_day' => '5', # mapped to :every_other1
|
'monthly_every_x_day' => '5', # mapped to :every_other1
|
||||||
'monthly_every_xth_day' => '7', # mapped to :every_other3
|
'monthly_every_xth_day' => '7', # mapped to :every_other3
|
||||||
|
|
@ -75,7 +75,7 @@ module RecurringTodos
|
||||||
|
|
||||||
attributes = Tracks::AttributeHandler.new(@admin, {
|
attributes = Tracks::AttributeHandler.new(@admin, {
|
||||||
'recurring_period' => 'monthly',
|
'recurring_period' => 'monthly',
|
||||||
'description' => 'a repeating todo', # generic
|
'description' => 'a recurring todo', # generic
|
||||||
'monthly_selector' => 'monthly_every_xth_day', # monthly specific
|
'monthly_selector' => 'monthly_every_xth_day', # monthly specific
|
||||||
'monthly_every_x_day' => '5', # mapped to :every_other1
|
'monthly_every_x_day' => '5', # mapped to :every_other1
|
||||||
'monthly_every_x_month' => '10', # not mapped
|
'monthly_every_x_month' => '10', # not mapped
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ require 'test_helper'
|
||||||
|
|
||||||
module RecurringTodos
|
module RecurringTodos
|
||||||
|
|
||||||
class WeeklyRepeatPatternTest < ActiveSupport::TestCase
|
class WeeklyRecurrencePatternTest < ActiveSupport::TestCase
|
||||||
fixtures :users
|
fixtures :users
|
||||||
|
|
||||||
def setup
|
def setup
|
||||||
|
|
@ -17,7 +17,7 @@ module RecurringTodos
|
||||||
def test_filter_non_daily_attributes
|
def test_filter_non_daily_attributes
|
||||||
attributes = {
|
attributes = {
|
||||||
'recurring_period' => 'weekly',
|
'recurring_period' => 'weekly',
|
||||||
'description' => 'a repeating todo', # generic
|
'description' => 'a recurring todo', # generic
|
||||||
'weekly_return_monday' => 'm', # weekly specific
|
'weekly_return_monday' => 'm', # weekly specific
|
||||||
'bla_bla' => 'go away' # irrelevant
|
'bla_bla' => 'go away' # irrelevant
|
||||||
}
|
}
|
||||||
|
|
@ -27,13 +27,13 @@ module RecurringTodos
|
||||||
assert_nil result.get('bla_bla'), "bla_bla should be filtered"
|
assert_nil result.get('bla_bla'), "bla_bla should be filtered"
|
||||||
assert_nil result.get(:bla_bla), "bla_bla should be filtered"
|
assert_nil result.get(:bla_bla), "bla_bla should be filtered"
|
||||||
assert_equal ' m ', result.get(:every_day), "weekly attributes should be preserved"
|
assert_equal ' m ', result.get(:every_day), "weekly attributes should be preserved"
|
||||||
assert_equal "a repeating todo", result.get(:description), "description should be preserved"
|
assert_equal "a recurring todo", result.get(:description), "description should be preserved"
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_attributes_to_filter
|
def test_attributes_to_filter
|
||||||
attributes = Tracks::AttributeHandler.new(@admin, {
|
attributes = Tracks::AttributeHandler.new(@admin, {
|
||||||
'recurring_period' => 'weekly',
|
'recurring_period' => 'weekly',
|
||||||
'description' => 'a repeating todo', # generic
|
'description' => 'a recurring todo', # generic
|
||||||
'weekly_return_monday' => 'm', # weekly specific
|
'weekly_return_monday' => 'm', # weekly specific
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
@ -46,7 +46,7 @@ module RecurringTodos
|
||||||
def test_mapping_of_attributes
|
def test_mapping_of_attributes
|
||||||
attributes = Tracks::AttributeHandler.new(@admin, {
|
attributes = Tracks::AttributeHandler.new(@admin, {
|
||||||
'recurring_period' => 'weekly',
|
'recurring_period' => 'weekly',
|
||||||
'description' => 'a repeating todo', # generic
|
'description' => 'a recurring todo', # generic
|
||||||
'weekly_every_x_week' => '5', # mapped to every_other1
|
'weekly_every_x_week' => '5', # mapped to every_other1
|
||||||
'weekly_return_monday' => 'm'
|
'weekly_return_monday' => 'm'
|
||||||
})
|
})
|
||||||
|
|
@ -60,7 +60,7 @@ module RecurringTodos
|
||||||
def test_map_day
|
def test_map_day
|
||||||
attributes = Tracks::AttributeHandler.new(@admin, {
|
attributes = Tracks::AttributeHandler.new(@admin, {
|
||||||
'recurring_period' => 'weekly',
|
'recurring_period' => 'weekly',
|
||||||
'description' => 'a repeating todo', # generic
|
'description' => 'a recurring todo', # generic
|
||||||
'weekly_every_x_week' => '5' # mapped to every_other1
|
'weekly_every_x_week' => '5' # mapped to every_other1
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ require 'test_helper'
|
||||||
|
|
||||||
module RecurringTodos
|
module RecurringTodos
|
||||||
|
|
||||||
class YearlyRepeatPatternTest < ActiveSupport::TestCase
|
class YearlyRecurrencePatternTest < ActiveSupport::TestCase
|
||||||
fixtures :users
|
fixtures :users
|
||||||
|
|
||||||
def setup
|
def setup
|
||||||
|
|
@ -13,7 +13,7 @@ module RecurringTodos
|
||||||
def test_attribute_mapping
|
def test_attribute_mapping
|
||||||
builder = RecurringTodosBuilder.new(@admin, {
|
builder = RecurringTodosBuilder.new(@admin, {
|
||||||
'recurring_period' => 'yearly',
|
'recurring_period' => 'yearly',
|
||||||
'description' => 'a repeating todo', # generic
|
'description' => 'a recurring todo', # generic
|
||||||
'recurring_target' => 'show_from_date',
|
'recurring_target' => 'show_from_date',
|
||||||
'ends_on' => 'ends_on_end_date',
|
'ends_on' => 'ends_on_end_date',
|
||||||
'end_date' => Time.zone.now + 1.week,
|
'end_date' => Time.zone.now + 1.week,
|
||||||
|
|
@ -30,7 +30,7 @@ module RecurringTodos
|
||||||
assert builder.save, "should save: #{builder.errors.full_messages}"
|
assert builder.save, "should save: #{builder.errors.full_messages}"
|
||||||
rt = builder.saved_recurring_todo
|
rt = builder.saved_recurring_todo
|
||||||
|
|
||||||
assert builder.pattern.is_a?(YearlyRepeatPattern), "should be yearly pattern, but is #{builder.pattern.class}"
|
assert builder.pattern.is_a?(YearlyRecurrencePattern), "should be yearly pattern, but is #{builder.pattern.class}"
|
||||||
|
|
||||||
assert_equal rt.recurrence_selector, builder.pattern.recurrence_selector
|
assert_equal rt.recurrence_selector, builder.pattern.recurrence_selector
|
||||||
assert_equal rt.every_other2, builder.pattern.month_of_year
|
assert_equal rt.every_other2, builder.pattern.month_of_year
|
||||||
|
|
@ -17,7 +17,7 @@ module RecurringTodos
|
||||||
def test_filter_non_daily_attributes
|
def test_filter_non_daily_attributes
|
||||||
attributes = {
|
attributes = {
|
||||||
'recurring_period' => 'yearly',
|
'recurring_period' => 'yearly',
|
||||||
'description' => 'a repeating todo', # generic
|
'description' => 'a recurring todo', # generic
|
||||||
'yearly_selector' => 'yearly_every_x_day', # daily specific
|
'yearly_selector' => 'yearly_every_x_day', # daily specific
|
||||||
'yearly_month_of_year' => '1', # mapped to evert_other2 because yearly_selector is yearly_every_x_day
|
'yearly_month_of_year' => '1', # mapped to evert_other2 because yearly_selector is yearly_every_x_day
|
||||||
'bla_bla' => 'go away' # irrelevant for daily
|
'bla_bla' => 'go away' # irrelevant for daily
|
||||||
|
|
@ -28,7 +28,7 @@ module RecurringTodos
|
||||||
assert_nil result.get('bla_bla'), "bla_bla should be filtered"
|
assert_nil result.get('bla_bla'), "bla_bla should be filtered"
|
||||||
assert_nil result.get(:bla_bla), "bla_bla should be filtered"
|
assert_nil result.get(:bla_bla), "bla_bla should be filtered"
|
||||||
assert_equal '1', result.get(:every_other2), "yearly attributes should be preserved"
|
assert_equal '1', result.get(:every_other2), "yearly attributes should be preserved"
|
||||||
assert_equal "a repeating todo", result.get(:description), "description should be preserved"
|
assert_equal "a recurring todo", result.get(:description), "description should be preserved"
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_valid_selector
|
def test_valid_selector
|
||||||
|
|
@ -55,7 +55,7 @@ module RecurringTodos
|
||||||
def test_mapping_of_attributes
|
def test_mapping_of_attributes
|
||||||
attributes = {
|
attributes = {
|
||||||
'recurring_period' => 'yearly',
|
'recurring_period' => 'yearly',
|
||||||
'description' => 'a repeating todo', # generic
|
'description' => 'a recurring todo', # generic
|
||||||
'yearly_selector' => 'yearly_every_x_day', # yearly specific
|
'yearly_selector' => 'yearly_every_x_day', # yearly specific
|
||||||
'yearly_every_x_day' => '5', # mapped to every_other1
|
'yearly_every_x_day' => '5', # mapped to every_other1
|
||||||
'yearly_every_xth_day' => '7', # mapped to every_other3
|
'yearly_every_xth_day' => '7', # mapped to every_other3
|
||||||
|
|
@ -73,7 +73,7 @@ module RecurringTodos
|
||||||
|
|
||||||
attributes = {
|
attributes = {
|
||||||
'recurring_period' => 'yearly',
|
'recurring_period' => 'yearly',
|
||||||
'description' => 'a repeating todo', # generic
|
'description' => 'a recurring todo', # generic
|
||||||
'yearly_selector' => 'yearly_every_xth_day', # daily specific --> mapped to only_work_days=false
|
'yearly_selector' => 'yearly_every_xth_day', # daily specific --> mapped to only_work_days=false
|
||||||
'yearly_month_of_year' => '1', # ignored because yearly_selector is yearly_every_xth_day
|
'yearly_month_of_year' => '1', # ignored because yearly_selector is yearly_every_xth_day
|
||||||
'yearly_month_of_year2' => '2' # mapped to evert_other2 because yearly_selector is yearly_every_xth_day
|
'yearly_month_of_year2' => '2' # mapped to evert_other2 because yearly_selector is yearly_every_xth_day
|
||||||
|
|
|
||||||
|
|
@ -385,7 +385,7 @@ class UserTest < ActiveSupport::TestCase
|
||||||
assert_equal expect_todos_count, Todo.count, "expected #{nr_of_todos} todos to be gone"
|
assert_equal expect_todos_count, Todo.count, "expected #{nr_of_todos} todos to be gone"
|
||||||
assert_equal expect_projects_count, Project.count, "expected #{nr_of_projects} projects to be gone"
|
assert_equal expect_projects_count, Project.count, "expected #{nr_of_projects} projects to be gone"
|
||||||
assert_equal expect_contexts_count, Context.count, "expected #{nr_of_contexts} contexts to be gone"
|
assert_equal expect_contexts_count, Context.count, "expected #{nr_of_contexts} contexts to be gone"
|
||||||
assert_equal expect_rec_todos_count, RecurringTodo.count, "expected #{nr_of_rec_todos} repeating todos to be gone"
|
assert_equal expect_rec_todos_count, RecurringTodo.count, "expected #{nr_of_rec_todos} recurring todos to be gone"
|
||||||
assert_equal expect_notes_count, Note.count, "expected #{nr_of_notes} notes to be gone"
|
assert_equal expect_notes_count, Note.count, "expected #{nr_of_notes} notes to be gone"
|
||||||
assert_equal expect_deps_count, Dependency.count, "expected #{nr_of_deps} dependencies to be gone"
|
assert_equal expect_deps_count, Dependency.count, "expected #{nr_of_deps} dependencies to be gone"
|
||||||
end
|
end
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue