Commit 8743e59f authored by James Lopez's avatar James Lopez

get all stages to use serlalizers - apart from plan - WIP

parent f5600997
class AnalyticsBuildEntity < Grape::Entity
include RequestAwareEntity
include EntityDateHelper
expose :name
expose :id
expose :ref, as: :branch
expose :short_sha
expose :started_at, as: :date
expose :duration, as: :total_time
expose :author, using: UserEntity
expose :started_at, as: :date do |build|
interval_in_words(build[:started_at])
end
expose :duration, as: :total_time do |build|
distance_of_time_in_words(build[:duration].to_f)
end
expose :branch do
expose :ref, as: :name
......
class AnalyticsGenericEntity < Grape::Entity
include RequestAwareEntity
include ActionView::Helpers::DateHelper
include EntityDateHelper
expose :title
expose :iid
expose :state, if: ->(_instance, options) { options[:request].entity == :merge_request }
expose :author, using: UserEntity
expose :total_time do |object|
......@@ -24,8 +24,4 @@ class AnalyticsGenericEntity < Grape::Entity
def url_to(route, id)
public_send("#{route}_url", request.project.namespace, request.project, id)
end
def interval_in_words(diff)
"#{distance_of_time_in_words(diff.to_f)} ago"
end
end
module EntityDateHelper
include ActionView::Helpers::DateHelper
def interval_in_words(diff)
"#{distance_of_time_in_words(diff.to_f)} ago"
end
end
\ No newline at end of file
......@@ -34,7 +34,7 @@ module Gitlab
end
def review_events
@fetcher.fetch(stage: :review).map { |event| parse_event(event) }
@fetcher.fetch(stage: :review).map { |event| parse_event(event, entity: :merge_request) }
end
def staging_events
......@@ -44,7 +44,7 @@ module Gitlab
end
def production_events
@fetcher.fetch(stage: :production).each { |event| parse_event(event) }
@fetcher.fetch(stage: :production).map { |event| parse_event(event) }
end
private
......
......@@ -67,7 +67,7 @@ module Gitlab
projections: [mr_table[:title],
mr_table[:iid],
mr_table[:id],
mr_table[:created_at].as('opened_at'),
mr_table[:created_at],
mr_table[:state],
mr_table[:author_id]]
}
......
......@@ -60,15 +60,15 @@ describe Gitlab::CycleAnalytics::Events do
end
it "has the author's URL" do
expect(subject.plan_events.first[:author_profile_url]).not_to be_nil
expect(subject.plan_events.first[:author][:web_url]).not_to be_nil
end
it "has the author's avatar URL" do
expect(subject.plan_events.first[:author_avatar_url]).not_to be_nil
expect(subject.plan_events.first[:author][:avatar_url]).not_to be_nil
end
it "has the author's name" do
expect(subject.plan_events.first[:author_name]).not_to be_nil
expect(subject.plan_events.first[:author][:name]).to eq(context.author.name)
end
end
......@@ -94,15 +94,15 @@ describe Gitlab::CycleAnalytics::Events do
end
it "has the author's URL" do
expect(subject.code_events.first[:author_profile_url]).not_to be_nil
expect(subject.code_events.first[:author][:web_url]).not_to be_nil
end
it "has the author's avatar URL" do
expect(subject.code_events.first[:author_avatar_url]).not_to be_nil
expect(subject.code_events.first[:author][:avatar_url]).not_to be_nil
end
it "has the author's name" do
expect(subject.code_events.first[:author_name]).to eq(context.author.name)
expect(subject.code_events.first[:author][:name]).to eq(MergeRequest.first.author.name)
end
end
......@@ -184,19 +184,19 @@ describe Gitlab::CycleAnalytics::Events do
end
it 'has a created_at timestamp' do
expect(subject.review_events.first[:opened_at]).not_to be_nil
expect(subject.review_events.first[:created_at]).not_to be_nil
end
it "has the author's URL" do
expect(subject.review_events.first[:author_profile_url]).not_to be_nil
expect(subject.review_events.first[:author][:web_url]).not_to be_nil
end
it "has the author's avatar URL" do
expect(subject.review_events.first[:author_avatar_url]).not_to be_nil
expect(subject.review_events.first[:author][:avatar_url]).not_to be_nil
end
it "has the author's name" do
expect(subject.review_events.first[:author_name]).to eq(MergeRequest.first.author.name)
expect(subject.review_events.first[:author][:name]).to eq(MergeRequest.first.author.name)
end
end
......@@ -237,11 +237,11 @@ describe Gitlab::CycleAnalytics::Events do
end
it 'has the branch URL' do
expect(subject.staging_events.first[:branch_url]).not_to be_nil
expect(subject.staging_events.first[:branch][:url]).not_to be_nil
end
it 'has the short SHA' do
expect(subject.staging_events.first[:sha]).not_to be_nil
expect(subject.staging_events.first[:short_sha]).not_to be_nil
end
it 'has the commit URL' do
......@@ -256,8 +256,16 @@ describe Gitlab::CycleAnalytics::Events do
expect(subject.staging_events.first[:total_time]).not_to be_nil
end
it 'has the author name' do
expect(subject.staging_events.first[:author_name]).not_to be_nil
it "has the author's URL" do
expect(subject.staging_events.first[:author][:web_url]).not_to be_nil
end
it "has the author's avatar URL" do
expect(subject.staging_events.first[:author][:avatar_url]).not_to be_nil
end
it "has the author's name" do
expect(subject.staging_events.first[:author][:name]).to eq(MergeRequest.first.author.name)
end
end
......@@ -290,15 +298,15 @@ describe Gitlab::CycleAnalytics::Events do
end
it "has the author's URL" do
expect(subject.production_events.first[:author_profile_url]).not_to be_nil
expect(subject.production_events.first[:author][:web_url]).not_to be_nil
end
it "has the author's avatar URL" do
expect(subject.production_events.first[:author_avatar_url]).not_to be_nil
expect(subject.production_events.first[:author][:avatar_url]).not_to be_nil
end
it "has the author's name" do
expect(subject.production_events.first[:author_name]).to eq(context.author.name)
expect(subject.production_events.first[:author][:name]).to eq(context.author.name)
end
end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment