diff options
Diffstat (limited to 'spec/serializers')
-rw-r--r-- | spec/serializers/commit_entity_spec.rb | 9 | ||||
-rw-r--r-- | spec/serializers/deployment_entity_spec.rb | 6 | ||||
-rw-r--r-- | spec/serializers/environment_serializer_spec.rb | 28 | ||||
-rw-r--r-- | spec/serializers/group_link/group_group_link_entity_spec.rb | 50 | ||||
-rw-r--r-- | spec/serializers/group_link/project_group_link_entity_spec.rb | 2 | ||||
-rw-r--r-- | spec/serializers/member_user_entity_spec.rb | 10 |
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 |