diff --git a/app/services/work_items/export_csv_service.rb b/app/services/work_items/export_csv_service.rb index e0a1b90b597a02cd0755889a4f6197bb21f4adc0..9bef75e2c40091f37d4c6c71b94b3cf4feb8f3f4 100644 --- a/app/services/work_items/export_csv_service.rb +++ b/app/services/work_items/export_csv_service.rb @@ -2,6 +2,14 @@ module WorkItems class ExportCsvService < ExportCsv::BaseService + NotAvailableError = StandardError.new('This feature is currently behind a feature flag and it is not available.') + + def csv_data + raise NotAvailableError unless Feature.enabled?(:import_export_work_items_csv, resource_parent) + + super + end + def email(mail_to_user) # TODO - will be implemented as part of https://gitlab.com/gitlab-org/gitlab/-/issues/379082 end diff --git a/config/feature_flags/development/import_export_work_items_csv.yml b/config/feature_flags/development/import_export_work_items_csv.yml new file mode 100644 index 0000000000000000000000000000000000000000..344af8659ca52e2b8960659059fdbac9bb4e9db7 --- /dev/null +++ b/config/feature_flags/development/import_export_work_items_csv.yml @@ -0,0 +1,8 @@ +--- +name: import_export_work_items_csv +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/111935 +rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/390330 +milestone: '15.9' +type: development +group: group::certify +default_enabled: false diff --git a/spec/services/work_items/export_csv_service_spec.rb b/spec/services/work_items/export_csv_service_spec.rb index fdf195fa9fd1bf0d79afc8da5a36f4dd27c8648a..0718d3b686a556141f784f8dc9d0d8333d651d2a 100644 --- a/spec/services/work_items/export_csv_service_spec.rb +++ b/spec/services/work_items/export_csv_service_spec.rb @@ -15,6 +15,16 @@ def csv CSV.parse(subject.csv_data, headers: true) end + context 'when import_export_work_items_csv flag is not enabled' do + before do + stub_feature_flags(import_export_work_items_csv: false) + end + + it 'renders an error' do + expect { subject.csv_data }.to raise_error(described_class::NotAvailableError) + end + end + it 'renders csv to string' do expect(subject.csv_data).to be_a String end