2019-04-11 08:17:24 -04:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2017-03-29 07:45:15 -04:00
|
|
|
require 'spec_helper'
|
|
|
|
|
2020-06-24 11:08:50 -04:00
|
|
|
RSpec.describe Labels::CreateService do
|
2017-03-29 07:45:15 -04:00
|
|
|
describe '#execute' do
|
2017-08-02 15:55:11 -04:00
|
|
|
let(:project) { create(:project) }
|
2017-03-29 07:45:15 -04:00
|
|
|
let(:group) { create(:group) }
|
2017-08-01 14:51:52 -04:00
|
|
|
|
2017-03-29 07:45:15 -04:00
|
|
|
let(:hex_color) { '#FF0000' }
|
|
|
|
let(:named_color) { 'red' }
|
|
|
|
let(:upcase_color) { 'RED' }
|
|
|
|
let(:spaced_color) { ' red ' }
|
|
|
|
let(:unknown_color) { 'unknown' }
|
|
|
|
let(:no_color) { '' }
|
|
|
|
|
|
|
|
let(:expected_saved_color) { hex_color }
|
|
|
|
|
|
|
|
context 'in a project' do
|
|
|
|
context 'with color in hex-code' do
|
|
|
|
it 'creates a label' do
|
2017-07-25 13:09:00 -04:00
|
|
|
label = described_class.new(params_with(hex_color)).execute(project: project)
|
2017-03-29 07:45:15 -04:00
|
|
|
|
|
|
|
expect(label).to be_persisted
|
|
|
|
expect(label.color).to eq expected_saved_color
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context 'with color in allowed name' do
|
|
|
|
it 'creates a label' do
|
2017-07-25 13:09:00 -04:00
|
|
|
label = described_class.new(params_with(named_color)).execute(project: project)
|
2017-03-29 07:45:15 -04:00
|
|
|
|
|
|
|
expect(label).to be_persisted
|
|
|
|
expect(label.color).to eq expected_saved_color
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context 'with color in up-case allowed name' do
|
|
|
|
it 'creates a label' do
|
2017-07-25 13:09:00 -04:00
|
|
|
label = described_class.new(params_with(upcase_color)).execute(project: project)
|
2017-03-29 07:45:15 -04:00
|
|
|
|
|
|
|
expect(label).to be_persisted
|
|
|
|
expect(label.color).to eq expected_saved_color
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context 'with color surrounded by spaces' do
|
|
|
|
it 'creates a label' do
|
2017-07-25 13:09:00 -04:00
|
|
|
label = described_class.new(params_with(spaced_color)).execute(project: project)
|
2017-03-29 07:45:15 -04:00
|
|
|
|
|
|
|
expect(label).to be_persisted
|
|
|
|
expect(label.color).to eq expected_saved_color
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context 'with unknown color' do
|
|
|
|
it 'doesn\'t create a label' do
|
2017-07-25 13:09:00 -04:00
|
|
|
label = described_class.new(params_with(unknown_color)).execute(project: project)
|
2017-03-29 07:45:15 -04:00
|
|
|
|
|
|
|
expect(label).not_to be_persisted
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context 'with no color' do
|
|
|
|
it 'doesn\'t create a label' do
|
2017-07-25 13:09:00 -04:00
|
|
|
label = described_class.new(params_with(no_color)).execute(project: project)
|
2017-03-29 07:45:15 -04:00
|
|
|
|
|
|
|
expect(label).not_to be_persisted
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context 'in a group' do
|
|
|
|
context 'with color in hex-code' do
|
|
|
|
it 'creates a label' do
|
2017-07-25 13:09:00 -04:00
|
|
|
label = described_class.new(params_with(hex_color)).execute(group: group)
|
2017-03-29 07:45:15 -04:00
|
|
|
|
|
|
|
expect(label).to be_persisted
|
|
|
|
expect(label.color).to eq expected_saved_color
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context 'with color in allowed name' do
|
|
|
|
it 'creates a label' do
|
2017-07-25 13:09:00 -04:00
|
|
|
label = described_class.new(params_with(named_color)).execute(group: group)
|
2017-03-29 07:45:15 -04:00
|
|
|
|
|
|
|
expect(label).to be_persisted
|
|
|
|
expect(label.color).to eq expected_saved_color
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context 'with color in up-case allowed name' do
|
|
|
|
it 'creates a label' do
|
2017-07-25 13:09:00 -04:00
|
|
|
label = described_class.new(params_with(upcase_color)).execute(group: group)
|
2017-03-29 07:45:15 -04:00
|
|
|
|
|
|
|
expect(label).to be_persisted
|
|
|
|
expect(label.color).to eq expected_saved_color
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context 'with color surrounded by spaces' do
|
|
|
|
it 'creates a label' do
|
2017-07-25 13:09:00 -04:00
|
|
|
label = described_class.new(params_with(spaced_color)).execute(group: group)
|
2017-03-29 07:45:15 -04:00
|
|
|
|
|
|
|
expect(label).to be_persisted
|
|
|
|
expect(label.color).to eq expected_saved_color
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context 'with unknown color' do
|
|
|
|
it 'doesn\'t create a label' do
|
2017-07-25 13:09:00 -04:00
|
|
|
label = described_class.new(params_with(unknown_color)).execute(group: group)
|
2017-03-29 07:45:15 -04:00
|
|
|
|
|
|
|
expect(label).not_to be_persisted
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context 'with no color' do
|
|
|
|
it 'doesn\'t create a label' do
|
2017-07-25 13:09:00 -04:00
|
|
|
label = described_class.new(params_with(no_color)).execute(group: group)
|
2017-03-29 07:45:15 -04:00
|
|
|
|
|
|
|
expect(label).not_to be_persisted
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context 'in admin area' do
|
|
|
|
context 'with color in hex-code' do
|
|
|
|
it 'creates a label' do
|
2017-07-25 13:09:00 -04:00
|
|
|
label = described_class.new(params_with(hex_color)).execute(template: true)
|
2017-03-29 07:45:15 -04:00
|
|
|
|
|
|
|
expect(label).to be_persisted
|
|
|
|
expect(label.color).to eq expected_saved_color
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context 'with color in allowed name' do
|
|
|
|
it 'creates a label' do
|
2017-07-25 13:09:00 -04:00
|
|
|
label = described_class.new(params_with(named_color)).execute(template: true)
|
2017-03-29 07:45:15 -04:00
|
|
|
|
|
|
|
expect(label).to be_persisted
|
|
|
|
expect(label.color).to eq expected_saved_color
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context 'with color in up-case allowed name' do
|
|
|
|
it 'creates a label' do
|
2017-07-25 13:09:00 -04:00
|
|
|
label = described_class.new(params_with(upcase_color)).execute(template: true)
|
2017-03-29 07:45:15 -04:00
|
|
|
|
|
|
|
expect(label).to be_persisted
|
|
|
|
expect(label.color).to eq expected_saved_color
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context 'with color surrounded by spaces' do
|
|
|
|
it 'creates a label' do
|
2017-07-25 13:09:00 -04:00
|
|
|
label = described_class.new(params_with(spaced_color)).execute(template: true)
|
2017-03-29 07:45:15 -04:00
|
|
|
|
|
|
|
expect(label).to be_persisted
|
|
|
|
expect(label.color).to eq expected_saved_color
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context 'with unknown color' do
|
|
|
|
it 'doesn\'t create a label' do
|
2017-07-25 13:09:00 -04:00
|
|
|
label = described_class.new(params_with(unknown_color)).execute(template: true)
|
2017-03-29 07:45:15 -04:00
|
|
|
|
|
|
|
expect(label).not_to be_persisted
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context 'with no color' do
|
|
|
|
it 'doesn\'t create a label' do
|
2017-07-25 13:09:00 -04:00
|
|
|
label = described_class.new(params_with(no_color)).execute(template: true)
|
2017-03-29 07:45:15 -04:00
|
|
|
|
|
|
|
expect(label).not_to be_persisted
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def params_with(color)
|
|
|
|
{
|
|
|
|
title: 'A Label',
|
|
|
|
color: color
|
|
|
|
}
|
|
|
|
end
|
|
|
|
end
|