Test etag caching router and incorporate review

This commit is contained in:
Z.J. van de Weg 2017-05-23 10:43:55 +02:00
parent f0cd6ffd0b
commit 3be9820da6
5 changed files with 25 additions and 6 deletions

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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)

View File

@ -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) }