From 140ac8d2ad81f03f67dddcb565458e9baee79755 Mon Sep 17 00:00:00 2001 From: Lin Jen-Shin Date: Wed, 23 Aug 2017 21:51:21 +0800 Subject: Add changelog and tests --- spec/models/project_spec.rb | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'spec/models') diff --git a/spec/models/project_spec.rb b/spec/models/project_spec.rb index 2e613c44357..130c0739033 100644 --- a/spec/models/project_spec.rb +++ b/spec/models/project_spec.rb @@ -1563,10 +1563,18 @@ describe Project do describe 'project import state transitions' do context 'state transition: [:started] => [:finished]' do - let(:housekeeping_service) { spy } + let(:cleanup_service) { spy(:cleanup_service) } + let(:housekeeping_service) { spy(:housekeeping_service) } before do - allow(Projects::HousekeepingService).to receive(:new) { housekeeping_service } + allow(Projects::ImportExport::CleanupService) + .to receive(:new) { cleanup_service } + + allow(cleanup_service) + .to receive(:execute) { housekeeping_service.execute } + + allow(Projects::HousekeepingService) + .to receive(:new) { housekeeping_service } end it 'resets project import_error' do @@ -1581,6 +1589,7 @@ describe Project do project.import_finish + expect(cleanup_service).to have_received(:execute) expect(housekeeping_service).to have_received(:execute) end -- cgit v1.2.1 From 932d32515a72bc80e021474100f677d954f3822e Mon Sep 17 00:00:00 2001 From: Lin Jen-Shin Date: Thu, 24 Aug 2017 18:58:31 +0800 Subject: Move to Projects::HousecleaningService --- spec/models/project_spec.rb | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'spec/models') diff --git a/spec/models/project_spec.rb b/spec/models/project_spec.rb index 130c0739033..7631207b1d0 100644 --- a/spec/models/project_spec.rb +++ b/spec/models/project_spec.rb @@ -1563,14 +1563,14 @@ describe Project do describe 'project import state transitions' do context 'state transition: [:started] => [:finished]' do - let(:cleanup_service) { spy(:cleanup_service) } + let(:housecleaning_service) { spy(:housecleaning_service) } let(:housekeeping_service) { spy(:housekeeping_service) } before do - allow(Projects::ImportExport::CleanupService) - .to receive(:new) { cleanup_service } + allow(Projects::HousecleaningService) + .to receive(:new) { housecleaning_service } - allow(cleanup_service) + allow(housecleaning_service) .to receive(:execute) { housekeeping_service.execute } allow(Projects::HousekeepingService) @@ -1589,7 +1589,7 @@ describe Project do project.import_finish - expect(cleanup_service).to have_received(:execute) + expect(housecleaning_service).to have_received(:execute) expect(housekeeping_service).to have_received(:execute) end -- cgit v1.2.1 From 9e203582b367a1b84035572261a79b62e22bfeaa Mon Sep 17 00:00:00 2001 From: Hiroyuki Sato Date: Wed, 23 Aug 2017 01:51:53 +0900 Subject: Improve AutocompleteController#user.json performance --- spec/models/user_spec.rb | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'spec/models') diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 9a9e255f874..50abd7af429 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -789,6 +789,7 @@ describe User do describe '.search' do let!(:user) { create(:user, name: 'user', username: 'usern', email: 'email@gmail.com') } let!(:user2) { create(:user, name: 'user name', username: 'username', email: 'someemail@gmail.com') } + let!(:user3) { create(:user, name: 'us', username: 'se', email: 'foo@gmail.com') } describe 'name matching' do it 'returns users with a matching name with exact match first' do @@ -802,6 +803,14 @@ describe User do it 'returns users with a matching name regardless of the casing' do expect(described_class.search(user2.name.upcase)).to eq([user2]) end + + it 'returns users with a exact matching name shorter than 3 chars' do + expect(described_class.search(user3.name)).to eq([user3]) + end + + it 'returns users with a exact matching name shorter than 3 chars regardless of the casing' do + expect(described_class.search(user3.name.upcase)).to eq([user3]) + end end describe 'email matching' do @@ -830,6 +839,14 @@ describe User do it 'returns users with a matching username regardless of the casing' do expect(described_class.search(user2.username.upcase)).to eq([user2]) end + + it 'returns users with a exact matching username shorter than 3 chars' do + expect(described_class.search(user3.username)).to eq([user3]) + end + + it 'returns users with a exact matching username shorter than 3 chars regardless of the casing' do + expect(described_class.search(user3.username.upcase)).to eq([user3]) + end end end -- cgit v1.2.1 From 3a4da8ce8b57aa430720de75397a38c2be0fc6c0 Mon Sep 17 00:00:00 2001 From: Lin Jen-Shin Date: Mon, 28 Aug 2017 18:51:23 +0800 Subject: Fix tests --- spec/models/project_spec.rb | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'spec/models') diff --git a/spec/models/project_spec.rb b/spec/models/project_spec.rb index 7631207b1d0..11717ba39e8 100644 --- a/spec/models/project_spec.rb +++ b/spec/models/project_spec.rb @@ -1563,14 +1563,14 @@ describe Project do describe 'project import state transitions' do context 'state transition: [:started] => [:finished]' do - let(:housecleaning_service) { spy(:housecleaning_service) } + let(:after_import_service) { spy(:after_import_service) } let(:housekeeping_service) { spy(:housekeeping_service) } before do - allow(Projects::HousecleaningService) - .to receive(:new) { housecleaning_service } + allow(Projects::AfterImportService) + .to receive(:new) { after_import_service } - allow(housecleaning_service) + allow(after_import_service) .to receive(:execute) { housekeeping_service.execute } allow(Projects::HousekeepingService) @@ -1589,7 +1589,7 @@ describe Project do project.import_finish - expect(housecleaning_service).to have_received(:execute) + expect(after_import_service).to have_received(:execute) expect(housekeeping_service).to have_received(:execute) end -- cgit v1.2.1 From 9d3ee1ff139650e064a41fd90d34cd3f558c1099 Mon Sep 17 00:00:00 2001 From: Lin Jen-Shin Date: Tue, 29 Aug 2017 22:42:34 +0800 Subject: Further break with_repo_branch_commit into parts So it's more clear what could happen. Also add more tests about the behaviour. --- spec/models/repository_spec.rb | 36 +++++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) (limited to 'spec/models') diff --git a/spec/models/repository_spec.rb b/spec/models/repository_spec.rb index 462e92b8b62..8d9a86d952b 100644 --- a/spec/models/repository_spec.rb +++ b/spec/models/repository_spec.rb @@ -923,13 +923,16 @@ describe Repository, models: true do describe '#update_branch_with_hooks' do let(:old_rev) { '0b4bc9a49b562e85de7cc9e834518ea6828729b9' } # git rev-parse feature let(:new_rev) { 'a74ae73c1ccde9b974a70e82b901588071dc142a' } # commit whose parent is old_rev + let(:updating_ref) { 'refs/heads/feature' } + let(:target_project) { project } + let(:target_repository) { target_project.repository } context 'when pre hooks were successful' do before do service = Gitlab::Git::HooksService.new expect(Gitlab::Git::HooksService).to receive(:new).and_return(service) expect(service).to receive(:execute) - .with(committer, repository, old_rev, new_rev, 'refs/heads/feature') + .with(committer, target_repository, old_rev, new_rev, updating_ref) .and_yield(service).and_return(true) end @@ -960,6 +963,37 @@ describe Repository, models: true do expect(repository.find_branch('feature').dereferenced_target.id).to eq(new_rev) end end + + context 'when target project does not have the commit' do + let(:target_project) { create(:project, :empty_repo) } + let(:old_rev) { Gitlab::Git::BLANK_SHA } + let(:new_rev) { project.commit('feature').sha } + let(:updating_ref) { 'refs/heads/master' } + + it 'fetch_ref and create the branch' do + expect(target_project.repository).to receive(:fetch_ref) + .and_call_original + + GitOperationService.new(committer, target_repository) + .with_branch( + 'master', + start_project: project, + start_branch_name: 'feature') { new_rev } + + expect(target_repository.branch_names).to contain_exactly('master') + end + end + + context 'when target project already has the commit' do + let(:target_project) { create(:project, :repository) } + + it 'does not fetch_ref and just pass the commit' do + expect(target_repository).not_to receive(:fetch_ref) + + GitOperationService.new(committer, target_repository) + .with_branch('feature', start_project: project) { new_rev } + end + end end context 'when temporary ref failed to be created from other project' do -- cgit v1.2.1