diff --git a/app/controllers/projects/deployments_controller.rb b/app/controllers/projects/deployments_controller.rb index 4606ddd62cc..ed0f802dbd9 100644 --- a/app/controllers/projects/deployments_controller.rb +++ b/app/controllers/projects/deployments_controller.rb @@ -2,8 +2,9 @@ class Projects::DeploymentsController < Projects::ApplicationController before_action :authorize_read_deployment! def index + serializer = DeploymentSerializer.new(user: @current_user) deployments = environment.deployments.where('created_at > ?', 8.hours.ago) - .map { |d| d.slice(:id, :iid, :created_at, :sha, :ref, :tag) } + .map { |d| serializer.represent(d) } render json: { deployments: deployments } end diff --git a/app/serializers/deployment_entity.rb b/app/serializers/deployment_entity.rb index d610fbe0c8a..d9ade5d87e2 100644 --- a/app/serializers/deployment_entity.rb +++ b/app/serializers/deployment_entity.rb @@ -18,6 +18,7 @@ class DeploymentEntity < Grape::Entity end end + expose :created_at expose :tag expose :last? expose :user, using: UserEntity diff --git a/app/serializers/deployment_serializer.rb b/app/serializers/deployment_serializer.rb new file mode 100644 index 00000000000..4b4bf6cd526 --- /dev/null +++ b/app/serializers/deployment_serializer.rb @@ -0,0 +1,3 @@ +class DeploymentSerializer < BaseSerializer + entity DeploymentEntity +end diff --git a/spec/controllers/projects/deployments_controller_spec.rb b/spec/controllers/projects/deployments_controller_spec.rb index 97a9fb8ae61..b0d543177cc 100644 --- a/spec/controllers/projects/deployments_controller_spec.rb +++ b/spec/controllers/projects/deployments_controller_spec.rb @@ -28,19 +28,16 @@ describe Projects::DeploymentsController do end it 'returns a list with deployments information' do - deployment = create(:deployment, environment: environment) + create(:deployment, environment: environment) get :index, environment_params expect(response).to be_ok deployments = json_response['deployments'] deployment_info = deployments.first.with_indifferent_access - created_at = deployment_info.delete(:created_at).to_time.utc expect(deployments.count).to eq(1) - expect(deployment_info).to include(:id, :iid, :sha, :ref, :tag) - expect(deployment).to have_attributes(deployment_info) - expect(deployment.created_at).to be_within(1.second).of(created_at) + expect(deployment_info).to include(:id, :iid, :sha, :ref, :tag, :created_at) end end diff --git a/spec/serializers/deployment_entity_spec.rb b/spec/serializers/deployment_entity_spec.rb index 95eca5463eb..73bd60b62e5 100644 --- a/spec/serializers/deployment_entity_spec.rb +++ b/spec/serializers/deployment_entity_spec.rb @@ -24,4 +24,8 @@ describe DeploymentEntity do expect(subject[:ref][:name]).to eq 'master' expect(subject[:ref][:ref_path]).not_to be_empty end + + it 'exposes creation date' do + expect(subject).to include(:created_at) + end end