parsley/spec/controllers/task_item_controller_spec.rb

80 lines
2.4 KiB
Ruby
Raw Normal View History

2018-09-07 21:56:13 -05:00
require 'rails_helper'
RSpec.describe TaskItemsController, type: :controller do
render_views
before(:each) do
request.accept = "application/json"
end
let(:user) {
create(:user)
}
let(:task_list) { create(:task_list, user: user) }
let(:valid_session) { {user_id: user.id} }
describe 'POST #create' do
it 'creates a task_item' do
expect do
post :create, params: {task_list_id: task_list.id, task_item: {name: 'name'}}, session: valid_session
end.to change(TaskItem, :count).by 1
end
end
describe 'PATCH #update' do
it 'updates a task_item' do
i = create(:task_item, task_list: task_list)
patch :update, params: {task_list_id: task_list.id, id: i.id, task_item: {name: 'new name'}}, session: valid_session
i.reload
expect(i.name).to eq 'new name'
end
end
describe 'DELETE #destroy' do
it 'destroys the item' do
i = create(:task_item, task_list: task_list)
delete :destroy, params: {task_list_id: task_list.id, id: i.id}, session: valid_session
expect(TaskItem.where(id: i.id).count).to eq 0
end
it 'destroys an array of items' do
i1 = create(:task_item, task_list: task_list)
i2 = create(:task_item, task_list: task_list)
i3 = create(:task_item, task_list: task_list)
delete :destroy, params: {task_list_id: task_list.id, ids: [i1.id, i2.id, i3.id]}, session: valid_session
expect(TaskItem.where(id: [i1.id, i2.id, i3.id]).count).to eq 0
end
end
describe 'PATCH complete' do
it 'sets all given items to completed' do
i1 = create(:task_item, task_list: task_list)
i2 = create(:task_item, task_list: task_list)
i3 = create(:task_item, task_list: task_list)
patch :complete, params: {task_list_id: task_list.id, ids: [i1.id, i2.id, i3.id]}, session: valid_session
[i1, i2, i3].each do |i|
i.reload
expect(i.completed).to be_truthy
end
end
it 'sets all given items to not completed' do
i1 = create(:task_item, task_list: task_list)
i2 = create(:task_item, task_list: task_list)
i3 = create(:task_item, task_list: task_list)
patch :complete, params: {task_list_id: task_list.id, ids: [i1.id, i2.id, i3.id], invert: true}, session: valid_session
[i1, i2, i3].each do |i|
i.reload
expect(i.completed).to be_falsey
end
end
end
end