Add tests for new functionality
This commit is contained in:
		
							parent
							
								
									c65243427f
								
							
						
					
					
						commit
						c910bca730
					
				| 
						 | 
				
			
			@ -10,7 +10,11 @@ class Projects::ForksController < Projects::ApplicationController
 | 
			
		|||
 | 
			
		||||
  def create
 | 
			
		||||
    namespace = Namespace.find(params[:namespace_key])
 | 
			
		||||
    @forked_project = ::Projects::ForkService.new(project, current_user, namespace: namespace).execute
 | 
			
		||||
    
 | 
			
		||||
    @forked_project = namespace.projects.find_by(path: project.path)
 | 
			
		||||
    @forked_project = nil unless @forked_project && @forked_project.forked_from_project == project
 | 
			
		||||
 | 
			
		||||
    @forked_project ||= ::Projects::ForkService.new(project, current_user, namespace: namespace).execute
 | 
			
		||||
 | 
			
		||||
    if @forked_project.saved? && @forked_project.forked?
 | 
			
		||||
      if @forked_project.import_in_progress?
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -24,6 +24,12 @@ Feature: Project Source Browse Files
 | 
			
		|||
    Given I click on "New file" link in repo
 | 
			
		||||
    Then I can see new file page
 | 
			
		||||
 | 
			
		||||
  Scenario: I can create file when I don't have write access
 | 
			
		||||
    Given I don't have write access
 | 
			
		||||
    And I click on "New file" link in repo
 | 
			
		||||
    Then I should see a notice about a new fork having been created
 | 
			
		||||
    Then I can see new file page
 | 
			
		||||
 | 
			
		||||
  @javascript
 | 
			
		||||
  Scenario: I can create and commit file
 | 
			
		||||
    Given I click on "New file" link in repo
 | 
			
		||||
| 
						 | 
				
			
			@ -34,6 +40,17 @@ Feature: Project Source Browse Files
 | 
			
		|||
    Then I am redirected to the new file
 | 
			
		||||
    And I should see its new content
 | 
			
		||||
 | 
			
		||||
  @javascript
 | 
			
		||||
  Scenario: I can create and commit file when I don't have write access
 | 
			
		||||
    Given I don't have write access
 | 
			
		||||
    And I click on "New file" link in repo
 | 
			
		||||
    And I edit code
 | 
			
		||||
    And I fill the new file name
 | 
			
		||||
    And I fill the commit message
 | 
			
		||||
    And I click on "Commit Changes"
 | 
			
		||||
    Then I am redirected to the fork's new merge request page
 | 
			
		||||
    And I can see the new commit message
 | 
			
		||||
 | 
			
		||||
  @javascript
 | 
			
		||||
  Scenario: I can create and commit file with new lines at the end of file
 | 
			
		||||
    Given I click on "New file" link in repo
 | 
			
		||||
| 
						 | 
				
			
			@ -45,6 +62,17 @@ Feature: Project Source Browse Files
 | 
			
		|||
    And I click button "Edit"
 | 
			
		||||
    And I should see its content with new lines preserved at end of file
 | 
			
		||||
 | 
			
		||||
  @javascript
 | 
			
		||||
  Scenario: I can create and commit file and specify new branch
 | 
			
		||||
    Given I click on "New file" link in repo
 | 
			
		||||
    And I edit code
 | 
			
		||||
    And I fill the new file name
 | 
			
		||||
    And I fill the commit message
 | 
			
		||||
    And I fill the new branch name
 | 
			
		||||
    And I click on "Commit Changes"
 | 
			
		||||
    Then I am redirected to the fork's new merge request page
 | 
			
		||||
    And I should see its new content
 | 
			
		||||
 | 
			
		||||
  @javascript
 | 
			
		||||
  Scenario: I can upload file and commit
 | 
			
		||||
    Given I click on "Upload file" link in repo
 | 
			
		||||
| 
						 | 
				
			
			@ -56,6 +84,19 @@ Feature: Project Source Browse Files
 | 
			
		|||
    And I am redirected to the new merge request page
 | 
			
		||||
    And I can see the new commit message
 | 
			
		||||
 | 
			
		||||
  @javascript
 | 
			
		||||
  Scenario: I can upload file and commit when I don't have write access
 | 
			
		||||
    Given I don't have write access
 | 
			
		||||
    And I click on "Upload file" link in repo
 | 
			
		||||
    Then I should see a notice about a new fork having been created
 | 
			
		||||
    When I click on "Upload file" link in repo
 | 
			
		||||
    And I upload a new text file
 | 
			
		||||
    And I fill the upload file commit message
 | 
			
		||||
    And I click on "Upload file"
 | 
			
		||||
    Then I can see the new text file
 | 
			
		||||
    And I am redirected to the fork's new merge request page
 | 
			
		||||
    And I can see the new commit message
 | 
			
		||||
 | 
			
		||||
  @javascript
 | 
			
		||||
  Scenario: I can replace file and commit
 | 
			
		||||
    Given I click on ".gitignore" file in repo
 | 
			
		||||
| 
						 | 
				
			
			@ -68,15 +109,19 @@ Feature: Project Source Browse Files
 | 
			
		|||
    And I can see the replacement commit message
 | 
			
		||||
 | 
			
		||||
  @javascript
 | 
			
		||||
  Scenario: I can create and commit file and specify new branch
 | 
			
		||||
    Given I click on "New file" link in repo
 | 
			
		||||
    And I edit code
 | 
			
		||||
    And I fill the new file name
 | 
			
		||||
    And I fill the commit message
 | 
			
		||||
    And I fill the new branch name
 | 
			
		||||
    And I click on "Commit Changes"
 | 
			
		||||
    Then I am redirected to the new merge request page
 | 
			
		||||
    And I should see its new content
 | 
			
		||||
  Scenario: I can replace file and commit when I don't have write access
 | 
			
		||||
    Given I don't have write access
 | 
			
		||||
    And I click on ".gitignore" file in repo
 | 
			
		||||
    And I see the ".gitignore"
 | 
			
		||||
    And I click on "Replace"
 | 
			
		||||
    Then I should see a notice about a new fork having been created
 | 
			
		||||
    When I click on "Replace"
 | 
			
		||||
    And I replace it with a text file
 | 
			
		||||
    And I fill the replace file commit message
 | 
			
		||||
    And I click on "Replace file"
 | 
			
		||||
    Then I can see the new text file
 | 
			
		||||
    And I am redirected to the new merge request page
 | 
			
		||||
    And I can see the replacement commit message
 | 
			
		||||
 | 
			
		||||
  @javascript
 | 
			
		||||
  Scenario: I can create file in empty repo
 | 
			
		||||
| 
						 | 
				
			
			@ -117,6 +162,14 @@ Feature: Project Source Browse Files
 | 
			
		|||
    And I click button "Edit"
 | 
			
		||||
    Then I can edit code
 | 
			
		||||
 | 
			
		||||
  @javascript
 | 
			
		||||
  Scenario: I can edit file when I don't have write access
 | 
			
		||||
    Given I don't have write access
 | 
			
		||||
    And I click on ".gitignore" file in repo
 | 
			
		||||
    And I click button "Edit"
 | 
			
		||||
    Then I should see a notice about a new fork having been created
 | 
			
		||||
    And I can edit code
 | 
			
		||||
 | 
			
		||||
  Scenario: If the file is binary the edit link is hidden
 | 
			
		||||
    Given I visit a binary file in the repo
 | 
			
		||||
    Then I cannot see the edit button
 | 
			
		||||
| 
						 | 
				
			
			@ -131,6 +184,17 @@ Feature: Project Source Browse Files
 | 
			
		|||
    Then I am redirected to the ".gitignore"
 | 
			
		||||
    And I should see its new content
 | 
			
		||||
 | 
			
		||||
  @javascript
 | 
			
		||||
  Scenario: I can edit and commit file when I don't have write access
 | 
			
		||||
    Given I don't have write access
 | 
			
		||||
    And I click on ".gitignore" file in repo
 | 
			
		||||
    And I click button "Edit"
 | 
			
		||||
    And I edit code
 | 
			
		||||
    And I fill the commit message
 | 
			
		||||
    And I click on "Commit Changes"
 | 
			
		||||
    Then I am redirected to the fork's new merge request page
 | 
			
		||||
    And I can see the new commit message
 | 
			
		||||
 | 
			
		||||
  @javascript
 | 
			
		||||
  Scenario: I can edit and commit file to new branch
 | 
			
		||||
    Given I click on ".gitignore" file in repo
 | 
			
		||||
| 
						 | 
				
			
			@ -161,6 +225,17 @@ Feature: Project Source Browse Files
 | 
			
		|||
    And I click on "Create directory"
 | 
			
		||||
    Then I am redirected to the new merge request page
 | 
			
		||||
 | 
			
		||||
  @javascript
 | 
			
		||||
  Scenario: I can create directory in repo when I don't have write access
 | 
			
		||||
    Given I don't have write access
 | 
			
		||||
    When I click on "New directory" link in repo
 | 
			
		||||
    Then I should see a notice about a new fork having been created
 | 
			
		||||
    When I click on "New directory" link in repo
 | 
			
		||||
    And I fill the new directory name
 | 
			
		||||
    And I fill the commit message
 | 
			
		||||
    And I click on "Create directory"
 | 
			
		||||
    Then I am redirected to the fork's new merge request page
 | 
			
		||||
 | 
			
		||||
  @javascript
 | 
			
		||||
  Scenario: I attempt to create an existing directory
 | 
			
		||||
    When I click on "New directory" link in repo
 | 
			
		||||
| 
						 | 
				
			
			@ -188,6 +263,19 @@ Feature: Project Source Browse Files
 | 
			
		|||
    Then I am redirected to the files URL
 | 
			
		||||
    And I don't see the ".gitignore"
 | 
			
		||||
 | 
			
		||||
  @javascript
 | 
			
		||||
  Scenario: I can delete file and commit when I don't have write access
 | 
			
		||||
    Given I don't have write access
 | 
			
		||||
    And I click on ".gitignore" file in repo
 | 
			
		||||
    And I see the ".gitignore"
 | 
			
		||||
    And I click on "Delete"
 | 
			
		||||
    Then I should see a notice about a new fork having been created
 | 
			
		||||
    When I click on "Delete"
 | 
			
		||||
    And I fill the commit message
 | 
			
		||||
    And I click on "Delete file"
 | 
			
		||||
    Then I am redirected to the fork's new merge request page
 | 
			
		||||
    And I can see the new commit message
 | 
			
		||||
 | 
			
		||||
  Scenario: I can browse directory with Browse Dir
 | 
			
		||||
    Given I click on files directory
 | 
			
		||||
    And I click on History link
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -5,6 +5,12 @@ class Spinach::Features::ProjectSourceBrowseFiles < Spinach::FeatureSteps
 | 
			
		|||
  include SharedPaths
 | 
			
		||||
  include RepoHelpers
 | 
			
		||||
 | 
			
		||||
  step "I don't have write access" do
 | 
			
		||||
    @project = create(:project, name: "Other Project", path: "other-project")
 | 
			
		||||
    @project.team << [@user, :reporter]
 | 
			
		||||
    visit namespace_project_tree_path(@project.namespace, @project, root_ref)
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  step 'I should see files from repository' do
 | 
			
		||||
    expect(page).to have_content "VERSION"
 | 
			
		||||
    expect(page).to have_content ".gitignore"
 | 
			
		||||
| 
						 | 
				
			
			@ -87,7 +93,7 @@ class Spinach::Features::ProjectSourceBrowseFiles < Spinach::FeatureSteps
 | 
			
		|||
  end
 | 
			
		||||
 | 
			
		||||
  step 'I fill the commit message' do
 | 
			
		||||
    fill_in :commit_message, with: 'Not yet a commit message.', visible: true
 | 
			
		||||
    fill_in :commit_message, with: 'New commit message', visible: true
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  step 'I click link "Diff"' do
 | 
			
		||||
| 
						 | 
				
			
			@ -103,7 +109,7 @@ class Spinach::Features::ProjectSourceBrowseFiles < Spinach::FeatureSteps
 | 
			
		|||
  end
 | 
			
		||||
 | 
			
		||||
  step 'I click on "Delete"' do
 | 
			
		||||
    click_button 'Delete'
 | 
			
		||||
    click_on 'Delete'
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  step 'I click on "Delete file"' do
 | 
			
		||||
| 
						 | 
				
			
			@ -111,7 +117,7 @@ class Spinach::Features::ProjectSourceBrowseFiles < Spinach::FeatureSteps
 | 
			
		|||
  end
 | 
			
		||||
 | 
			
		||||
  step 'I click on "Replace"' do
 | 
			
		||||
    click_button  "Replace"
 | 
			
		||||
    click_on  "Replace"
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  step 'I click on "Replace file"' do
 | 
			
		||||
| 
						 | 
				
			
			@ -155,7 +161,7 @@ class Spinach::Features::ProjectSourceBrowseFiles < Spinach::FeatureSteps
 | 
			
		|||
  end
 | 
			
		||||
 | 
			
		||||
  step 'I can see the new commit message' do
 | 
			
		||||
    expect(page).to have_content "New upload commit message"
 | 
			
		||||
    expect(page).to have_content "New commit message"
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  step 'I upload a new text file' do
 | 
			
		||||
| 
						 | 
				
			
			@ -164,7 +170,7 @@ class Spinach::Features::ProjectSourceBrowseFiles < Spinach::FeatureSteps
 | 
			
		|||
 | 
			
		||||
  step 'I fill the upload file commit message' do
 | 
			
		||||
    page.within('#modal-upload-blob') do
 | 
			
		||||
      fill_in :commit_message, with: 'New upload commit message'
 | 
			
		||||
      fill_in :commit_message, with: 'New commit message'
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -251,6 +257,11 @@ class Spinach::Features::ProjectSourceBrowseFiles < Spinach::FeatureSteps
 | 
			
		|||
    expect(current_path).to eq(new_namespace_project_merge_request_path(@project.namespace, @project))
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  step "I am redirected to the fork's new merge request page" do
 | 
			
		||||
    fork = @user.fork_of(@project)
 | 
			
		||||
    expect(current_path).to eq(new_namespace_project_merge_request_path(fork.namespace, fork))
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  step 'I am redirected to the root directory' do
 | 
			
		||||
    expect(current_path).to eq(
 | 
			
		||||
      namespace_project_tree_path(@project.namespace, @project, 'master'))
 | 
			
		||||
| 
						 | 
				
			
			@ -336,6 +347,10 @@ class Spinach::Features::ProjectSourceBrowseFiles < Spinach::FeatureSteps
 | 
			
		|||
    expect(page).to have_content 'Replace'
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  step 'I should see a notice about a new fork having been created' do
 | 
			
		||||
    expect(page).to have_content "You're not allowed to make changes to this project directly. A fork of this project has been created that you can make changes in, so you can submit a merge request."
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  private
 | 
			
		||||
 | 
			
		||||
  def set_new_content
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue