scinote-web/spec/services/client_api/user_team_service_spec.rb

139 lines
4.5 KiB
Ruby
Raw Normal View History

# frozen_string_literal: true
2017-09-13 23:11:51 +08:00
require 'rails_helper'
describe ClientApi::UserTeamService do
let(:team_one) { create :team }
let(:user_one) { create :user, email: Faker::Internet.email }
2017-09-14 19:11:19 +08:00
let(:user_two) { create :user, email: Faker::Internet.email }
2019-03-13 16:06:48 +08:00
let(:user_team) { create :user_team, :admin, user: user_one, team: team_one }
2017-09-13 23:11:51 +08:00
it 'should raise ClientApi::CustomUserTeamError if user is not assigned' do
expect do
2017-09-13 23:11:51 +08:00
ClientApi::UserTeamService.new(
team_id: team_one.id,
user_team_id: user_team.id
)
end.to raise_error(ClientApi::CustomUserTeamError)
2017-09-13 23:11:51 +08:00
end
it 'should raise ClientApi::CustomUserTeamError if team is not assigned' do
expect do
2017-09-13 23:11:51 +08:00
ClientApi::UserTeamService.new(user: user_one, user_team_id: user_team.id)
end.to raise_error(ClientApi::CustomUserTeamError)
2017-09-13 23:11:51 +08:00
end
it 'should raise ClientApi::CustomUserTeamError if ' \
'user_team is not assigned' do
expect do
2017-09-13 23:11:51 +08:00
ClientApi::UserTeamService.new(user: user_one, team_id: team_one.id)
end.to raise_error(ClientApi::CustomUserTeamError)
2017-09-13 23:11:51 +08:00
end
describe '#destroy_user_team_and_assign_new_team_owner!' do
it 'should raise ClientApi::CustomUserTeamError if user ' \
'can\'t leave the team' do
ut_service = ClientApi::UserTeamService.new(
team_id: team_one.id,
user_team_id: user_team.id,
user: user_one
)
expect do
2017-09-13 23:11:51 +08:00
ut_service.destroy_user_team_and_assign_new_team_owner!
end.to raise_error(ClientApi::CustomUserTeamError)
2017-09-13 23:11:51 +08:00
end
it 'should destroy the user_team relation' do
2019-03-13 16:06:48 +08:00
create :user_team, :admin, team: team_one, user: user_one
2017-09-13 23:11:51 +08:00
new_user_team = create :user_team, team: team_one, user: user_two
ut_service = ClientApi::UserTeamService.new(
team_id: team_one.id,
user_team_id: new_user_team.id,
2017-09-14 19:11:19 +08:00
user: user_one
)
ut_service.destroy_user_team_and_assign_new_team_owner!
expect(team_one.users).to_not include user_two
end
it 'should assign a new owner to the team' do
user_team_one = create :user_team, team: team_one, user: user_one
2019-03-13 16:06:48 +08:00
create :user_team, :admin, team: team_one, user: user_two
2017-09-14 19:11:19 +08:00
ut_service = ClientApi::UserTeamService.new(
team_id: team_one.id,
user_team_id: user_team_one.id,
user: user_one
2017-09-13 23:11:51 +08:00
)
ut_service.destroy_user_team_and_assign_new_team_owner!
2017-09-14 19:11:19 +08:00
expect(team_one.users).to include user_two
end
end
describe '#update_role!' do
it 'should raise ClientApi::CustomUserTeamError if no role is set' do
ut_service = ClientApi::UserTeamService.new(
user: user_one,
team_id: team_one.id,
user_team_id: user_team.id
)
expect do
2017-09-14 19:11:19 +08:00
ut_service.update_role!
end.to raise_error(ClientApi::CustomUserTeamError)
2017-09-14 19:11:19 +08:00
end
it 'should update user role' do
create :user_team, team: team_one, user: user_two
user_team = create :user_team, team: team_one, user: user_one
ut_service = ClientApi::UserTeamService.new(
user: user_one,
team_id: team_one.id,
user_team_id: user_team.id,
role: 1
)
ut_service.update_role!
user_team.reload
expect(user_team.role).to eq 'normal_user'
end
it 'should raise ClientApi::CustomUserTeamError if is the last ' \
'admin on the team' do
2019-03-13 16:06:48 +08:00
user_team = create :user_team, :admin, team: team_one, user: user_one
2017-09-14 19:11:19 +08:00
ut_service = ClientApi::UserTeamService.new(
user: user_one,
team_id: team_one.id,
user_team_id: user_team.id,
role: 1
)
expect do
2017-09-14 19:11:19 +08:00
ut_service.update_role!
end.to raise_error(ClientApi::CustomUserTeamError)
2017-09-14 19:11:19 +08:00
end
end
describe '#team_users_data' do
it 'should return a hash of team members' do
user_team = create :user_team, team: team_one, user: user_one
ut_service = ClientApi::UserTeamService.new(
user: user_one,
team_id: team_one.id,
user_team_id: user_team.id,
role: 1
)
expect(ut_service.team_users_data.fetch(:team_users)).to include user_team
end
end
describe '#teams_data' do
it 'should return a list of teams where user is a member' do
user_team = create :user_team, team: team_one, user: user_one
ut_service = ClientApi::UserTeamService.new(
user: user_one,
team_id: team_one.id,
user_team_id: user_team.id,
role: 1
)
2017-10-27 15:35:39 +08:00
team_id = ut_service.teams_data[:teams].first.id
2017-09-14 19:11:19 +08:00
expect(team_id).to eq team_one.id
2017-09-13 23:11:51 +08:00
end
end
end