From 1a6a12069bd75417b6f2bf9ab0d6a055ad270553 Mon Sep 17 00:00:00 2001 From: Thomas Muntaner Date: Thu, 25 Jan 2018 08:27:44 +0100 Subject: [PATCH] API Fix: service name Notes: In glue, the api appends release_stage (Alpha/Beta/...) to the product's friendly_name in the serializer. The service serializer expects the product's friendly name without the release_stage, but as the appended version is saved in the db and used, we need to make a clean version of friendly_name. --- app/models/service.rb | 6 +++++- spec/models/service_spec.rb | 43 ++++++++++++++++++++++++++++++++++--- 2 files changed, 45 insertions(+), 4 deletions(-) diff --git a/app/models/service.rb b/app/models/service.rb index 943939176..450fd29ce 100644 --- a/app/models/service.rb +++ b/app/models/service.rb @@ -12,7 +12,11 @@ class Service < ApplicationRecord validates :product_id, presence: true def name - product.friendly_name.tr(' ', '_') + [ + product.name, + product.release_type, + (product.arch if product.arch != 'unknown') + ].compact.join(' ').tr(' ', '_') end end diff --git a/spec/models/service_spec.rb b/spec/models/service_spec.rb index f1c3bf088..6ecbbcf55 100644 --- a/spec/models/service_spec.rb +++ b/spec/models/service_spec.rb @@ -13,9 +13,9 @@ context 'when has enabled and disabled repos' do subject { service.enabled_repositories } - let(:service) { FactoryGirl.create(:service) } - let(:enabled_repository) { FactoryGirl.create(:repository) } - let(:disabled_repository) { FactoryGirl.create(:repository, enabled: false) } + let(:service) { create(:service) } + let(:enabled_repository) { create(:repository) } + let(:disabled_repository) { create(:repository, enabled: false) } before do service.repositories << enabled_repository @@ -26,4 +26,41 @@ it { is_expected.not_to include disabled_repository } end end + + describe '#name' do + subject { create(:service, product: product).name } + + let(:name) { 'SLES Special Product 1' } + let(:product) { create(:product, name: name, release_type: release_type, arch: arch) } + + context 'with arch' do + let(:arch) { 'x86_64' } + + context 'without release_type' do + let(:release_type) { nil } + + it { is_expected.to eq('SLES_Special_Product_1_x86_64') } + end + context 'with release_type' do + let(:release_type) { 'Online' } + + it { is_expected.to eq('SLES_Special_Product_1_Online_x86_64') } + end + end + + context 'without arch' do + let(:arch) { 'unknown' } + + context 'without release_type' do + let(:release_type) { nil } + + it { is_expected.to eq('SLES_Special_Product_1') } + end + context 'with release_type' do + let(:release_type) { 'Online' } + + it { is_expected.to eq('SLES_Special_Product_1_Online') } + end + end + end end