Test etag caching router and incorporate review
This commit is contained in:
parent
f0cd6ffd0b
commit
3be9820da6
5 changed files with 25 additions and 6 deletions
|
@ -15,7 +15,7 @@ class Projects::EnvironmentsController < Projects::ApplicationController
|
|||
respond_to do |format|
|
||||
format.html
|
||||
format.json do
|
||||
Gitlab::PollingInterval.set_header(response, interval: 15_000)
|
||||
Gitlab::PollingInterval.set_header(response, interval: 3_000)
|
||||
|
||||
render json: {
|
||||
environments: EnvironmentSerializer
|
||||
|
|
|
@ -12,6 +12,7 @@ class Deployment < ActiveRecord::Base
|
|||
delegate :name, to: :environment, prefix: true
|
||||
|
||||
after_create :create_ref
|
||||
after_create :invalidate_cache
|
||||
|
||||
def commit
|
||||
project.commit(sha)
|
||||
|
@ -33,6 +34,10 @@ class Deployment < ActiveRecord::Base
|
|||
project.repository.create_ref(ref, ref_path)
|
||||
end
|
||||
|
||||
def invalidate_cache
|
||||
environment.expire_etag_cache
|
||||
end
|
||||
|
||||
def manual_actions
|
||||
@manual_actions ||= deployable.try(:other_actions)
|
||||
end
|
||||
|
|
|
@ -1,15 +1,15 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe Projects::EnvironmentsController do
|
||||
let(:user) { create(:user) }
|
||||
let(:project) { create(:empty_project) }
|
||||
set(:user) { create(:user) }
|
||||
set(:project) { create(:empty_project) }
|
||||
|
||||
let(:environment) do
|
||||
set(:environment) do
|
||||
create(:environment, name: 'production', project: project)
|
||||
end
|
||||
|
||||
before do
|
||||
project.team << [user, :master]
|
||||
project.add_master(user)
|
||||
|
||||
sign_in(user)
|
||||
end
|
||||
|
@ -57,6 +57,11 @@ describe Projects::EnvironmentsController do
|
|||
expect(json_response['available_count']).to eq 3
|
||||
expect(json_response['stopped_count']).to eq 1
|
||||
end
|
||||
|
||||
it 'sets the polling interval header' do
|
||||
expect(response).to have_http_status(:ok)
|
||||
expect(response.headers['Poll-Interval']).to eq("3000")
|
||||
end
|
||||
end
|
||||
|
||||
context 'when requesting stopped environments scope' do
|
||||
|
|
|
@ -84,7 +84,8 @@ describe Gitlab::EtagCaching::Router do
|
|||
|
||||
result = described_class.match(env)
|
||||
|
||||
expect(result).to be_blank
|
||||
expect(result).to be_present
|
||||
expect(result.name).to eq 'environments'
|
||||
end
|
||||
|
||||
def build_env(path)
|
||||
|
|
|
@ -16,6 +16,14 @@ describe Deployment, models: true do
|
|||
it { is_expected.to validate_presence_of(:ref) }
|
||||
it { is_expected.to validate_presence_of(:sha) }
|
||||
|
||||
describe 'after_create callbacks' do
|
||||
it 'invalidates the cache for the environment' do
|
||||
expect(subject).to receive(:invalidate_cache)
|
||||
|
||||
subject.save!
|
||||
end
|
||||
end
|
||||
|
||||
describe '#includes_commit?' do
|
||||
let(:project) { create(:project, :repository) }
|
||||
let(:environment) { create(:environment, project: project) }
|
||||
|
|
Loading…
Reference in a new issue