From 7dc7d5a816b61562482e380de1fe442c64fdcdb8 Mon Sep 17 00:00:00 2001 From: Heinrich Lee Yu Date: Wed, 1 Apr 2020 00:37:09 +0800 Subject: [PATCH] Do not generate subscriptions from plan_id We set the default to the free plan because we are removing the plan_id column --- ee/app/models/ee/namespace.rb | 2 +- ee/spec/factories/namespaces.rb | 19 +++++++++++++++++++ .../features/billings/billing_plans_spec.rb | 1 - .../helpers/ee/user_callouts_helper_spec.rb | 12 ++++++------ ee/spec/models/ee/namespace_spec.rb | 10 +++++----- ee/spec/models/namespace_spec.rb | 11 ----------- ee/spec/requests/api/namespaces_spec.rb | 2 -- 7 files changed, 31 insertions(+), 26 deletions(-) diff --git a/ee/app/models/ee/namespace.rb b/ee/app/models/ee/namespace.rb index ae8b20ca94253a..1b5419f1d324a0 100644 --- a/ee/app/models/ee/namespace.rb +++ b/ee/app/models/ee/namespace.rb @@ -444,7 +444,7 @@ def generate_subscription return if ::Gitlab::Database.read_only? create_gitlab_subscription( - plan_code: plan&.name, + plan_code: Plan::FREE, trial: trial_active?, start_date: created_at, seats: 0 diff --git a/ee/spec/factories/namespaces.rb b/ee/spec/factories/namespaces.rb index 65aa3e603717da..ad59b483e11052 100644 --- a/ee/spec/factories/namespaces.rb +++ b/ee/spec/factories/namespaces.rb @@ -31,3 +31,22 @@ end end end + +FactoryBot.define do + factory :namespace_with_plan, parent: :namespace do + transient do + plan { :default_plan } + trial_ends_on { nil } + end + + after(:create) do |namespace, evaluator| + if evaluator.plan + create(:gitlab_subscription, + namespace: namespace, + hosted_plan: create(evaluator.plan), + trial: evaluator.trial_ends_on.present?, + trial_ends_on: evaluator.trial_ends_on) + end + end + end +end diff --git a/ee/spec/features/billings/billing_plans_spec.rb b/ee/spec/features/billings/billing_plans_spec.rb index f4be0f6eefb006..d026852dc0504f 100644 --- a/ee/spec/features/billings/billing_plans_spec.rb +++ b/ee/spec/features/billings/billing_plans_spec.rb @@ -425,7 +425,6 @@ def external_upgrade_url(namespace, plan) end before do - expect_any_instance_of(EE::Namespace).to receive(:plan).at_least(:once).and_return(nil) visit profile_billings_path end diff --git a/ee/spec/helpers/ee/user_callouts_helper_spec.rb b/ee/spec/helpers/ee/user_callouts_helper_spec.rb index 9fbff06a45d6d7..dea61ce3e6b582 100644 --- a/ee/spec/helpers/ee/user_callouts_helper_spec.rb +++ b/ee/spec/helpers/ee/user_callouts_helper_spec.rb @@ -224,7 +224,6 @@ let_it_be(:silver_plan) { create(:silver_plan) } let_it_be(:gold_plan) { create(:gold_plan) } let(:user) { namespace.owner } - let(:gitlab_subscription) { create(:gitlab_subscription, namespace: namespace) } where(:never_had_trial?, :show_gold_trial?, :gold_plan?, :free_plan?, :should_render?) do true | true | false | false | true @@ -248,12 +247,13 @@ with_them do before do allow(helper).to receive(:show_gold_trial?) { show_gold_trial? } - namespace.update(plan: gold_plan) if gold_plan? - namespace.update(plan: silver_plan) if !gold_plan? && !free_plan? - unless never_had_trial? - namespace.update(plan: free_plan) - namespace.create_gitlab_subscription(trial_ends_on: Date.yesterday) + if !never_had_trial? + create(:gitlab_subscription, namespace: namespace, hosted_plan: free_plan, trial_ends_on: Date.yesterday) + elsif gold_plan? + create(:gitlab_subscription, namespace: namespace, hosted_plan: gold_plan) + elsif !free_plan? + create(:gitlab_subscription, namespace: namespace, hosted_plan: silver_plan) end end diff --git a/ee/spec/models/ee/namespace_spec.rb b/ee/spec/models/ee/namespace_spec.rb index 87cc0f41c3c6ba..64b7052d18accd 100644 --- a/ee/spec/models/ee/namespace_spec.rb +++ b/ee/spec/models/ee/namespace_spec.rb @@ -4,7 +4,7 @@ describe Namespace do shared_examples 'plan helper' do |namespace_plan| - let(:namespace) { create(:namespace, plan: "#{plan_name}_plan") } + let(:namespace) { create(:namespace_with_plan, plan: "#{plan_name}_plan") } subject { namespace.public_send("#{namespace_plan}_plan?") } @@ -151,7 +151,7 @@ end describe '#actual_plan_name' do - let(:namespace) { create(:namespace, plan: :gold_plan) } + let(:namespace) { create(:namespace) } subject { namespace.actual_plan_name } @@ -170,7 +170,7 @@ end context 'when namespace is not persisted' do - let(:namespace) { build(:namespace, plan: :gold_plan) } + let(:namespace) { build(:namespace) } it 'returns free plan' do is_expected.to eq('free') @@ -182,8 +182,8 @@ end context 'when DB is not read-only' do - it 'returns gold plan' do - is_expected.to eq('gold') + it 'returns free plan' do + is_expected.to eq('free') end it 'creates a gitlab_subscription' do diff --git a/ee/spec/models/namespace_spec.rb b/ee/spec/models/namespace_spec.rb index 1b6f055fdbf6d0..047b5ef1776033 100644 --- a/ee/spec/models/namespace_spec.rb +++ b/ee/spec/models/namespace_spec.rb @@ -715,17 +715,6 @@ def stub_minutes_used_and_limit(minutes_used, limit) end describe '#actual_plan' do - context 'when namespace has a plan associated' do - before do - namespace.update_attribute(:plan, gold_plan) - end - - it 'generates a subscription with that plan code' do - expect(namespace.actual_plan).to eq(gold_plan) - expect(namespace.gitlab_subscription).to be_present - end - end - context 'when namespace has a subscription associated' do before do create(:gitlab_subscription, namespace: namespace, hosted_plan: gold_plan) diff --git a/ee/spec/requests/api/namespaces_spec.rb b/ee/spec/requests/api/namespaces_spec.rb index 9ff0e85cb516df..c4b33896138d74 100644 --- a/ee/spec/requests/api/namespaces_spec.rb +++ b/ee/spec/requests/api/namespaces_spec.rb @@ -121,7 +121,6 @@ aggregate_failures do expect(response).to have_gitlab_http_status(:ok) - expect(json_response['plan']).to eq('silver') expect(json_response['shared_runners_minutes_limit']).to eq(9001) end end @@ -130,7 +129,6 @@ put api("/namespaces/#{group1.id}", admin), params: { plan: 'silver', shared_runners_minutes_limit: 9001 } expect(response).to have_gitlab_http_status(:ok) - expect(json_response['plan']).to eq('silver') expect(json_response['shared_runners_minutes_limit']).to eq(9001) end end -- GitLab