diff options
Diffstat (limited to 'test/controllers/content_controller_test.rb')
| -rw-r--r-- | test/controllers/content_controller_test.rb | 130 |
1 files changed, 130 insertions, 0 deletions
diff --git a/test/controllers/content_controller_test.rb b/test/controllers/content_controller_test.rb new file mode 100644 index 0000000..bd5fd7d --- /dev/null +++ b/test/controllers/content_controller_test.rb | |||
| @@ -0,0 +1,130 @@ | |||
| 1 | require 'test_helper' | ||
| 2 | |||
| 3 | class ContentControllerTest < ActionController::TestCase | ||
| 4 | |||
| 5 | def setup | ||
| 6 | @root = Node.find(1) | ||
| 7 | @first_child = Node.find(2) | ||
| 8 | @second_child = Node.find(3) | ||
| 9 | |||
| 10 | @user1 = User.create :login => 'demo', :email => "f@b.com", :password => 'foobar', :password_confirmation => 'foobar' | ||
| 11 | @user2 = User.create :login => 'show', :email => "f@b.com", :password => 'foobar', :password_confirmation => 'foobar' | ||
| 12 | end | ||
| 13 | |||
| 14 | def test_custom_page_route | ||
| 15 | assert_recognizes({ :controller => 'content', :action => 'render_page', :locale => 'de', :page_path => 'foo/bar' }, '/de/foo/bar') | ||
| 16 | assert_recognizes({ :controller => 'content', :action => 'render_page', :locale => 'en', :page_path => 'home' }, '/en/home') | ||
| 17 | end | ||
| 18 | |||
| 19 | def test_render_404_when_no_page_was_found | ||
| 20 | get :render_page, params: { :language => 'de', :page_path => ["wrong_path"] } | ||
| 21 | assert_response 404 | ||
| 22 | end | ||
| 23 | |||
| 24 | def test_rendering_a_page | ||
| 25 | assert Node.valid? | ||
| 26 | assert_not_nil first_child = Node.find_by_slug("first_child") | ||
| 27 | page = first_child.pages.create :title => "First Child" | ||
| 28 | first_child.head = page | ||
| 29 | first_child.save! | ||
| 30 | |||
| 31 | get :render_page, params: { :language => 'de', :page_path => ["first_child"] } | ||
| 32 | assert_response :success | ||
| 33 | assert_equal "layouts/application", @controller.active_layout.name rescue assert true | ||
| 34 | end | ||
| 35 | |||
| 36 | def test_page_containing_aggregator | ||
| 37 | assert_not_nil Node.root | ||
| 38 | |||
| 39 | fill_pages_with_content | ||
| 40 | |||
| 41 | new_node = create_node_under_root "fnord" | ||
| 42 | draft = new_node.find_or_create_draft @user1 | ||
| 43 | draft.body = '<aggregate tags="update" limit="20" />' | ||
| 44 | draft.save | ||
| 45 | new_node.publish_draft! | ||
| 46 | |||
| 47 | get :render_page, params: { :locale => 'de', :page_path => ["fnord"] } | ||
| 48 | assert_response :success | ||
| 49 | |||
| 50 | # The aggregator renders into div.body > div.article_partial. | ||
| 51 | # Without a working aggregator this will be empty. | ||
| 52 | assert_select "div.body div.article_partial", :minimum => 2 | ||
| 53 | assert_select "div.body div.article_partial h2.headline a", :text => "one" | ||
| 54 | assert_select "div.body div.article_partial h2.headline a", :text => "two" | ||
| 55 | end | ||
| 56 | |||
| 57 | def test_page_containing_aggregator_with_custom_template | ||
| 58 | fill_pages_with_content | ||
| 59 | |||
| 60 | new_node = create_node_under_root "fnord" | ||
| 61 | draft = new_node.find_or_create_draft @user1 | ||
| 62 | draft.body = '<aggregate tags="update" limit="20" partial="sidebar_title_only" />' | ||
| 63 | draft.save | ||
| 64 | new_node.publish_draft! | ||
| 65 | |||
| 66 | get :render_page, params: { :locale => 'de', :page_path => ["fnord"] } | ||
| 67 | assert_response :success | ||
| 68 | |||
| 69 | assert_select(".sidebar_headline", "one") | ||
| 70 | assert_select(".sidebar_headline", "two") | ||
| 71 | end | ||
| 72 | |||
| 73 | def test_nonexistant_custom_template_defaults_to_standard_template | ||
| 74 | new_node = create_node_under_root "fnord" | ||
| 75 | draft = new_node.find_or_create_draft @user1 | ||
| 76 | draft.template_name = "huchibu" | ||
| 77 | draft.save | ||
| 78 | new_node.publish_draft! | ||
| 79 | |||
| 80 | get :render_page, params: { :locale => 'de', :page_path => ["fnord"] } | ||
| 81 | assert_response :success | ||
| 82 | assert_template "custom/page_templates/public/standard_template" | ||
| 83 | end | ||
| 84 | |||
| 85 | def test_custom_template_no_date_and_author | ||
| 86 | new_node = create_node_under_root "fnord" | ||
| 87 | draft = new_node.find_or_create_draft @user1 | ||
| 88 | draft.template_name = "no_date_and_author" | ||
| 89 | draft.save | ||
| 90 | new_node.publish_draft! | ||
| 91 | |||
| 92 | get :render_page, params: { :locale => 'de', :page_path => ["fnord"] } | ||
| 93 | assert_response :success | ||
| 94 | assert_template "custom/page_templates/public/no_date_and_author" | ||
| 95 | end | ||
| 96 | |||
| 97 | def test_aggregator_without_fill | ||
| 98 | new_node = create_node_under_root "fnord" | ||
| 99 | draft = new_node.find_or_create_draft @user1 | ||
| 100 | draft.body = '<aggregate tags="xyzzy_unique_test_tag" limit="20" />' | ||
| 101 | draft.save | ||
| 102 | new_node.publish_draft! | ||
| 103 | |||
| 104 | get :render_page, params: { :locale => 'de', :page_path => ["fnord"] } | ||
| 105 | assert_response :success | ||
| 106 | File.write("/tmp/no_fill_response.html", @response.body) | ||
| 107 | end | ||
| 108 | |||
| 109 | protected | ||
| 110 | |||
| 111 | def create_node_under_root slug | ||
| 112 | node = Node.root.children.create! :slug => slug | ||
| 113 | node | ||
| 114 | end | ||
| 115 | |||
| 116 | def fill_pages_with_content | ||
| 117 | d1 = @first_child.find_or_create_draft @user1 | ||
| 118 | d1.title = "one" | ||
| 119 | d1.tag_list = "update" | ||
| 120 | d1.save | ||
| 121 | @first_child.publish_draft! | ||
| 122 | |||
| 123 | d2 = @second_child.find_or_create_draft @user1 | ||
| 124 | d2.title = "two" | ||
| 125 | d2.tag_list = "update" | ||
| 126 | d2.save | ||
| 127 | @second_child.publish_draft! | ||
| 128 | end | ||
| 129 | |||
| 130 | end | ||
