diff options
Diffstat (limited to 'spec/lib/gitlab/pages_spec.rb')
-rw-r--r-- | spec/lib/gitlab/pages_spec.rb | 87 |
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 |