Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2023-02-07 21:07:51 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2023-02-07 21:07:51 +0300
commit6cae2159b8ce1e84fad48f3dbd5368995cbd87b1 (patch)
tree46d6b7cbd78d72fe5dcb5d6b1ed973b30deadc71 /spec/serializers
parent84f9f0cb8137637708a41152347e7754c1e9fb83 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/serializers')
-rw-r--r--spec/serializers/import/github_realtime_repo_entity_spec.rb39
-rw-r--r--spec/serializers/import/github_realtime_repo_serializer_spec.rb48
-rw-r--r--spec/serializers/project_import_entity_spec.rb19
3 files changed, 105 insertions, 1 deletions
diff --git a/spec/serializers/import/github_realtime_repo_entity_spec.rb b/spec/serializers/import/github_realtime_repo_entity_spec.rb
new file mode 100644
index 00000000000..7f137366be2
--- /dev/null
+++ b/spec/serializers/import/github_realtime_repo_entity_spec.rb
@@ -0,0 +1,39 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+RSpec.describe Import::GithubRealtimeRepoEntity, feature_category: :importers do
+ subject(:entity) { described_class.new(project) }
+
+ let(:import_state) { instance_double(ProjectImportState, failed?: false, in_progress?: true) }
+ let(:import_failures) { [instance_double(ImportFailure, exception_message: 'test error')] }
+ let(:project) do
+ instance_double(
+ Project,
+ id: 100500,
+ import_status: 'importing',
+ import_state: import_state,
+ import_failures: import_failures,
+ import_checksums: {}
+ )
+ end
+
+ it 'exposes correct attributes' do
+ data = entity.as_json
+
+ expect(data.keys).to contain_exactly(:id, :import_status, :stats)
+ expect(data[:id]).to eq project.id
+ expect(data[:import_status]).to eq project.import_status
+ end
+
+ context 'when import stats is failed' do
+ let(:import_state) { instance_double(ProjectImportState, failed?: true, in_progress?: false) }
+
+ it 'includes import_error' do
+ data = entity.as_json
+
+ expect(data.keys).to contain_exactly(:id, :import_status, :stats, :import_error)
+ expect(data[:import_error]).to eq 'test error'
+ end
+ end
+end
diff --git a/spec/serializers/import/github_realtime_repo_serializer_spec.rb b/spec/serializers/import/github_realtime_repo_serializer_spec.rb
new file mode 100644
index 00000000000..b656132e332
--- /dev/null
+++ b/spec/serializers/import/github_realtime_repo_serializer_spec.rb
@@ -0,0 +1,48 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+RSpec.describe Import::GithubRealtimeRepoSerializer, feature_category: :importers do
+ subject(:serializer) { described_class.new }
+
+ it '.entity_class' do
+ expect(described_class.entity_class).to eq(Import::GithubRealtimeRepoEntity)
+ end
+
+ describe '#represent' do
+ let(:import_state) { instance_double(ProjectImportState, failed?: false, in_progress?: true) }
+ let(:project) do
+ instance_double(
+ Project,
+ id: 100500,
+ import_status: 'importing',
+ import_state: import_state
+ )
+ end
+
+ let(:expected_data) do
+ {
+ id: project.id,
+ import_status: 'importing',
+ stats: { fetched: {}, imported: {} }
+ }.deep_stringify_keys
+ end
+
+ context 'when a single object is being serialized' do
+ let(:resource) { project }
+
+ it 'serializes organization object' do
+ expect(serializer.represent(resource).as_json).to eq expected_data
+ end
+ end
+
+ context 'when multiple objects are being serialized' do
+ let(:count) { 3 }
+ let(:resource) { Array.new(count, project) }
+
+ it 'serializes array of organizations' do
+ expect(serializer.represent(resource).as_json).to all(eq(expected_data))
+ end
+ end
+ end
+end
diff --git a/spec/serializers/project_import_entity_spec.rb b/spec/serializers/project_import_entity_spec.rb
index 94af9f1cbd8..6d292d18ae7 100644
--- a/spec/serializers/project_import_entity_spec.rb
+++ b/spec/serializers/project_import_entity_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe ProjectImportEntity do
+RSpec.describe ProjectImportEntity, feature_category: :importers do
include ImportHelper
let_it_be(:project) { create(:project, import_status: :started, import_source: 'namespace/project') }
@@ -10,6 +10,10 @@ RSpec.describe ProjectImportEntity do
let(:provider_url) { 'https://provider.com' }
let(:entity) { described_class.represent(project, provider_url: provider_url) }
+ before do
+ create(:import_failure, project: project)
+ end
+
describe '#as_json' do
subject { entity.as_json }
@@ -18,6 +22,19 @@ RSpec.describe ProjectImportEntity do
expect(subject[:import_status]).to eq(project.import_status)
expect(subject[:human_import_status_name]).to eq(project.human_import_status_name)
expect(subject[:provider_link]).to eq(provider_project_link_url(provider_url, project[:import_source]))
+ expect(subject[:import_error]).to eq(nil)
+ end
+
+ context 'when import is failed' do
+ let!(:last_import_failure) { create(:import_failure, project: project, exception_message: 'LAST ERROR') }
+
+ before do
+ project.import_state.fail_op!
+ end
+
+ it 'includes only the last import failure' do
+ expect(subject[:import_error]).to eq(last_import_failure.exception_message)
+ end
end
end
end