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:
Diffstat (limited to 'spec/serializers')
-rw-r--r--spec/serializers/commit_entity_spec.rb9
-rw-r--r--spec/serializers/deployment_entity_spec.rb6
-rw-r--r--spec/serializers/environment_serializer_spec.rb28
-rw-r--r--spec/serializers/group_link/group_group_link_entity_spec.rb50
-rw-r--r--spec/serializers/group_link/project_group_link_entity_spec.rb2
-rw-r--r--spec/serializers/member_user_entity_spec.rb10
6 files changed, 75 insertions, 30 deletions
diff --git a/spec/serializers/commit_entity_spec.rb b/spec/serializers/commit_entity_spec.rb
index 6b4346faf5b..ba2d7e17d1a 100644
--- a/spec/serializers/commit_entity_spec.rb
+++ b/spec/serializers/commit_entity_spec.rb
@@ -3,8 +3,6 @@
require 'spec_helper'
RSpec.describe CommitEntity do
- let(:signature_html) { 'TEST' }
-
let(:entity) do
described_class.new(commit, request: request)
end
@@ -16,11 +14,7 @@ RSpec.describe CommitEntity do
subject { entity.as_json }
before do
- render = double('render')
- allow(render).to receive(:call).and_return(signature_html)
-
allow(request).to receive(:project).and_return(project)
- allow(request).to receive(:render).and_return(render)
end
context 'when commit author is a user' do
@@ -83,8 +77,7 @@ RSpec.describe CommitEntity do
let(:commit) { project.commit(TestEnv::BRANCH_SHA['signed-commits']) }
it 'exposes "signature_html"' do
- expect(request.render).to receive(:call)
- expect(subject.fetch(:signature_html)).to be signature_html
+ expect(subject.fetch(:signature_html)).not_to be_nil
end
end
diff --git a/spec/serializers/deployment_entity_spec.rb b/spec/serializers/deployment_entity_spec.rb
index 1dacc9513ee..500d5718bf1 100644
--- a/spec/serializers/deployment_entity_spec.rb
+++ b/spec/serializers/deployment_entity_spec.rb
@@ -9,7 +9,7 @@ RSpec.describe DeploymentEntity do
let(:project) { create(:project, :repository) }
let(:request) { double('request') }
let(:deployment) { create(:deployment, deployable: build, project: project) }
- let(:build) { create(:ci_build, :manual, pipeline: pipeline) }
+ let(:build) { create(:ci_build, :manual, :environment_with_deployment_tier, pipeline: pipeline) }
let(:pipeline) { create(:ci_pipeline, project: project, user: user) }
let(:entity) { described_class.new(deployment, request: request) }
@@ -46,6 +46,10 @@ RSpec.describe DeploymentEntity do
expect(subject).to include(:is_last)
end
+ it 'exposes deployment tier in yaml' do
+ expect(subject).to include(:tier_in_yaml)
+ end
+
context 'when deployable is nil' do
let(:entity) { described_class.new(deployment, request: request, deployment_details: false) }
let(:deployment) { create(:deployment, deployable: nil, project: project) }
diff --git a/spec/serializers/environment_serializer_spec.rb b/spec/serializers/environment_serializer_spec.rb
index ec0dd735755..fe6278084f9 100644
--- a/spec/serializers/environment_serializer_spec.rb
+++ b/spec/serializers/environment_serializer_spec.rb
@@ -50,7 +50,7 @@ RSpec.describe EnvironmentSerializer do
context 'when there is a single environment' do
before do
- create(:environment, name: 'staging')
+ create(:environment, project: project, name: 'staging')
end
it 'represents one standalone environment' do
@@ -63,8 +63,8 @@ RSpec.describe EnvironmentSerializer do
context 'when there are multiple environments in folder' do
before do
- create(:environment, name: 'staging/my-review-1')
- create(:environment, name: 'staging/my-review-2')
+ create(:environment, project: project, name: 'staging/my-review-1')
+ create(:environment, project: project, name: 'staging/my-review-2')
end
it 'represents one item that is a folder' do
@@ -78,10 +78,10 @@ RSpec.describe EnvironmentSerializer do
context 'when there are multiple folders and standalone environments' do
before do
- create(:environment, name: 'staging/my-review-1')
- create(:environment, name: 'staging/my-review-2')
- create(:environment, name: 'production/my-review-3')
- create(:environment, name: 'testing')
+ create(:environment, project: project, name: 'staging/my-review-1')
+ create(:environment, project: project, name: 'staging/my-review-2')
+ create(:environment, project: project, name: 'production/my-review-3')
+ create(:environment, project: project, name: 'testing')
end
it 'represents multiple items grouped within folders' do
@@ -124,7 +124,7 @@ RSpec.describe EnvironmentSerializer do
context 'when resource is paginatable relation' do
context 'when there is a single environment object in relation' do
before do
- create(:environment)
+ create(:environment, project: project)
end
it 'serializes environments' do
@@ -134,7 +134,7 @@ RSpec.describe EnvironmentSerializer do
context 'when multiple environment objects are serialized' do
before do
- create_list(:environment, 3)
+ create_list(:environment, 3, project: project)
end
it 'serializes appropriate number of objects' do
@@ -159,10 +159,10 @@ RSpec.describe EnvironmentSerializer do
end
before do
- create(:environment, name: 'staging/review-1')
- create(:environment, name: 'staging/review-2')
- create(:environment, name: 'production/deploy-3')
- create(:environment, name: 'testing')
+ create(:environment, project: project, name: 'staging/review-1')
+ create(:environment, project: project, name: 'staging/review-2')
+ create(:environment, project: project, name: 'production/deploy-3')
+ create(:environment, project: project, name: 'testing')
end
it 'paginates grouped items including ordering' do
@@ -189,7 +189,7 @@ RSpec.describe EnvironmentSerializer do
let(:resource) { Environment.all }
before do
- create(:environment, name: 'staging/review-1')
+ create(:environment, project: project, name: 'staging/review-1')
create_environment_with_associations(project)
end
diff --git a/spec/serializers/group_link/group_group_link_entity_spec.rb b/spec/serializers/group_link/group_group_link_entity_spec.rb
index 2821c433784..502cdc5c048 100644
--- a/spec/serializers/group_link/group_group_link_entity_spec.rb
+++ b/spec/serializers/group_link/group_group_link_entity_spec.rb
@@ -7,7 +7,7 @@ RSpec.describe GroupLink::GroupGroupLinkEntity do
let_it_be(:current_user) { create(:user) }
- let(:entity) { described_class.new(group_group_link) }
+ let(:entity) { described_class.new(group_group_link, { current_user: current_user, source: shared_group }) }
before do
allow(entity).to receive(:current_user).and_return(current_user)
@@ -17,16 +17,56 @@ RSpec.describe GroupLink::GroupGroupLinkEntity do
expect(entity.to_json).to match_schema('group_link/group_group_link')
end
+ context 'source' do
+ it 'exposes `source`' do
+ expect(entity.as_json[:source]).to include(
+ id: shared_group.id,
+ full_name: shared_group.full_name,
+ web_url: shared_group.web_url
+ )
+ end
+ end
+
+ context 'is_direct_member' do
+ it 'exposes `is_direct_member` as true for corresponding group' do
+ expect(entity.as_json[:is_direct_member]).to be true
+ end
+
+ it 'exposes `is_direct_member` as false for other source' do
+ entity = described_class.new(group_group_link, { current_user: current_user, source: shared_with_group })
+ expect(entity.as_json[:is_direct_member]).to be false
+ end
+ end
+
context 'when current user has `:admin_group_member` permissions' do
before do
allow(entity).to receive(:can?).with(current_user, :admin_group_member, shared_group).and_return(true)
end
- it 'exposes `can_update` and `can_remove` as `true`' do
- json = entity.as_json
+ context 'when direct_member? is true' do
+ before do
+ allow(entity).to receive(:direct_member?).and_return(true)
+ end
+
+ it 'exposes `can_update` and `can_remove` as `true`' do
+ json = entity.as_json
+
+ expect(json[:can_update]).to be true
+ expect(json[:can_remove]).to be true
+ end
+ end
+
+ context 'when direct_member? is false' do
+ before do
+ allow(entity).to receive(:direct_member?).and_return(false)
+ end
+
+ it 'exposes `can_update` and `can_remove` as `true`' do
+ json = entity.as_json
- expect(json[:can_update]).to be true
- expect(json[:can_remove]).to be true
+ expect(json[:can_update]).to be false
+ expect(json[:can_remove]).to be false
+ end
end
end
end
diff --git a/spec/serializers/group_link/project_group_link_entity_spec.rb b/spec/serializers/group_link/project_group_link_entity_spec.rb
index e7e42d79b5e..f2a9f3a107a 100644
--- a/spec/serializers/group_link/project_group_link_entity_spec.rb
+++ b/spec/serializers/group_link/project_group_link_entity_spec.rb
@@ -6,7 +6,7 @@ RSpec.describe GroupLink::ProjectGroupLinkEntity do
let_it_be(:current_user) { create(:user) }
let_it_be(:project_group_link) { create(:project_group_link) }
- let(:entity) { described_class.new(project_group_link) }
+ let(:entity) { described_class.new(project_group_link, { current_user: current_user, source: project_group_link.project }) }
before do
allow(entity).to receive(:current_user).and_return(current_user)
diff --git a/spec/serializers/member_user_entity_spec.rb b/spec/serializers/member_user_entity_spec.rb
index b505571cbf2..0e6d4bcc3fb 100644
--- a/spec/serializers/member_user_entity_spec.rb
+++ b/spec/serializers/member_user_entity_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
RSpec.describe MemberUserEntity do
- let_it_be(:user) { create(:user) }
+ let_it_be(:user) { create(:user, last_activity_on: Date.today) }
let_it_be(:emoji) { 'slight_smile' }
let_it_be(:user_status) { create(:user_status, user: user, emoji: emoji) }
@@ -36,4 +36,12 @@ RSpec.describe MemberUserEntity do
it 'correctly exposes `status.emoji`' do
expect(entity_hash[:status][:emoji]).to match(emoji)
end
+
+ it 'correctly exposes `created_at`' do
+ expect(entity_hash[:created_at]).to be(user.created_at)
+ end
+
+ it 'correctly exposes `last_activity_on`' do
+ expect(entity_hash[:last_activity_on]).to be(user.last_activity_on)
+ end
end