Skip to content
Snippets Groups Projects
Commit 30c6db8f authored by Mark Chao's avatar Mark Chao
Browse files

Move embeddable? to model to be used outside view

parent 00096b52
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -130,12 +130,4 @@ module SnippetsHelper
 
link_to external_snippet_icon('download'), download_url, class: 'btn', target: '_blank', title: 'Download', rel: 'noopener noreferrer'
end
def public_snippet?
if @snippet.project_id?
can?(nil, :read_project_snippet, @snippet)
else
can?(nil, :read_personal_snippet, @snippet)
end
end
end
Loading
Loading
@@ -175,6 +175,14 @@ class Snippet < ActiveRecord::Base
:visibility_level
end
 
def embeddable?
if project_id?
Ability.allowed?(nil, :read_project_snippet, self)
else
Ability.allowed?(nil, :read_personal_snippet, self)
end
end
def notes_with_associations
notes.includes(:author)
end
Loading
Loading
Loading
Loading
@@ -30,7 +30,7 @@
- if @snippet.updated_at != @snippet.created_at
= edited_time_ago_with_tooltip(@snippet, placement: 'bottom', html_class: 'snippet-edited-ago', exclude_author: true)
 
- if public_snippet?
- if @snippet.embeddable?
.embed-snippet
.input-group
.input-group-prepend
Loading
Loading
Loading
Loading
@@ -423,4 +423,41 @@ describe Snippet do
expect(blob.data).to eq(snippet.content)
end
end
describe '#embeddable?' do
context 'project snippet' do
[
{ project: :public, snippet: :public, embeddable: true },
{ project: :internal, snippet: :public, embeddable: false },
{ project: :private, snippet: :public, embeddable: false },
{ project: :public, snippet: :internal, embeddable: false },
{ project: :internal, snippet: :internal, embeddable: false },
{ project: :private, snippet: :internal, embeddable: false },
{ project: :public, snippet: :private, embeddable: false },
{ project: :internal, snippet: :private, embeddable: false },
{ project: :private, snippet: :private, embeddable: false }
].each do |combination|
it 'only returns true when both project and snippet are public' do
project = create(:project, combination[:project])
snippet = create(:project_snippet, combination[:snippet], project: project)
expect(snippet.embeddable?).to eq(combination[:embeddable])
end
end
end
context 'personal snippet' do
[
{ snippet: :public, embeddable: true },
{ snippet: :internal, embeddable: false },
{ snippet: :private, embeddable: false }
].each do |combination|
it 'only returns true when snippet is public' do
snippet = create(:personal_snippet, combination[:snippet])
expect(snippet.embeddable?).to eq(combination[:embeddable])
end
end
end
end
end
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment