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 23 end
24 24  
25 25 def new
26   - @snippet = @project.snippets.new
  26 + @snippet = @project.snippets.build
27 27 end
28 28  
29 29 def create
30   - @snippet = @project.snippets.new(params[:project_snippet])
  30 + @snippet = @project.snippets.build(params[:project_snippet])
31 31 @snippet.author = current_user
32 32 @snippet.save
33 33  
... ...
app/models/ability.rb
... ... @@ -55,7 +55,7 @@ class Ability
55 55 :read_wiki,
56 56 :read_issue,
57 57 :read_milestone,
58   - :read_snippet,
  58 + :read_project_snippet,
59 59 :read_team_member,
60 60 :read_merge_request,
61 61 :read_note,
... ... @@ -68,7 +68,7 @@ class Ability
68 68 def project_report_rules
69 69 project_guest_rules + [
70 70 :download_code,
71   - :write_snippet
  71 + :write_project_snippet
72 72 ]
73 73 end
74 74  
... ... @@ -84,11 +84,11 @@ class Ability
84 84 project_dev_rules + [
85 85 :push_code_to_protected_branches,
86 86 :modify_issue,
87   - :modify_snippet,
  87 + :modify_project_snippet,
88 88 :modify_merge_request,
89 89 :admin_issue,
90 90 :admin_milestone,
91   - :admin_snippet,
  91 + :admin_project_snippet,
92 92 :admin_team_member,
93 93 :admin_merge_request,
94 94 :admin_note,
... ...
lib/api/projects.rb
... ... @@ -408,7 +408,7 @@ module Gitlab
408 408 # Example Request:
409 409 # POST /projects/:id/snippets
410 410 post ":id/snippets" do
411   - authorize! :write_snippet, user_project
  411 + authorize! :write_project_snippet, user_project
412 412 required_attributes! [:title, :file_name, :code]
413 413  
414 414 attrs = attributes_for_keys [:title, :file_name]
... ... @@ -437,7 +437,7 @@ module Gitlab
437 437 # PUT /projects/:id/snippets/:snippet_id
438 438 put ":id/snippets/:snippet_id" do
439 439 @snippet = user_project.snippets.find(params[:snippet_id])
440   - authorize! :modify_snippet, @snippet
  440 + authorize! :modify_project_snippet, @snippet
441 441  
442 442 attrs = attributes_for_keys [:title, :file_name]
443 443 attrs[:expires_at] = params[:lifetime] if params[:lifetime].present?
... ... @@ -460,7 +460,7 @@ module Gitlab
460 460 delete ":id/snippets/:snippet_id" do
461 461 begin
462 462 @snippet = user_project.snippets.find(params[:snippet_id])
463   - authorize! :modify_snippet, user_project
  463 + authorize! :modify_project_snippet, @snippet
464 464 @snippet.destroy
465 465 rescue
466 466 end
... ...
spec/helpers/gitlab_markdown_helper_spec.rb
... ... @@ -10,7 +10,7 @@ describe GitlabMarkdownHelper do
10 10 let(:commit) { CommitDecorator.decorate(project.repository.commit) }
11 11 let(:issue) { create(:issue, project: project) }
12 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 14 let(:member) { project.users_projects.where(user_id: user).first }
15 15  
16 16 before do
... ... @@ -190,8 +190,43 @@ describe GitlabMarkdownHelper do
190 190 describe "referencing a snippet" do
191 191 let(:object) { snippet }
192 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 230 end
196 231  
197 232 describe "referencing multiple objects" do
... ...
spec/models/project_spec.rb
... ... @@ -34,7 +34,7 @@ describe Project do
34 34 it { should have_many(:milestones).dependent(:destroy) }
35 35 it { should have_many(:users_projects).dependent(:destroy) }
36 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 38 it { should have_many(:deploy_keys).dependent(:destroy) }
39 39 it { should have_many(:hooks).dependent(:destroy) }
40 40 it { should have_many(:wikis).dependent(:destroy) }
... ...
spec/requests/api/notes_spec.rb
... ... @@ -7,7 +7,7 @@ describe Gitlab::API do
7 7 let!(:project) { create(:project, namespace: user.namespace ) }
8 8 let!(:issue) { create(:issue, project: project, author: user) }
9 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 11 let!(:issue_note) { create(:note, noteable: issue, project: project, author: user) }
12 12 let!(:merge_request_note) { create(:note, noteable: merge_request, project: project, author: user) }
13 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 9 let(:admin) { create(:admin) }
10 10 let!(:project) { create(:project, namespace: user.namespace ) }
11 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 13 let!(:users_project) { create(:users_project, user: user, project: project, project_access: UsersProject::MASTER) }
14 14 let!(:users_project2) { create(:users_project, user: user3, project: project, project_access: UsersProject::DEVELOPER) }
15 15 let(:key) { create(:key, project: project) }
... ...