REFACTOR: Move test setup to a module

REFACTOR: Move test setup to a module

This is long overdue. We had a lot of (not linted) code to initialize our test suite as part of the Ruby test_helper.js bundle.

This refactor moves that out to a setup-tests module, which imports all the modules properly, rather than using require.

It also removes the global server variable which some tests were using for pretender. Those tests are fixed, and in the case of widget tests, support for a pretend() was added, which mimics our acceptance tests.

One problematic test was removed, which overwrites /posts - this could break tons of other tests depending on order.

diff --git a/app/assets/javascripts/discourse/tests/acceptance/composer-actions-test.js b/app/assets/javascripts/discourse/tests/acceptance/composer-actions-test.js
index d5aa28f..191831f 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/composer-actions-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/composer-actions-test.js
@@ -18,6 +18,244 @@ acceptance("Composer Actions", {
   site: {
     can_tag_topics: true,
   },
+  pretend(server) {
+    server.get("/t/130.json", () => {
+      return [
+        200,
+        { "Content-Type": "application/json" },
+        {
+          post_stream: {
+            posts: [
+              {
+                id: 133,
+                name: null,
+                username: "bianca",
+                avatar_template:
+                  "/letter_avatar_proxy/v4/letter/b/3be4f8/{size}.png",
+                created_at: "2020-07-05T09:28:36.371Z",
+                cooked:
+                  "<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas a varius ipsum. Nunc euismod, metus non vulputate malesuada, ligula metus pharetra tortor, vel sodales arcu lacus sed mauris. Nam semper, orci vitae fringilla placerat, dui tellus convallis felis, ultricies laoreet sapien mi et metus. Mauris facilisis, mi fermentum rhoncus feugiat, dolor est vehicula leo, id porta leo ex non enim. In a ligula vel tellus commodo scelerisque non in ex. Pellentesque semper leo quam, nec varius est viverra eget. Donec vehicula sem et massa faucibus tempus.</p>",
+                post_number: 1,
+                post_type: 1,
+                updated_at: "2020-07-05T09:28:36.371Z",
+                reply_count: 0,
+                reply_to_post_number: null,
+                quote_count: 0,
+                incoming_link_count: 0,
+                reads: 1,
+                readers_count: 0,
+                score: 0,
+                yours: true,
+                topic_id: 130,
+                topic_slug: "lorem-ipsum-dolor-sit-amet",
+                display_username: null,
+                primary_group_name: null,
+                primary_group_flair_url: null,
+                primary_group_flair_bg_color: null,
+                primary_group_flair_color: null,
+                version: 1,
+                can_edit: true,
+                can_delete: false,
+                can_recover: false,
+                can_wiki: true,
+                read: true,
+                user_title: "Tester",
+                title_is_group: false,
+                actions_summary: [
+                  {
+                    id: 3,
+                    can_act: true,
+                  },
+                  {
+                    id: 4,
+                    can_act: true,
+                  },
+                  {
+                    id: 8,
+                    can_act: true,
+                  },
+                  {
+                    id: 7,
+                    can_act: true,
+                  },
+                ],
+                moderator: false,
+                admin: true,
+                staff: true,
+                user_id: 1,
+                hidden: false,
+                trust_level: 0,
+                deleted_at: null,
+                user_deleted: false,
+                edit_reason: null,
+                can_view_edit_history: true,
+                wiki: false,
+                reviewable_id: 0,
+                reviewable_score_count: 0,
+                reviewable_score_pending_count: 0,
+              },
+            ],
+            stream: [133],
+          },
+          timeline_lookup: [[1, 0]],
+          related_messages: [],
+          suggested_topics: [],
+          id: 130,
+          title: "Lorem ipsum dolor sit amet",
+          fancy_title: "Lorem ipsum dolor sit amet",
+          posts_count: 1,
+          created_at: "2020-07-05T09:28:36.260Z",
+          views: 1,
+          reply_count: 0,
+          like_count: 0,
+          last_posted_at: "2020-07-05T09:28:36.371Z",
+          visible: true,
+          closed: false,
+          archived: false,
+          has_summary: false,
+          archetype: "private_message",
+          slug: "lorem-ipsum-dolor-sit-amet",
+          category_id: null,
+          word_count: 86,
+          deleted_at: null,
+          user_id: 1,
+          featured_link: null,
+          pinned_globally: false,
+          pinned_at: null,
+          pinned_until: null,
+          image_url: null,
+          draft: null,
+          draft_key: "topic_130",
+          draft_sequence: 0,
+          posted: true,
+          unpinned: null,
+          pinned: false,
+          current_post_number: 1,
+          highest_post_number: 1,
+          last_read_post_number: 1,
+          last_read_post_id: 133,
+          deleted_by: null,
+          has_deleted: false,
+          actions_summary: [
+            {
+              id: 4,
+              count: 0,
+              hidden: false,
+              can_act: true,
+            },
+            {
+              id: 8,
+              count: 0,
+              hidden: false,
+              can_act: true,
+            },
+            {
+              id: 7,
+              count: 0,
+              hidden: false,
+              can_act: true,
+            },
+          ],
+          chunk_size: 20,
+          bookmarked: false,
+          message_archived: false,
+          topic_timer: null,
+          message_bus_last_id: 5,
+          participant_count: 1,
+          pm_with_non_human_user: false,
+          show_read_indicator: false,
+          requested_group_name: null,
+          thumbnails: null,
+          tags_disable_ads: false,
+          details: {
+            notification_level: 3,
+            notifications_reason_id: 1,
+            can_move_posts: true,
+            can_edit: true,
+            can_delete: true,
+            can_remove_allowed_users: true,
+            can_invite_to: true,
+            can_invite_via_email: true,
+            can_create_post: true,
+            can_reply_as_new_topic: true,
+            can_flag_topic: true,
+            can_convert_topic: true,
+            can_review_topic: true,
+            can_remove_self_id: 1,
+            participants: [
+              {
+                id: 1,
+                username: "bianca",
+                name: null,
+                avatar_template:
+                  "/letter_avatar_proxy/v4/letter/b/3be4f8/{size}.png",
+                post_count: 1,
+                primary_group_name: null,
+                primary_group_flair_url: null,
+                primary_group_flair_color: null,
+                primary_group_flair_bg_color: null,
+              },
+            ],
+            allowed_users: [
+              {
+                id: 7,
+                username: "foo",
+                name: null,
+                avatar_template:
+                  "/letter_avatar_proxy/v4/letter/f/b19c9b/{size}.png",
+              },
+            ],
+            created_by: {
+              id: 1,
+              username: "bianca",
+              name: null,
+              avatar_template:
+                "/letter_avatar_proxy/v4/letter/b/3be4f8/{size}.png",
+            },
+            last_poster: {
+              id: 1,
+              username: "bianca",
+              name: null,
+              avatar_template:
+                "/letter_avatar_proxy/v4/letter/b/3be4f8/{size}.png",
+            },
+            allowed_groups: [
+              {
+                id: 43,
+                automatic: false,
+                name: "foo_group",
+                user_count: 4,
+                mentionable_level: 0,
+                messageable_level: 99,
+                visibility_level: 0,
+                automatic_membership_email_domains: "",
+                primary_group: false,
+                title: null,
+                grant_trust_level: null,
+                incoming_email: null,

[... diff too long, it was truncated ...]

GitHub sha: ef7d99b0

This commit appears in #10860 which was approved by pmusaraj. It was merged by eviltrout.