From f647174c956b71a3f1e3f4218e82cb320e24a0e1 Mon Sep 17 00:00:00 2001 From: Robin Ward Date: Wed, 15 Jul 2015 11:16:49 -0400 Subject: [PATCH] Add acceptance test for full page search --- spec/serializers/post_serializer_spec.rb | 3 +- .../acceptance/search-full-test.js.es6 | 11 + .../fixtures/search-fixtures.js.es6 | 772 ++++++++++++++++++ .../javascripts/fixtures/site_fixtures.js.es6 | 3 +- 4 files changed, 787 insertions(+), 2 deletions(-) create mode 100644 test/javascripts/acceptance/search-full-test.js.es6 diff --git a/spec/serializers/post_serializer_spec.rb b/spec/serializers/post_serializer_spec.rb index 20643968f8a..94e74f196fa 100644 --- a/spec/serializers/post_serializer_spec.rb +++ b/spec/serializers/post_serializer_spec.rb @@ -40,7 +40,8 @@ describe PostSerializer do serializer = PostSerializer.new(post, scope: Guardian.new(post.user), root: false) notify_user_action = serializer.actions_summary.find { |a| a[:id] == PostActionType.types[:notify_user] } expect(notify_user_action).to be_blank - end + et:q! + n end context "a post by a nuked user" do diff --git a/test/javascripts/acceptance/search-full-test.js.es6 b/test/javascripts/acceptance/search-full-test.js.es6 new file mode 100644 index 00000000000..03fbf893a2f --- /dev/null +++ b/test/javascripts/acceptance/search-full-test.js.es6 @@ -0,0 +1,11 @@ +import { acceptance } from "helpers/qunit-helpers"; +acceptance("Search - Full Page"); + +test("search", (assert) => { + visit("/search?q=trout"); + + andThen(() => { + assert.ok(find('input.search').length > 0); + assert.ok(find('.topic-list-item').length > 0); + }); +}); diff --git a/test/javascripts/fixtures/search-fixtures.js.es6 b/test/javascripts/fixtures/search-fixtures.js.es6 index b9f30c9fded..344b655ec5c 100644 --- a/test/javascripts/fixtures/search-fixtures.js.es6 +++ b/test/javascripts/fixtures/search-fixtures.js.es6 @@ -1,4 +1,776 @@ export default { + "/search.json": { + "users":[ + { + "id":19, + "username":"eviltrout", + "uploaded_avatar_id":5275, + "avatar_template":"/user_avatar/meta.discourse.org/eviltrout/{size}/5275_1.png" + }, + { + "id":8617, + "username":"Mittineague", + "uploaded_avatar_id":40997, + "avatar_template":"/user_avatar/meta.discourse.org/mittineague/{size}/40997_1.png" + }, + { + "id":12662, + "username":"singmajesty", + "uploaded_avatar_id":36342, + "avatar_template":"/user_avatar/meta.discourse.org/singmajesty/{size}/36342_1.png" + }, + { + "id":6626, + "username":"riking", + "uploaded_avatar_id":40212, + "avatar_template":"/user_avatar/meta.discourse.org/riking/{size}/40212_1.png" + }, + { + "id":8300, + "username":"cpradio", + "uploaded_avatar_id":4970, + "avatar_template":"/user_avatar/meta.discourse.org/cpradio/{size}/4970_1.png" + }, + { + "id":2602, + "username":"georgekaplan59", + "uploaded_avatar_id":31197, + "avatar_template":"/user_avatar/meta.discourse.org/georgekaplan59/{size}/31197_1.png" + }, + { + "id":754, + "username":"danneu", + "uploaded_avatar_id":6540, + "avatar_template":"/user_avatar/meta.discourse.org/danneu/{size}/6540_1.png" + }, + { + "id":1995, + "username":"zogstrip", + "uploaded_avatar_id":8630, + "avatar_template":"/user_avatar/meta.discourse.org/zogstrip/{size}/8630_1.png" + }, + { + "id":1, + "username":"sam", + "uploaded_avatar_id":5243, + "avatar_template":"/user_avatar/meta.discourse.org/sam/{size}/5243_1.png" + }, + { + "id":8810, + "username":"fantasticfears", + "uploaded_avatar_id":36351, + "avatar_template":"/user_avatar/meta.discourse.org/fantasticfears/{size}/36351_1.png" + }, + { + "id":14446, + "username":"ladydanger", + "uploaded_avatar_id":null, + "avatar_template":"/letter_avatar/ladydanger/{size}/5_fcf819f9b3791cb8c87edf29c8984f83.png" + }, + { + "id":14474, + "username":"dnatoli_redbubble", + "uploaded_avatar_id":null, + "avatar_template":"/letter_avatar/dnatoli_redbubble/{size}/5_fcf819f9b3791cb8c87edf29c8984f83.png" + }, + { + "id":14514, + "username":"adelsmee", + "uploaded_avatar_id":40445, + "avatar_template":"/user_avatar/meta.discourse.org/adelsmee/{size}/40445_1.png" + }, + { + "id":32, + "username":"codinghorror", + "uploaded_avatar_id":5297, + "avatar_template":"/user_avatar/meta.discourse.org/codinghorror/{size}/5297_1.png" + }, + { + "id":14448, + "username":"snjqi188", + "uploaded_avatar_id":null, + "avatar_template":"/letter_avatar/snjqi188/{size}/5_fcf819f9b3791cb8c87edf29c8984f83.png" + }, + { + "id":14657, + "username":"Alex_Flom", + "uploaded_avatar_id":41037, + "avatar_template":"/user_avatar/meta.discourse.org/alex_flom/{size}/41037_1.png" + }, + { + "id":14353, + "username":"Simon_Cossar", + "uploaded_avatar_id":40130, + "avatar_template":"/user_avatar/meta.discourse.org/simon_cossar/{size}/40130_1.png" + }, + { + "id":14184, + "username":"takaminacchan", + "uploaded_avatar_id":39685, + "avatar_template":"/user_avatar/meta.discourse.org/takaminacchan/{size}/39685_1.png" + }, + { + "id":9931, + "username":"Frank", + "uploaded_avatar_id":null, + "avatar_template":"/letter_avatar/frank/{size}/5_fcf819f9b3791cb8c87edf29c8984f83.png" + }, + { + "id":8364, + "username":"codetricity", + "uploaded_avatar_id":3773, + "avatar_template":"/user_avatar/meta.discourse.org/codetricity/{size}/3773_1.png" + }, + { + "id":4949, + "username":"brodock", + "uploaded_avatar_id":13541, + "avatar_template":"/user_avatar/meta.discourse.org/brodock/{size}/13541_1.png" + }, + { + "id":14, + "username":"clay", + "uploaded_avatar_id":5265, + "avatar_template":"/user_avatar/meta.discourse.org/clay/{size}/5265_1.png" + }, + { + "id":8385, + "username":"zchrykng", + "uploaded_avatar_id":18517, + "avatar_template":"/user_avatar/meta.discourse.org/zchrykng/{size}/18517_1.png" + }, + { + "id":3520, + "username":"arlyxiao", + "uploaded_avatar_id":11206, + "avatar_template":"/user_avatar/meta.discourse.org/arlyxiao/{size}/11206_1.png" + }, + { + "id":3493, + "username":"richp10", + "uploaded_avatar_id":11160, + "avatar_template":"/user_avatar/meta.discourse.org/richp10/{size}/11160_1.png" + }, + { + "id":2395, + "username":"lookingsideways", + "uploaded_avatar_id":9290, + "avatar_template":"/user_avatar/meta.discourse.org/lookingsideways/{size}/9290_1.png" + }, + { + "id":2477, + "username":"billybonks", + "uploaded_avatar_id":9430, + "avatar_template":"/user_avatar/meta.discourse.org/billybonks/{size}/9430_1.png" + }, + { + "id":7301, + "username":"jasonwhat", + "uploaded_avatar_id":null, + "avatar_template":"/letter_avatar/jasonwhat/{size}/5_fcf819f9b3791cb8c87edf29c8984f83.png" + }, + { + "id":1819, + "username":"stephan", + "uploaded_avatar_id":8327, + "avatar_template":"/user_avatar/meta.discourse.org/stephan/{size}/8327_1.png" + }, + { + "id":2, + "username":"neil", + "uploaded_avatar_id":5245, + "avatar_template":"/user_avatar/meta.discourse.org/neil/{size}/5245_1.png" + }, + { + "id":2471, + "username":"robconery", + "uploaded_avatar_id":9418, + "avatar_template":"/user_avatar/meta.discourse.org/robconery/{size}/9418_1.png" + } + ], + "topic_list":{ + "can_create_topic":false, + "draft":null, + "draft_key":"new_topic", + "draft_sequence":null, + "per_page":30, + "topics":[ + { + "id":9318, + "title":"Discourse has a new Markdown Parser!", + "fancy_title":"Discourse has a new Markdown Parser!", + "slug":"discourse-has-a-new-markdown-parser", + "posts_count":1, + "reply_count":0, + "highest_post_number":1, + "image_url":null, + "created_at":"2013-08-24T18:08:06.063Z", + "last_posted_at":"2013-08-24T18:08:06.259Z", + "bumped":true, + "bumped_at":"2015-03-09T04:54:43.977Z", + "unseen":false, + "linked_post_number":1, + "pinned":false, + "unpinned":null, + "excerpt":"...0 lines of Javascript code! An inline example Let's say you want to replace all occurances of \"evil trout\" with a link that says \"EVIL TROUT IS AWESOME\": Discourse.Dialect.on(\"register\", function(event) {...", + "visible":true, + "closed":false, + "archived":false, + "bookmarked":null, + "liked":null, + "views":2645, + "like_count":21, + "has_summary":false, + "archetype":"regular", + "last_poster_username":"eviltrout", + "category_id":7, + "pinned_globally":false, + "posters":[ + { + "extras":"latest single", + "description":"Original Poster, Most Recent Poster", + "user_id":19 + } + ] + }, + { + "id":21792, + "title":"Adding custom emoji/emoticons via a plugin", + "fancy_title":"Adding custom emoji/emoticons via a plugin", + "slug":"adding-custom-emoji-emoticons-via-a-plugin", + "posts_count":34, + "reply_count":24, + "highest_post_number":35, + "image_url":null, + "created_at":"2014-11-03T21:48:48.283Z", + "last_posted_at":"2014-12-23T12:45:11.245Z", + "bumped":true, + "bumped_at":"2014-12-23T12:45:11.245Z", + "unseen":false, + "linked_post_number":1, + "pinned":false, + "unpinned":null, + "excerpt":"...plugin that executes the following method to register a new emoji: Discourse.Dialect.registerEmoji('trout', 'http://cdn.eviltrout.com/images/trout-square.jpg'); Here's a sample plugin that adds a :trout: e...", + "visible":true, + "closed":false, + "archived":false, + "bookmarked":null, + "liked":null, + "views":1260, + "like_count":25, + "has_summary":false, + "archetype":"regular", + "last_poster_username":"cpradio", + "category_id":22, + "pinned_globally":false, + "posters":[ + { + "extras":null, + "description":"Original Poster", + "user_id":19 + }, + { + "extras":null, + "description":"Frequent Poster", + "user_id":8617 + }, + { + "extras":null, + "description":"Frequent Poster", + "user_id":12662 + }, + { + "extras":null, + "description":"Frequent Poster", + "user_id":6626 + }, + { + "extras":"latest", + "description":"Most Recent Poster", + "user_id":8300 + } + ] + }, + { + "id":3071, + "title":"Would it be possible to make Slug localizable?", + "fancy_title":"Would it be possible to make Slug localizable?", + "slug":"would-it-be-possible-to-make-slug-localizable", + "posts_count":12, + "reply_count":7, + "highest_post_number":12, + "image_url":null, + "created_at":"2013-02-14T11:48:21.474Z", + "last_posted_at":"2014-09-18T14:38:59.064Z", + "bumped":true, + "bumped_at":"2014-09-18T14:38:59.064Z", + "unseen":false, + "linked_post_number":10, + "pinned":false, + "unpinned":null, + "excerpt":"...in `block (2 levels) in < top (required) > ' 3) Slug replaces symbols Failure/Error: Slug.for('evil#trout').should == 'evil-trout' expected: \"evil-trout\" got: \"evil-number-trout\" (using ==) # ./spec/compon...", + "visible":true, + "closed":false, + "archived":false, + "bookmarked":null, + "liked":null, + "views":766, + "like_count":5, + "has_summary":false, + "archetype":"regular", + "last_poster_username":"fantasticfears", + "category_id":17, + "pinned_globally":false, + "posters":[ + { + "extras":null, + "description":"Original Poster", + "user_id":2602 + }, + { + "extras":null, + "description":"Frequent Poster", + "user_id":754 + }, + { + "extras":null, + "description":"Frequent Poster", + "user_id":1995 + }, + { + "extras":null, + "description":"Frequent Poster", + "user_id":1 + }, + { + "extras":"latest", + "description":"Most Recent Poster", + "user_id":8810 + } + ] + }, + { + "id":26875, + "title":"Rails Girls SoC Banter", + "fancy_title":"Rails Girls SoC Banter", + "slug":"rails-girls-soc-banter", + "posts_count":48, + "reply_count":30, + "highest_post_number":48, + "image_url":null, + "created_at":"2015-03-27T11:26:09.903Z", + "last_posted_at":"2015-07-13T23:11:31.481Z", + "bumped":true, + "bumped_at":"2015-07-13T23:11:31.481Z", + "unseen":false, + "linked_post_number":42, + "pinned":false, + "unpinned":null, + "excerpt":"...e inserted by plugins. ## Usage If you handlebars template has: ```handlebars {{plugin-outlet \"evil-trout\"}} ``` Then any handlebars files you create in the `connectors/evil-trout` directory will automatic...", + "visible":true, + "closed":false, + "archived":false, + "bookmarked":null, + "liked":null, + "views":1224, + "like_count":81, + "has_summary":false, + "archetype":"regular", + "last_poster_username":"snjqi188", + "category_id":7, + "pinned_globally":false, + "posters":[ + { + "extras":null, + "description":"Original Poster", + "user_id":14446 + }, + { + "extras":null, + "description":"Frequent Poster", + "user_id":14474 + }, + { + "extras":null, + "description":"Frequent Poster", + "user_id":14514 + }, + { + "extras":null, + "description":"Frequent Poster", + "user_id":32 + }, + { + "extras":"latest", + "description":"Most Recent Poster", + "user_id":14448 + } + ] + }, + { + "id":31001, + "title":"Beginner's Guide to Creating Discourse Plugins Part 2: Plugin Outlets", + "fancy_title":"Beginner’s Guide to Creating Discourse Plugins Part 2: Plugin Outlets", + "slug":"beginners-guide-to-creating-discourse-plugins-part-2-plugin-outlets", + "posts_count":1, + "reply_count":0, + "highest_post_number":1, + "image_url":null, + "created_at":"2015-07-12T17:48:27.322Z", + "last_posted_at":"2015-07-12T17:48:27.403Z", + "bumped":true, + "bumped_at":"2015-07-13T04:18:14.901Z", + "unseen":false, + "linked_post_number":1, + "pinned":false, + "unpinned":null, + "excerpt":"...nectors/ < outlet name > in it. For example, if your handlebars template has: {{plugin-outlet \"evil-trout\"}} Then any handlebars files you create in the connectors/evil-trout directory will automatically b...", + "visible":true, + "closed":false, + "archived":false, + "bookmarked":null, + "liked":null, + "views":220, + "like_count":16, + "has_summary":false, + "archetype":"regular", + "last_poster_username":"eviltrout", + "category_id":10, + "pinned_globally":false, + "posters":[ + { + "extras":"latest single", + "description":"Original Poster, Most Recent Poster", + "user_id":19 + } + ] + }, + { + "id":29176, + "title":"How can I add some custom html to the bottom of the categories page?", + "fancy_title":"How can I add some custom html to the bottom of the categories page?", + "slug":"how-can-i-add-some-custom-html-to-the-bottom-of-the-categories-page", + "posts_count":12, + "reply_count":10, + "highest_post_number":13, + "image_url":null, + "created_at":"2015-05-23T19:08:35.447Z", + "last_posted_at":"2015-05-25T08:16:25.989Z", + "bumped":true, + "bumped_at":"2015-05-25T08:16:25.989Z", + "unseen":false, + "linked_post_number":12, + "pinned":false, + "unpinned":null, + "excerpt":"...e inserted by plugins. ## Usage If you handlebars template has: ```handlebars {{plugin-outlet \"evil-trout\"}} ``` Then any handlebars files you create in the `connectors/evil-trout` directory will automatic...", + "visible":true, + "closed":false, + "archived":false, + "bookmarked":null, + "liked":null, + "views":190, + "like_count":8, + "has_summary":false, + "archetype":"regular", + "last_poster_username":"sam", + "category_id":6, + "pinned_globally":false, + "posters":[ + { + "extras":null, + "description":"Original Poster", + "user_id":14657 + }, + { + "extras":null, + "description":"Frequent Poster", + "user_id":6626 + }, + { + "extras":null, + "description":"Frequent Poster", + "user_id":8617 + }, + { + "extras":null, + "description":"Frequent Poster", + "user_id":14353 + }, + { + "extras":"latest", + "description":"Most Recent Poster", + "user_id":1 + } + ] + }, + { + "id":26192, + "title":"403 when embedding a Digital Ocean droplet", + "fancy_title":"403 when embedding a Digital Ocean droplet", + "slug":"403-when-embedding-a-digital-ocean-droplet", + "posts_count":7, + "reply_count":3, + "highest_post_number":7, + "image_url":null, + "created_at":"2015-03-10T21:22:19.206Z", + "last_posted_at":"2015-03-11T22:31:04.520Z", + "bumped":true, + "bumped_at":"2015-03-11T22:31:04.520Z", + "unseen":false, + "linked_post_number":4, + "pinned":false, + "unpinned":null, + "excerpt":"Yes I am Robin as well as Evil Trout smile :smile: If you followed those instructions and are getting access errors, you might want to d...", + "visible":true, + "closed":false, + "archived":false, + "bookmarked":null, + "liked":null, + "views":232, + "like_count":2, + "has_summary":false, + "archetype":"regular", + "last_poster_username":"codinghorror", + "category_id":6, + "pinned_globally":false, + "posters":[ + { + "extras":null, + "description":"Original Poster", + "user_id":14184 + }, + { + "extras":null, + "description":"Frequent Poster", + "user_id":19 + }, + { + "extras":"latest", + "description":"Most Recent Poster", + "user_id":32 + } + ] + }, + { + "id":20883, + "title":"S3 competitor integration", + "fancy_title":"S3 competitor integration", + "slug":"s3-competitor-integration", + "posts_count":3, + "reply_count":1, + "highest_post_number":3, + "image_url":"https://discourse-cdn.global.ssl.fastly.net/meta/images/emoji/twitter/smile.png?v=0", + "created_at":"2014-10-07T13:37:19.628Z", + "last_posted_at":"2014-10-07T18:46:22.493Z", + "bumped":true, + "bumped_at":"2014-10-07T18:46:22.493Z", + "unseen":false, + "linked_post_number":3, + "pinned":false, + "unpinned":null, + "excerpt":"I have seem some of your testing 'stuff' (evil trout's actually). And it looks like a HUUUUUUUUGGGE time sink (ice pick to the eyeballs). but...I believ...", + "visible":true, + "closed":false, + "archived":false, + "bookmarked":null, + "liked":null, + "views":141, + "like_count":2, + "has_summary":false, + "archetype":"regular", + "last_poster_username":"Frank", + "category_id":2, + "pinned_globally":false, + "posters":[ + { + "extras":"latest", + "description":"Original Poster, Most Recent Poster", + "user_id":9931 + }, + { + "extras":null, + "description":"Frequent Poster", + "user_id":1995 + } + ] + }, + { + "id":13534, + "title":"Blogging Platforms, Ghost, and Discourse", + "fancy_title":"Blogging Platforms, Ghost, and Discourse", + "slug":"blogging-platforms-ghost-and-discourse", + "posts_count":18, + "reply_count":13, + "highest_post_number":18, + "image_url":null, + "created_at":"2014-03-08T15:46:35.174Z", + "last_posted_at":"2014-03-26T18:25:45.895Z", + "bumped":true, + "bumped_at":"2014-03-26T18:25:45.895Z", + "unseen":false, + "linked_post_number":1, + "pinned":false, + "unpinned":null, + "excerpt":"...urse, do you mean that the blog comments for Ghost will be driven by Discourse, similar to the Evil Trout blog ? What about using Discourse as the blog platform itself, not as the comment engine at the end...", + "visible":true, + "closed":false, + "archived":false, + "bookmarked":null, + "liked":null, + "views":2182, + "like_count":17, + "has_summary":false, + "archetype":"regular", + "last_poster_username":"codetricity", + "category_id":17, + "pinned_globally":false, + "posters":[ + { + "extras":"latest", + "description":"Original Poster, Most Recent Poster", + "user_id":8364 + }, + { + "extras":null, + "description":"Frequent Poster", + "user_id":4949 + }, + { + "extras":null, + "description":"Frequent Poster", + "user_id":14 + }, + { + "extras":null, + "description":"Frequent Poster", + "user_id":32 + }, + { + "extras":null, + "description":"Frequent Poster", + "user_id":8385 + } + ] + }, + { + "id":4859, + "title":"All of the site functions based on ajax?", + "fancy_title":"All of the site functions based on ajax?", + "slug":"all-of-the-site-functions-based-on-ajax", + "posts_count":28, + "reply_count":20, + "highest_post_number":28, + "image_url":null, + "created_at":"2013-03-18T08:59:46.135Z", + "last_posted_at":"2013-10-18T20:22:30.677Z", + "bumped":true, + "bumped_at":"2013-10-18T20:22:30.677Z", + "unseen":false, + "linked_post_number":21, + "pinned":false, + "unpinned":null, + "excerpt":"please see evil trouts blog post http://eviltrout.com/2013/02/27/adding-to-discourse-part-1.html", + "visible":true, + "closed":false, + "archived":false, + "bookmarked":null, + "liked":null, + "views":1629, + "like_count":17, + "has_summary":false, + "archetype":"regular", + "last_poster_username":"jasonwhat", + "category_id":17, + "pinned_globally":false, + "posters":[ + { + "extras":null, + "description":"Original Poster", + "user_id":3520 + }, + { + "extras":null, + "description":"Frequent Poster", + "user_id":3493 + }, + { + "extras":null, + "description":"Frequent Poster", + "user_id":2395 + }, + { + "extras":null, + "description":"Frequent Poster", + "user_id":2477 + }, + { + "extras":"latest", + "description":"Most Recent Poster", + "user_id":7301 + } + ] + }, + { + "id":7220, + "title":"Javascript dependencies", + "fancy_title":"Javascript dependencies", + "slug":"javascript-dependencies", + "posts_count":8, + "reply_count":5, + "highest_post_number":8, + "image_url":null, + "created_at":"2013-06-06T11:11:18.522Z", + "last_posted_at":"2013-06-07T18:43:51.449Z", + "bumped":true, + "bumped_at":"2013-06-07T18:43:51.449Z", + "unseen":false, + "linked_post_number":3, + "pinned":false, + "unpinned":null, + "excerpt":"...ould be in vendor directory of one of the gems Ahh I need to look at Gemfile Ahh I need to use Evil Trouts bundle open handlebars trick. I am completely against this new best practice, its inconsistent wit...", + "visible":true, + "closed":false, + "archived":false, + "bookmarked":null, + "liked":null, + "views":1010, + "like_count":0, + "has_summary":false, + "archetype":"regular", + "last_poster_username":"eviltrout", + "category_id":7, + "pinned_globally":false, + "posters":[ + { + "extras":null, + "description":"Original Poster", + "user_id":1819 + }, + { + "extras":null, + "description":"Frequent Poster", + "user_id":2 + }, + { + "extras":null, + "description":"Frequent Poster", + "user_id":1 + }, + { + "extras":null, + "description":"Frequent Poster", + "user_id":2471 + }, + { + "extras":"latest", + "description":"Most Recent Poster", + "user_id":19 + } + ] + } + ] + } + }, "search/query": {   "posts": [     { diff --git a/test/javascripts/fixtures/site_fixtures.js.es6 b/test/javascripts/fixtures/site_fixtures.js.es6 index 19465bf50eb..5eedd50856f 100644 --- a/test/javascripts/fixtures/site_fixtures.js.es6 +++ b/test/javascripts/fixtures/site_fixtures.js.es6 @@ -44,7 +44,8 @@ export default { "new", "starred", "read", - "posted" + "posted", + "search" ], "periods":[ "yearly",