2023-12-20 21:18:49 +08:00
|
|
|
# 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
|
2024-01-15 16:41:52 +08:00
|
|
|
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
|
|
|
|
|
2023-12-20 21:18:49 +08:00
|
|
|
it 'returns a successful response' do
|
2024-01-15 16:41:52 +08:00
|
|
|
get :repository_rows, format: :json, params: {
|
|
|
|
repository_id: repository.id,
|
|
|
|
repository_row_id: repository_row.id,
|
|
|
|
selected_repository_id: repository.id
|
|
|
|
}
|
2023-12-20 21:18:49 +08:00
|
|
|
expect(response).to have_http_status(:success)
|
|
|
|
end
|
|
|
|
|
|
|
|
it 'returns the correct data structure' do
|
2024-01-15 16:41:52 +08:00
|
|
|
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)
|
2023-12-20 21:18:49 +08:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|