Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDongqing Hu <sorra@outlook.com>2017-03-29 14:45:15 +0300
committerSean McGivern <sean@mcgivern.me.uk>2017-03-29 14:45:15 +0300
commit6dd76954443180e8fe97950e230ea6d1e2400d65 (patch)
treea3ada4ea616e2aaabed3a25a9960f19bd59b99e3 /spec/services/labels
parentb0e18eaf87e446caa075ba56c0e805b514206e10 (diff)
Labels support color names in backend
Diffstat (limited to 'spec/services/labels')
-rw-r--r--spec/services/labels/create_service_spec.rb186
-rw-r--r--spec/services/labels/update_service_spec.rb80
2 files changed, 266 insertions, 0 deletions
diff --git a/spec/services/labels/create_service_spec.rb b/spec/services/labels/create_service_spec.rb
new file mode 100644
index 00000000000..0ecab0c3475
--- /dev/null
+++ b/spec/services/labels/create_service_spec.rb
@@ -0,0 +1,186 @@
+require 'spec_helper'
+
+describe Labels::CreateService, services: true do
+ describe '#execute' do
+ let(:project) { create(:project) }
+ let(:group) { create(:group) }
+
+ 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
+ label = Labels::CreateService.new(params_with(hex_color)).execute(project: project)
+
+ 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
+ label = Labels::CreateService.new(params_with(named_color)).execute(project: project)
+
+ 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
+ label = Labels::CreateService.new(params_with(upcase_color)).execute(project: project)
+
+ 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
+ label = Labels::CreateService.new(params_with(spaced_color)).execute(project: project)
+
+ 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
+ label = Labels::CreateService.new(params_with(unknown_color)).execute(project: project)
+
+ expect(label).not_to be_persisted
+ end
+ end
+
+ context 'with no color' do
+ it 'doesn\'t create a label' do
+ label = Labels::CreateService.new(params_with(no_color)).execute(project: project)
+
+ 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
+ label = Labels::CreateService.new(params_with(hex_color)).execute(group: group)
+
+ 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
+ label = Labels::CreateService.new(params_with(named_color)).execute(group: group)
+
+ 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
+ label = Labels::CreateService.new(params_with(upcase_color)).execute(group: group)
+
+ 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
+ label = Labels::CreateService.new(params_with(spaced_color)).execute(group: group)
+
+ 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
+ label = Labels::CreateService.new(params_with(unknown_color)).execute(group: group)
+
+ expect(label).not_to be_persisted
+ end
+ end
+
+ context 'with no color' do
+ it 'doesn\'t create a label' do
+ label = Labels::CreateService.new(params_with(no_color)).execute(group: group)
+
+ 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
+ label = Labels::CreateService.new(params_with(hex_color)).execute(template: true)
+
+ 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
+ label = Labels::CreateService.new(params_with(named_color)).execute(template: true)
+
+ 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
+ label = Labels::CreateService.new(params_with(upcase_color)).execute(template: true)
+
+ 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
+ label = Labels::CreateService.new(params_with(spaced_color)).execute(template: true)
+
+ 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
+ label = Labels::CreateService.new(params_with(unknown_color)).execute(template: true)
+
+ expect(label).not_to be_persisted
+ end
+ end
+
+ context 'with no color' do
+ it 'doesn\'t create a label' do
+ label = Labels::CreateService.new(params_with(no_color)).execute(template: true)
+
+ expect(label).not_to be_persisted
+ end
+ end
+ end
+ end
+
+ def params_with(color)
+ {
+ title: 'A Label',
+ color: color
+ }
+ end
+end
diff --git a/spec/services/labels/update_service_spec.rb b/spec/services/labels/update_service_spec.rb
new file mode 100644
index 00000000000..f2498ea6990
--- /dev/null
+++ b/spec/services/labels/update_service_spec.rb
@@ -0,0 +1,80 @@
+require 'spec_helper'
+
+describe Labels::UpdateService, services: true do
+ describe '#execute' do
+ let(:project) { create(:project) }
+
+ 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 }
+
+ before(:each) do
+ @label = Labels::CreateService.new(title: 'Initial', color: '#000000').execute(project: project)
+ expect(@label).to be_persisted
+ end
+
+ context 'with color in hex-code' do
+ it 'updates the label' do
+ label = Labels::UpdateService.new(params_with(hex_color)).execute(@label)
+
+ expect(label).to be_valid
+ expect(label.reload.color).to eq expected_saved_color
+ end
+ end
+
+ context 'with color in allowed name' do
+ it 'updates the label' do
+ label = Labels::UpdateService.new(params_with(named_color)).execute(@label)
+
+ expect(label).to be_valid
+ expect(label.reload.color).to eq expected_saved_color
+ end
+ end
+
+ context 'with color in up-case allowed name' do
+ it 'updates the label' do
+ label = Labels::UpdateService.new(params_with(upcase_color)).execute(@label)
+
+ expect(label).to be_valid
+ expect(label.reload.color).to eq expected_saved_color
+ end
+ end
+
+ context 'with color surrounded by spaces' do
+ it 'updates the label' do
+ label = Labels::UpdateService.new(params_with(spaced_color)).execute(@label)
+
+ expect(label).to be_valid
+ expect(label.reload.color).to eq expected_saved_color
+ end
+ end
+
+ context 'with unknown color' do
+ it 'doesn\'t update the label' do
+ label = Labels::UpdateService.new(params_with(unknown_color)).execute(@label)
+
+ expect(label).not_to be_valid
+ end
+ end
+
+ context 'with no color' do
+ it 'doesn\'t update the label' do
+ label = Labels::UpdateService.new(params_with(no_color)).execute(@label)
+
+ expect(label).not_to be_valid
+ end
+ end
+ end
+
+ def params_with(color)
+ {
+ title: 'A Label',
+ color: color
+ }
+ end
+end