diff options
Diffstat (limited to 'spec/helpers/storage_helper_spec.rb')
-rw-r--r-- | spec/helpers/storage_helper_spec.rb | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/spec/helpers/storage_helper_spec.rb b/spec/helpers/storage_helper_spec.rb index d0646b30161..82b78ed831c 100644 --- a/spec/helpers/storage_helper_spec.rb +++ b/spec/helpers/storage_helper_spec.rb @@ -50,4 +50,87 @@ RSpec.describe StorageHelper do expect(helper.storage_counters_details(namespace_stats)).to eq(message) end end + + describe "storage_enforcement_banner" do + let_it_be_with_refind(:current_user) { create(:user) } + let_it_be(:free_group) { create(:group) } + let_it_be(:paid_group) { create(:group) } + + before do + allow(helper).to receive(:current_user) { current_user } + allow(Gitlab).to receive(:com?).and_return(true) + allow(paid_group).to receive(:paid?).and_return(true) + end + + describe "#storage_enforcement_banner_info" do + it 'returns nil when namespace is not free' do + expect(storage_enforcement_banner_info(paid_group)).to be(nil) + end + + it 'returns nil when storage_enforcement_date is not set' do + allow(free_group).to receive(:storage_enforcement_date).and_return(nil) + + expect(storage_enforcement_banner_info(free_group)).to be(nil) + end + + it 'returns a hash when storage_enforcement_date is set' do + storage_enforcement_date = Date.today + 30 + allow(free_group).to receive(:storage_enforcement_date).and_return(storage_enforcement_date) + + expect(storage_enforcement_banner_info(free_group)).to eql({ + text: "From #{storage_enforcement_date} storage limits will apply to this namespace. View and manage your usage in <strong>Group Settings > Usage quotas</strong>.", + variant: 'warning', + callouts_feature_name: 'storage_enforcement_banner_second_enforcement_threshold', + callouts_path: '/-/users/group_callouts', + learn_more_link: '<a rel="noopener noreferrer" target="_blank" href="/help//">Learn more.</a>' + }) + end + + context 'when storage_enforcement_date is set and dismissed callout exists' do + before do + create(:group_callout, + user: current_user, + group_id: free_group.id, + feature_name: 'storage_enforcement_banner_second_enforcement_threshold') + storage_enforcement_date = Date.today + 30 + allow(free_group).to receive(:storage_enforcement_date).and_return(storage_enforcement_date) + end + + it { expect(storage_enforcement_banner_info(free_group)).to be(nil) } + end + + context 'callouts_feature_name' do + let(:days_from_now) { 45 } + + subject do + storage_enforcement_date = Date.today + days_from_now + allow(free_group).to receive(:storage_enforcement_date).and_return(storage_enforcement_date) + + storage_enforcement_banner_info(free_group)[:callouts_feature_name] + end + + it 'returns first callouts_feature_name' do + is_expected.to eq('storage_enforcement_banner_first_enforcement_threshold') + end + + context 'returns second callouts_feature_name' do + let(:days_from_now) { 20 } + + it { is_expected.to eq('storage_enforcement_banner_second_enforcement_threshold') } + end + + context 'returns third callouts_feature_name' do + let(:days_from_now) { 13 } + + it { is_expected.to eq('storage_enforcement_banner_third_enforcement_threshold') } + end + + context 'returns fourth callouts_feature_name' do + let(:days_from_now) { 3 } + + it { is_expected.to eq('storage_enforcement_banner_fourth_enforcement_threshold') } + end + end + end + end end |