Commit d4543eb5a71bd3aa5bfc24f9fadf07e4fe3d461d

Authored by Andrew8xx8
1 parent 611ac727

Tests fixed

app/controllers/projects/snippets_controller.rb
@@ -23,11 +23,11 @@ class Projects::SnippetsController < Projects::ApplicationController @@ -23,11 +23,11 @@ class Projects::SnippetsController < Projects::ApplicationController
23 end 23 end
24 24
25 def new 25 def new
26 - @snippet = @project.snippets.new 26 + @snippet = @project.snippets.build
27 end 27 end
28 28
29 def create 29 def create
30 - @snippet = @project.snippets.new(params[:project_snippet]) 30 + @snippet = @project.snippets.build(params[:project_snippet])
31 @snippet.author = current_user 31 @snippet.author = current_user
32 @snippet.save 32 @snippet.save
33 33
app/models/ability.rb
@@ -55,7 +55,7 @@ class Ability @@ -55,7 +55,7 @@ class Ability
55 :read_wiki, 55 :read_wiki,
56 :read_issue, 56 :read_issue,
57 :read_milestone, 57 :read_milestone,
58 - :read_snippet, 58 + :read_project_snippet,
59 :read_team_member, 59 :read_team_member,
60 :read_merge_request, 60 :read_merge_request,
61 :read_note, 61 :read_note,
@@ -68,7 +68,7 @@ class Ability @@ -68,7 +68,7 @@ class Ability
68 def project_report_rules 68 def project_report_rules
69 project_guest_rules + [ 69 project_guest_rules + [
70 :download_code, 70 :download_code,
71 - :write_snippet 71 + :write_project_snippet
72 ] 72 ]
73 end 73 end
74 74
@@ -84,11 +84,11 @@ class Ability @@ -84,11 +84,11 @@ class Ability
84 project_dev_rules + [ 84 project_dev_rules + [
85 :push_code_to_protected_branches, 85 :push_code_to_protected_branches,
86 :modify_issue, 86 :modify_issue,
87 - :modify_snippet, 87 + :modify_project_snippet,
88 :modify_merge_request, 88 :modify_merge_request,
89 :admin_issue, 89 :admin_issue,
90 :admin_milestone, 90 :admin_milestone,
91 - :admin_snippet, 91 + :admin_project_snippet,
92 :admin_team_member, 92 :admin_team_member,
93 :admin_merge_request, 93 :admin_merge_request,
94 :admin_note, 94 :admin_note,
lib/api/projects.rb
@@ -408,7 +408,7 @@ module Gitlab @@ -408,7 +408,7 @@ module Gitlab
408 # Example Request: 408 # Example Request:
409 # POST /projects/:id/snippets 409 # POST /projects/:id/snippets
410 post ":id/snippets" do 410 post ":id/snippets" do
411 - authorize! :write_snippet, user_project 411 + authorize! :write_project_snippet, user_project
412 required_attributes! [:title, :file_name, :code] 412 required_attributes! [:title, :file_name, :code]
413 413
414 attrs = attributes_for_keys [:title, :file_name] 414 attrs = attributes_for_keys [:title, :file_name]
@@ -437,7 +437,7 @@ module Gitlab @@ -437,7 +437,7 @@ module Gitlab
437 # PUT /projects/:id/snippets/:snippet_id 437 # PUT /projects/:id/snippets/:snippet_id
438 put ":id/snippets/:snippet_id" do 438 put ":id/snippets/:snippet_id" do
439 @snippet = user_project.snippets.find(params[:snippet_id]) 439 @snippet = user_project.snippets.find(params[:snippet_id])
440 - authorize! :modify_snippet, @snippet 440 + authorize! :modify_project_snippet, @snippet
441 441
442 attrs = attributes_for_keys [:title, :file_name] 442 attrs = attributes_for_keys [:title, :file_name]
443 attrs[:expires_at] = params[:lifetime] if params[:lifetime].present? 443 attrs[:expires_at] = params[:lifetime] if params[:lifetime].present?
@@ -460,7 +460,7 @@ module Gitlab @@ -460,7 +460,7 @@ module Gitlab
460 delete ":id/snippets/:snippet_id" do 460 delete ":id/snippets/:snippet_id" do
461 begin 461 begin
462 @snippet = user_project.snippets.find(params[:snippet_id]) 462 @snippet = user_project.snippets.find(params[:snippet_id])
463 - authorize! :modify_snippet, user_project 463 + authorize! :modify_project_snippet, @snippet
464 @snippet.destroy 464 @snippet.destroy
465 rescue 465 rescue
466 end 466 end
spec/helpers/gitlab_markdown_helper_spec.rb
@@ -10,7 +10,7 @@ describe GitlabMarkdownHelper do @@ -10,7 +10,7 @@ describe GitlabMarkdownHelper do
10 let(:commit) { CommitDecorator.decorate(project.repository.commit) } 10 let(:commit) { CommitDecorator.decorate(project.repository.commit) }
11 let(:issue) { create(:issue, project: project) } 11 let(:issue) { create(:issue, project: project) }
12 let(:merge_request) { create(:merge_request, project: project) } 12 let(:merge_request) { create(:merge_request, project: project) }
13 - let(:snippet) { create(:snippet, project: project) } 13 + let(:snippet) { create(:project_snippet, project: project) }
14 let(:member) { project.users_projects.where(user_id: user).first } 14 let(:member) { project.users_projects.where(user_id: user).first }
15 15
16 before do 16 before do
@@ -190,8 +190,43 @@ describe GitlabMarkdownHelper do @@ -190,8 +190,43 @@ describe GitlabMarkdownHelper do
190 describe "referencing a snippet" do 190 describe "referencing a snippet" do
191 let(:object) { snippet } 191 let(:object) { snippet }
192 let(:reference) { "$#{snippet.id}" } 192 let(:reference) { "$#{snippet.id}" }
  193 + let(:actual) { "Reference to #{reference}" }
  194 + let(:expected) { project_snippet_path(project, object) }
  195 +
  196 + it "should link using a valid id" do
  197 + gfm(actual).should match(expected)
  198 + end
  199 +
  200 + it "should link with adjacent text" do
  201 + # Wrap the reference in parenthesis
  202 + gfm(actual.gsub(reference, "(#{reference})")).should match(expected)
  203 +
  204 + # Append some text to the end of the reference
  205 + gfm(actual.gsub(reference, "#{reference}, right?")).should match(expected)
  206 + end
  207 +
  208 + it "should keep whitespace intact" do
  209 + actual = "Referenced #{reference} already."
  210 + expected = /Referenced <a.+>[^\s]+<\/a> already/
  211 + gfm(actual).should match(expected)
  212 + end
  213 +
  214 + it "should not link with an invalid id" do
  215 + # Modify the reference string so it's still parsed, but is invalid
  216 + reference.gsub!(/^(.)(\d+)$/, '\1' + ('\2' * 2))
  217 + gfm(actual).should == actual
  218 + end
  219 +
  220 + it "should include a title attribute" do
  221 + title = "Snippet: #{object.title}"
  222 + gfm(actual).should match(/title="#{title}"/)
  223 + end
  224 +
  225 + it "should include standard gfm classes" do
  226 + css = object.class.to_s.underscore
  227 + gfm(actual).should match(/class="\s?gfm gfm-snippet\s?"/)
  228 + end
193 229
194 - include_examples 'referenced object'  
195 end 230 end
196 231
197 describe "referencing multiple objects" do 232 describe "referencing multiple objects" do
spec/models/project_spec.rb
@@ -34,7 +34,7 @@ describe Project do @@ -34,7 +34,7 @@ describe Project do
34 it { should have_many(:milestones).dependent(:destroy) } 34 it { should have_many(:milestones).dependent(:destroy) }
35 it { should have_many(:users_projects).dependent(:destroy) } 35 it { should have_many(:users_projects).dependent(:destroy) }
36 it { should have_many(:notes).dependent(:destroy) } 36 it { should have_many(:notes).dependent(:destroy) }
37 - it { should have_many(:snippets).dependent(:destroy) } 37 + it { should have_many(:project_snippets).class_name('ProjectSnippet').dependent(:destroy) }
38 it { should have_many(:deploy_keys).dependent(:destroy) } 38 it { should have_many(:deploy_keys).dependent(:destroy) }
39 it { should have_many(:hooks).dependent(:destroy) } 39 it { should have_many(:hooks).dependent(:destroy) }
40 it { should have_many(:wikis).dependent(:destroy) } 40 it { should have_many(:wikis).dependent(:destroy) }
spec/requests/api/notes_spec.rb
@@ -7,7 +7,7 @@ describe Gitlab::API do @@ -7,7 +7,7 @@ describe Gitlab::API do
7 let!(:project) { create(:project, namespace: user.namespace ) } 7 let!(:project) { create(:project, namespace: user.namespace ) }
8 let!(:issue) { create(:issue, project: project, author: user) } 8 let!(:issue) { create(:issue, project: project, author: user) }
9 let!(:merge_request) { create(:merge_request, project: project, author: user) } 9 let!(:merge_request) { create(:merge_request, project: project, author: user) }
10 - let!(:snippet) { create(:snippet, project: project, author: user) } 10 + let!(:snippet) { create(:project_snippet, project: project, author: user) }
11 let!(:issue_note) { create(:note, noteable: issue, project: project, author: user) } 11 let!(:issue_note) { create(:note, noteable: issue, project: project, author: user) }
12 let!(:merge_request_note) { create(:note, noteable: merge_request, project: project, author: user) } 12 let!(:merge_request_note) { create(:note, noteable: merge_request, project: project, author: user) }
13 let!(:snippet_note) { create(:note, noteable: snippet, project: project, author: user) } 13 let!(:snippet_note) { create(:note, noteable: snippet, project: project, author: user) }
spec/requests/api/projects_spec.rb
@@ -9,7 +9,7 @@ describe Gitlab::API do @@ -9,7 +9,7 @@ describe Gitlab::API do
9 let(:admin) { create(:admin) } 9 let(:admin) { create(:admin) }
10 let!(:project) { create(:project, namespace: user.namespace ) } 10 let!(:project) { create(:project, namespace: user.namespace ) }
11 let!(:hook) { create(:project_hook, project: project, url: "http://example.com") } 11 let!(:hook) { create(:project_hook, project: project, url: "http://example.com") }
12 - let!(:snippet) { create(:snippet, author: user, project: project, title: 'example') } 12 + let!(:snippet) { create(:project_snippet, author: user, project: project, title: 'example') }
13 let!(:users_project) { create(:users_project, user: user, project: project, project_access: UsersProject::MASTER) } 13 let!(:users_project) { create(:users_project, user: user, project: project, project_access: UsersProject::MASTER) }
14 let!(:users_project2) { create(:users_project, user: user3, project: project, project_access: UsersProject::DEVELOPER) } 14 let!(:users_project2) { create(:users_project, user: user3, project: project, project_access: UsersProject::DEVELOPER) }
15 let(:key) { create(:key, project: project) } 15 let(:key) { create(:key, project: project) }