project.rb 4.0 KB
Newer Older
N
Nihad Abbasov 已提交
1 2 3
module SharedProject
  include Spinach::DSL

4 5
  # Create a project without caring about what it's called
  And "I own a project" do
D
Dmitriy Zaporozhets 已提交
6
    @project = create(:project, namespace: @user.namespace)
7
    @project.team << [@user, :master]
8 9 10
  end

  # Create a specific project called "Shop"
N
Nihad Abbasov 已提交
11
  And 'I own project "Shop"' do
S
skv 已提交
12
    @project = Project.find_by(name: "Shop")
13
    @project ||= create(:project, name: "Shop", namespace: @user.namespace, snippets_enabled: true)
14
    @project.team << [@user, :master]
N
Nihad Abbasov 已提交
15
  end
16

17 18
  # Create another specific project called "Forum"
  And 'I own project "Forum"' do
S
skv 已提交
19
    @project = Project.find_by(name: "Forum")
D
Dmitriy Zaporozhets 已提交
20
    @project ||= create(:project, name: "Forum", namespace: @user.namespace, path: 'forum_project')
21 22 23
    @project.team << [@user, :master]
  end

D
Dmitriy Zaporozhets 已提交
24
  And 'project "Shop" has push event' do
S
skv 已提交
25
    @project = Project.find_by(name: "Shop")
D
Dmitriy Zaporozhets 已提交
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43

    data = {
      before: "0000000000000000000000000000000000000000",
      after: "0220c11b9a3e6c69dc8fd35321254ca9a7b98f7e",
      ref: "refs/heads/new_design",
      user_id: @user.id,
      user_name: @user.name,
      repository: {
        name: @project.name,
        url: "localhost/rubinius",
        description: "",
        homepage: "localhost/rubinius",
        private: true
      }
    }

    @event = Event.create(
      project: @project,
A
Andrew8xx8 已提交
44
      action: Event::PUSHED,
D
Dmitriy Zaporozhets 已提交
45 46 47 48 49 50
      data: data,
      author_id: @user.id
    )
  end

  Then 'I should see project "Shop" activity feed' do
S
skv 已提交
51
    project = Project.find_by(name: "Shop")
D
Dmitriy Zaporozhets 已提交
52
    page.should have_content "#{@user.name} pushed new branch new_design at #{project.name_with_namespace}"
D
Dmitriy Zaporozhets 已提交
53 54 55 56
  end

  Then 'I should see project settings' do
    current_path.should == edit_project_path(@project)
D
David Pursehouse 已提交
57
    page.should have_content("Project name")
D
Dmitriy Zaporozhets 已提交
58 59 60
    page.should have_content("Features:")
  end

61 62 63
  def current_project
    @project ||= Project.first
  end
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81

  # ----------------------------------------
  # Visibility level
  # ----------------------------------------

  step 'private project "Enterprise"' do
    create :project, name: 'Enterprise'
  end

  step 'I should see project "Enterprise"' do
    page.should have_content "Enterprise"
  end

  step 'I should not see project "Enterprise"' do
    page.should_not have_content "Enterprise"
  end

  step 'internal project "Internal"' do
82
    create :project, :internal, name: 'Internal'
83 84 85 86 87 88 89 90 91 92 93
  end

  step 'I should see project "Internal"' do
    page.should have_content "Internal"
  end

  step 'I should not see project "Internal"' do
    page.should_not have_content "Internal"
  end

  step 'public project "Community"' do
94
    create :project, :public, name: 'Community'
95 96 97 98 99 100 101 102 103 104
  end

  step 'I should see project "Community"' do
    page.should have_content "Community"
  end

  step 'I should not see project "Community"' do
    page.should_not have_content "Community"
  end

D
Dmitriy Zaporozhets 已提交
105
  step '"John Doe" owns private project "Enterprise"' do
106
    user = user_exists("John Doe", username: "john_doe")
107
    project = Project.find_by(name: "Enterprise")
D
Dmitriy Zaporozhets 已提交
108
    project ||= create(:empty_project, name: "Enterprise", namespace: user.namespace)
109 110 111
    project.team << [user, :master]
  end

D
Dmitriy Zaporozhets 已提交
112
  step '"John Doe" owns internal project "Internal"' do
113
    user = user_exists("John Doe", username: "john_doe")
114
    project = Project.find_by(name: "Internal")
D
Dmitriy Zaporozhets 已提交
115
    project ||= create :empty_project, :internal, name: 'Internal', namespace: user.namespace
116 117 118
    project.team << [user, :master]
  end

D
Dmitriy Zaporozhets 已提交
119
  step '"John Doe" owns public project "Community"' do
120
    user = user_exists("John Doe", username: "john_doe")
121
    project = Project.find_by(name: "Community")
D
Dmitriy Zaporozhets 已提交
122
    project ||= create :empty_project, :public, name: 'Community', namespace: user.namespace
123 124
    project.team << [user, :master]
  end
C
Ciro Santilli 已提交
125 126 127 128 129 130 131 132

  # ----------------------------------------
  # Empty projects
  # ----------------------------------------

  step 'public empty project "Empty Public Project"' do
    create :empty_project, :public, name: "Empty Public Project"
  end
133 134 135 136 137

  step 'project "Community" has comments' do
    project = Project.find_by(name: "Community")
    2.times { create(:note_on_issue, project: project) }
  end
N
Nihad Abbasov 已提交
138
end