Skip to content
Snippets Groups Projects
Commit f1e9c97d authored by Grzegorz Bizon's avatar Grzegorz Bizon
Browse files

Use entity request object in environment entity

parent acfe3940
No related branches found
No related tags found
1 merge request!7174Add serializer for environments
Pipeline #
Loading
Loading
@@ -9,9 +9,17 @@ class EnvironmentEntity < Grape::Entity
as: :deployment,
using: API::Entities::Deployment
 
expose :environment_path
expose :gitlab_path do |environment|
namespace_project_environment_path(
environment.project.namespace,
environment.project,
environment
)
end
expose :can_read?
 
def environment_path
request.path
def can_read?
Ability.allowed?(request.user, :read_environment, @object)
end
end
class ProjectEntity < Grape::Entity
include RequestAwareEntity
expose :id
expose :name
 
expose :test do |project|
'something'
request.user.email
end
end
module RequestAwareEntity
# We use SerializableRequest class to collect parameters and variables
# from the controller. Because options that are being passed to the entity
# are appear in each entity in the chain, we need a way to access data
# that is present in the controller (see #20045).
#
def request
options[:request] ||
raise(StandardError, 'Request not set!!')
Loading
Loading
Loading
Loading
@@ -2,18 +2,21 @@ require 'spec_helper'
 
describe EnvironmentSerializer do
let(:serializer) do
described_class.new(path: 'some path').represent(resource)
described_class.new(path: 'some path', user: user)
.represent(resource)
end
 
let(:user) { create(:user) }
context 'when there is a single object provided' do
let(:resource) { create(:environment) }
 
it 'shows json' do
puts serializer.to_json
puts serializer.as_json
end
 
it 'it generates payload for single object' do
expect(parsed_json).to be_an_instance_of Hash
expect(serializer.as_json).to be_an_instance_of Hash
end
end
 
Loading
Loading
@@ -21,15 +24,11 @@ describe EnvironmentSerializer do
let(:resource) { create_list(:environment, 2) }
 
it 'shows json' do
puts serializer.to_json
puts serializer.as_json
end
 
it 'generates payload for collection' do
expect(parsed_json).to be_an_instance_of Array
end
expect(serializer.as_json).to be_an_instance_of Array
end
def parsed_json
JSON.parse(serializer.to_json)
end
end
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment