Commit 3a4726cbdc0d4c2337e368f1c2e6db0940fc6879
1 parent
60f17b72
Exists in
master
and in
29 other branches
Functional tests for context content block
Showing
6 changed files
with
159 additions
and
12 deletions
Show diff stats
plugins/context_content/controllers/profile/context_content_plugin_profile_controller.rb
@@ -2,14 +2,18 @@ class ContextContentPluginProfileController < ProfileController | @@ -2,14 +2,18 @@ class ContextContentPluginProfileController < ProfileController | ||
2 | append_view_path File.join(File.dirname(__FILE__) + '/../../views') | 2 | append_view_path File.join(File.dirname(__FILE__) + '/../../views') |
3 | 3 | ||
4 | def view_content | 4 | def view_content |
5 | - block = Block.find(params[:id]) | ||
6 | - p = params[:page].to_i | ||
7 | - contents = block.contents(profile.articles.find(params[:article_id]), p) | ||
8 | - | ||
9 | - render :update do |page| | ||
10 | - page.replace_html "context_content_#{block.id}", :file => "blocks/context_content", :locals => {:block => block, :contents => contents} | ||
11 | - page.replace_html "context_content_more_#{block.id}", :partial => 'blocks/more', :locals => {:block => block, :contents => contents, :article_id => params[:article_id] } | ||
12 | - end | 5 | + block = Block.find(params[:id]) |
6 | + p = params[:page].to_i | ||
7 | + contents = block.contents(profile.articles.find(params[:article_id]), p) | ||
8 | + | ||
9 | + if contents | ||
10 | + render :update do |page| | ||
11 | + page.replace_html "context_content_#{block.id}", :file => "blocks/context_content", :locals => {:block => block, :contents => contents} | ||
12 | + page.replace_html "context_content_more_#{block.id}", :partial => 'blocks/more', :locals => {:block => block, :contents => contents, :article_id => params[:article_id] } | ||
13 | + end | ||
14 | + else | ||
15 | + render :text => "invalid page", :status => 500 | ||
16 | + end | ||
13 | end | 17 | end |
14 | 18 | ||
15 | end | 19 | end |
plugins/context_content/lib/context_content_block.rb
@@ -50,8 +50,8 @@ class ContextContentBlock < Block | @@ -50,8 +50,8 @@ class ContextContentBlock < Block | ||
50 | def footer | 50 | def footer |
51 | block = self | 51 | block = self |
52 | lambda do | 52 | lambda do |
53 | - if @page | ||
54 | - contents = block.contents(@page) | 53 | + contents = block.contents(@page) |
54 | + if contents | ||
55 | content_tag('div', | 55 | content_tag('div', |
56 | render(:partial => 'blocks/more', :locals => {:block => block, :contents => contents, :article_id => @page.id}), :id => "context_content_more_#{block.id}", :class => "more_button") | 56 | render(:partial => 'blocks/more', :locals => {:block => block, :contents => contents, :article_id => @page.id}), :id => "context_content_more_#{block.id}", :class => "more_button") |
57 | else | 57 | else |
plugins/context_content/test/functional/content_viewer_controller_test.rb
0 → 100644
@@ -0,0 +1,46 @@ | @@ -0,0 +1,46 @@ | ||
1 | +require File.dirname(__FILE__) + '/../test_helper' | ||
2 | + | ||
3 | +class ContentViewerController | ||
4 | + append_view_path File.join(File.dirname(__FILE__) + '/../../views') | ||
5 | + def rescue_action(e) | ||
6 | + raise e | ||
7 | + end | ||
8 | +end | ||
9 | + | ||
10 | +class ContentViewerControllerTest < ActionController::TestCase | ||
11 | + | ||
12 | + def setup | ||
13 | + @profile = fast_create(Community) | ||
14 | + @page = fast_create(Folder, :profile_id => @profile.id) | ||
15 | + | ||
16 | + box = Box.create!(:owner => @profile) | ||
17 | + @block = ContextContentBlock.new(:box => box) | ||
18 | + @block.types = ['TinyMceArticle'] | ||
19 | + @block.limit = 1 | ||
20 | + @block.save! | ||
21 | + end | ||
22 | + | ||
23 | + should 'do not display context content block if it has no contents' do | ||
24 | + get :view_page, @page.url | ||
25 | + assert_no_tag 'div', :attributes => {:id => "context_content_#{@block.id}", :class => 'contents'} | ||
26 | + assert_no_tag 'div', :attributes => {:id => "context_content_more_#{@block.id}", :class => 'more_button'} | ||
27 | + end | ||
28 | + | ||
29 | + should 'display context content block if it has contents' do | ||
30 | + article = fast_create(TinyMceArticle, :parent_id => @page.id, :profile_id => @profile.id, :name => 'article1') | ||
31 | + get :view_page, @page.url | ||
32 | + assert_tag 'div', :attributes => {:id => "context_content_#{@block.id}", :class => 'contents'} | ||
33 | + assert_no_tag 'div', :attributes => {:id => "context_content_more_#{@block.id}", :class => 'more_button'}, :descendant => {:tag => 'a'} | ||
34 | + assert_match /article1/, @response.body | ||
35 | + end | ||
36 | + | ||
37 | + should 'display context content block with pagination' do | ||
38 | + article1 = fast_create(TinyMceArticle, :parent_id => @page.id, :profile_id => @profile.id) | ||
39 | + article2 = fast_create(TinyMceArticle, :parent_id => @page.id, :profile_id => @profile.id) | ||
40 | + get :view_page, @page.url | ||
41 | + assert_tag 'div', :attributes => {:id => "context_content_#{@block.id}", :class => 'contents'} | ||
42 | + assert_tag 'div', :attributes => {:id => "context_content_more_#{@block.id}", :class => 'more_button'}, :descendant => {:tag => 'a', :attributes => {:class => 'button icon-button icon-left disabled'} } | ||
43 | + assert_tag 'div', :attributes => {:id => "context_content_more_#{@block.id}", :class => 'more_button'}, :descendant => {:tag => 'a', :attributes => {:class => 'button icon-button icon-right'} } | ||
44 | + end | ||
45 | + | ||
46 | +end |
plugins/context_content/test/functional/context_content_plugin_profile_controller_test.rb
0 → 100644
@@ -0,0 +1,43 @@ | @@ -0,0 +1,43 @@ | ||
1 | +require File.dirname(__FILE__) + '/../test_helper' | ||
2 | + | ||
3 | +class ContextContentPluginProfileControllerTest < ActionController::TestCase | ||
4 | + | ||
5 | + class ContextContentPluginProfileController; def rescue_action(e) raise e end; end | ||
6 | + | ||
7 | + def setup | ||
8 | + @profile = fast_create(Community) | ||
9 | + @block = ContextContentBlock.new | ||
10 | + @block.types = ['TinyMceArticle'] | ||
11 | + @block.limit = 1 | ||
12 | + @block.save! | ||
13 | + @page = fast_create(Folder, :profile_id => @profile.id) | ||
14 | + end | ||
15 | + | ||
16 | + should 'render response error if contents is nil' do | ||
17 | + xhr :get, :view_content, :id => @block.id, :article_id => @page.id, :page => 1, :profile => @profile.identifier | ||
18 | + assert_response 500 | ||
19 | + end | ||
20 | + | ||
21 | + should 'render error if page do not exists' do | ||
22 | + article = fast_create(TinyMceArticle, :parent_id => @page.id, :profile_id => @profile.id) | ||
23 | + xhr :get, :view_content, :id => @block.id, :article_id => @page.id, :page => 2, :profile => @profile.identifier | ||
24 | + assert_response 500 | ||
25 | + end | ||
26 | + | ||
27 | + should 'replace div with content for page passed as parameter' do | ||
28 | + article1 = fast_create(TinyMceArticle, :parent_id => @page.id, :profile_id => @profile.id, :name => 'article1') | ||
29 | + article2 = fast_create(TinyMceArticle, :parent_id => @page.id, :profile_id => @profile.id, :name => 'article2') | ||
30 | + xhr :get, :view_content, :id => @block.id, :article_id => @page.id, :page => 2, :profile => @profile.identifier | ||
31 | + assert_response :success | ||
32 | + assert_match /context_content_#{@block.id}/, @response.body | ||
33 | + assert_match /context_content_more_#{@block.id}/, @response.body | ||
34 | + assert_match /article2/, @response.body | ||
35 | + end | ||
36 | + | ||
37 | + should 'do not render pagination buttons if it has only one page' do | ||
38 | + article1 = fast_create(TinyMceArticle, :parent_id => @page.id, :profile_id => @profile.id, :name => 'article1') | ||
39 | + xhr :get, :view_content, :id => @block.id, :article_id => @page.id, :page => 2, :profile => @profile.identifier | ||
40 | + assert_no_match /context_content_more_#{@block.id}/, @response.body | ||
41 | + end | ||
42 | + | ||
43 | +end |
plugins/context_content/test/functional/profile_design_controller_test.rb
0 → 100644
@@ -0,0 +1,54 @@ | @@ -0,0 +1,54 @@ | ||
1 | +require File.dirname(__FILE__) + '/../test_helper' | ||
2 | + | ||
3 | +class ProfileDesignController | ||
4 | + append_view_path File.join(File.dirname(__FILE__) + '/../../views') | ||
5 | + def rescue_action(e) | ||
6 | + raise e | ||
7 | + end | ||
8 | +end | ||
9 | + | ||
10 | +class ProfileDesignControllerTest < ActionController::TestCase | ||
11 | + | ||
12 | + def setup | ||
13 | + Environment.delete_all | ||
14 | + @environment = Environment.create(:name => 'testenv', :is_default => true) | ||
15 | + @environment.enabled_plugins = ['ContextContentPlugin'] | ||
16 | + @environment.save! | ||
17 | + | ||
18 | + @profile = fast_create(Community, :environment_id => @environment.id) | ||
19 | + @page = fast_create(Folder, :profile_id => @profile.id) | ||
20 | + | ||
21 | + box = Box.create!(:owner => @profile) | ||
22 | + @block = ContextContentBlock.new(:box => box) | ||
23 | + @block.types = ['TinyMceArticle'] | ||
24 | + @block.limit = 1 | ||
25 | + @block.save! | ||
26 | + | ||
27 | + user = create_user('testinguser') | ||
28 | + @profile.add_admin(user.person) | ||
29 | + login_as(user.login) | ||
30 | + end | ||
31 | + | ||
32 | + should 'be able to edit context content block' do | ||
33 | + get :edit, :id => @block.id, :profile => @profile.identifier | ||
34 | + assert_tag :tag => 'input', :attributes => { :id => 'block_title' } | ||
35 | + assert_tag :tag => 'input', :attributes => { :id => 'block_show_image' } | ||
36 | + assert_tag :tag => 'input', :attributes => { :id => 'block_show_name' } | ||
37 | + assert_tag :tag => 'input', :attributes => { :id => 'block_show_parent_content' } | ||
38 | + assert_tag :tag => 'input', :attributes => { :id => 'block_types' } | ||
39 | + end | ||
40 | + | ||
41 | + should 'be able to save TrackListBlock' do | ||
42 | + @block.show_image = false | ||
43 | + @block.show_name = false | ||
44 | + @block.show_parent_content = false | ||
45 | + @block.save! | ||
46 | + get :edit, :id => @block.id, :profile => @profile.identifier | ||
47 | + post :save, :id => @block.id, :block => {:title => 'context', :show_image => '0', :show_name => '0', :show_parent_content => '0', :types => ['TinyMceArticle', '', nil, 'Folder'] }, :profile => @profile.identifier | ||
48 | + @block.reload | ||
49 | + assert_equal 'context', @block.title | ||
50 | + assert !@block.show_image && !@block.show_name && !@block.show_parent_content | ||
51 | + assert_equal ['TinyMceArticle', 'Folder'], @block.types | ||
52 | + end | ||
53 | + | ||
54 | +end |
plugins/context_content/views/blocks/_more.rhtml
1 | <% if contents.total_pages > 1 %> | 1 | <% if contents.total_pages > 1 %> |
2 | - <%= link_to_remote(nil, :url => {:id => block.id, :controller => 'context_content_plugin_profile', :action => 'view_content', :page => contents.previous_page, :article_id => article_id }, :html => {:class => "button icon-button icon-left #{contents.previous_page ? '':'disabled'}"}, :condition => "#{!contents.previous_page.nil?}", :success => "jQuery('#context_content_#{block.id}').effect('slide', {direction: 'left'});" )%> | ||
3 | - <%= link_to_remote(nil, :url => {:id => block.id, :controller => 'context_content_plugin_profile', :action => 'view_content', :page => contents.next_page, :article_id => article_id }, :html => {:class => "button icon-button icon-right #{contents.next_page ? '':'disabled'}"}, :condition => "#{!contents.next_page.nil?}", :success => "jQuery('#context_content_#{block.id}').effect('slide', {direction: 'right'});" )%> | 2 | + <%= link_to_remote(nil, :url => {:id => block.id, :controller => 'context_content_plugin_profile', :action => 'view_content', :page => contents.previous_page, :article_id => article_id }, :html => {:class => "button icon-button icon-left #{contents.previous_page ? '':'disabled'}".strip}, :condition => "#{!contents.previous_page.nil?}", :success => "jQuery('#context_content_#{block.id}').effect('slide', {direction: 'left'});" )%> |
3 | + <%= link_to_remote(nil, :url => {:id => block.id, :controller => 'context_content_plugin_profile', :action => 'view_content', :page => contents.next_page, :article_id => article_id }, :html => {:class => "button icon-button icon-right #{contents.next_page ? '':'disabled'}".strip}, :condition => "#{!contents.next_page.nil?}", :success => "jQuery('#context_content_#{block.id}').effect('slide', {direction: 'right'});" )%> | ||
4 | <% end %> | 4 | <% end %> |