summaryrefslogtreecommitdiff
path: root/spec/helpers/storage_helper_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/helpers/storage_helper_spec.rb')
-rw-r--r--spec/helpers/storage_helper_spec.rb83
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 &gt; 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