summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/controllers/nodes_controller_test.rb104
-rw-r--r--test/models/node_test.rb26
2 files changed, 130 insertions, 0 deletions
diff --git a/test/controllers/nodes_controller_test.rb b/test/controllers/nodes_controller_test.rb
index b563d4d..05cb195 100644
--- a/test/controllers/nodes_controller_test.rb
+++ b/test/controllers/nodes_controller_test.rb
@@ -471,4 +471,108 @@ class NodesControllerTest < ActionController::TestCase
471 assert_response :success 471 assert_response :success
472 assert_select "form.destructive", :count => 0 472 assert_select "form.destructive", :count => 0
473 end 473 end
474
475 test "drafts includes a never-published node with only a draft" do
476 node = Node.root.children.create!(:slug => "drafts_action_test")
477 login_as :quentin
478 get :drafts
479 assert_includes assigns(:nodes), node
480 end
481
482 test "chapters filters by kind, matching head or draft, and shows both by default" do
483 erfa_node = Node.root.children.create!(:slug => "chapters_erfa_test")
484 erfa_node.find_or_create_draft(@user1)
485 erfa_node.draft.tag_list = "erfa-detail"
486 erfa_node.draft.save!
487 erfa_node.publish_draft!
488
489 chaostreff_node = Node.root.children.create!(:slug => "chapters_chaostreff_test")
490 chaostreff_node.find_or_create_draft(@user1)
491 chaostreff_node.draft.tag_list = "chaostreff-detail"
492 chaostreff_node.draft.save!
493 chaostreff_node.publish_draft!
494
495 login_as :quentin
496
497 get :chapters, params: { :kinds => "erfa" }
498 assert_includes assigns(:nodes), erfa_node
499 assert_not_includes assigns(:nodes), chaostreff_node
500
501 get :chapters
502 assert_includes assigns(:nodes), erfa_node
503 assert_includes assigns(:nodes), chaostreff_node
504 end
505
506 test "recent combined with a search term does not raise an ambiguous column error" do
507 login_as :quentin
508 get :recent, params: { :q => "Zombies" }
509 assert_response :success
510 end
511
512 test "drafts combined with a search term does not raise an ambiguous column error" do
513 login_as :quentin
514 get :drafts, params: { :q => "Zombies" }
515 assert_response :success
516 end
517
518 test "mine combined with a search term does not raise an ambiguous column error" do
519 login_as :quentin
520 get :mine, params: { :q => "Zombies" }
521 assert_response :success
522 end
523
524 test "chapters combined with a search term does not raise an ambiguous column error" do
525 login_as :quentin
526 get :chapters, params: { :q => "Zombies" }
527 assert_response :success
528 end
529
530 test "tags path filters by an arbitrary raw tag, generalizing chapters" do
531 presse_node = Node.root.children.create!(:slug => "tags_path_presse_test")
532 presse_node.find_or_create_draft(@user1)
533 presse_node.draft.tag_list = "pressemitteilung"
534 presse_node.draft.save!
535 presse_node.publish_draft!
536
537 erfa_node = Node.root.children.create!(:slug => "tags_path_erfa_test")
538 erfa_node.find_or_create_draft(@user1)
539 erfa_node.draft.tag_list = "erfa-detail"
540 erfa_node.draft.save!
541 erfa_node.publish_draft!
542
543 login_as :quentin
544 get :tags, params: { :tags => "pressemitteilung" }
545
546 assert_includes assigns(:nodes), presse_node
547 assert_not_includes assigns(:nodes), erfa_node
548
549 assert_select "h1", "Nodes tagged: pressemitteilung"
550 assert_select "h1", :text => "Chapters", :count => 0
551 end
552
553 test "tags path with multiple tags matches any of them, not all" do
554 erfa_node = Node.root.children.create!(:slug => "tags_path_multi_erfa_test")
555 erfa_node.find_or_create_draft(@user1)
556 erfa_node.draft.tag_list = "erfa-detail"
557 erfa_node.draft.save!
558 erfa_node.publish_draft!
559
560 chaostreff_node = Node.root.children.create!(:slug => "tags_path_multi_chaostreff_test")
561 chaostreff_node.find_or_create_draft(@user1)
562 chaostreff_node.draft.tag_list = "chaostreff-detail"
563 chaostreff_node.draft.save!
564 chaostreff_node.publish_draft!
565
566 login_as :quentin
567 get :tags, params: {:tags => "erfa-detail,chaostreff-detail" }
568
569 assert_includes assigns(:nodes), erfa_node
570 assert_includes assigns(:nodes), chaostreff_node
571 end
572
573 test "chapters renders the curated heading" do
574 login_as :quentin
575 get :chapters
576 assert_select "h1", "Chapters"
577 end
474end 578end
diff --git a/test/models/node_test.rb b/test/models/node_test.rb
index 5626384..15e908b 100644
--- a/test/models/node_test.rb
+++ b/test/models/node_test.rb
@@ -511,4 +511,30 @@ class NodeTest < ActiveSupport::TestCase
511 a.reload 511 a.reload
512 assert_equal Node.root.id, a.parent_id 512 assert_equal Node.root.id, a.parent_id
513 end 513 end
514
515 test "editor_search matches a partial substring, not just a whole word" do
516 node = Node.root.children.create!(:slug => "editor_search_substring_test")
517 node.find_or_create_draft(@user1)
518 node.draft.update(:title => "Biometrics Conference")
519 node.publish_draft!
520
521 assert_includes Node.editor_search("bio"), node
522 assert_includes Node.editor_search("Conf"), node
523 end
524
525 test "editor_search returns an empty relation for a blank term, not every node" do
526 assert_equal 0, Node.editor_search("").count
527 assert_equal 0, Node.editor_search(nil).count
528 assert_equal 0, Node.editor_search(" ").count
529 end
530
531 test "editor_search requires every word to match, but each word can match a different field" do
532 node = Node.root.children.create!(:slug => "editor_search_multiword_test")
533 node.find_or_create_draft(@user1)
534 node.draft.update(:title => "Backspace e.V. Bamberg", :abstract => "Spiegelgraben 41, 96052 Bamberg")
535 node.publish_draft!
536
537 assert_includes Node.editor_search("Backspace Spiegelgraben"), node
538 assert_equal 0, Node.editor_search("Backspace Nonexistentstreet").count
539 end
514end 540end