2019-04-11 09:53:53 -05:00
|
|
|
require 'test_helper'
|
|
|
|
|
|
|
|
|
|
module Todos
|
|
|
|
|
class UndoneTodosQueryTest < ActiveSupport::TestCase
|
|
|
|
|
def test_requires_a_user
|
|
|
|
|
assert_raises(ArgumentError) { UndoneTodosQuery.new }
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def test_default_query_is_all_active_not_hidden_todos
|
|
|
|
|
user = users(:other_user)
|
|
|
|
|
undone_todos = UndoneTodosQuery.new(user).query({})
|
|
|
|
|
expected = [todos(:package_delivered),
|
|
|
|
|
todos(:buy_tix),
|
|
|
|
|
todos(:pal_confirmation)]
|
|
|
|
|
assert_equal expected, undone_todos.to_a
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def test_filtering_by_done
|
|
|
|
|
user = users(:other_user)
|
|
|
|
|
# This gets everything done from a week ago until now
|
|
|
|
|
undone_todos = UndoneTodosQuery.new(user).query(done: '7')
|
|
|
|
|
expected = [todos(:assemble_furniture)]
|
|
|
|
|
assert_equal expected, undone_todos.to_a
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def test_limiting_results
|
|
|
|
|
user = users(:other_user)
|
|
|
|
|
undone_todos = UndoneTodosQuery.new(user).query(limit: '1')
|
|
|
|
|
expected = [todos(:package_delivered)]
|
|
|
|
|
assert_equal expected, undone_todos.to_a
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def test_filtering_by_due_date
|
|
|
|
|
user = users(:other_user)
|
|
|
|
|
# Only gets todos that are due today or are past their due date.
|
2019-04-11 11:28:43 -05:00
|
|
|
undone_todos = UndoneTodosQuery.new(user).query(due: '0')
|
2019-04-11 09:53:53 -05:00
|
|
|
expected = [todos(:package_delivered)]
|
|
|
|
|
assert_equal expected, undone_todos.to_a
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def test_filtering_by_tag
|
|
|
|
|
user = users(:other_user)
|
2019-04-11 11:28:43 -05:00
|
|
|
undone_todos = UndoneTodosQuery.new(user).query(tag: 'bar')
|
2019-04-11 09:53:53 -05:00
|
|
|
expected = [todos(:package_delivered),
|
|
|
|
|
todos(:buy_tix)]
|
|
|
|
|
assert_equal expected, undone_todos.to_a
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def test_filtering_by_context
|
|
|
|
|
user = users(:other_user)
|
2019-04-11 11:28:43 -05:00
|
|
|
undone_todos = UndoneTodosQuery.new(user).query(context_id: '11')
|
2019-04-11 09:53:53 -05:00
|
|
|
expected = [todos(:package_delivered),
|
|
|
|
|
todos(:pal_confirmation)]
|
|
|
|
|
assert_equal expected, undone_todos.to_a
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def test_using_a_non_existant_context_raises_an_exception
|
|
|
|
|
user = users(:other_user)
|
|
|
|
|
assert_raises(ActiveRecord::RecordNotFound) do
|
2019-04-11 11:28:43 -05:00
|
|
|
undone_todos = UndoneTodosQuery.new(user).query(context_id: '110')
|
2019-04-11 09:53:53 -05:00
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def test_filtering_by_project
|
|
|
|
|
user = users(:other_user)
|
2019-04-11 11:28:43 -05:00
|
|
|
undone_todos = UndoneTodosQuery.new(user).query(project_id: '5')
|
2019-04-11 09:53:53 -05:00
|
|
|
expected = [todos(:package_delivered)]
|
|
|
|
|
assert_equal expected, undone_todos.to_a
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def test_using_a_non_existant_project_raises_an_exception
|
|
|
|
|
user = users(:other_user)
|
|
|
|
|
assert_raises(ActiveRecord::RecordNotFound) do
|
2019-04-11 11:28:43 -05:00
|
|
|
undone_todos = UndoneTodosQuery.new(user).query(project_id: '110')
|
2019-04-11 09:53:53 -05:00
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def test_combination_of_all_params
|
|
|
|
|
user = users(:other_user)
|
|
|
|
|
undone_todos = UndoneTodosQuery.new(user).query({
|
|
|
|
|
limit: "1",
|
2019-04-11 11:28:43 -05:00
|
|
|
project_id: "5",
|
|
|
|
|
context_id: "11",
|
|
|
|
|
tag: "bar",
|
|
|
|
|
due: "0"})
|
2019-04-11 09:53:53 -05:00
|
|
|
expected = [todos(:package_delivered)]
|
|
|
|
|
assert_equal expected, undone_todos.to_a
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|