Todos spec
This commit is contained in:
parent
6ae6f29a2e
commit
45c93b52e4
|
@ -0,0 +1,79 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe 'Dashboard Todos', feature: true do
|
||||
let(:user){ create(:user) }
|
||||
let(:author){ create(:user) }
|
||||
let(:project){ create(:project) }
|
||||
let(:issue){ create(:issue) }
|
||||
let(:todos_per_page){ Todo.default_per_page }
|
||||
let(:todos_total){ todos_per_page + 1 }
|
||||
|
||||
describe 'GET /dashboard/todos' do
|
||||
context 'User do not have todos' do
|
||||
before do
|
||||
login_as(user)
|
||||
visit dashboard_todos_path
|
||||
end
|
||||
it 'shows "All done" message' do
|
||||
expect(page).to have_content "You're all done!"
|
||||
end
|
||||
end
|
||||
|
||||
context 'User has a todo', js: true do
|
||||
before do
|
||||
create(:todo, :mentioned, user: user, project: project, target: issue, author: author)
|
||||
login_as(user)
|
||||
visit dashboard_todos_path
|
||||
end
|
||||
|
||||
it 'todo is present' do
|
||||
expect(page).to have_selector('.todos-list .todo', count: 1)
|
||||
end
|
||||
|
||||
describe 'deleting the todo' do
|
||||
before do
|
||||
first('.done-todo').click
|
||||
end
|
||||
|
||||
it 'is removed from the list' do
|
||||
expect(page).not_to have_selector('.todos-list .todo')
|
||||
end
|
||||
|
||||
it 'shows "All done" message' do
|
||||
expect(page).to have_content("You're all done!")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context 'User has multiple pages of Todos' do
|
||||
let(:todo_total_pages){ (todos_total.to_f/todos_per_page).ceil }
|
||||
|
||||
before do
|
||||
todos_total.times do
|
||||
create(:todo, :mentioned, user: user, project: project, target: issue, author: author)
|
||||
end
|
||||
|
||||
login_as(user)
|
||||
visit dashboard_todos_path
|
||||
end
|
||||
|
||||
it 'is paginated' do
|
||||
expect(page).to have_selector('.gl-pagination')
|
||||
end
|
||||
|
||||
it 'is has the right number of pages' do
|
||||
expect(page).to have_selector('.gl-pagination .page', count: todo_total_pages)
|
||||
end
|
||||
|
||||
describe 'deleting last todo from last page', js: true do
|
||||
it 'redirects to the previous page' do
|
||||
page.within('.gl-pagination') do
|
||||
click_link todo_total_pages.to_s
|
||||
end
|
||||
first('.done-todo').click
|
||||
expect(page).to have_content(Todo.last.body)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Reference in New Issue