Commit cce9e50b authored by GitLab Bot's avatar GitLab Bot

Merge remote-tracking branch 'upstream/master' into ce-to-ee-2018-07-03

parents b7aef3ae cd578941
...@@ -268,8 +268,6 @@ ...@@ -268,8 +268,6 @@
.navbar-sub-nav, .navbar-sub-nav,
.navbar-nav { .navbar-nav {
align-items: center;
> li { > li {
> a:hover, > a:hover,
> a:focus { > a:focus {
......
...@@ -52,8 +52,7 @@ class Admin::HooksController < Admin::ApplicationController ...@@ -52,8 +52,7 @@ class Admin::HooksController < Admin::ApplicationController
end end
def hook_logs def hook_logs
@hook_logs ||= @hook_logs ||= hook.web_hook_logs.recent.page(params[:page])
Kaminari.paginate_array(hook.web_hook_logs.order(created_at: :desc)).page(params[:page])
end end
def hook_params def hook_params
......
...@@ -58,8 +58,7 @@ class Projects::HooksController < Projects::ApplicationController ...@@ -58,8 +58,7 @@ class Projects::HooksController < Projects::ApplicationController
end end
def hook_logs def hook_logs
@hook_logs ||= @hook_logs ||= hook.web_hook_logs.recent.page(params[:page])
Kaminari.paginate_array(hook.web_hook_logs.order(created_at: :desc)).page(params[:page])
end end
def hook_params def hook_params
......
...@@ -7,6 +7,11 @@ class WebHookLog < ActiveRecord::Base ...@@ -7,6 +7,11 @@ class WebHookLog < ActiveRecord::Base
validates :web_hook, presence: true validates :web_hook, presence: true
def self.recent
where('created_at >= ?', 2.days.ago.beginning_of_day)
.order(created_at: :desc)
end
def success? def success?
response_status =~ /^2/ response_status =~ /^2/
end end
......
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
- if current_user - if current_user
= render 'layouts/header/new_dropdown' = render 'layouts/header/new_dropdown'
- if header_link?(:search) - if header_link?(:search)
%li.nav-item.d-none.d-sm-none.d-md-block %li.nav-item.d-none.d-sm-none.d-md-block.m-auto
= render 'layouts/search' unless current_controller?(:search) = render 'layouts/search' unless current_controller?(:search)
%li.nav-item.d-inline-block.d-sm-none.d-md-none %li.nav-item.d-inline-block.d-sm-none.d-md-none
= link_to search_path, title: 'Search', aria: { label: "Search" }, data: {toggle: 'tooltip', placement: 'bottom', container: 'body'} do = link_to search_path, title: 'Search', aria: { label: "Search" }, data: {toggle: 'tooltip', placement: 'bottom', container: 'body'} do
......
---
title: Use monospaced font for MR diff commit link ref on GFM
merge_request:
author:
type: other
---
title: Line separator to the left of the 'Admin area' wrench icon had vanished
merge_request: 20282
author: bitsapien
type: fixed
---
title: Fixed pagination of web hook logs
merge_request:
author:
type: performance
# frozen_string_literal: true
# See http://doc.gitlab.com/ce/development/migration_style_guide.html
# for more information on how to write migrations for GitLab.
class AlterWebHookLogsIndexes < ActiveRecord::Migration
include Gitlab::Database::MigrationHelpers
# Set this constant to true if this migration requires downtime.
DOWNTIME = false
disable_ddl_transaction!
# "created_at" comes first so the Sidekiq worker pruning old webhook logs can
# use a composite index index.
#
# We leave the old standalone index on "web_hook_id" in place so future code
# that doesn't care about "created_at" can still use that index.
COLUMNS_TO_INDEX = %i[created_at web_hook_id]
def up
add_concurrent_index(:web_hook_logs, COLUMNS_TO_INDEX)
end
def down
remove_concurrent_index(:web_hook_logs, COLUMNS_TO_INDEX)
end
end
...@@ -2745,6 +2745,7 @@ ActiveRecord::Schema.define(version: 20180702114215) do ...@@ -2745,6 +2745,7 @@ ActiveRecord::Schema.define(version: 20180702114215) do
t.datetime "updated_at", null: false t.datetime "updated_at", null: false
end end
add_index "web_hook_logs", ["created_at", "web_hook_id"], name: "index_web_hook_logs_on_created_at_and_web_hook_id", using: :btree
add_index "web_hook_logs", ["web_hook_id"], name: "index_web_hook_logs_on_web_hook_id", using: :btree add_index "web_hook_logs", ["web_hook_id"], name: "index_web_hook_logs_on_web_hook_id", using: :btree
create_table "web_hooks", force: :cascade do |t| create_table "web_hooks", force: :cascade do |t|
......
...@@ -25,7 +25,10 @@ module Banzai ...@@ -25,7 +25,10 @@ module Banzai
extras = super extras = super
if commit_ref = object_link_commit_ref(object, matches) if commit_ref = object_link_commit_ref(object, matches)
return extras.unshift(commit_ref) klass = reference_class(:commit, tooltip: false)
commit_ref_tag = %(<span class="#{klass}">#{commit_ref}</span>)
return extras.unshift(commit_ref_tag)
end end
path = matches[:path] if matches.names.include?("path") path = matches[:path] if matches.names.include?("path")
......
...@@ -65,8 +65,12 @@ module Banzai ...@@ -65,8 +65,12 @@ module Banzai
context[:skip_project_check] context[:skip_project_check]
end end
def reference_class(type) def reference_class(type, tooltip: true)
"gfm gfm-#{type} has-tooltip" gfm_klass = "gfm gfm-#{type}"
return gfm_klass unless tooltip
"#{gfm_klass} has-tooltip"
end end
# Ensure that a :project key exists in context # Ensure that a :project key exists in context
......
...@@ -58,7 +58,7 @@ module QA ...@@ -58,7 +58,7 @@ module QA
def within_project_deploy_keys def within_project_deploy_keys
wait(reload: false) do wait(reload: false) do
find_element(:project_deploy_keys) has_css?(element_selector_css(:project_deploy_keys))
end end
within_element(:project_deploy_keys) do within_element(:project_deploy_keys) do
......
...@@ -210,6 +210,13 @@ describe Banzai::Filter::MergeRequestReferenceFilter do ...@@ -210,6 +210,13 @@ describe Banzai::Filter::MergeRequestReferenceFilter do
.to eq reference .to eq reference
end end
it 'commit ref tag is valid' do
doc = reference_filter("See #{reference}")
commit_ref_tag = doc.css('a').first.css('span.gfm.gfm-commit')
expect(commit_ref_tag.text).to eq(commit.short_id)
end
it 'has valid text' do it 'has valid text' do
doc = reference_filter("See #{reference}") doc = reference_filter("See #{reference}")
......
...@@ -9,6 +9,24 @@ describe WebHookLog do ...@@ -9,6 +9,24 @@ describe WebHookLog do
it { is_expected.to validate_presence_of(:web_hook) } it { is_expected.to validate_presence_of(:web_hook) }
describe '.recent' do
let(:hook) { create(:project_hook) }
it 'does not return web hook logs that are too old' do
create(:web_hook_log, web_hook: hook, created_at: 91.days.ago)
expect(described_class.recent.size).to be_zero
end
it 'returns the web hook logs in descending order' do
hook1 = create(:web_hook_log, web_hook: hook, created_at: 2.hours.ago)
hook2 = create(:web_hook_log, web_hook: hook, created_at: 1.hour.ago)
hooks = described_class.recent.to_a
expect(hooks).to eq([hook2, hook1])
end
end
describe '#success?' do describe '#success?' do
let(:web_hook_log) { build(:web_hook_log, response_status: status) } let(:web_hook_log) { build(:web_hook_log, response_status: status) }
......
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