diff options
author | Filipa Lacerda <filipa@gitlab.com> | 2017-10-09 09:14:38 +0100 |
---|---|---|
committer | Filipa Lacerda <filipa@gitlab.com> | 2017-10-09 09:14:38 +0100 |
commit | b6ab735ad2e596007d8dc0123bf5e2e018e99df8 (patch) | |
tree | 479d0fb7097caeeb132558b333cd2b8666118362 /spec/features/projects_spec.rb | |
parent | fe5fe5242f67a7d91ff43659978892d507b71014 (diff) | |
parent | f45bb52af643cd271d415317f40b5541b18ec634 (diff) | |
download | gitlab-ce-38869-commitslist.tar.gz |
Merge branch 'master' into 38869-commitslist38869-commitslist
* master: (83 commits)
Move cycle analytics banner into a vue file
Remove executable permissions on images to make docs lint happy
Sync up hard coded DN class in migration
Redefine `respond_to?` in light of `method_missing`
Make internal methods private
Leave bad DNs alone instead of raising errors
Refactor DN error classes
Add changelog entry for LDAP normalization
Add migration specs
Move migration to background
Update DN class in migration
Normalize values, reusing DN normalization code
Remove telephoneNumber format comment
Fix space stripping
Rename method to `to_normalized_s`
Refactor initialize method for clarity
Move downcasing to normalize method
Normalize existing persisted DNs
Resolve Rubocop offenses
Switch to new DN class
...
Diffstat (limited to 'spec/features/projects_spec.rb')
-rw-r--r-- | spec/features/projects_spec.rb | 56 |
1 files changed, 53 insertions, 3 deletions
diff --git a/spec/features/projects_spec.rb b/spec/features/projects_spec.rb index 81f7ab80a04..4b2c54d54b5 100644 --- a/spec/features/projects_spec.rb +++ b/spec/features/projects_spec.rb @@ -1,6 +1,8 @@ require 'spec_helper' feature 'Project' do + include ProjectForksHelper + describe 'creating from template' do let(:user) { create(:user) } let(:template) { Gitlab::ProjectTemplate.find(:rails) } @@ -57,11 +59,10 @@ feature 'Project' do describe 'remove forked relationship', js: true do let(:user) { create(:user) } - let(:project) { create(:project, namespace: user.namespace) } + let(:project) { fork_project(create(:project, :public), user, namespace_id: user.namespace) } before do sign_in user - create(:forked_project_link, forked_to_project: project) visit edit_project_path(project) end @@ -71,11 +72,60 @@ feature 'Project' do remove_with_confirm('Remove fork relationship', project.path) expect(page).to have_content 'The fork relationship has been removed.' - expect(project.forked?).to be_falsey + expect(project.reload.forked?).to be_falsey expect(page).not_to have_content 'Remove fork relationship' end end + describe 'showing information about source of a project fork' do + let(:user) { create(:user) } + let(:base_project) { create(:project, :public, :repository) } + let(:forked_project) { fork_project(base_project, user, repository: true) } + + before do + sign_in user + end + + it 'shows a link to the source project when it is available' do + visit project_path(forked_project) + + expect(page).to have_content('Forked from') + expect(page).to have_link(base_project.full_name) + end + + it 'does not contain fork network information for the root project' do + forked_project + + visit project_path(base_project) + + expect(page).not_to have_content('In fork network of') + expect(page).not_to have_content('Forked from') + end + + it 'shows the name of the deleted project when the source was deleted' do + forked_project + Projects::DestroyService.new(base_project, base_project.owner).execute + + visit project_path(forked_project) + + expect(page).to have_content("Forked from #{base_project.full_name} (deleted)") + end + + context 'a fork of a fork' do + let(:fork_of_fork) { fork_project(forked_project, user, repository: true) } + + it 'links to the base project if the source project is removed' do + fork_of_fork + Projects::DestroyService.new(forked_project, user).execute + + visit project_path(fork_of_fork) + + expect(page).to have_content("Forked from") + expect(page).to have_link(base_project.full_name) + end + end + end + describe 'removal', js: true do let(:user) { create(:user, username: 'test', name: 'test') } let(:project) { create(:project, namespace: user.namespace, name: 'project1') } |