scinote-web/spec/controllers/repository_row_connections_controller_spec.rb

110 lines
3.8 KiB
Ruby

# frozen_string_literal: true
require 'rails_helper'
describe RepositoryRowConnectionsController, type: :controller do
login_user
render_views
let!(:user) { controller.current_user }
let!(:team) { create :team, created_by: user }
let!(:repository) { create :repository, team: team, created_by: user }
let!(:other_repository) { create :repository, team: team, created_by: user }
let!(:repository_row) { create :repository_row, repository: repository, created_by: user }
let!(:other_repository_row) { create :repository_row, repository: repository, created_by: user }
describe 'POST #create' do
context 'with valid parameters' do
let(:create_params) do
{
repository_id: repository.id,
repository_row_id: repository_row.id,
repository_row_connection: {
connection_repository_id: repository.id,
relation: 'parent',
relation_ids: [other_repository_row.id]
}
}
end
it 'creates a new connection' do
expect {
post :create, params: create_params, format: :json
}.to change(RepositoryRowConnection, :count).by(1)
end
it 'returns a success response' do
post :create, params: create_params, format: :json
expect(response).to have_http_status(:success)
end
end
end
describe 'DELETE #destroy' do
let!(:connection) { create(:repository_row_connection, parent: repository_row, child: other_repository_row, created_by: user, last_modified_by: user) }
it 'destroys the connection' do
expect {
delete :destroy, params: { repository_id: repository.id, repository_row_id: repository_row.id, id: connection.id }, format: :json
}.to change(RepositoryRowConnection, :count).by(-1)
end
it 'returns a no content status' do
delete :destroy, params: { repository_id: repository.id, repository_row_id: repository_row.id, id: connection.id }, format: :json
expect(response).to have_http_status(:no_content)
end
end
describe 'GET #repositories' do
it 'returns a successful response' do
get :repositories, format: :json
expect(response).to have_http_status(:success)
end
it 'returns the correct data structure' do
get :repositories, format: :json
expect(response.body).to include(repository.name)
end
end
describe 'GET #repository_rows' do
let!(:child_repository_row) { create :repository_row, repository: repository }
let!(:parent_repository_row) { create :repository_row, repository: repository }
let!(:child_connection) do
create :repository_row_connection,
parent: repository_row,
child: child_repository_row,
created_by: user,
last_modified_by: user
end
let!(:parent_connection) do
create :repository_row_connection,
child: repository_row,
parent: parent_repository_row,
created_by: user,
last_modified_by: user
end
it 'returns a successful response' do
get :repository_rows, format: :json, params: {
repository_id: repository.id,
repository_row_id: repository_row.id,
selected_repository_id: repository.id
}
expect(response).to have_http_status(:success)
end
it 'returns the correct data structure' do
get :repository_rows, format: :json, params: {
repository_id: repository.id,
repository_row_id: repository_row.id,
selected_repository_id: repository.id
}
expect(response.body).not_to include(repository_row.name)
expect(response.body).not_to include(child_repository_row.name)
expect(response.body).not_to include(parent_repository_row.name)
expect(response.body).to include(other_repository_row.name)
end
end
end