diff options
Diffstat (limited to 'spec/lib/gitlab/github_import/settings_spec.rb')
-rw-r--r-- | spec/lib/gitlab/github_import/settings_spec.rb | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/spec/lib/gitlab/github_import/settings_spec.rb b/spec/lib/gitlab/github_import/settings_spec.rb new file mode 100644 index 00000000000..ad0c47e8e8a --- /dev/null +++ b/spec/lib/gitlab/github_import/settings_spec.rb @@ -0,0 +1,82 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Gitlab::GithubImport::Settings do + subject(:settings) { described_class.new(project) } + + let_it_be(:project) { create(:project) } + + let(:optional_stages) do + { + single_endpoint_issue_events_import: true, + single_endpoint_notes_import: false, + attachments_import: false + } + end + + describe '.stages_array' do + let(:expected_list) do + stages = described_class::OPTIONAL_STAGES + [ + { + name: 'single_endpoint_issue_events_import', + label: stages[:single_endpoint_issue_events_import][:label], + details: stages[:single_endpoint_issue_events_import][:details] + }, + { + name: 'single_endpoint_notes_import', + label: stages[:single_endpoint_notes_import][:label], + details: stages[:single_endpoint_notes_import][:details] + }, + { + name: 'attachments_import', + label: stages[:attachments_import][:label].strip, + details: stages[:attachments_import][:details] + } + ] + end + + it 'returns stages list as array' do + expect(described_class.stages_array).to match_array(expected_list) + end + end + + describe '#write' do + let(:data_input) do + { + single_endpoint_issue_events_import: true, + single_endpoint_notes_import: 'false', + attachments_import: nil, + foo: :bar + }.stringify_keys + end + + it 'puts optional steps flags into projects import_data' do + settings.write(data_input) + + expect(project.import_data.data['optional_stages']) + .to eq optional_stages.stringify_keys + end + end + + describe '#enabled?' do + it 'returns is enabled or not specific optional stage' do + project.create_or_update_import_data(data: { optional_stages: optional_stages }) + + expect(settings.enabled?(:single_endpoint_issue_events_import)).to eq true + expect(settings.enabled?(:single_endpoint_notes_import)).to eq false + expect(settings.enabled?(:attachments_import)).to eq false + end + end + + describe '#disabled?' do + it 'returns is disabled or not specific optional stage' do + project.create_or_update_import_data(data: { optional_stages: optional_stages }) + + expect(settings.disabled?(:single_endpoint_issue_events_import)).to eq false + expect(settings.disabled?(:single_endpoint_notes_import)).to eq true + expect(settings.disabled?(:attachments_import)).to eq true + end + end +end |