mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2024-11-14 21:24:54 +08:00
77 lines
2.3 KiB
Ruby
77 lines
2.3 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require 'rails_helper'
|
|
|
|
include ClientApi::Teams
|
|
|
|
describe ClientApi::Teams::CreateService do
|
|
let(:user) { create :user, email: 'user@asdf.com' }
|
|
let(:team) do
|
|
build :team, name: 'My Team', description: 'My Description'
|
|
end
|
|
|
|
it 'should raise a StandardError if current_user is not assigned' do
|
|
expect { CreateService.new }.to raise_error(StandardError)
|
|
end
|
|
|
|
it 'should create a new team' do
|
|
service = CreateService.new(
|
|
current_user: user,
|
|
params: { name: team.name, description: team.description }
|
|
)
|
|
result = service.execute
|
|
expect(result[:status]).to eq :success
|
|
|
|
team_n = Team.order(created_at: :desc).first
|
|
expect(team_n.name).to eq team.name
|
|
expect(team_n.description).to eq team.description
|
|
expect(team_n.created_by).to eq user
|
|
expect(team_n.users.count).to eq 1
|
|
expect(team_n.users.take).to eq user
|
|
end
|
|
|
|
it 'should return error response if params = {}' do
|
|
service = CreateService.new(current_user: user, params: {})
|
|
result = service.execute
|
|
expect(result[:status]).to eq :error
|
|
end
|
|
|
|
it 'should return error response if params are missing :name attribute' do
|
|
service = CreateService.new(
|
|
current_user: user,
|
|
params: { description: team.description }
|
|
)
|
|
result = service.execute
|
|
expect(result[:status]).to eq :error
|
|
end
|
|
|
|
it 'should return error response if name too short' do
|
|
team.name = ('a' * (Constants::NAME_MIN_LENGTH - 1)).to_s
|
|
service = CreateService.new(
|
|
current_user: user,
|
|
params: { name: team.name, description: team.description }
|
|
)
|
|
result = service.execute
|
|
expect(result[:status]).to eq :error
|
|
end
|
|
|
|
it 'should return error response if name too long' do
|
|
team.name = ('a' * (Constants::NAME_MAX_LENGTH + 1)).to_s
|
|
service = CreateService.new(
|
|
current_user: user,
|
|
params: { name: team.name, description: team.description }
|
|
)
|
|
result = service.execute
|
|
expect(result[:status]).to eq :error
|
|
end
|
|
|
|
it 'should return error response if description too long' do
|
|
team.description = ('a' * (Constants::TEXT_MAX_LENGTH + 1)).to_s
|
|
service = CreateService.new(
|
|
current_user: user,
|
|
params: { name: team.name, description: team.description }
|
|
)
|
|
result = service.execute
|
|
expect(result[:status]).to eq :error
|
|
end
|
|
end
|