debian-mirror-gitlab/spec/services/labels/create_service_spec.rb

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

188 lines
5.4 KiB
Ruby
Raw Normal View History

2019-07-31 22:56:46 +05:30
# frozen_string_literal: true
2017-08-17 22:00:37 +05:30
require 'spec_helper'
2020-07-28 23:09:34 +05:30
RSpec.describe Labels::CreateService do
2017-08-17 22:00:37 +05:30
describe '#execute' do
let(:project) { create(:project) }
let(:group) { create(:group) }
2017-09-10 17:25:29 +05:30
2017-08-17 22:00:37 +05:30
let(:hex_color) { '#FF0000' }
let(:named_color) { 'red' }
let(:upcase_color) { 'RED' }
let(:spaced_color) { ' red ' }
let(:unknown_color) { 'unknown' }
let(:no_color) { '' }
2022-05-07 20:08:51 +05:30
let(:expected_saved_color) { ::Gitlab::Color.of(hex_color) }
2017-08-17 22:00:37 +05:30
context 'in a project' do
context 'with color in hex-code' do
it 'creates a label' do
2017-09-10 17:25:29 +05:30
label = described_class.new(params_with(hex_color)).execute(project: project)
2017-08-17 22:00:37 +05:30
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-09-10 17:25:29 +05:30
label = described_class.new(params_with(named_color)).execute(project: project)
2017-08-17 22:00:37 +05:30
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-09-10 17:25:29 +05:30
label = described_class.new(params_with(upcase_color)).execute(project: project)
2017-08-17 22:00:37 +05:30
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-09-10 17:25:29 +05:30
label = described_class.new(params_with(spaced_color)).execute(project: project)
2017-08-17 22:00:37 +05:30
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-09-10 17:25:29 +05:30
label = described_class.new(params_with(unknown_color)).execute(project: project)
2017-08-17 22:00:37 +05:30
expect(label).not_to be_persisted
end
end
context 'with no color' do
it 'doesn\'t create a label' do
2017-09-10 17:25:29 +05:30
label = described_class.new(params_with(no_color)).execute(project: project)
2017-08-17 22:00:37 +05:30
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-09-10 17:25:29 +05:30
label = described_class.new(params_with(hex_color)).execute(group: group)
2017-08-17 22:00:37 +05:30
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-09-10 17:25:29 +05:30
label = described_class.new(params_with(named_color)).execute(group: group)
2017-08-17 22:00:37 +05:30
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-09-10 17:25:29 +05:30
label = described_class.new(params_with(upcase_color)).execute(group: group)
2017-08-17 22:00:37 +05:30
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-09-10 17:25:29 +05:30
label = described_class.new(params_with(spaced_color)).execute(group: group)
2017-08-17 22:00:37 +05:30
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-09-10 17:25:29 +05:30
label = described_class.new(params_with(unknown_color)).execute(group: group)
2017-08-17 22:00:37 +05:30
expect(label).not_to be_persisted
end
end
context 'with no color' do
it 'doesn\'t create a label' do
2017-09-10 17:25:29 +05:30
label = described_class.new(params_with(no_color)).execute(group: group)
2017-08-17 22:00:37 +05:30
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-09-10 17:25:29 +05:30
label = described_class.new(params_with(hex_color)).execute(template: true)
2017-08-17 22:00:37 +05:30
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-09-10 17:25:29 +05:30
label = described_class.new(params_with(named_color)).execute(template: true)
2017-08-17 22:00:37 +05:30
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-09-10 17:25:29 +05:30
label = described_class.new(params_with(upcase_color)).execute(template: true)
2017-08-17 22:00:37 +05:30
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-09-10 17:25:29 +05:30
label = described_class.new(params_with(spaced_color)).execute(template: true)
2017-08-17 22:00:37 +05:30
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-09-10 17:25:29 +05:30
label = described_class.new(params_with(unknown_color)).execute(template: true)
2017-08-17 22:00:37 +05:30
expect(label).not_to be_persisted
end
end
context 'with no color' do
it 'doesn\'t create a label' do
2017-09-10 17:25:29 +05:30
label = described_class.new(params_with(no_color)).execute(template: true)
2017-08-17 22:00:37 +05:30
expect(label).not_to be_persisted
end
end
end
end
def params_with(color)
{
title: 'A Label',
color: color
}
end
end