Commit afbdbb0c959affbdb8725eafb8169025a8aede1e

Authored by Dmitriy Zaporozhets
1 parent dccd8b6e

Rspec fixes

app/views/compare/_form.html.haml
... ... @@ -28,7 +28,7 @@
28 28  
29 29 :javascript
30 30 $(function() {
31   - var availableTags = #{@project.ref_names.to_json};
  31 + var availableTags = #{@project.repository.ref_names.to_json};
32 32  
33 33 $("#from, #to").autocomplete({
34 34 source: availableTags,
... ...
features/steps/project/project_browse_commits.rb
... ... @@ -4,7 +4,7 @@ class ProjectBrowseCommits < Spinach::FeatureSteps
4 4 include SharedPaths
5 5  
6 6 Then 'I see project commits' do
7   - commit = @project.commit
  7 + commit = @project.repository.commit
8 8 page.should have_content(@project.name)
9 9 page.should have_content(commit.message)
10 10 page.should have_content(commit.id.to_s[0..5])
... ... @@ -15,7 +15,7 @@ class ProjectBrowseCommits < Spinach::FeatureSteps
15 15 end
16 16  
17 17 Then 'I see commits atom feed' do
18   - commit = CommitDecorator.decorate(@project.commit)
  18 + commit = CommitDecorator.decorate(@project.repository.commit)
19 19 page.response_headers['Content-Type'].should have_content("application/atom+xml")
20 20 page.body.should have_selector("title", :text => "Recent commits to #{@project.name}")
21 21 page.body.should have_selector("author email", :text => commit.author_email)
... ...
lib/api/notes.rb
... ... @@ -13,7 +13,7 @@ module Gitlab
13 13 # Example Request:
14 14 # GET /projects/:id/notes
15 15 get ":id/notes" do
16   - @notes = user_project.common_notes
  16 + @notes = user_project.notes.common
17 17 present paginate(@notes), with: Entities::Note
18 18 end
19 19  
... ... @@ -25,7 +25,7 @@ module Gitlab
25 25 # Example Request:
26 26 # GET /projects/:id/notes/:note_id
27 27 get ":id/notes/:note_id" do
28   - @note = user_project.common_notes.find(params[:note_id])
  28 + @note = user_project.notes.common.find(params[:note_id])
29 29 present @note, with: Entities::Note
30 30 end
31 31  
... ...
lib/api/projects.rb
... ... @@ -257,7 +257,7 @@ module Gitlab
257 257 per_page = params[:per_page] || 20
258 258 ref = params[:ref_name] || user_project.try(:default_branch) || 'master'
259 259  
260   - commits = user_project.commits(ref, nil, per_page, page * per_page)
  260 + commits = user_project.repository.commits(ref, nil, per_page, page * per_page)
261 261 present CommitDecorator.decorate(commits), with: Entities::RepoCommit
262 262 end
263 263  
... ... @@ -375,10 +375,10 @@ module Gitlab
375 375  
376 376 ref = params[:sha]
377 377  
378   - commit = user_project.commit ref
  378 + commit = user_project.repository.commit ref
379 379 not_found! "Commit" unless commit
380 380  
381   - tree = Tree.new commit.tree, user_project, ref, params[:filepath]
  381 + tree = Tree.new commit.tree, ref, params[:filepath]
382 382 not_found! "File" unless tree.try(:tree)
383 383  
384 384 content_type tree.mime_type
... ...
spec/controllers/commit_controller_spec.rb
... ... @@ -3,12 +3,12 @@ require 'spec_helper'
3 3 describe CommitController do
4 4 let(:project) { create(:project) }
5 5 let(:user) { create(:user) }
6   - let(:commit) { project.last_commit_for("master") }
  6 + let(:commit) { project.repository.last_commit_for("master") }
7 7  
8 8 before do
9 9 sign_in(user)
10 10  
11   - project.add_access(user, :read, :admin)
  11 + project.team << [user, :master]
12 12 end
13 13  
14 14 describe "#show" do
... ...
spec/controllers/commits_controller_spec.rb
... ... @@ -7,7 +7,7 @@ describe CommitsController do
7 7 before do
8 8 sign_in(user)
9 9  
10   - project.add_access(user, :read, :admin)
  10 + project.team << [user, :master]
11 11 end
12 12  
13 13 describe "GET show" do
... ...
spec/controllers/merge_requests_controller_spec.rb
... ... @@ -7,7 +7,7 @@ describe MergeRequestsController do
7 7  
8 8 before do
9 9 sign_in(user)
10   - project.add_access(user, :read, :admin)
  10 + project.team << [user, :master]
11 11 MergeRequestsController.any_instance.stub(validates_merge_request: true)
12 12 end
13 13  
... ...
spec/controllers/tree_controller_spec.rb
... ... @@ -7,7 +7,7 @@ describe TreeController do
7 7 before do
8 8 sign_in(user)
9 9  
10   - project.add_access(user, :read, :admin)
  10 + project.team << [user, :master]
11 11  
12 12 project.stub(:branches).and_return(['master', 'foo/bar/baz'])
13 13 project.stub(:tags).and_return(['v1.0.0', 'v2.0.0'])
... ...
spec/helpers/gitlab_markdown_helper_spec.rb
... ... @@ -4,7 +4,7 @@ describe GitlabMarkdownHelper do
4 4 let!(:project) { create(:project) }
5 5  
6 6 let(:user) { create(:user, username: 'gfm') }
7   - let(:commit) { CommitDecorator.decorate(project.commit) }
  7 + let(:commit) { CommitDecorator.decorate(project.repository.commit) }
8 8 let(:issue) { create(:issue, project: project) }
9 9 let(:merge_request) { create(:merge_request, project: project) }
10 10 let(:snippet) { create(:snippet, project: project) }
... ... @@ -85,7 +85,7 @@ describe GitlabMarkdownHelper do
85 85 let(:expected) { project_team_member_path(project, member) }
86 86  
87 87 before do
88   - project.add_access(user, :admin)
  88 + project.team << [user, :master]
89 89 end
90 90  
91 91 it "should link using a simple name" do
... ... @@ -314,7 +314,7 @@ describe GitlabMarkdownHelper do
314 314 end
315 315  
316 316 it "should handle references in lists" do
317   - project.add_access(user, :admin)
  317 + project.team << [user, :master]
318 318  
319 319 actual = "\n* dark: ##{issue.id}\n* light by @#{member.user.username}"
320 320  
... ...
spec/models/project_repository_spec.rb
... ... @@ -1,159 +0,0 @@
1   -require 'spec_helper'
2   -
3   -describe Project, "Repository" do
4   - let(:project) { create(:project) }
5   -
6   - describe "#empty_repo?" do
7   - it "should return true if the repo doesn't exist" do
8   - project.stub(repo_exists?: false, has_commits?: true)
9   - project.should be_empty_repo
10   - end
11   -
12   - it "should return true if the repo has commits" do
13   - project.stub(repo_exists?: true, has_commits?: false)
14   - project.should be_empty_repo
15   - end
16   -
17   - it "should return false if the repo exists and has commits" do
18   - project.stub(repo_exists?: true, has_commits?: true)
19   - project.should_not be_empty_repo
20   - end
21   - end
22   -
23   - describe "#discover_default_branch" do
24   - let(:master) { 'master' }
25   - let(:stable) { 'stable' }
26   -
27   - it "returns 'master' when master exists" do
28   - project.should_receive(:branch_names).at_least(:once).and_return([stable, master])
29   - project.discover_default_branch.should == 'master'
30   - end
31   -
32   - it "returns non-master when master exists but default branch is set to something else" do
33   - project.default_branch = 'stable'
34   - project.should_receive(:branch_names).at_least(:once).and_return([stable, master])
35   - project.discover_default_branch.should == 'stable'
36   - end
37   -
38   - it "returns a non-master branch when only one exists" do
39   - project.should_receive(:branch_names).at_least(:once).and_return([stable])
40   - project.discover_default_branch.should == 'stable'
41   - end
42   -
43   - it "returns nil when no branch exists" do
44   - project.should_receive(:branch_names).at_least(:once).and_return([])
45   - project.discover_default_branch.should be_nil
46   - end
47   - end
48   -
49   - describe "#root_ref" do
50   - it "returns default_branch when set" do
51   - project.default_branch = 'stable'
52   - project.root_ref.should == 'stable'
53   - end
54   -
55   - it "returns 'master' when default_branch is nil" do
56   - project.default_branch = nil
57   - project.root_ref.should == 'master'
58   - end
59   - end
60   -
61   - describe "#root_ref?" do
62   - it "returns true when branch is root_ref" do
63   - project.default_branch = 'stable'
64   - project.root_ref?('stable').should be_true
65   - end
66   -
67   - it "returns false when branch is not root_ref" do
68   - project.default_branch = nil
69   - project.root_ref?('stable').should be_false
70   - end
71   - end
72   -
73   - describe :repo do
74   - it "should return valid repo" do
75   - project.repo.should be_kind_of(Grit::Repo)
76   - end
77   -
78   - it "should return nil" do
79   - lambda { Project.new(path: "invalid").repo }.should raise_error(Grit::NoSuchPathError)
80   - end
81   -
82   - it "should return nil" do
83   - lambda { Project.new.repo }.should raise_error(TypeError)
84   - end
85   - end
86   -
87   - describe :commit do
88   - it "should return first head commit if without params" do
89   - project.commit.id.should == project.repo.commits.first.id
90   - end
91   -
92   - it "should return valid commit" do
93   - project.commit(ValidCommit::ID).should be_valid_commit
94   - end
95   -
96   - it "should return nil" do
97   - project.commit("+123_4532530XYZ").should be_nil
98   - end
99   - end
100   -
101   - describe :tree do
102   - before do
103   - @commit = project.commit(ValidCommit::ID)
104   - end
105   -
106   - it "should raise error w/o arguments" do
107   - lambda { project.tree }.should raise_error
108   - end
109   -
110   - it "should return root tree for commit" do
111   - tree = project.tree(@commit)
112   - tree.contents.size.should == ValidCommit::FILES_COUNT
113   - tree.contents.map(&:name).should == ValidCommit::FILES
114   - end
115   -
116   - it "should return root tree for commit with correct path" do
117   - tree = project.tree(@commit, ValidCommit::C_FILE_PATH)
118   - tree.contents.map(&:name).should == ValidCommit::C_FILES
119   - end
120   -
121   - it "should return root tree for commit with incorrect path" do
122   - project.tree(@commit, "invalid_path").should be_nil
123   - end
124   - end
125   -
126   - describe "fresh commits" do
127   - let(:project) { create(:project) }
128   -
129   - it { project.fresh_commits(3).count.should == 3 }
130   - it { project.fresh_commits.first.id.should == "bcf03b5de6c33f3869ef70d68cf06e679d1d7f9a" }
131   - it { project.fresh_commits.last.id.should == "f403da73f5e62794a0447aca879360494b08f678" }
132   - end
133   -
134   - describe "commits_between" do
135   - let(:project) { create(:project) }
136   -
137   - subject do
138   - commits = project.commits_between("3a4b4fb4cde7809f033822a171b9feae19d41fff",
139   - "8470d70da67355c9c009e4401746b1d5410af2e3")
140   - commits.map { |c| c.id }
141   - end
142   -
143   - it { should have(3).elements }
144   - it { should include("f0f14c8eaba69ebddd766498a9d0b0e79becd633") }
145   - it { should_not include("bcf03b5de6c33f3869ef70d68cf06e679d1d7f9a") }
146   - end
147   -
148   - describe :valid_repo? do
149   - it "should be valid repo" do
150   - project = create(:project)
151   - project.valid_repo?.should be_true
152   - end
153   -
154   - it "should be invalid repo" do
155   - project = Project.new(name: "ok_name", path: "/INVALID_PATH/", path: "NEOK")
156   - project.valid_repo?.should be_false
157   - end
158   - end
159   -end
spec/models/project_spec.rb
... ... @@ -84,7 +84,6 @@ describe Project do
84 84 it { should respond_to(:satellite) }
85 85 it { should respond_to(:update_repository) }
86 86 it { should respond_to(:destroy_repository) }
87   - it { should respond_to(:archive_repo) }
88 87  
89 88 # Authority Role
90 89 it { should respond_to(:reset_access) }
... ... @@ -94,14 +93,6 @@ describe Project do
94 93 it { should respond_to(:dev_access_for?) }
95 94 it { should respond_to(:master_access_for?) }
96 95  
97   - # Team Role
98   - it { should respond_to(:team_member_by_name_or_email) }
99   - it { should respond_to(:team_member_by_id) }
100   - it { should respond_to(:add_user_to_team) }
101   - it { should respond_to(:add_users_to_team) }
102   - it { should respond_to(:add_user_id_to_team) }
103   - it { should respond_to(:add_users_ids_to_team) }
104   -
105 96 # Project Push Role
106 97 it { should respond_to(:observe_push) }
107 98 it { should respond_to(:update_merge_requests) }
... ... @@ -253,4 +244,33 @@ describe Project do
253 244 it { @project.to_param.should == "gitlab-ci" }
254 245 end
255 246 end
  247 +
  248 + describe "#empty_repo?" do
  249 + let(:project) { create(:project) }
  250 +
  251 + it "should return true if the repo doesn't exist" do
  252 + project.stub(repo_exists?: false, has_commits?: true)
  253 + project.should be_empty_repo
  254 + end
  255 +
  256 + it "should return true if the repo has commits" do
  257 + project.stub(repo_exists?: true, has_commits?: false)
  258 + project.should be_empty_repo
  259 + end
  260 +
  261 + it "should return false if the repo exists and has commits" do
  262 + project.stub(repo_exists?: true, has_commits?: true)
  263 + project.should_not be_empty_repo
  264 + end
  265 + end
  266 +
  267 + describe :repository do
  268 + it "should return valid repo" do
  269 + project.repository.should be_kind_of(Repository)
  270 + end
  271 +
  272 + it "should return nil" do
  273 + Project.new(path: "invalid").repository.should be_nil
  274 + end
  275 + end
256 276 end
... ...
spec/models/repository_spec.rb
1 1 describe Repository do
  2 + let(:project) { create(:project) }
  3 + let(:repository) { project.repository }
  4 +
2 5 describe "Respond to" do
  6 + subject { repository }
  7 +
3 8 it { should respond_to(:repo) }
4 9 it { should respond_to(:tree) }
5 10 it { should respond_to(:root_ref) }
... ... @@ -11,4 +16,88 @@ describe Repository do
11 16 it { should respond_to(:commits_since) }
12 17 it { should respond_to(:commits_between) }
13 18 end
  19 +
  20 +
  21 + describe "#discover_default_branch" do
  22 + let(:master) { 'master' }
  23 + let(:stable) { 'stable' }
  24 +
  25 + it "returns 'master' when master exists" do
  26 + repository.should_receive(:branch_names).at_least(:once).and_return([stable, master])
  27 + repository.discover_default_branch.should == 'master'
  28 + end
  29 +
  30 + it "returns non-master when master exists but default branch is set to something else" do
  31 + repository.default_branch = 'stable'
  32 + repository.should_receive(:branch_names).at_least(:once).and_return([stable, master])
  33 + repository.discover_default_branch.should == 'stable'
  34 + end
  35 +
  36 + it "returns a non-master branch when only one exists" do
  37 + repository.should_receive(:branch_names).at_least(:once).and_return([stable])
  38 + repository.discover_default_branch.should == 'stable'
  39 + end
  40 +
  41 + it "returns nil when no branch exists" do
  42 + repository.should_receive(:branch_names).at_least(:once).and_return([])
  43 + repository.discover_default_branch.should be_nil
  44 + end
  45 + end
  46 +
  47 + describe :commit do
  48 + it "should return first head commit if without params" do
  49 + repository.commit.id.should == repository.repo.commits.first.id
  50 + end
  51 +
  52 + it "should return valid commit" do
  53 + repository.commit(ValidCommit::ID).should be_valid_commit
  54 + end
  55 +
  56 + it "should return nil" do
  57 + repository.commit("+123_4532530XYZ").should be_nil
  58 + end
  59 + end
  60 +
  61 + describe :tree do
  62 + before do
  63 + @commit = repository.commit(ValidCommit::ID)
  64 + end
  65 +
  66 + it "should raise error w/o arguments" do
  67 + lambda { repository.tree }.should raise_error
  68 + end
  69 +
  70 + it "should return root tree for commit" do
  71 + tree = repository.tree(@commit)
  72 + tree.contents.size.should == ValidCommit::FILES_COUNT
  73 + tree.contents.map(&:name).should == ValidCommit::FILES
  74 + end
  75 +
  76 + it "should return root tree for commit with correct path" do
  77 + tree = repository.tree(@commit, ValidCommit::C_FILE_PATH)
  78 + tree.contents.map(&:name).should == ValidCommit::C_FILES
  79 + end
  80 +
  81 + it "should return root tree for commit with incorrect path" do
  82 + repository.tree(@commit, "invalid_path").should be_nil
  83 + end
  84 + end
  85 +
  86 + describe "fresh commits" do
  87 + it { repository.fresh_commits(3).count.should == 3 }
  88 + it { repository.fresh_commits.first.id.should == "bcf03b5de6c33f3869ef70d68cf06e679d1d7f9a" }
  89 + it { repository.fresh_commits.last.id.should == "f403da73f5e62794a0447aca879360494b08f678" }
  90 + end
  91 +
  92 + describe "commits_between" do
  93 + subject do
  94 + commits = repository.commits_between("3a4b4fb4cde7809f033822a171b9feae19d41fff",
  95 + "8470d70da67355c9c009e4401746b1d5410af2e3")
  96 + commits.map { |c| c.id }
  97 + end
  98 +
  99 + it { should have(3).elements }
  100 + it { should include("f0f14c8eaba69ebddd766498a9d0b0e79becd633") }
  101 + it { should_not include("bcf03b5de6c33f3869ef70d68cf06e679d1d7f9a") }
  102 + end
14 103 end
... ...
spec/requests/api/issues_spec.rb
... ... @@ -6,7 +6,7 @@ describe Gitlab::API do
6 6 let(:user) { create(:user) }
7 7 let!(:project) { create(:project, namespace: user.namespace ) }
8 8 let!(:issue) { create(:issue, author: user, assignee: user, project: project) }
9   - before { project.add_access(user, :read) }
  9 + before { project.team << [user, :reporter] }
10 10  
11 11 describe "GET /issues" do
12 12 context "when unauthenticated" do
... ...
spec/requests/api/merge_requests_spec.rb
... ... @@ -6,7 +6,7 @@ describe Gitlab::API do
6 6 let(:user) { create(:user ) }
7 7 let!(:project) { create(:project, namespace: user.namespace ) }
8 8 let!(:merge_request) { create(:merge_request, author: user, assignee: user, project: project, title: "Test") }
9   - before { project.add_access(user, :read) }
  9 + before { project.team << [user, :reporters] }
10 10  
11 11 describe "GET /projects/:id/merge_requests" do
12 12 context "when unauthenticated" do
... ...
spec/requests/api/milestones_spec.rb
... ... @@ -7,7 +7,7 @@ describe Gitlab::API do
7 7 let!(:project) { create(:project, namespace: user.namespace ) }
8 8 let!(:milestone) { create(:milestone, project: project) }
9 9  
10   - before { project.add_access(user, :read) }
  10 + before { project.team << [user, :developer] }
11 11  
12 12 describe "GET /projects/:id/milestones" do
13 13 it "should return project milestones" do
... ...
spec/requests/api/notes_spec.rb
... ... @@ -10,7 +10,7 @@ describe Gitlab::API do
10 10 let!(:issue_note) { create(:note, noteable: issue, project: project, author: user) }
11 11 let!(:snippet_note) { create(:note, noteable: snippet, project: project, author: user) }
12 12 let!(:wall_note) { create(:note, project: project, author: user) }
13   - before { project.add_access(user, :read) }
  13 + before { project.team << [user, :reporter] }
14 14  
15 15 describe "GET /projects/:id/notes" do
16 16 context "when unauthenticated" do
... ...
spec/requests/api/projects_spec.rb
... ... @@ -11,7 +11,7 @@ describe Gitlab::API do
11 11 let!(:snippet) { create(:snippet, author: user, project: project, title: 'example') }
12 12 let!(:users_project) { create(:users_project, user: user, project: project, project_access: UsersProject::MASTER) }
13 13 let!(:users_project2) { create(:users_project, user: user3, project: project, project_access: UsersProject::DEVELOPER) }
14   - before { project.add_access(user, :read) }
  14 + before { project.team << [user, :reporter] }
15 15  
16 16 describe "GET /projects" do
17 17 context "when unauthenticated" do
... ... @@ -226,14 +226,14 @@ describe Gitlab::API do
226 226  
227 227 describe "GET /projects/:id/repository/commits" do
228 228 context "authorized user" do
229   - before { project.add_access(user2, :read) }
  229 + before { project.team << [user2, :reporter] }
230 230  
231 231 it "should return project commits" do
232 232 get api("/projects/#{project.id}/repository/commits", user)
233 233 response.status.should == 200
234 234  
235 235 json_response.should be_an Array
236   - json_response.first['id'].should == project.commit.id
  236 + json_response.first['id'].should == project.repository.commit.id
237 237 end
238 238 end
239 239  
... ...
spec/requests/atom/issues_spec.rb
... ... @@ -6,7 +6,7 @@ describe &quot;Issues Feed&quot; do
6 6 let!(:project) { create(:project, namespace: user.namespace) }
7 7 let!(:issue) { create(:issue, author: user, project: project) }
8 8  
9   - before { project.add_access(user, :read, :write) }
  9 + before { project.team << [user, :developer] }
10 10  
11 11 context "when authenticated" do
12 12 it "should render atom feed" do
... ...
spec/requests/gitlab_flavored_markdown_spec.rb
... ... @@ -6,7 +6,7 @@ describe &quot;Gitlab Flavored Markdown&quot; do
6 6 let(:merge_request) { create(:merge_request, project: project) }
7 7 let(:fred) do
8 8 u = create(:user, name: "fred")
9   - project.add_access(u, :admin)
  9 + project.team << [u, :master]
10 10 u
11 11 end
12 12  
... ... @@ -33,11 +33,11 @@ describe &quot;Gitlab Flavored Markdown&quot; do
33 33 project.repo.gc_auto
34 34 end
35 35  
36   - let(:commit) { project.commits(@branch_name).first }
  36 + let(:commit) { project.repository.commits(@branch_name).first }
37 37  
38 38 before do
39 39 login_as :user
40   - project.add_access(@user, :read, :write)
  40 + project.team << [@user, :developer]
41 41 end
42 42  
43 43 describe "for commits" do
... ...
spec/requests/projects_deploy_keys_spec.rb
... ... @@ -5,7 +5,7 @@ describe &quot;Projects&quot;, &quot;DeployKeys&quot; do
5 5  
6 6 before do
7 7 login_as :user
8   - project.add_access(@user, :read, :write, :admin)
  8 + project.team << [@user, :master]
9 9 end
10 10  
11 11 describe "GET /keys" do
... ...
spec/requests/search_spec.rb
... ... @@ -4,7 +4,7 @@ describe &quot;Search&quot; do
4 4 before do
5 5 login_as :user
6 6 @project = create(:project)
7   - @project.add_access(@user, :read)
  7 + @project.team << [@user, :reporter]
8 8 visit search_path
9 9 fill_in "search", with: @project.name[0..3]
10 10 click_button "Search"
... ...
spec/requests/snippets_spec.rb
... ... @@ -5,7 +5,7 @@ describe &quot;Snippets&quot; do
5 5  
6 6 before do
7 7 login_as :user
8   - project.add_access(@user, :read, :write)
  8 + project.team << [@user, :developer]
9 9 end
10 10  
11 11 describe "GET /snippets" do
... ... @@ -26,7 +26,7 @@ describe &quot;Snippets&quot; do
26 26 before do
27 27 # admin access to remove snippet
28 28 @user.users_projects.destroy_all
29   - project.add_access(@user, :read, :write, :admin)
  29 + project.team << [@user, :master]
30 30 visit edit_project_snippet_path(project, @snippet)
31 31 end
32 32  
... ...