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:
Diffstat (limited to 'spec/lib/gitlab/pages_spec.rb')
-rw-r--r--spec/lib/gitlab/pages_spec.rb87
1 files changed, 86 insertions, 1 deletions
diff --git a/spec/lib/gitlab/pages_spec.rb b/spec/lib/gitlab/pages_spec.rb
index 9f85efd56e6..c20956788ac 100644
--- a/spec/lib/gitlab/pages_spec.rb
+++ b/spec/lib/gitlab/pages_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe Gitlab::Pages do
+RSpec.describe Gitlab::Pages, feature_category: :pages do
using RSpec::Parameterized::TableSyntax
let(:pages_secret) { SecureRandom.random_bytes(Gitlab::Pages::SECRET_LENGTH) }
@@ -48,4 +48,89 @@ RSpec.describe Gitlab::Pages do
it { is_expected.to eq(result) }
end
end
+
+ describe '.multiple_versions_enabled_for?' do
+ context 'when project is nil' do
+ it 'returns false' do
+ expect(described_class.multiple_versions_enabled_for?(nil)).to eq(false)
+ end
+ end
+
+ context 'when a project is given' do
+ let_it_be(:project) { create(:project) }
+
+ where(:setting, :feature_flag, :license, :result) do
+ false | false | false | false
+ false | false | true | false
+ false | true | false | false
+ false | true | true | false
+ true | false | false | false
+ true | false | true | false
+ true | true | false | false
+ true | true | true | true
+ end
+
+ with_them do
+ let_it_be(:project) { create(:project) }
+
+ subject { described_class.multiple_versions_enabled_for?(project) }
+
+ before do
+ stub_licensed_features(pages_multiple_versions: license)
+ stub_feature_flags(pages_multiple_versions_setting: feature_flag)
+ project.project_setting.update!(pages_multiple_versions_enabled: setting)
+ end
+
+ # this feature is only available in EE
+ it { is_expected.to eq(result && Gitlab.ee?) }
+ end
+ end
+ end
+
+ describe '#add_unique_domain_to' do
+ let(:project) { build(:project) }
+
+ context 'when pages is not enabled' do
+ before do
+ stub_pages_setting(enabled: false)
+ end
+
+ it 'does not set pages unique domain' do
+ expect(Gitlab::Pages::RandomDomain).not_to receive(:generate)
+
+ described_class.add_unique_domain_to(project)
+
+ expect(project.project_setting.pages_unique_domain_enabled).to eq(false)
+ expect(project.project_setting.pages_unique_domain).to eq(nil)
+ end
+ end
+
+ context 'when pages is enabled' do
+ before do
+ stub_pages_setting(enabled: true)
+ end
+
+ it 'enables unique domain by default' do
+ allow(Gitlab::Pages::RandomDomain)
+ .to receive(:generate)
+ .and_return('unique-domain')
+
+ described_class.add_unique_domain_to(project)
+
+ expect(project.project_setting.pages_unique_domain_enabled).to eq(true)
+ expect(project.project_setting.pages_unique_domain).to eq('unique-domain')
+ end
+
+ context 'when project already have a unique domain' do
+ it 'does not changes the original unique domain' do
+ expect(Gitlab::Pages::RandomDomain).not_to receive(:generate)
+ project.project_setting.update!(pages_unique_domain: 'unique-domain')
+
+ described_class.add_unique_domain_to(project.reload)
+
+ expect(project.project_setting.pages_unique_domain).to eq('unique-domain')
+ end
+ end
+ end
+ end
end