This repository has been archived on 2023-03-18. You can view files and clone it, but cannot push or open issues or pull requests.
osr-discourse-src/app/assets/javascripts/discourse/tests
David Taylor 3513835722
DEV: Improve and document __container__ workaround in tests (#15498)
Modern Ember only sets up a container when the ApplicationInstance is booted. We have legacy code which relies on having access to a container before boot (e.g. during pre-initializers).

In production we run with the default `autoboot` flag, which triggers Ember's internal `_globalsMode` flag, which sets up an ApplicationInstance immediately when an Application is initialized (via the `_buildDeprecatedInstance` method).

In tests, we worked around the problem by creating a fresh container, and placing a reference to it under `Discourse.__container__`.

HOWEVER, Ember was still creating a Container instance for each ApplicationInstance to use internally, and make available to EmberObjects via injection. The `Discourse.__container__` instance we created was barely used at all.

Having two different Container instances in play could cause some weird issues. For example, I noticed the problem because the `appEvents` instance held by DiscourseURL was different to the `appEvents` instance held by all the Ember components in our app. This meant that events triggered by DiscourseURL were not picked up by components in test mode.

This commit makes the hack more robust by ensuring that Ember re-uses the Container instance which we created pre-boot. This means we only have one Container instance in play, and makes `appEvents` work reliably across all parts of the app. It also adds detailed comments describing the hack, to help future travelers.

Hopefully in future we can remove this hack entirely, but it will require significant refactoring to our initialization process in Core and Plugins.

The mapping-router and map-routes initializer are updated to avoid the need for `container.lookup` during teardown. This isn't allowed under modern Ember, but was previously working for us because the pre-initializer was using the 'fake' container which was not ember-managed.
2022-01-10 10:34:08 +00:00
..
acceptance FEATURE: use raster image and autofill in 2FA input (#15429) 2022-01-04 15:31:46 +11:00
fixtures FEATURE: Scheduled problem checks for admin dashboard (#15327) 2021-12-20 09:59:11 +10:00
helpers FIX: uses new format for search tag endpoint to prevent issues (#15328) 2021-12-16 11:57:47 +01:00
integration FEATURE: Allow topic pin toggle when header is docked (#15438) 2022-01-03 15:21:06 +03:00
unit DEV: Add count to missing translation strings (#15509) 2022-01-09 23:10:32 +01:00
core_plugins_tests.js FEATURE: Allow theme tests to be run in production (take 2) (#12845) 2021-04-28 23:12:08 +03:00
index.html DEV: Allow plugin tests to run in Ember CLI qunit 2021-06-24 10:13:35 -04:00
plugin_tests.js.erb FIX: Load .js files from plugins in qunit testing env (#11304) 2020-12-03 10:25:42 -06:00
setup-tests.js DEV: Improve and document __container__ workaround in tests (#15498) 2022-01-10 10:34:08 +00:00
test_helper.js DEV: Move pretty-text into vendor and use that (#13273) 2021-06-04 11:01:59 -04:00
test_starter.js DEV: Bump eslint-config-discourse (#14868) 2021-11-10 09:31:41 +10:00
test-helper.js DEV: Skip Ember OnError validation for plugin qunit tests (#15314) 2021-12-15 10:59:38 +00:00
theme_qunit_ember_jquery.js FIX: Theme tests should work in production (#13333) 2021-06-08 22:03:59 +03:00
theme_qunit_helper.js DEV: Arrange theme QUnit dependencies in the right order (#12907) 2021-04-30 13:28:33 +03:00
theme_qunit_tests_vendor.js FIX: Theme tests should work in production (#13333) 2021-06-08 22:03:59 +03:00
theme_qunit_vendor.js DEV: Drop jQuery file uploader and old upload components (#15376) 2021-12-22 08:59:44 +10:00