From d4543eb5a71bd3aa5bfc24f9fadf07e4fe3d461d Mon Sep 17 00:00:00 2001 From: Andrew8xx8 Date: Mon, 25 Mar 2013 11:20:14 +0400 Subject: Tests fixed --- app/controllers/projects/snippets_controller.rb | 4 +-- app/models/ability.rb | 8 ++--- lib/api/projects.rb | 6 ++-- spec/helpers/gitlab_markdown_helper_spec.rb | 39 +++++++++++++++++++++++-- spec/models/project_spec.rb | 2 +- spec/requests/api/notes_spec.rb | 2 +- spec/requests/api/projects_spec.rb | 2 +- 7 files changed, 49 insertions(+), 14 deletions(-) diff --git a/app/controllers/projects/snippets_controller.rb b/app/controllers/projects/snippets_controller.rb index ebff5039ffa..cd14c08c779 100644 --- a/app/controllers/projects/snippets_controller.rb +++ b/app/controllers/projects/snippets_controller.rb @@ -23,11 +23,11 @@ class Projects::SnippetsController < Projects::ApplicationController end def new - @snippet = @project.snippets.new + @snippet = @project.snippets.build end def create - @snippet = @project.snippets.new(params[:project_snippet]) + @snippet = @project.snippets.build(params[:project_snippet]) @snippet.author = current_user @snippet.save diff --git a/app/models/ability.rb b/app/models/ability.rb index 2dadb584460..b86a4b5a044 100644 --- a/app/models/ability.rb +++ b/app/models/ability.rb @@ -55,7 +55,7 @@ class Ability :read_wiki, :read_issue, :read_milestone, - :read_snippet, + :read_project_snippet, :read_team_member, :read_merge_request, :read_note, @@ -68,7 +68,7 @@ class Ability def project_report_rules project_guest_rules + [ :download_code, - :write_snippet + :write_project_snippet ] end @@ -84,11 +84,11 @@ class Ability project_dev_rules + [ :push_code_to_protected_branches, :modify_issue, - :modify_snippet, + :modify_project_snippet, :modify_merge_request, :admin_issue, :admin_milestone, - :admin_snippet, + :admin_project_snippet, :admin_team_member, :admin_merge_request, :admin_note, diff --git a/lib/api/projects.rb b/lib/api/projects.rb index d4f50fda1b5..3699971f25c 100644 --- a/lib/api/projects.rb +++ b/lib/api/projects.rb @@ -408,7 +408,7 @@ module Gitlab # Example Request: # POST /projects/:id/snippets post ":id/snippets" do - authorize! :write_snippet, user_project + authorize! :write_project_snippet, user_project required_attributes! [:title, :file_name, :code] attrs = attributes_for_keys [:title, :file_name] @@ -437,7 +437,7 @@ module Gitlab # PUT /projects/:id/snippets/:snippet_id put ":id/snippets/:snippet_id" do @snippet = user_project.snippets.find(params[:snippet_id]) - authorize! :modify_snippet, @snippet + authorize! :modify_project_snippet, @snippet attrs = attributes_for_keys [:title, :file_name] attrs[:expires_at] = params[:lifetime] if params[:lifetime].present? @@ -460,7 +460,7 @@ module Gitlab delete ":id/snippets/:snippet_id" do begin @snippet = user_project.snippets.find(params[:snippet_id]) - authorize! :modify_snippet, user_project + authorize! :modify_project_snippet, @snippet @snippet.destroy rescue end diff --git a/spec/helpers/gitlab_markdown_helper_spec.rb b/spec/helpers/gitlab_markdown_helper_spec.rb index b9025026c1b..94ccefa79f9 100644 --- a/spec/helpers/gitlab_markdown_helper_spec.rb +++ b/spec/helpers/gitlab_markdown_helper_spec.rb @@ -10,7 +10,7 @@ describe GitlabMarkdownHelper do let(:commit) { CommitDecorator.decorate(project.repository.commit) } let(:issue) { create(:issue, project: project) } let(:merge_request) { create(:merge_request, project: project) } - let(:snippet) { create(:snippet, project: project) } + let(:snippet) { create(:project_snippet, project: project) } let(:member) { project.users_projects.where(user_id: user).first } before do @@ -190,8 +190,43 @@ describe GitlabMarkdownHelper do describe "referencing a snippet" do let(:object) { snippet } let(:reference) { "$#{snippet.id}" } + let(:actual) { "Reference to #{reference}" } + let(:expected) { project_snippet_path(project, object) } + + it "should link using a valid id" do + gfm(actual).should match(expected) + end + + it "should link with adjacent text" do + # Wrap the reference in parenthesis + gfm(actual.gsub(reference, "(#{reference})")).should match(expected) + + # Append some text to the end of the reference + gfm(actual.gsub(reference, "#{reference}, right?")).should match(expected) + end + + it "should keep whitespace intact" do + actual = "Referenced #{reference} already." + expected = /Referenced [^\s]+<\/a> already/ + gfm(actual).should match(expected) + end + + it "should not link with an invalid id" do + # Modify the reference string so it's still parsed, but is invalid + reference.gsub!(/^(.)(\d+)$/, '\1' + ('\2' * 2)) + gfm(actual).should == actual + end + + it "should include a title attribute" do + title = "Snippet: #{object.title}" + gfm(actual).should match(/title="#{title}"/) + end + + it "should include standard gfm classes" do + css = object.class.to_s.underscore + gfm(actual).should match(/class="\s?gfm gfm-snippet\s?"/) + end - include_examples 'referenced object' end describe "referencing multiple objects" do diff --git a/spec/models/project_spec.rb b/spec/models/project_spec.rb index 9423c7de6ec..17033973dfe 100644 --- a/spec/models/project_spec.rb +++ b/spec/models/project_spec.rb @@ -34,7 +34,7 @@ describe Project do it { should have_many(:milestones).dependent(:destroy) } it { should have_many(:users_projects).dependent(:destroy) } it { should have_many(:notes).dependent(:destroy) } - it { should have_many(:snippets).dependent(:destroy) } + it { should have_many(:project_snippets).class_name('ProjectSnippet').dependent(:destroy) } it { should have_many(:deploy_keys).dependent(:destroy) } it { should have_many(:hooks).dependent(:destroy) } it { should have_many(:wikis).dependent(:destroy) } diff --git a/spec/requests/api/notes_spec.rb b/spec/requests/api/notes_spec.rb index 901640834f2..0df3189ca0c 100644 --- a/spec/requests/api/notes_spec.rb +++ b/spec/requests/api/notes_spec.rb @@ -7,7 +7,7 @@ describe Gitlab::API do let!(:project) { create(:project, namespace: user.namespace ) } let!(:issue) { create(:issue, project: project, author: user) } let!(:merge_request) { create(:merge_request, project: project, author: user) } - let!(:snippet) { create(:snippet, project: project, author: user) } + let!(:snippet) { create(:project_snippet, project: project, author: user) } let!(:issue_note) { create(:note, noteable: issue, project: project, author: user) } let!(:merge_request_note) { create(:note, noteable: merge_request, project: project, author: user) } let!(:snippet_note) { create(:note, noteable: snippet, project: project, author: user) } diff --git a/spec/requests/api/projects_spec.rb b/spec/requests/api/projects_spec.rb index cddb7264018..c5a74ed9e0d 100644 --- a/spec/requests/api/projects_spec.rb +++ b/spec/requests/api/projects_spec.rb @@ -9,7 +9,7 @@ describe Gitlab::API do let(:admin) { create(:admin) } let!(:project) { create(:project, namespace: user.namespace ) } let!(:hook) { create(:project_hook, project: project, url: "http://example.com") } - let!(:snippet) { create(:snippet, author: user, project: project, title: 'example') } + let!(:snippet) { create(:project_snippet, author: user, project: project, title: 'example') } let!(:users_project) { create(:users_project, user: user, project: project, project_access: UsersProject::MASTER) } let!(:users_project2) { create(:users_project, user: user3, project: project, project_access: UsersProject::DEVELOPER) } let(:key) { create(:key, project: project) } -- cgit v1.2.3