Use AR callbacks as suggested by:

https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/4964#note_12744656
This commit is contained in:
Lin Jen-Shin 2016-06-29 17:44:39 +08:00
parent 1bc0d732f6
commit 9d8dca08e4
3 changed files with 11 additions and 4 deletions

View File

@ -19,6 +19,7 @@ module Ci
acts_as_taggable
before_save :update_artifacts_size, if: :artifacts_file_changed?
before_destroy { project }
after_create :execute_hooks
@ -340,7 +341,6 @@ module Ci
def erase_artifacts!
remove_artifacts_file!
remove_artifacts_metadata!
self.artifacts_size = nil
save
end
@ -381,6 +381,10 @@ module Ci
private
def update_artifacts_size
self.artifacts_size = artifacts_file.size
end
def erase_trace!
self.trace = nil
end

View File

@ -147,7 +147,6 @@ module Ci
build.artifacts_file = artifacts
build.artifacts_metadata = metadata
build.artifacts_expire_in = params['expire_in']
build.artifacts_size = artifacts.size
if build.save
present(build, with: Entities::BuildDetails)

View File

@ -476,13 +476,17 @@ describe Ci::API::API do
describe 'DELETE /builds/:id/artifacts' do
let(:build) { create(:ci_build, :artifacts) }
before { delete delete_url, token: build.token }
before do
delete delete_url, token: build.token
build.reload
end
it 'should remove build artifacts' do
expect(response).to have_http_status(200)
expect(build.artifacts_file.exists?).to be_falsy
expect(build.artifacts_metadata.exists?).to be_falsy
expect(build.artifacts_size).to be_falsy
expect(build.artifacts_size).to eq(0)
end
end