mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2024-11-15 13:45:25 +08:00
131 lines
4.5 KiB
Ruby
131 lines
4.5 KiB
Ruby
require 'rails_helper'
|
|
|
|
describe ClientApi::Teams::TeamsController, type: :controller do
|
|
login_user
|
|
|
|
before do
|
|
@user_one = User.first
|
|
@user_two = FactoryGirl.create :user, email: 'sec_user@asdf.com'
|
|
@team_one = FactoryGirl.create :team, created_by: @user_one
|
|
@team_two = FactoryGirl.create :team,
|
|
name: 'Team two',
|
|
created_by: @user_two
|
|
FactoryGirl.create :user_team, team: @team_one, user: @user_one, role: 2
|
|
end
|
|
|
|
describe 'GET #index' do
|
|
it 'should return HTTP success response' do
|
|
get :index, format: :json
|
|
expect(response).to be_success
|
|
expect(response).to have_http_status(:ok)
|
|
end
|
|
end
|
|
|
|
describe 'POST #create' do
|
|
before do
|
|
@team_one.update_attribute(:name, 'My Team')
|
|
@team_one.update_attribute(:description, 'Lorem ipsum ipsum')
|
|
end
|
|
|
|
it 'should return HTTP success response' do
|
|
post :create, params: { team: @team_one }, as: :json
|
|
expect(response).to have_http_status(:ok)
|
|
end
|
|
|
|
it 'should return HTTP unprocessable_entity response if name too short' do
|
|
@team_one.update_attribute(
|
|
:name,
|
|
('a' * (Constants::NAME_MIN_LENGTH - 1)).to_s
|
|
)
|
|
post :create, params: { team: @team_one }, as: :json
|
|
expect(response).to have_http_status(:unprocessable_entity)
|
|
end
|
|
|
|
it 'should return HTTP unprocessable_entity response if name too long' do
|
|
@team_one.update_attribute(
|
|
:name,
|
|
('a' * (Constants::NAME_MAX_LENGTH + 1)).to_s
|
|
)
|
|
post :create, params: { team: @team_one }, as: :json
|
|
expect(response).to have_http_status(:unprocessable_entity)
|
|
end
|
|
|
|
it 'should return HTTP unprocessable_entity response if description too long' do
|
|
@team_one.update_attribute(
|
|
:description,
|
|
('a' * (Constants::TEXT_MAX_LENGTH + 1)).to_s
|
|
)
|
|
post :create, params: { team: @team_one }, as: :json
|
|
expect(response).to have_http_status(:unprocessable_entity)
|
|
end
|
|
end
|
|
|
|
describe 'POST #change_team' do
|
|
it 'should return HTTP success response' do
|
|
FactoryGirl.create :user_team, team: @team_two, user: @user_one, role: 2
|
|
@user_one.update_attribute(:current_team_id, @team_one.id)
|
|
post :change_team, params: { team_id: @team_two.id }, as: :json
|
|
expect(response).to have_http_status(:ok)
|
|
end
|
|
|
|
it 'should return HTTP unprocessable_entity response if user not in team' do
|
|
@user_one.update_attribute(:current_team_id, @team_one.id)
|
|
post :change_team, params: { team_id: @team_two.id }, as: :json
|
|
expect(response).to have_http_status(:unprocessable_entity)
|
|
end
|
|
|
|
it 'should return HTTP success response if same team as current' do
|
|
@user_one.update_attribute(:current_team_id, @team_one.id)
|
|
post :change_team, params: { team_id: @team_one.id }, as: :json
|
|
expect(response).to have_http_status(:ok)
|
|
end
|
|
end
|
|
|
|
describe 'GET #details' do
|
|
it 'should return HTTP success response' do
|
|
FactoryGirl.create :user_team, team: @team_two, user: @user_one, role: 2
|
|
@user_one.update_attribute(:current_team_id, @team_one.id)
|
|
get :details, params: { team_id: @team_two.id }, as: :json
|
|
expect(response).to have_http_status(:ok)
|
|
end
|
|
|
|
it 'should return HTTP unprocessable_entity response if user not in team' do
|
|
@user_one.update_attribute(:current_team_id, @team_one.id)
|
|
get :details, params: { team_id: @team_two.id }, as: :json
|
|
expect(response).to have_http_status(:unprocessable_entity)
|
|
end
|
|
|
|
it 'should return HTTP unprocessable_entity response if team_id not valid' do
|
|
get :details, params: { team_id: 'banana' }, as: :json
|
|
expect(response).to have_http_status(:unprocessable_entity)
|
|
end
|
|
end
|
|
|
|
describe 'POST #update' do
|
|
let(:user_team) do
|
|
create :user_team, team: @team_two, user: @user_one, role: 2
|
|
end
|
|
|
|
it 'should return HTTP success response' do
|
|
user_team
|
|
post :update,
|
|
params: { team_id: @team_two.id,
|
|
team: { description: 'My description' } },
|
|
as: :json
|
|
expect(response).to have_http_status(:ok)
|
|
end
|
|
|
|
it 'should return HTTP unprocessable_entity response iput not valid' do
|
|
user_team
|
|
post :update,
|
|
params: {
|
|
team_id: @team_two.id,
|
|
team: {
|
|
description: "super long: #{'a' * Constants::TEXT_MAX_LENGTH}"
|
|
}
|
|
},
|
|
as: :json
|
|
expect(response).to have_http_status(:unprocessable_entity)
|
|
end
|
|
end
|
|
end
|