/
Matslex
/
ProjectDevelopmentFinal
Обзор
Документация
Войти
/
Matslex
/
ProjectDevelopmentFinal
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
spec/controllers/tasks_controller_spec.rb
104 строки
3 KB
Matslex
Final
18 июл 2025, 14:58
18 июл 2025, 14:58
8495507
Код
Авторство
О чём код?
require 'rails_helper' RSpec.describe TasksController, type: :controller do let(:user) { create(:user) } let(:project) { create(:project, user: user) } let(:task) { create(:task, project: project) } before { sign_in user } describe 'GET #new' do it 'renders the new template' do get :new, params: { project_id: project.id } expect(response).to render_template(:new) end it 'assigns a new task' do get :new, params: { project_id: project.id } expect(assigns(:task)).to be_a_new(Task) end end describe 'POST #create' do context 'with valid params' do it 'creates a new task' do expect { post :create, params: { project_id: project.id, task: { title: 'Test Task', description: 'Description', status: 'to_do' } } }.to change(Task, :count).by(1) end it 'redirects to project show page' do post :create, params: { project_id: project.id, task: { title: 'Test Task', description: 'Description', status: 'to_do' } } expect(response).to redirect_to(project_path(project)) end end context 'with invalid params' do it 'does not create a new task' do expect { post :create, params: { project_id: project.id, task: { title: '' } } }.not_to change(Task, :count) end it 'renders the new template again' do post :create, params: { project_id: project.id, task: { title: '' } } expect(response).to render_template(:new) end end end describe 'GET #edit' do it 'renders the edit template' do get :edit, params: { project_id: project.id, id: task.id } expect(response).to render_template(:edit) end it 'assigns the requested task' do get :edit, params: { project_id: project.id, id: task.id } expect(assigns(:task)).to eq(task) end end describe 'PATCH #update' do context 'with valid params' do it 'updates the task' do patch :update, params: { project_id: project.id, id: task.id, task: { title: 'Updated Title' } } task.reload expect(task.title).to eq('Updated Title') end it 'redirects to project show page' do patch :update, params: { project_id: project.id, id: task.id, task: { title: 'Updated Title' } } expect(response).to redirect_to(project_path(project)) end end context 'with invalid params' do it 'does not update the task' do patch :update, params: { project_id: project.id, id: task.id, task: { title: '' } } task.reload expect(task.title).not_to eq('') end it 'renders the edit template again' do patch :update, params: { project_id: project.id, id: task.id, task: { title: '' } } expect(response).to render_template(:edit) end end end describe 'DELETE #destroy' do let!(:task_to_delete) { create(:task, project: project) } it 'deletes the task' do expect { delete :destroy, params: { project_id: project.id, id: task_to_delete.id } }.to change(Task, :count).by(-1) end it 'redirects to project show page' do delete :destroy, params: { project_id: project.id, id: task_to_delete.id } expect(response).to redirect_to(project_path(project)) end end end