Files larger than 1 MB are truncated. Click
here to display the full file (may cause the browser to become unresponsive) or use the
Open button to view outside of Swarm.
{"version":3,"sources":["license.js","loader.js","alias.lint-test.js","binding.lint-test.js","cache.lint-test.js","chains.lint-test.js","computed.lint-test.js","container.lint-test.js","container/lib/container.lint-test.js","container/lib/index.lint-test.js","container/lib/registry.lint-test.js","container/tests/container_test.js","container/tests/container_test.lint-test.js","container/tests/owner_test.js","container/tests/owner_test.lint-test.js","container/tests/registry_test.js","container/tests/registry_test.lint-test.js","core.lint-test.js","dependent_keys.lint-test.js","deprecate_property.lint-test.js","descriptor.lint-test.js","ember-application/lib/index.lint-test.js","ember-application/lib/initializers/dom-templates.lint-test.js","ember-application/lib/system/application-instance.lint-test.js","ember-application/lib/system/application.lint-test.js","ember-application/lib/system/engine-instance.lint-test.js","ember-application/lib/system/engine-parent.lint-test.js","ember-application/lib/system/engine.lint-test.js","ember-application/lib/system/resolver.lint-test.js","ember-application/lib/utils/validate-type.lint-test.js","ember-application/tests/system/application_instance_test.js","ember-application/tests/system/application_instance_test.lint-test.js","ember-application/tests/system/application_test.js","ember-application/tests/system/application_test.lint-test.js","ember-application/tests/system/bootstrap-test.js","ember-application/tests/system/bootstrap-test.lint-test.js","ember-application/tests/system/dependency_injection/custom_resolver_test.js","ember-application/tests/system/dependency_injection/custom_resolver_test.lint-test.js","ember-application/tests/system/dependency_injection/default_resolver_test.js","ember-application/tests/system/dependency_injection/default_resolver_test.lint-test.js","ember-application/tests/system/dependency_injection/normalization_test.js","ember-application/tests/system/dependency_injection/normalization_test.lint-test.js","ember-application/tests/system/dependency_injection/to_string_test.js","ember-application/tests/system/dependency_injection/to_string_test.lint-test.js","ember-application/tests/system/dependency_injection_test.js","ember-application/tests/system/dependency_injection_test.lint-test.js","ember-application/tests/system/engine_initializers_test.js","ember-application/tests/system/engine_initializers_test.lint-test.js","ember-application/tests/system/engine_instance_initializers_test.js","ember-application/tests/system/engine_instance_initializers_test.lint-test.js","ember-application/tests/system/engine_instance_test.js","ember-application/tests/system/engine_instance_test.lint-test.js","ember-application/tests/system/engine_parent_test.js","ember-application/tests/system/engine_parent_test.lint-test.js","ember-application/tests/system/engine_test.js","ember-application/tests/system/engine_test.lint-test.js","ember-application/tests/system/initializers_test.js","ember-application/tests/system/initializers_test.lint-test.js","ember-application/tests/system/instance_initializers_test.js","ember-application/tests/system/instance_initializers_test.lint-test.js","ember-application/tests/system/logging_test.js","ember-application/tests/system/logging_test.lint-test.js","ember-application/tests/system/readiness_test.js","ember-application/tests/system/readiness_test.lint-test.js","ember-application/tests/system/reset_test.js","ember-application/tests/system/reset_test.lint-test.js","ember-application/tests/system/visit_test.js","ember-application/tests/system/visit_test.lint-test.js","ember-application/tests/test-helpers/registry-check.js","ember-application/tests/test-helpers/registry-check.lint-test.js","ember-babel.js","ember-console.lint-test.js","ember-console/lib/index.lint-test.js","ember-debug/deprecate.lint-test.js","ember-debug/error.lint-test.js","ember-debug/features.lint-test.js","ember-debug/handlers.lint-test.js","ember-debug/index.lint-test.js","ember-debug/lib/deprecate.lint-test.js","ember-debug/lib/error.lint-test.js","ember-debug/lib/features.lint-test.js","ember-debug/lib/handlers.lint-test.js","ember-debug/lib/index.lint-test.js","ember-debug/lib/testing.lint-test.js","ember-debug/lib/warn.lint-test.js","ember-debug/testing.lint-test.js","ember-debug/tests/error_test.js","ember-debug/tests/error_test.lint-test.js","ember-debug/tests/handlers-test.js","ember-debug/tests/handlers-test.lint-test.js","ember-debug/tests/main_test.js","ember-debug/tests/main_test.lint-test.js","ember-debug/tests/warn_if_using_stripped_feature_flags_test.js","ember-debug/tests/warn_if_using_stripped_feature_flags_test.lint-test.js","ember-debug/warn.lint-test.js","ember-dev/test-helper/assertion.js","ember-dev/test-helper/debug.js","ember-dev/test-helper/deprecation.js","ember-dev/test-helper/index.js","ember-dev/test-helper/method-call-tracker.js","ember-dev/test-helper/remaining-template.js","ember-dev/test-helper/remaining-view.js","ember-dev/test-helper/run-loop.js","ember-dev/test-helper/setup-qunit.js","ember-dev/test-helper/utils.js","ember-dev/test-helper/warning.js","ember-environment.lint-test.js","ember-environment/lib/global.lint-test.js","ember-environment/lib/index.lint-test.js","ember-environment/lib/utils.lint-test.js","ember-extension-support/lib/container_debug_adapter.lint-test.js","ember-extension-support/lib/data_adapter.lint-test.js","ember-extension-support/lib/index.lint-test.js","ember-extension-support/tests/container_debug_adapter_test.js","ember-extension-support/tests/container_debug_adapter_test.lint-test.js","ember-extension-support/tests/data_adapter_test.js","ember-extension-support/tests/data_adapter_test.lint-test.js","ember-glimmer/tests/integration/application/actions-test.js","ember-glimmer/tests/integration/application/actions-test.lint-test.js","ember-glimmer/tests/integration/application/engine-test.js","ember-glimmer/tests/integration/application/engine-test.lint-test.js","ember-glimmer/tests/integration/application/rendering-test.js","ember-glimmer/tests/integration/application/rendering-test.lint-test.js","ember-glimmer/tests/integration/binding_integration_test.js","ember-glimmer/tests/integration/binding_integration_test.lint-test.js","ember-glimmer/tests/integration/components/append-test.js","ember-glimmer/tests/integration/components/append-test.lint-test.js","ember-glimmer/tests/integration/components/attribute-bindings-test.js","ember-glimmer/tests/integration/components/attribute-bindings-test.lint-test.js","ember-glimmer/tests/integration/components/attrs-lookup-test.js","ember-glimmer/tests/integration/components/attrs-lookup-test.lint-test.js","ember-glimmer/tests/integration/components/class-bindings-test.js","ember-glimmer/tests/integration/components/class-bindings-test.lint-test.js","ember-glimmer/tests/integration/components/contextual-components-test.js","ember-glimmer/tests/integration/components/contextual-components-test.lint-test.js","ember-glimmer/tests/integration/components/curly-components-test.js","ember-glimmer/tests/integration/components/curly-components-test.lint-test.js","ember-glimmer/tests/integration/components/destroy-test.js","ember-glimmer/tests/integration/components/destroy-test.lint-test.js","ember-glimmer/tests/integration/components/dynamic-components-test.js","ember-glimmer/tests/integration/components/dynamic-components-test.lint-test.js","ember-glimmer/tests/integration/components/fragment-components-test.js","ember-glimmer/tests/integration/components/fragment-components-test.lint-test.js","ember-glimmer/tests/integration/components/instrumentation-compile-test.js","ember-glimmer/tests/integration/components/instrumentation-compile-test.lint-test.js","ember-glimmer/tests/integration/components/instrumentation-test.js","ember-glimmer/tests/integration/components/instrumentation-test.lint-test.js","ember-glimmer/tests/integration/components/life-cycle-test.js","ember-glimmer/tests/integration/components/life-cycle-test.lint-test.js","ember-glimmer/tests/integration/components/link-to-test.js","ember-glimmer/tests/integration/components/link-to-test.lint-test.js","ember-glimmer/tests/integration/components/local-lookup-test.js","ember-glimmer/tests/integration/components/local-lookup-test.lint-test.js","ember-glimmer/tests/integration/components/render-to-element-test.js","ember-glimmer/tests/integration/components/render-to-element-test.lint-test.js","ember-glimmer/tests/integration/components/target-action-test.js","ember-glimmer/tests/integration/components/target-action-test.lint-test.js","ember-glimmer/tests/integration/components/utils-test.js","ember-glimmer/tests/integration/components/utils-test.lint-test.js","ember-glimmer/tests/integration/components/web-component-fallback-test.js","ember-glimmer/tests/integration/components/web-component-fallback-test.lint-test.js","ember-glimmer/tests/integration/components/will-destroy-element-hook-test.js","ember-glimmer/tests/integration/components/will-destroy-element-hook-test.lint-test.js","ember-glimmer/tests/integration/content-test.js","ember-glimmer/tests/integration/content-test.lint-test.js","ember-glimmer/tests/integration/custom-component-manager-test.js","ember-glimmer/tests/integration/custom-component-manager-test.lint-test.js","ember-glimmer/tests/integration/event-dispatcher-test.js","ember-glimmer/tests/integration/event-dispatcher-test.lint-test.js","ember-glimmer/tests/integration/helpers/-class-test.js","ember-glimmer/tests/integration/helpers/-class-test.lint-test.js","ember-glimmer/tests/integration/helpers/closure-action-test.js","ember-glimmer/tests/integration/helpers/closure-action-test.lint-test.js","ember-glimmer/tests/integration/helpers/concat-test.js","ember-glimmer/tests/integration/helpers/concat-test.lint-test.js","ember-glimmer/tests/integration/helpers/custom-helper-test.js","ember-glimmer/tests/integration/helpers/custom-helper-test.lint-test.js","ember-glimmer/tests/integration/helpers/element-action-test.js","ember-glimmer/tests/integration/helpers/element-action-test.lint-test.js","ember-glimmer/tests/integration/helpers/get-test.js","ember-glimmer/tests/integration/helpers/get-test.lint-test.js","ember-glimmer/tests/integration/helpers/hash-test.js","ember-glimmer/tests/integration/helpers/hash-test.lint-test.js","ember-glimmer/tests/integration/helpers/if-unless-test.js","ember-glimmer/tests/integration/helpers/if-unless-test.lint-test.js","ember-glimmer/tests/integration/helpers/input-test.js","ember-glimmer/tests/integration/helpers/input-test.lint-test.js","ember-glimmer/tests/integration/helpers/loc-test.js","ember-glimmer/tests/integration/helpers/loc-test.lint-test.js","ember-glimmer/tests/integration/helpers/log-test.js","ember-glimmer/tests/integration/helpers/log-test.lint-test.js","ember-glimmer/tests/integration/helpers/mut-test.js","ember-glimmer/tests/integration/helpers/mut-test.lint-test.js","ember-glimmer/tests/integration/helpers/partial-test.js","ember-glimmer/tests/integration/helpers/partial-test.lint-test.js","ember-glimmer/tests/integration/helpers/readonly-test.js","ember-glimmer/tests/integration/helpers/readonly-test.lint-test.js","ember-glimmer/tests/integration/helpers/render-test.js","ember-glimmer/tests/integration/helpers/render-test.lint-test.js","ember-glimmer/tests/integration/helpers/text-area-test.js","ember-glimmer/tests/integration/helpers/text-area-test.lint-test.js","ember-glimmer/tests/integration/helpers/unbound-test.js","ember-glimmer/tests/integration/helpers/unbound-test.lint-test.js","ember-glimmer/tests/integration/helpers/yield-test.js","ember-glimmer/tests/integration/helpers/yield-test.lint-test.js","ember-glimmer/tests/integration/input-test.js","ember-glimmer/tests/integration/input-test.lint-test.js","ember-glimmer/tests/integration/mount-test.js","ember-glimmer/tests/integration/mount-test.lint-test.js","ember-glimmer/tests/integration/outlet-test.js","ember-glimmer/tests/integration/outlet-test.lint-test.js","ember-glimmer/tests/integration/refinements-test.js","ember-glimmer/tests/integration/refinements-test.lint-test.js","ember-glimmer/tests/integration/svg-test.js","ember-glimmer/tests/integration/svg-test.lint-test.js","ember-glimmer/tests/integration/syntax/each-in-test.js","ember-glimmer/tests/integration/syntax/each-in-test.lint-test.js","ember-glimmer/tests/integration/syntax/each-test.js","ember-glimmer/tests/integration/syntax/each-test.lint-test.js","ember-glimmer/tests/integration/syntax/experimental-syntax-test.js","ember-glimmer/tests/integration/syntax/experimental-syntax-test.lint-test.js","ember-glimmer/tests/integration/syntax/if-unless-test.js","ember-glimmer/tests/integration/syntax/if-unless-test.lint-test.js","ember-glimmer/tests/integration/syntax/in-element-test.js","ember-glimmer/tests/integration/syntax/in-element-test.lint-test.js","ember-glimmer/tests/integration/syntax/with-dynamic-var-test.js","ember-glimmer/tests/integration/syntax/with-dynamic-var-test.lint-test.js","ember-glimmer/tests/integration/syntax/with-test.js","ember-glimmer/tests/integration/syntax/with-test.lint-test.js","ember-glimmer/tests/unit/layout-cache-test.js","ember-glimmer/tests/unit/layout-cache-test.lint-test.js","ember-glimmer/tests/unit/outlet-test.js","ember-glimmer/tests/unit/outlet-test.lint-test.js","ember-glimmer/tests/unit/template-factory-test.js","ember-glimmer/tests/unit/template-factory-test.lint-test.js","ember-glimmer/tests/unit/utils/debug-stack-test.js","ember-glimmer/tests/unit/utils/debug-stack-test.lint-test.js","ember-glimmer/tests/unit/utils/iterable-test.js","ember-glimmer/tests/unit/utils/iterable-test.lint-test.js","ember-glimmer/tests/utils/abstract-test-case.js","ember-glimmer/tests/utils/abstract-test-case.lint-test.js","ember-glimmer/tests/utils/helpers.js","ember-glimmer/tests/utils/helpers.lint-test.js","ember-glimmer/tests/utils/shared-conditional-tests.js","ember-glimmer/tests/utils/shared-conditional-tests.lint-test.js","ember-glimmer/tests/utils/string-test.js","ember-glimmer/tests/utils/string-test.lint-test.js","ember-glimmer/tests/utils/test-case.js","ember-glimmer/tests/utils/test-case.lint-test.js","ember-glimmer/tests/utils/test-helpers.js","ember-glimmer/tests/utils/test-helpers.lint-test.js","ember-metal/lib/alias.lint-test.js","ember-metal/lib/binding.lint-test.js","ember-metal/lib/cache.lint-test.js","ember-metal/lib/chains.lint-test.js","ember-metal/lib/computed.lint-test.js","ember-metal/lib/core.lint-test.js","ember-metal/lib/dependent_keys.lint-test.js","ember-metal/lib/deprecate_property.lint-test.js","ember-metal/lib/descriptor.lint-test.js","ember-metal/lib/error_handler.lint-test.js","ember-metal/lib/events.lint-test.js","ember-metal/lib/expand_properties.lint-test.js","ember-metal/lib/get_properties.lint-test.js","ember-metal/lib/index.lint-test.js","ember-metal/lib/injected_property.lint-test.js","ember-metal/lib/instrumentation.lint-test.js","ember-metal/lib/is_blank.lint-test.js","ember-metal/lib/is_empty.lint-test.js","ember-metal/lib/is_none.lint-test.js","ember-metal/lib/is_present.lint-test.js","ember-metal/lib/is_proxy.lint-test.js","ember-metal/lib/libraries.lint-test.js","ember-metal/lib/map.lint-test.js","ember-metal/lib/merge.lint-test.js","ember-metal/lib/meta.lint-test.js","ember-metal/lib/meta_listeners.lint-test.js","ember-metal/lib/mixin.lint-test.js","ember-metal/lib/observer.lint-test.js","ember-metal/lib/observer_set.lint-test.js","ember-metal/lib/path_cache.lint-test.js","ember-metal/lib/properties.lint-test.js","ember-metal/lib/property_events.lint-test.js","ember-metal/lib/property_get.lint-test.js","ember-metal/lib/property_set.lint-test.js","ember-metal/lib/replace.lint-test.js","ember-metal/lib/run_loop.lint-test.js","ember-metal/lib/set_properties.lint-test.js","ember-metal/lib/tags.lint-test.js","ember-metal/lib/transaction.lint-test.js","ember-metal/lib/watch_key.lint-test.js","ember-metal/lib/watch_path.lint-test.js","ember-metal/lib/watching.lint-test.js","ember-metal/lib/weak_map.lint-test.js","ember-metal/tests/accessors/get_path_test.js","ember-metal/tests/accessors/get_path_test.lint-test.js","ember-metal/tests/accessors/get_properties_test.js","ember-metal/tests/accessors/get_properties_test.lint-test.js","ember-metal/tests/accessors/get_test.js","ember-metal/tests/accessors/get_test.lint-test.js","ember-metal/tests/accessors/is_global_path_test.js","ember-metal/tests/accessors/is_global_path_test.lint-test.js","ember-metal/tests/accessors/mandatory_setters_test.js","ember-metal/tests/accessors/mandatory_setters_test.lint-test.js","ember-metal/tests/accessors/set_path_test.js","ember-metal/tests/accessors/set_path_test.lint-test.js","ember-metal/tests/accessors/set_test.js","ember-metal/tests/accessors/set_test.lint-test.js","ember-metal/tests/alias_test.js","ember-metal/tests/alias_test.lint-test.js","ember-metal/tests/binding/connect_test.js","ember-metal/tests/binding/connect_test.lint-test.js","ember-metal/tests/binding/sync_test.js","ember-metal/tests/binding/sync_test.lint-test.js","ember-metal/tests/cache_test.js","ember-metal/tests/cache_test.lint-test.js","ember-metal/tests/chains_test.js","ember-metal/tests/chains_test.lint-test.js","ember-metal/tests/computed_test.js","ember-metal/tests/computed_test.lint-test.js","ember-metal/tests/descriptor_test.js","ember-metal/tests/descriptor_test.lint-test.js","ember-metal/tests/events_test.js","ember-metal/tests/events_test.lint-test.js","ember-metal/tests/expand_properties_test.js","ember-metal/tests/expand_properties_test.lint-test.js","ember-metal/tests/injected_property_test.js","ember-metal/tests/injected_property_test.lint-test.js","ember-metal/tests/instrumentation_test.js","ember-metal/tests/instrumentation_test.lint-test.js","ember-metal/tests/is_blank_test.js","ember-metal/tests/is_blank_test.lint-test.js","ember-metal/tests/is_empty_test.js","ember-metal/tests/is_empty_test.lint-test.js","ember-metal/tests/is_none_test.js","ember-metal/tests/is_none_test.lint-test.js","ember-metal/tests/is_present_test.js","ember-metal/tests/is_present_test.lint-test.js","ember-metal/tests/libraries_test.js","ember-metal/tests/libraries_test.lint-test.js","ember-metal/tests/main_test.js","ember-metal/tests/main_test.lint-test.js","ember-metal/tests/map_test.js","ember-metal/tests/map_test.lint-test.js","ember-metal/tests/meta_test.js","ember-metal/tests/meta_test.lint-test.js","ember-metal/tests/mixin/alias_method_test.js","ember-metal/tests/mixin/alias_method_test.lint-test.js","ember-metal/tests/mixin/apply_test.js","ember-metal/tests/mixin/apply_test.lint-test.js","ember-metal/tests/mixin/computed_test.js","ember-metal/tests/mixin/computed_test.lint-test.js","ember-metal/tests/mixin/concatenated_properties_test.js","ember-metal/tests/mixin/concatenated_properties_test.lint-test.js","ember-metal/tests/mixin/detect_test.js","ember-metal/tests/mixin/detect_test.lint-test.js","ember-metal/tests/mixin/introspection_test.js","ember-metal/tests/mixin/introspection_test.lint-test.js","ember-metal/tests/mixin/merged_properties_test.js","ember-metal/tests/mixin/merged_properties_test.lint-test.js","ember-metal/tests/mixin/method_test.js","ember-metal/tests/mixin/method_test.lint-test.js","ember-metal/tests/mixin/observer_test.js","ember-metal/tests/mixin/observer_test.lint-test.js","ember-metal/tests/mixin/reopen_test.js","ember-metal/tests/mixin/reopen_test.lint-test.js","ember-metal/tests/mixin/required_test.js","ember-metal/tests/mixin/required_test.lint-test.js","ember-metal/tests/mixin/without_test.js","ember-metal/tests/mixin/without_test.lint-test.js","ember-metal/tests/observer_test.js","ember-metal/tests/observer_test.lint-test.js","ember-metal/tests/performance_test.js","ember-metal/tests/performance_test.lint-test.js","ember-metal/tests/properties_test.js","ember-metal/tests/properties_test.lint-test.js","ember-metal/tests/property_did_change_hook.js","ember-metal/tests/property_did_change_hook.lint-test.js","ember-metal/tests/run_loop/add_queue_test.js","ember-metal/tests/run_loop/add_queue_test.lint-test.js","ember-metal/tests/run_loop/debounce_test.js","ember-metal/tests/run_loop/debounce_test.lint-test.js","ember-metal/tests/run_loop/later_test.js","ember-metal/tests/run_loop/later_test.lint-test.js","ember-metal/tests/run_loop/next_test.js","ember-metal/tests/run_loop/next_test.lint-test.js","ember-metal/tests/run_loop/once_test.js","ember-metal/tests/run_loop/once_test.lint-test.js","ember-metal/tests/run_loop/onerror_test.js","ember-metal/tests/run_loop/onerror_test.lint-test.js","ember-metal/tests/run_loop/run_bind_test.js","ember-metal/tests/run_loop/run_bind_test.lint-test.js","ember-metal/tests/run_loop/run_test.js","ember-metal/tests/run_loop/run_test.lint-test.js","ember-metal/tests/run_loop/schedule_test.js","ember-metal/tests/run_loop/schedule_test.lint-test.js","ember-metal/tests/run_loop/sync_test.js","ember-metal/tests/run_loop/sync_test.lint-test.js","ember-metal/tests/run_loop/unwind_test.js","ember-metal/tests/run_loop/unwind_test.lint-test.js","ember-metal/tests/set_properties_test.js","ember-metal/tests/set_properties_test.lint-test.js","ember-metal/tests/watching/is_watching_test.js","ember-metal/tests/watching/is_watching_test.lint-test.js","ember-metal/tests/watching/unwatch_test.js","ember-metal/tests/watching/unwatch_test.lint-test.js","ember-metal/tests/watching/watch_test.js","ember-metal/tests/watching/watch_test.lint-test.js","ember-metal/tests/weak_map_test.js","ember-metal/tests/weak_map_test.lint-test.js","ember-routing/lib/ext/controller.lint-test.js","ember-routing/lib/ext/run_loop.lint-test.js","ember-routing/lib/index.lint-test.js","ember-routing/lib/location/api.lint-test.js","ember-routing/lib/location/auto_location.lint-test.js","ember-routing/lib/location/hash_location.lint-test.js","ember-routing/lib/location/history_location.lint-test.js","ember-routing/lib/location/none_location.lint-test.js","ember-routing/lib/location/util.lint-test.js","ember-routing/lib/services/router.lint-test.js","ember-routing/lib/services/routing.lint-test.js","ember-routing/lib/system/cache.lint-test.js","ember-routing/lib/system/controller_for.lint-test.js","ember-routing/lib/system/dsl.lint-test.js","ember-routing/lib/system/generate_controller.lint-test.js","ember-routing/lib/system/query_params.lint-test.js","ember-routing/lib/system/route.lint-test.js","ember-routing/lib/system/router.lint-test.js","ember-routing/lib/system/router_state.lint-test.js","ember-routing/lib/utils.lint-test.js","ember-routing/tests/ext/controller_test.js","ember-routing/tests/ext/controller_test.lint-test.js","ember-routing/tests/location/auto_location_test.js","ember-routing/tests/location/auto_location_test.lint-test.js","ember-routing/tests/location/hash_location_test.js","ember-routing/tests/location/hash_location_test.lint-test.js","ember-routing/tests/location/history_location_test.js","ember-routing/tests/location/history_location_test.lint-test.js","ember-routing/tests/location/none_location_test.js","ember-routing/tests/location/none_location_test.lint-test.js","ember-routing/tests/location/util_test.js","ember-routing/tests/location/util_test.lint-test.js","ember-routing/tests/system/cache_test.js","ember-routing/tests/system/cache_test.lint-test.js","ember-routing/tests/system/controller_for_test.js","ember-routing/tests/system/controller_for_test.lint-test.js","ember-routing/tests/system/dsl_test.js","ember-routing/tests/system/dsl_test.lint-test.js","ember-routing/tests/system/route_test.js","ember-routing/tests/system/route_test.lint-test.js","ember-routing/tests/system/router_test.js","ember-routing/tests/system/router_test.lint-test.js","ember-routing/tests/utils_test.js","ember-routing/tests/utils_test.lint-test.js","ember-runtime/lib/compare.lint-test.js","ember-runtime/lib/computed/computed_macros.lint-test.js","ember-runtime/lib/computed/reduce_computed_macros.lint-test.js","ember-runtime/lib/controllers/controller.lint-test.js","ember-runtime/lib/copy.lint-test.js","ember-runtime/lib/ext/function.lint-test.js","ember-runtime/lib/ext/rsvp.lint-test.js","ember-runtime/lib/ext/string.lint-test.js","ember-runtime/lib/index.lint-test.js","ember-runtime/lib/inject.lint-test.js","ember-runtime/lib/is-equal.lint-test.js","ember-runtime/lib/mixins/-proxy.lint-test.js","ember-runtime/lib/mixins/action_handler.lint-test.js","ember-runtime/lib/mixins/array.lint-test.js","ember-runtime/lib/mixins/comparable.lint-test.js","ember-runtime/lib/mixins/container_proxy.lint-test.js","ember-runtime/lib/mixins/controller.lint-test.js","ember-runtime/lib/mixins/copyable.lint-test.js","ember-runtime/lib/mixins/enumerable.lint-test.js","ember-runtime/lib/mixins/evented.lint-test.js","ember-runtime/lib/mixins/freezable.lint-test.js","ember-runtime/lib/mixins/mutable_array.lint-test.js","ember-runtime/lib/mixins/mutable_enumerable.lint-test.js","ember-runtime/lib/mixins/observable.lint-test.js","ember-runtime/lib/mixins/promise_proxy.lint-test.js","ember-runtime/lib/mixins/registry_proxy.lint-test.js","ember-runtime/lib/mixins/target_action_support.lint-test.js","ember-runtime/lib/string_registry.lint-test.js","ember-runtime/lib/system/application.lint-test.js","ember-runtime/lib/system/array_proxy.lint-test.js","ember-runtime/lib/system/core_object.lint-test.js","ember-runtime/lib/system/lazy_load.lint-test.js","ember-runtime/lib/system/namespace.lint-test.js","ember-runtime/lib/system/native_array.lint-test.js","ember-runtime/lib/system/object.lint-test.js","ember-runtime/lib/system/object_proxy.lint-test.js","ember-runtime/lib/system/service.lint-test.js","ember-runtime/lib/system/string.lint-test.js","ember-runtime/lib/utils.lint-test.js","ember-runtime/tests/computed/computed_macros_test.js","ember-runtime/tests/computed/computed_macros_test.lint-test.js","ember-runtime/tests/computed/reduce_computed_macros_test.js","ember-runtime/tests/computed/reduce_computed_macros_test.lint-test.js","ember-runtime/tests/controllers/controller_test.js","ember-runtime/tests/controllers/controller_test.lint-test.js","ember-runtime/tests/core/compare_test.js","ember-runtime/tests/core/compare_test.lint-test.js","ember-runtime/tests/core/copy_test.js","ember-runtime/tests/core/copy_test.lint-test.js","ember-runtime/tests/core/isEqual_test.js","ember-runtime/tests/core/isEqual_test.lint-test.js","ember-runtime/tests/core/is_array_test.js","ember-runtime/tests/core/is_array_test.lint-test.js","ember-runtime/tests/core/is_empty_test.js","ember-runtime/tests/core/is_empty_test.lint-test.js","ember-runtime/tests/core/type_of_test.js","ember-runtime/tests/core/type_of_test.lint-test.js","ember-runtime/tests/ext/function_test.js","ember-runtime/tests/ext/function_test.lint-test.js","ember-runtime/tests/ext/mixin_test.js","ember-runtime/tests/ext/mixin_test.lint-test.js","ember-runtime/tests/ext/rsvp_test.js","ember-runtime/tests/ext/rsvp_test.lint-test.js","ember-runtime/tests/inject_test.js","ember-runtime/tests/inject_test.lint-test.js","ember-runtime/tests/legacy_1x/mixins/observable/chained_test.js","ember-runtime/tests/legacy_1x/mixins/observable/chained_test.lint-test.js","ember-runtime/tests/legacy_1x/mixins/observable/observable_test.js","ember-runtime/tests/legacy_1x/mixins/observable/observable_test.lint-test.js","ember-runtime/tests/legacy_1x/mixins/observable/observersForKey_test.js","ember-runtime/tests/legacy_1x/mixins/observable/observersForKey_test.lint-test.js","ember-runtime/tests/legacy_1x/mixins/observable/propertyChanges_test.js","ember-runtime/tests/legacy_1x/mixins/observable/propertyChanges_test.lint-test.js","ember-runtime/tests/legacy_1x/system/binding_test.js","ember-runtime/tests/legacy_1x/system/binding_test.lint-test.js","ember-runtime/tests/legacy_1x/system/object/base_test.js","ember-runtime/tests/legacy_1x/system/object/base_test.lint-test.js","ember-runtime/tests/legacy_1x/system/object/bindings_test.js","ember-runtime/tests/legacy_1x/system/object/bindings_test.lint-test.js","ember-runtime/tests/legacy_1x/system/object/concatenated_test.js","ember-runtime/tests/legacy_1x/system/object/concatenated_test.lint-test.js","ember-runtime/tests/legacy_1x/system/run_loop_test.js","ember-runtime/tests/legacy_1x/system/run_loop_test.lint-test.js","ember-runtime/tests/main_test.js","ember-runtime/tests/main_test.lint-test.js","ember-runtime/tests/mixins/array_test.js","ember-runtime/tests/mixins/array_test.lint-test.js","ember-runtime/tests/mixins/comparable_test.js","ember-runtime/tests/mixins/comparable_test.lint-test.js","ember-runtime/tests/mixins/container_proxy_test.js","ember-runtime/tests/mixins/container_proxy_test.lint-test.js","ember-runtime/tests/mixins/copyable_test.js","ember-runtime/tests/mixins/copyable_test.lint-test.js","ember-runtime/tests/mixins/enumerable_test.js","ember-runtime/tests/mixins/enumerable_test.lint-test.js","ember-runtime/tests/mixins/freezable_test.js","ember-runtime/tests/mixins/freezable_test.lint-test.js","ember-runtime/tests/mixins/mutable_array_test.js","ember-runtime/tests/mixins/mutable_array_test.lint-test.js","ember-runtime/tests/mixins/mutable_enumerable_test.js","ember-runtime/tests/mixins/mutable_enumerable_test.lint-test.js","ember-runtime/tests/mixins/observable_test.js","ember-runtime/tests/mixins/observable_test.lint-test.js","ember-runtime/tests/mixins/promise_proxy_test.js","ember-runtime/tests/mixins/promise_proxy_test.lint-test.js","ember-runtime/tests/mixins/target_action_support_test.js","ember-runtime/tests/mixins/target_action_support_test.lint-test.js","ember-runtime/tests/suites/array.js","ember-runtime/tests/suites/array.lint-test.js","ember-runtime/tests/suites/array/includes.js","ember-runtime/tests/suites/array/includes.lint-test.js","ember-runtime/tests/suites/array/indexOf.js","ember-runtime/tests/suites/array/indexOf.lint-test.js","ember-runtime/tests/suites/array/lastIndexOf.js","ember-runtime/tests/suites/array/lastIndexOf.lint-test.js","ember-runtime/tests/suites/array/objectAt.js","ember-runtime/tests/suites/array/objectAt.lint-test.js","ember-runtime/tests/suites/copyable.js","ember-runtime/tests/suites/copyable.lint-test.js","ember-runtime/tests/suites/copyable/copy.js","ember-runtime/tests/suites/copyable/copy.lint-test.js","ember-runtime/tests/suites/copyable/frozenCopy.js","ember-runtime/tests/suites/copyable/frozenCopy.lint-test.js","ember-runtime/tests/suites/enumerable.js","ember-runtime/tests/suites/enumerable.lint-test.js","ember-runtime/tests/suites/enumerable/any.js","ember-runtime/tests/suites/enumerable/any.lint-test.js","ember-runtime/tests/suites/enumerable/compact.js","ember-runtime/tests/suites/enumerable/compact.lint-test.js","ember-runtime/tests/suites/enumerable/contains.js","ember-runtime/tests/suites/enumerable/contains.lint-test.js","ember-runtime/tests/suites/enumerable/every.js","ember-runtime/tests/suites/enumerable/every.lint-test.js","ember-runtime/tests/suites/enumerable/filter.js","ember-runtime/tests/suites/enumerable/filter.lint-test.js","ember-runtime/tests/suites/enumerable/find.js","ember-runtime/tests/suites/enumerable/find.lint-test.js","ember-runtime/tests/suites/enumerable/firstObject.js","ember-runtime/tests/suites/enumerable/firstObject.lint-test.js","ember-runtime/tests/suites/enumerable/forEach.js","ember-runtime/tests/suites/enumerable/forEach.lint-test.js","ember-runtime/tests/suites/enumerable/includes.js","ember-runtime/tests/suites/enumerable/includes.lint-test.js","ember-runtime/tests/suites/enumerable/invoke.js","ember-runtime/tests/suites/enumerable/invoke.lint-test.js","ember-runtime/tests/suites/enumerable/is_any.js","ember-runtime/tests/suites/enumerable/is_any.lint-test.js","ember-runtime/tests/suites/enumerable/lastObject.js","ember-runtime/tests/suites/enumerable/lastObject.lint-test.js","ember-runtime/tests/suites/enumerable/map.js","ember-runtime/tests/suites/enumerable/map.lint-test.js","ember-runtime/tests/suites/enumerable/mapBy.js","ember-runtime/tests/suites/enumerable/mapBy.lint-test.js","ember-runtime/tests/suites/enumerable/reduce.js","ember-runtime/tests/suites/enumerable/reduce.lint-test.js","ember-runtime/tests/suites/enumerable/reject.js","ember-runtime/tests/suites/enumerable/reject.lint-test.js","ember-runtime/tests/suites/enumerable/sortBy.js","ember-runtime/tests/suites/enumerable/sortBy.lint-test.js","ember-runtime/tests/suites/enumerable/toArray.js","ember-runtime/tests/suites/enumerable/toArray.lint-test.js","ember-runtime/tests/suites/enumerable/uniq.js","ember-runtime/tests/suites/enumerable/uniq.lint-test.js","ember-runtime/tests/suites/enumerable/uniqBy.js","ember-runtime/tests/suites/enumerable/uniqBy.lint-test.js","ember-runtime/tests/suites/enumerable/without.js","ember-runtime/tests/suites/enumerable/without.lint-test.js","ember-runtime/tests/suites/mutable_array.js","ember-runtime/tests/suites/mutable_array.lint-test.js","ember-runtime/tests/suites/mutable_array/addObject.js","ember-runtime/tests/suites/mutable_array/addObject.lint-test.js","ember-runtime/tests/suites/mutable_array/clear.js","ember-runtime/tests/suites/mutable_array/clear.lint-test.js","ember-runtime/tests/suites/mutable_array/insertAt.js","ember-runtime/tests/suites/mutable_array/insertAt.lint-test.js","ember-runtime/tests/suites/mutable_array/popObject.js","ember-runtime/tests/suites/mutable_array/popObject.lint-test.js","ember-runtime/tests/suites/mutable_array/pushObject.js","ember-runtime/tests/suites/mutable_array/pushObject.lint-test.js","ember-runtime/tests/suites/mutable_array/pushObjects.js","ember-runtime/tests/suites/mutable_array/pushObjects.lint-test.js","ember-runtime/tests/suites/mutable_array/removeAt.js","ember-runtime/tests/suites/mutable_array/removeAt.lint-test.js","ember-runtime/tests/suites/mutable_array/removeObject.js","ember-runtime/tests/suites/mutable_array/removeObject.lint-test.js","ember-runtime/tests/suites/mutable_array/replace.js","ember-runtime/tests/suites/mutable_array/replace.lint-test.js","ember-runtime/tests/suites/mutable_array/reverseObjects.js","ember-runtime/tests/suites/mutable_array/reverseObjects.lint-test.js","ember-runtime/tests/suites/mutable_array/setObjects.js","ember-runtime/tests/suites/mutable_array/setObjects.lint-test.js","ember-runtime/tests/suites/mutable_array/shiftObject.js","ember-runtime/tests/suites/mutable_array/shiftObject.lint-test.js","ember-runtime/tests/suites/mutable_array/unshiftObject.js","ember-runtime/tests/suites/mutable_array/unshiftObject.lint-test.js","ember-runtime/tests/suites/mutable_array/unshiftObjects.js","ember-runtime/tests/suites/mutable_array/unshiftObjects.lint-test.js","ember-runtime/tests/suites/mutable_enumerable.js","ember-runtime/tests/suites/mutable_enumerable.lint-test.js","ember-runtime/tests/suites/mutable_enumerable/addObject.js","ember-runtime/tests/suites/mutable_enumerable/addObject.lint-test.js","ember-runtime/tests/suites/mutable_enumerable/removeObject.js","ember-runtime/tests/suites/mutable_enumerable/removeObject.lint-test.js","ember-runtime/tests/suites/mutable_enumerable/removeObjects.js","ember-runtime/tests/suites/mutable_enumerable/removeObjects.lint-test.js","ember-runtime/tests/suites/suite.js","ember-runtime/tests/suites/suite.lint-test.js","ember-runtime/tests/system/application/base_test.js","ember-runtime/tests/system/application/base_test.lint-test.js","ember-runtime/tests/system/array_proxy/arranged_content_test.js","ember-runtime/tests/system/array_proxy/arranged_content_test.lint-test.js","ember-runtime/tests/system/array_proxy/content_change_test.js","ember-runtime/tests/system/array_proxy/content_change_test.lint-test.js","ember-runtime/tests/system/array_proxy/content_update_test.js","ember-runtime/tests/system/array_proxy/content_update_test.lint-test.js","ember-runtime/tests/system/array_proxy/length_test.js","ember-runtime/tests/system/array_proxy/length_test.lint-test.js","ember-runtime/tests/system/array_proxy/suite_test.js","ember-runtime/tests/system/array_proxy/suite_test.lint-test.js","ember-runtime/tests/system/array_proxy/watching_and_listening_test.js","ember-runtime/tests/system/array_proxy/watching_and_listening_test.lint-test.js","ember-runtime/tests/system/core_object_test.js","ember-runtime/tests/system/core_object_test.lint-test.js","ember-runtime/tests/system/lazy_load_test.js","ember-runtime/tests/system/lazy_load_test.lint-test.js","ember-runtime/tests/system/namespace/base_test.js","ember-runtime/tests/system/namespace/base_test.lint-test.js","ember-runtime/tests/system/native_array/a_test.js","ember-runtime/tests/system/native_array/a_test.lint-test.js","ember-runtime/tests/system/native_array/copyable_suite_test.js","ember-runtime/tests/system/native_array/copyable_suite_test.lint-test.js","ember-runtime/tests/system/native_array/replace_test.js","ember-runtime/tests/system/native_array/replace_test.lint-test.js","ember-runtime/tests/system/native_array/suite_test.js","ember-runtime/tests/system/native_array/suite_test.lint-test.js","ember-runtime/tests/system/object/computed_test.js","ember-runtime/tests/system/object/computed_test.lint-test.js","ember-runtime/tests/system/object/create_test.js","ember-runtime/tests/system/object/create_test.lint-test.js","ember-runtime/tests/system/object/destroy_test.js","ember-runtime/tests/system/object/destroy_test.lint-test.js","ember-runtime/tests/system/object/detectInstance_test.js","ember-runtime/tests/system/object/detectInstance_test.lint-test.js","ember-runtime/tests/system/object/detect_test.js","ember-runtime/tests/system/object/detect_test.lint-test.js","ember-runtime/tests/system/object/es-compatibility-test.js","ember-runtime/tests/system/object/es-compatibility-test.lint-test.js","ember-runtime/tests/system/object/events_test.js","ember-runtime/tests/system/object/events_test.lint-test.js","ember-runtime/tests/system/object/extend_test.js","ember-runtime/tests/system/object/extend_test.lint-test.js","ember-runtime/tests/system/object/observer_test.js","ember-runtime/tests/system/object/observer_test.lint-test.js","ember-runtime/tests/system/object/reopenClass_test.js","ember-runtime/tests/system/object/reopenClass_test.lint-test.js","ember-runtime/tests/system/object/reopen_test.js","ember-runtime/tests/system/object/reopen_test.lint-test.js","ember-runtime/tests/system/object/strict-mode-test.js","ember-runtime/tests/system/object/strict-mode-test.lint-test.js","ember-runtime/tests/system/object/subclasses_test.js","ember-runtime/tests/system/object/subclasses_test.lint-test.js","ember-runtime/tests/system/object/toString_test.js","ember-runtime/tests/system/object/toString_test.lint-test.js","ember-runtime/tests/system/object_proxy_test.js","ember-runtime/tests/system/object_proxy_test.lint-test.js","ember-runtime/tests/system/string/camelize_test.js","ember-runtime/tests/system/string/camelize_test.lint-test.js","ember-runtime/tests/system/string/capitalize_test.js","ember-runtime/tests/system/string/capitalize_test.lint-test.js","ember-runtime/tests/system/string/classify_test.js","ember-runtime/tests/system/string/classify_test.lint-test.js","ember-runtime/tests/system/string/dasherize_test.js","ember-runtime/tests/system/string/dasherize_test.lint-test.js","ember-runtime/tests/system/string/decamelize_test.js","ember-runtime/tests/system/string/decamelize_test.lint-test.js","ember-runtime/tests/system/string/fmt_string_test.js","ember-runtime/tests/system/string/fmt_string_test.lint-test.js","ember-runtime/tests/system/string/loc_test.js","ember-runtime/tests/system/string/loc_test.lint-test.js","ember-runtime/tests/system/string/underscore_test.js","ember-runtime/tests/system/string/underscore_test.lint-test.js","ember-runtime/tests/system/string/w_test.js","ember-runtime/tests/system/string/w_test.lint-test.js","ember-template-compiler/compat.lint-test.js","ember-template-compiler/index.lint-test.js","ember-template-compiler/lib/compat.lint-test.js","ember-template-compiler/lib/index.lint-test.js","ember-template-compiler/lib/plugins/assert-input-helper-without-block.lint-test.js","ember-template-compiler/lib/plugins/assert-reserved-named-arguments.lint-test.js","ember-template-compiler/lib/plugins/deprecate-render-model.lint-test.js","ember-template-compiler/lib/plugins/deprecate-render.lint-test.js","ember-template-compiler/lib/plugins/extract-pragma-tag.lint-test.js","ember-template-compiler/lib/plugins/index.lint-test.js","ember-template-compiler/lib/plugins/transform-action-syntax.lint-test.js","ember-template-compiler/lib/plugins/transform-angle-bracket-components.lint-test.js","ember-template-compiler/lib/plugins/transform-attrs-into-args.lint-test.js","ember-template-compiler/lib/plugins/transform-dot-component-invocation.lint-test.js","ember-template-compiler/lib/plugins/transform-each-in-into-each.lint-test.js","ember-template-compiler/lib/plugins/transform-has-block-syntax.lint-test.js","ember-template-compiler/lib/plugins/transform-inline-link-to.lint-test.js","ember-template-compiler/lib/plugins/transform-input-on-to-onEvent.lint-test.js","ember-template-compiler/lib/plugins/transform-input-type-syntax.lint-test.js","ember-template-compiler/lib/plugins/transform-old-binding-syntax.lint-test.js","ember-template-compiler/lib/plugins/transform-old-class-binding-syntax.lint-test.js","ember-template-compiler/lib/plugins/transform-quoted-bindings-into-just-bindings.lint-test.js","ember-template-compiler/lib/plugins/transform-top-level-components.lint-test.js","ember-template-compiler/lib/system/bootstrap.lint-test.js","ember-template-compiler/lib/system/calculate-location-display.lint-test.js","ember-template-compiler/lib/system/compile-options.lint-test.js","ember-template-compiler/lib/system/compile.lint-test.js","ember-template-compiler/lib/system/precompile.lint-test.js","ember-template-compiler/plugins/assert-input-helper-without-block.lint-test.js","ember-template-compiler/plugins/assert-reserved-named-arguments.lint-test.js","ember-template-compiler/plugins/deprecate-render-model.lint-test.js","ember-template-compiler/plugins/deprecate-render.lint-test.js","ember-template-compiler/plugins/extract-pragma-tag.lint-test.js","ember-template-compiler/plugins/index.lint-test.js","ember-template-compiler/plugins/transform-action-syntax.lint-test.js","ember-template-compiler/plugins/transform-angle-bracket-components.lint-test.js","ember-template-compiler/plugins/transform-attrs-into-args.lint-test.js","ember-template-compiler/plugins/transform-dot-component-invocation.lint-test.js","ember-template-compiler/plugins/transform-each-in-into-each.lint-test.js","ember-template-compiler/plugins/transform-has-block-syntax.lint-test.js","ember-template-compiler/plugins/transform-inline-link-to.lint-test.js","ember-template-compiler/plugins/transform-input-on-to-onEvent.lint-test.js","ember-template-compiler/plugins/transform-input-type-syntax.lint-test.js","ember-template-compiler/plugins/transform-old-binding-syntax.lint-test.js","ember-template-compiler/plugins/transform-old-class-binding-syntax.lint-test.js","ember-template-compiler/plugins/transform-quoted-bindings-into-just-bindings.lint-test.js","ember-template-compiler/plugins/transform-top-level-components.lint-test.js","ember-template-compiler/system/bootstrap.lint-test.js","ember-template-compiler/system/calculate-location-display.lint-test.js","ember-template-compiler/system/compile-options.lint-test.js","ember-template-compiler/system/compile.lint-test.js","ember-template-compiler/system/precompile.lint-test.js","ember-template-compiler/tests/plugins/assert-input-helper-without-block-test.js","ember-template-compiler/tests/plugins/assert-input-helper-without-block-test.lint-test.js","ember-template-compiler/tests/plugins/assert-reserved-named-arguments-test.js","ember-template-compiler/tests/plugins/assert-reserved-named-arguments-test.lint-test.js","ember-template-compiler/tests/plugins/deprecate-render-model-test.js","ember-template-compiler/tests/plugins/deprecate-render-model-test.lint-test.js","ember-template-compiler/tests/plugins/deprecate-render-test.js","ember-template-compiler/tests/plugins/deprecate-render-test.lint-test.js","ember-template-compiler/tests/plugins/transform-dot-component-invocation-test.js","ember-template-compiler/tests/plugins/transform-dot-component-invocation-test.lint-test.js","ember-template-compiler/tests/plugins/transform-inline-link-to-test.js","ember-template-compiler/tests/plugins/transform-inline-link-to-test.lint-test.js","ember-template-compiler/tests/plugins/transform-input-on-test.js","ember-template-compiler/tests/plugins/transform-input-on-test.lint-test.js","ember-template-compiler/tests/plugins/transform-input-type-syntax-test.js","ember-template-compiler/tests/plugins/transform-input-type-syntax-test.lint-test.js","ember-template-compiler/tests/system/bootstrap-test.js","ember-template-compiler/tests/system/bootstrap-test.lint-test.js","ember-template-compiler/tests/system/compile_options_test.js","ember-template-compiler/tests/system/compile_options_test.lint-test.js","ember-testing/adapters/adapter.lint-test.js","ember-testing/adapters/qunit.lint-test.js","ember-testing/events.lint-test.js","ember-testing/ext/application.lint-test.js","ember-testing/ext/rsvp.lint-test.js","ember-testing/helpers.lint-test.js","ember-testing/helpers/and_then.lint-test.js","ember-testing/helpers/click.lint-test.js","ember-testing/helpers/current_path.lint-test.js","ember-testing/helpers/current_route_name.lint-test.js","ember-testing/helpers/current_url.lint-test.js","ember-testing/helpers/fill_in.lint-test.js","ember-testing/helpers/find.lint-test.js","ember-testing/helpers/find_with_assert.lint-test.js","ember-testing/helpers/key_event.lint-test.js","ember-testing/helpers/pause_test.lint-test.js","ember-testing/helpers/trigger_event.lint-test.js","ember-testing/helpers/visit.lint-test.js","ember-testing/helpers/wait.lint-test.js","ember-testing/index.lint-test.js","ember-testing/initializers.lint-test.js","ember-testing/lib/adapters/adapter.lint-test.js","ember-testing/lib/adapters/qunit.lint-test.js","ember-testing/lib/events.lint-test.js","ember-testing/lib/ext/application.lint-test.js","ember-testing/lib/ext/rsvp.lint-test.js","ember-testing/lib/helpers.lint-test.js","ember-testing/lib/helpers/and_then.lint-test.js","ember-testing/lib/helpers/click.lint-test.js","ember-testing/lib/helpers/current_path.lint-test.js","ember-testing/lib/helpers/current_route_name.lint-test.js","ember-testing/lib/helpers/current_url.lint-test.js","ember-testing/lib/helpers/fill_in.lint-test.js","ember-testing/lib/helpers/find.lint-test.js","ember-testing/lib/helpers/find_with_assert.lint-test.js","ember-testing/lib/helpers/key_event.lint-test.js","ember-testing/lib/helpers/pause_test.lint-test.js","ember-testing/lib/helpers/trigger_event.lint-test.js","ember-testing/lib/helpers/visit.lint-test.js","ember-testing/lib/helpers/wait.lint-test.js","ember-testing/lib/index.lint-test.js","ember-testing/lib/initializers.lint-test.js","ember-testing/lib/setup_for_testing.lint-test.js","ember-testing/lib/support.lint-test.js","ember-testing/lib/test.lint-test.js","ember-testing/lib/test/adapter.lint-test.js","ember-testing/lib/test/helpers.lint-test.js","ember-testing/lib/test/on_inject_helpers.lint-test.js","ember-testing/lib/test/pending_requests.lint-test.js","ember-testing/lib/test/promise.lint-test.js","ember-testing/lib/test/run.lint-test.js","ember-testing/lib/test/waiters.lint-test.js","ember-testing/setup_for_testing.lint-test.js","ember-testing/support.lint-test.js","ember-testing/test.lint-test.js","ember-testing/test/adapter.lint-test.js","ember-testing/test/helpers.lint-test.js","ember-testing/test/on_inject_helpers.lint-test.js","ember-testing/test/pending_requests.lint-test.js","ember-testing/test/promise.lint-test.js","ember-testing/test/run.lint-test.js","ember-testing/test/waiters.lint-test.js","ember-testing/tests/acceptance_test.js","ember-testing/tests/acceptance_test.lint-test.js","ember-testing/tests/adapters/adapter_test.js","ember-testing/tests/adapters/adapter_test.lint-test.js","ember-testing/tests/adapters/qunit_test.js","ember-testing/tests/adapters/qunit_test.lint-test.js","ember-testing/tests/adapters_test.js","ember-testing/tests/adapters_test.lint-test.js","ember-testing/tests/ext/rsvp_test.js","ember-testing/tests/ext/rsvp_test.lint-test.js","ember-testing/tests/helper_registration_test.js","ember-testing/tests/helper_registration_test.lint-test.js","ember-testing/tests/helpers_test.js","ember-testing/tests/helpers_test.lint-test.js","ember-testing/tests/integration_test.js","ember-testing/tests/integration_test.lint-test.js","ember-testing/tests/reexports_test.js","ember-testing/tests/reexports_test.lint-test.js","ember-testing/tests/simple_setup.js","ember-testing/tests/simple_setup.lint-test.js","ember-testing/tests/test/waiters-test.js","ember-testing/tests/test/waiters-test.lint-test.js","ember-utils.lint-test.js","ember-utils/lib/apply-str.lint-test.js","ember-utils/lib/assign.lint-test.js","ember-utils/lib/dictionary.lint-test.js","ember-utils/lib/guid.lint-test.js","ember-utils/lib/index.lint-test.js","ember-utils/lib/inspect.lint-test.js","ember-utils/lib/intern.lint-test.js","ember-utils/lib/invoke.lint-test.js","ember-utils/lib/lookup-descriptor.lint-test.js","ember-utils/lib/make-array.lint-test.js","ember-utils/lib/name.lint-test.js","ember-utils/lib/owner.lint-test.js","ember-utils/lib/proxy-utils.lint-test.js","ember-utils/lib/super.lint-test.js","ember-utils/lib/symbol.lint-test.js","ember-utils/lib/to-string.lint-test.js","ember-utils/lib/weak-map-utils.lint-test.js","ember-utils/tests/assign_test.js","ember-utils/tests/assign_test.lint-test.js","ember-utils/tests/can_invoke_test.js","ember-utils/tests/can_invoke_test.lint-test.js","ember-utils/tests/checkHasSuper_test.js","ember-utils/tests/checkHasSuper_test.lint-test.js","ember-utils/tests/generate_guid_test.js","ember-utils/tests/generate_guid_test.lint-test.js","ember-utils/tests/guid_for_test.js","ember-utils/tests/guid_for_test.lint-test.js","ember-utils/tests/inspect_test.js","ember-utils/tests/inspect_test.lint-test.js","ember-utils/tests/make_array_test.js","ember-utils/tests/make_array_test.lint-test.js","ember-utils/tests/to-string-test.js","ember-utils/tests/to-string-test.lint-test.js","ember-utils/tests/try_invoke_test.js","ember-utils/tests/try_invoke_test.lint-test.js","ember-views/lib/compat/attrs.lint-test.js","ember-views/lib/compat/fallback-view-registry.lint-test.js","ember-views/lib/component_lookup.lint-test.js","ember-views/lib/index.lint-test.js","ember-views/lib/mixins/action_support.lint-test.js","ember-views/lib/mixins/child_views_support.lint-test.js","ember-views/lib/mixins/class_names_support.lint-test.js","ember-views/lib/mixins/text_support.lint-test.js","ember-views/lib/mixins/view_state_support.lint-test.js","ember-views/lib/mixins/view_support.lint-test.js","ember-views/lib/system/action_manager.lint-test.js","ember-views/lib/system/event_dispatcher.lint-test.js","ember-views/lib/system/ext.lint-test.js","ember-views/lib/system/jquery.lint-test.js","ember-views/lib/system/lookup_partial.lint-test.js","ember-views/lib/system/utils.lint-test.js","ember-views/lib/utils/lookup-component.lint-test.js","ember-views/lib/views/core_view.lint-test.js","ember-views/lib/views/states.lint-test.js","ember-views/lib/views/states/default.lint-test.js","ember-views/lib/views/states/destroying.lint-test.js","ember-views/lib/views/states/has_element.lint-test.js","ember-views/lib/views/states/in_dom.lint-test.js","ember-views/lib/views/states/pre_render.lint-test.js","ember/lib/index.lint-test.js","ember/tests/application_lifecycle_test.js","ember/tests/application_lifecycle_test.lint-test.js","ember/tests/component_context_test.js","ember/tests/component_context_test.lint-test.js","ember/tests/component_registration_test.js","ember/tests/component_registration_test.lint-test.js","ember/tests/controller_test.js","ember/tests/controller_test.lint-test.js","ember/tests/error_handler_test.js","ember/tests/error_handler_test.lint-test.js","ember/tests/global-api-test.js","ember/tests/global-api-test.lint-test.js","ember/tests/helpers/helper_registration_test.js","ember/tests/helpers/helper_registration_test.lint-test.js","ember/tests/helpers/link_to_test.js","ember/tests/helpers/link_to_test.lint-test.js","ember/tests/helpers/link_to_test/link_to_transitioning_classes_test.js","ember/tests/helpers/link_to_test/link_to_transitioning_classes_test.lint-test.js","ember/tests/helpers/link_to_test/link_to_with_query_params_test.js","ember/tests/helpers/link_to_test/link_to_with_query_params_test.lint-test.js","ember/tests/homepage_example_test.js","ember/tests/homepage_example_test.lint-test.js","ember/tests/integration/multiple-app-test.js","ember/tests/integration/multiple-app-test.lint-test.js","ember/tests/production_build_test.js","ember/tests/production_build_test.lint-test.js","ember/tests/reexports_test.js","ember/tests/reexports_test.lint-test.js","ember/tests/routing/basic_test.js","ember/tests/routing/basic_test.lint-test.js","ember/tests/routing/decoupled_basic_test.js","ember/tests/routing/decoupled_basic_test.lint-test.js","ember/tests/routing/query_params_test.js","ember/tests/routing/query_params_test.lint-test.js","ember/tests/routing/query_params_test/model_dependent_state_with_query_params_test.js","ember/tests/routing/query_params_test/model_dependent_state_with_query_params_test.lint-test.js","ember/tests/routing/query_params_test/overlapping_query_params_test.js","ember/tests/routing/query_params_test/overlapping_query_params_test.lint-test.js","ember/tests/routing/query_params_test/query_param_async_get_handler_test.js","ember/tests/routing/query_params_test/query_param_async_get_handler_test.lint-test.js","ember/tests/routing/query_params_test/query_params_paramless_link_to_test.js","ember/tests/routing/query_params_test/query_params_paramless_link_to_test.lint-test.js","ember/tests/routing/query_params_test/shared_state_test.js","ember/tests/routing/query_params_test/shared_state_test.lint-test.js","ember/tests/routing/router_map_test.js","ember/tests/routing/router_map_test.lint-test.js","ember/tests/routing/router_service_test/basic_test.js","ember/tests/routing/router_service_test/basic_test.lint-test.js","ember/tests/routing/router_service_test/currenturl_lifecycle_test.js","ember/tests/routing/router_service_test/currenturl_lifecycle_test.lint-test.js","ember/tests/routing/router_service_test/isActive_test.js","ember/tests/routing/router_service_test/isActive_test.lint-test.js","ember/tests/routing/router_service_test/replaceWith_test.js","ember/tests/routing/router_service_test/replaceWith_test.lint-test.js","ember/tests/routing/router_service_test/transitionTo_test.js","ember/tests/routing/router_service_test/transitionTo_test.lint-test.js","ember/tests/routing/router_service_test/urlFor_test.js","ember/tests/routing/router_service_test/urlFor_test.lint-test.js","ember/tests/routing/substates_test.js","ember/tests/routing/substates_test.lint-test.js","ember/tests/routing/toplevel_dom_test.js","ember/tests/routing/toplevel_dom_test.lint-test.js","ember/tests/view_instrumentation_test.js","ember/tests/view_instrumentation_test.lint-test.js","error_handler.lint-test.js","events.lint-test.js","expand_properties.lint-test.js","external-helpers/lib/external-helpers-dev.lint-test.js","external-helpers/lib/external-helpers-prod.lint-test.js","get_properties.lint-test.js","index.lint-test.js","injected_property.lint-test.js","instrumentation.lint-test.js","internal-test-helpers/apply-mixins.js","internal-test-helpers/build-owner.js","internal-test-helpers/confirm-export.js","internal-test-helpers/equal-inner-html.js","internal-test-helpers/equal-tokens.js","internal-test-helpers/factory.js","internal-test-helpers/index.js","internal-test-helpers/lib/apply-mixins.lint-test.js","internal-test-helpers/lib/build-owner.lint-test.js","internal-test-helpers/lib/confirm-export.lint-test.js","internal-test-helpers/lib/equal-inner-html.lint-test.js","internal-test-helpers/lib/equal-tokens.lint-test.js","internal-test-helpers/lib/factory.lint-test.js","internal-test-helpers/lib/index.lint-test.js","internal-test-helpers/lib/matchers.lint-test.js","internal-test-helpers/lib/module-for.lint-test.js","internal-test-helpers/lib/run.lint-test.js","internal-test-helpers/lib/strip.lint-test.js","internal-test-helpers/lib/test-cases/abstract-application.lint-test.js","internal-test-helpers/lib/test-cases/abstract-rendering.lint-test.js","internal-test-helpers/lib/test-cases/abstract.lint-test.js","internal-test-helpers/lib/test-cases/application.lint-test.js","internal-test-helpers/lib/test-cases/autoboot-application.lint-test.js","internal-test-helpers/lib/test-cases/default-resolver-application.lint-test.js","internal-test-helpers/lib/test-cases/query-param.lint-test.js","internal-test-helpers/lib/test-cases/rendering.lint-test.js","internal-test-helpers/lib/test-cases/router.lint-test.js","internal-test-helpers/lib/test-cases/test-resolver-application.lint-test.js","internal-test-helpers/lib/test-groups.lint-test.js","internal-test-helpers/lib/test-resolver.lint-test.js","internal-test-helpers/matchers.js","internal-test-helpers/module-for.js","internal-test-helpers/run.js","internal-test-helpers/strip.js","internal-test-helpers/test-cases/abstract-application.js","internal-test-helpers/test-cases/abstract-rendering.js","internal-test-helpers/test-cases/abstract.js","internal-test-helpers/test-cases/application.js","internal-test-helpers/test-cases/autoboot-application.js","internal-test-helpers/test-cases/default-resolver-application.js","internal-test-helpers/test-cases/query-param.js","internal-test-helpers/test-cases/rendering.js","internal-test-helpers/test-cases/router.js","internal-test-helpers/test-cases/test-resolver-application.js","internal-test-helpers/test-groups.js","internal-test-helpers/test-resolver.js","internal-test-helpers/tests/index-test.js","internal-test-helpers/tests/index-test.lint-test.js","is_blank.lint-test.js","is_empty.lint-test.js","is_none.lint-test.js","is_present.lint-test.js","is_proxy.lint-test.js","libraries.lint-test.js","loader/lib/index.lint-test.js","map.lint-test.js","merge.lint-test.js","meta.lint-test.js","meta_listeners.lint-test.js","mixin.lint-test.js","node-module.js","node-module/lib/node-module.lint-test.js","observer.lint-test.js","observer_set.lint-test.js","path_cache.lint-test.js","properties.lint-test.js","property_events.lint-test.js","property_get.lint-test.js","property_set.lint-test.js","replace.lint-test.js","run_loop.lint-test.js","set_properties.lint-test.js","tags.lint-test.js","transaction.lint-test.js","watch_key.lint-test.js","watch_path.lint-test.js","watching.lint-test.js","weak_map.lint-test.js"],"sourcesContent":["/*!\n * @overview Ember - JavaScript Application Framework\n * @copyright Copyright 2011-2017 Tilde Inc. and contributors\n * Portions Copyright 2006-2011 Strobe Inc.\n * Portions Copyright 2008-2011 Apple Inc. All rights reserved.\n * @license Licensed under MIT license\n * See https://raw.github.com/emberjs/ember.js/master/LICENSE\n * @version 2.18.0\n */\n","/*global process */\nvar enifed, requireModule, Ember;\nvar mainContext = this; // Used in ember-environment/lib/global.js\n\n(function() {\n function missingModule(name, referrerName) {\n if (referrerName) {\n throw new Error('Could not find module ' + name + ' required by: ' + referrerName);\n } else {\n throw new Error('Could not find module ' + name);\n }\n }\n\n function internalRequire(_name, referrerName) {\n var name = _name;\n var mod = registry[name];\n\n if (!mod) {\n name = name + '/index';\n mod = registry[name];\n }\n\n var exports = seen[name];\n\n if (exports !== undefined) {\n return exports;\n }\n\n exports = seen[name] = {};\n\n if (!mod) {\n missingModule(_name, referrerName);\n }\n\n var deps = mod.deps;\n var callback = mod.callback;\n var reified = new Array(deps.length);\n\n for (var i = 0; i < deps.length; i++) {\n if (deps[i] === 'exports') {\n reified[i] = exports;\n } else if (deps[i] === 'require') {\n reified[i] = requireModule;\n } else {\n reified[i] = internalRequire(deps[i], name);\n }\n }\n\n callback.apply(this, reified);\n\n return exports;\n }\n\n var isNode = typeof window === 'undefined' &&\n typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';\n\n if (!isNode) {\n Ember = this.Ember = this.Ember || {};\n }\n\n if (typeof Ember === 'undefined') { Ember = {}; }\n\n if (typeof Ember.__loader === 'undefined') {\n var registry = {};\n var seen = {};\n\n enifed = function(name, deps, callback) {\n var value = { };\n\n if (!callback) {\n value.deps = [];\n value.callback = deps;\n } else {\n value.deps = deps;\n value.callback = callback;\n }\n\n registry[name] = value;\n };\n\n requireModule = function(name) {\n return internalRequire(name, null);\n };\n\n // setup `require` module\n requireModule['default'] = requireModule;\n\n requireModule.has = function registryHas(moduleName) {\n return !!registry[moduleName] || !!registry[moduleName + '/index'];\n };\n\n requireModule._eak_seen = registry;\n\n Ember.__loader = {\n define: enifed,\n require: requireModule,\n registry: registry\n };\n } else {\n enifed = Ember.__loader.define;\n requireModule = Ember.__loader.require;\n }\n})();\n","QUnit.module('ESLint | alias.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'alias.js should pass ESLint\\n\\n');\n});\n","QUnit.module('ESLint | binding.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'binding.js should pass ESLint\\n\\n');\n});\n","QUnit.module('ESLint | cache.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'cache.js should pass ESLint\\n\\n');\n});\n","QUnit.module('ESLint | chains.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'chains.js should pass ESLint\\n\\n');\n});\n","QUnit.module('ESLint | computed.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'computed.js should pass ESLint\\n\\n');\n});\n","QUnit.module('ESLint | container.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'container.js should pass ESLint\\n\\n');\n});\n","QUnit.module('ESLint | container/lib/container.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'container/lib/container.js should pass ESLint\\n\\n');\n});\n","QUnit.module('ESLint | container/lib/index.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'container/lib/index.js should pass ESLint\\n\\n');\n});\n","QUnit.module('ESLint | container/lib/registry.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'container/lib/registry.js should pass ESLint\\n\\n');\n});\n","enifed('container/tests/container_test', ['ember-babel', 'ember-utils', 'ember-metal', 'ember/features', 'container', 'internal-test-helpers'], function (_emberBabel, _emberUtils, _emberMetal, _features, _container, _internalTestHelpers) {\n 'use strict';\n\n QUnit.module('Container');\n\n QUnit.test('A registered factory returns the same instance each time', function () {\n var registry = new _container.Registry();\n var container = registry.container();\n var PostController = (0, _internalTestHelpers.factory)();\n\n registry.register('controller:post', PostController);\n\n var postController = container.lookup('controller:post');\n\n ok(postController instanceof PostController, 'The lookup is an instance of the factory');\n\n equal(postController, container.lookup('controller:post'));\n });\n\n QUnit.test('uses create time injections if factory has no extend', function () {\n var registry = new _container.Registry();\n var container = registry.container();\n var AppleController = (0, _internalTestHelpers.factory)();\n var PostController = (0, _internalTestHelpers.factory)();\n\n PostController.extend = undefined; // remove extend\n\n registry.register('controller:apple', AppleController);\n registry.register('controller:post', PostController);\n registry.injection('controller:post', 'apple', 'controller:apple');\n\n var postController = container.lookup('controller:post');\n\n ok(postController.apple instanceof AppleController, 'instance receives an apple of instance AppleController');\n });\n\n QUnit.test('A registered factory returns a fresh instance if singleton: false is passed as an option', function () {\n var registry = new _container.Registry();\n var container = registry.container();\n var PostController = (0, _internalTestHelpers.factory)();\n\n registry.register('controller:post', PostController);\n\n var postController1 = container.lookup('controller:post');\n var postController2 = container.lookup('controller:post', { singleton: false });\n var postController3 = container.lookup('controller:post', { singleton: false });\n var postController4 = container.lookup('controller:post');\n\n equal(postController1.toString(), postController4.toString(), 'Singleton factories looked up normally return the same value');\n notEqual(postController1.toString(), postController2.toString(), 'Singleton factories are not equal to factories looked up with singleton: false');\n notEqual(postController2.toString(), postController3.toString(), 'Two factories looked up with singleton: false are not equal');\n notEqual(postController3.toString(), postController4.toString(), 'A singleton factory looked up after a factory called with singleton: false is not equal');\n\n ok(postController1 instanceof PostController, 'All instances are instances of the registered factory');\n ok(postController2 instanceof PostController, 'All instances are instances of the registered factory');\n ok(postController3 instanceof PostController, 'All instances are instances of the registered factory');\n ok(postController4 instanceof PostController, 'All instances are instances of the registered factory');\n });\n\n QUnit.test('A factory type with a registered injection\\'s instances receive that injection', function () {\n var registry = new _container.Registry();\n var container = registry.container();\n var PostController = (0, _internalTestHelpers.factory)();\n var Store = (0, _internalTestHelpers.factory)();\n\n registry.register('controller:post', PostController);\n registry.register('store:main', Store);\n\n registry.typeInjection('controller', 'store', 'store:main');\n\n var postController = container.lookup('controller:post');\n var store = container.lookup('store:main');\n\n equal(postController.store, store);\n });\n\n QUnit.test('An individual factory with a registered injection receives the injection', function () {\n var registry = new _container.Registry();\n var container = registry.container();\n var PostController = (0, _internalTestHelpers.factory)();\n var Store = (0, _internalTestHelpers.factory)();\n\n registry.register('controller:post', PostController);\n registry.register('store:main', Store);\n\n registry.injection('controller:post', 'store', 'store:main');\n\n var postController = container.lookup('controller:post');\n var store = container.lookup('store:main');\n\n equal(postController.store, store, 'has the correct store injected');\n });\n\n QUnit.test('A factory with both type and individual injections', function () {\n var registry = new _container.Registry();\n var container = registry.container();\n var PostController = (0, _internalTestHelpers.factory)();\n var Store = (0, _internalTestHelpers.factory)();\n var Router = (0, _internalTestHelpers.factory)();\n\n registry.register('controller:post', PostController);\n registry.register('store:main', Store);\n registry.register('router:main', Router);\n\n registry.injection('controller:post', 'store', 'store:main');\n registry.typeInjection('controller', 'router', 'router:main');\n\n var postController = container.lookup('controller:post');\n var store = container.lookup('store:main');\n var router = container.lookup('router:main');\n\n equal(postController.store, store);\n equal(postController.router, router);\n });\n\n QUnit.test('A non-singleton instance is never cached', function () {\n var registry = new _container.Registry();\n var container = registry.container();\n var PostView = (0, _internalTestHelpers.factory)();\n\n registry.register('view:post', PostView, { singleton: false });\n\n var postView1 = container.lookup('view:post');\n var postView2 = container.lookup('view:post');\n\n ok(postView1 !== postView2, 'Non-singletons are not cached');\n });\n\n QUnit.test('A non-instantiated property is not instantiated', function () {\n var registry = new _container.Registry();\n var container = registry.container();\n\n var template = function () {};\n registry.register('template:foo', template, { instantiate: false });\n equal(container.lookup('template:foo'), template);\n });\n\n QUnit.test('A failed lookup returns undefined', function () {\n var registry = new _container.Registry();\n var container = registry.container();\n\n equal(container.lookup('doesnot:exist'), undefined);\n });\n\n QUnit.test('An invalid factory throws an error', function () {\n var registry = new _container.Registry();\n var container = registry.container();\n\n registry.register('controller:foo', {});\n\n throws(function () {\n container.lookup('controller:foo');\n }, /Failed to create an instance of \\'controller:foo\\'/);\n });\n\n QUnit.test('Injecting a failed lookup raises an error', function () {\n var registry = new _container.Registry();\n var container = registry.container();\n\n var fooInstance = {};\n var fooFactory = {};\n\n var Foo = {\n create: function (args) {\n return fooInstance;\n },\n extend: function (args) {\n return fooFactory;\n }\n };\n\n registry.register('model:foo', Foo);\n registry.injection('model:foo', 'store', 'store:main');\n\n throws(function () {\n container.lookup('model:foo');\n });\n });\n\n QUnit.test('Injecting a falsy value does not raise an error', function () {\n var registry = new _container.Registry();\n var container = registry.container();\n var ApplicationController = (0, _internalTestHelpers.factory)();\n\n registry.register('controller:application', ApplicationController);\n registry.register('user:current', null, { instantiate: false });\n registry.injection('controller:application', 'currentUser', 'user:current');\n\n strictEqual(container.lookup('controller:application').currentUser, null);\n });\n\n QUnit.test('The container returns same value each time even if the value is falsy', function () {\n var registry = new _container.Registry();\n var container = registry.container();\n\n registry.register('falsy:value', null, { instantiate: false });\n\n strictEqual(container.lookup('falsy:value'), container.lookup('falsy:value'));\n });\n\n QUnit.test('Destroying the container destroys any cached singletons', function () {\n var registry = new _container.Registry();\n var container = registry.container();\n var PostController = (0, _internalTestHelpers.factory)();\n var PostView = (0, _internalTestHelpers.factory)();\n var template = function () {};\n\n registry.register('controller:post', PostController);\n registry.register('view:post', PostView, { singleton: false });\n registry.register('template:post', template, { instantiate: false });\n\n registry.injection('controller:post', 'postView', 'view:post');\n\n var postController = container.lookup('controller:post');\n var postView = postController.postView;\n\n ok(postView instanceof PostView, 'The non-singleton was injected');\n\n container.destroy();\n\n ok(postController.isDestroyed, 'Singletons are destroyed');\n ok(!postView.isDestroyed, 'Non-singletons are not destroyed');\n });\n\n QUnit.test('The container can use a registry hook to resolve factories lazily', function () {\n var registry = new _container.Registry();\n var container = registry.container();\n var PostController = (0, _internalTestHelpers.factory)();\n\n registry.resolver = {\n resolve: function (fullName) {\n if (fullName === 'controller:post') {\n return PostController;\n }\n }\n };\n\n var postController = container.lookup('controller:post');\n\n ok(postController instanceof PostController, 'The correct factory was provided');\n });\n\n QUnit.test('The container normalizes names before resolving', function () {\n var registry = new _container.Registry();\n var container = registry.container();\n var PostController = (0, _internalTestHelpers.factory)();\n\n registry.normalizeFullName = function (fullName) {\n return 'controller:post';\n };\n\n registry.register('controller:post', PostController);\n var postController = container.lookup('controller:normalized');\n\n ok(postController instanceof PostController, 'Normalizes the name before resolving');\n });\n\n QUnit.test('The container normalizes names when looking factory up', function () {\n var registry = new _container.Registry();\n var container = registry.container();\n var PostController = (0, _internalTestHelpers.factory)();\n\n registry.normalizeFullName = function (fullName) {\n return 'controller:post';\n };\n\n registry.register('controller:post', PostController);\n var fact = container.factoryFor('controller:normalized');\n\n var factInstance = fact.create();\n ok(factInstance instanceof PostController, 'Normalizes the name');\n });\n\n QUnit.test('Options can be registered that should be applied to a given factory', function () {\n var registry = new _container.Registry();\n var container = registry.container();\n var PostView = (0, _internalTestHelpers.factory)();\n\n registry.resolver = {\n resolve: function (fullName) {\n if (fullName === 'view:post') {\n return PostView;\n }\n }\n };\n\n registry.options('view:post', { instantiate: true, singleton: false });\n\n var postView1 = container.lookup('view:post');\n var postView2 = container.lookup('view:post');\n\n ok(postView1 instanceof PostView, 'The correct factory was provided');\n ok(postView2 instanceof PostView, 'The correct factory was provided');\n\n ok(postView1 !== postView2, 'The two lookups are different');\n });\n\n QUnit.test('Options can be registered that should be applied to all factories for a given type', function () {\n var registry = new _container.Registry();\n var container = registry.container();\n var PostView = (0, _internalTestHelpers.factory)();\n\n registry.resolver = {\n resolve: function (fullName) {\n if (fullName === 'view:post') {\n return PostView;\n }\n }\n };\n\n registry.optionsForType('view', { singleton: false });\n\n var postView1 = container.lookup('view:post');\n var postView2 = container.lookup('view:post');\n\n ok(postView1 instanceof PostView, 'The correct factory was provided');\n ok(postView2 instanceof PostView, 'The correct factory was provided');\n\n ok(postView1 !== postView2, 'The two lookups are different');\n });\n\n QUnit.test('An injected non-singleton instance is never cached', function () {\n var registry = new _container.Registry();\n var container = registry.container();\n var PostView = (0, _internalTestHelpers.factory)();\n var PostViewHelper = (0, _internalTestHelpers.factory)();\n\n registry.register('view:post', PostView, { singleton: false });\n registry.register('view_helper:post', PostViewHelper, { singleton: false });\n registry.injection('view:post', 'viewHelper', 'view_helper:post');\n\n var postView1 = container.lookup('view:post');\n var postView2 = container.lookup('view:post');\n\n ok(postView1.viewHelper !== postView2.viewHelper, 'Injected non-singletons are not cached');\n });\n\n QUnit.test('Factory resolves are cached', function () {\n var registry = new _container.Registry();\n var container = registry.container();\n var PostController = (0, _internalTestHelpers.factory)();\n var resolveWasCalled = [];\n registry.resolve = function (fullName) {\n resolveWasCalled.push(fullName);\n return PostController;\n };\n\n deepEqual(resolveWasCalled, []);\n container.factoryFor('controller:post');\n deepEqual(resolveWasCalled, ['controller:post']);\n\n container.factoryFor('controller:post');\n deepEqual(resolveWasCalled, ['controller:post']);\n });\n\n QUnit.test('factory for non extendables (MODEL) resolves are cached', function () {\n var registry = new _container.Registry();\n var container = registry.container();\n var PostController = (0, _internalTestHelpers.factory)();\n var resolveWasCalled = [];\n registry.resolve = function (fullName) {\n resolveWasCalled.push(fullName);\n return PostController;\n };\n\n deepEqual(resolveWasCalled, []);\n container.factoryFor('model:post');\n deepEqual(resolveWasCalled, ['model:post']);\n\n container.factoryFor('model:post');\n deepEqual(resolveWasCalled, ['model:post']);\n });\n\n QUnit.test('factory for non extendables resolves are cached', function () {\n var registry = new _container.Registry();\n var container = registry.container();\n var PostController = {};\n var resolveWasCalled = [];\n\n registry.resolve = function (fullName) {\n resolveWasCalled.push(fullName);\n return PostController;\n };\n\n deepEqual(resolveWasCalled, []);\n container.factoryFor('foo:post');\n deepEqual(resolveWasCalled, ['foo:post']);\n\n container.factoryFor('foo:post');\n deepEqual(resolveWasCalled, ['foo:post']);\n });\n\n QUnit.test('A factory\\'s lazy injections are validated when first instantiated', function () {\n var registry = new _container.Registry();\n var container = registry.container();\n var Apple = (0, _internalTestHelpers.factory)();\n var Orange = (0, _internalTestHelpers.factory)();\n\n Apple.reopenClass({\n _lazyInjections: function () {\n return ['orange:main', 'banana:main'];\n }\n });\n\n registry.register('apple:main', Apple);\n registry.register('orange:main', Orange);\n\n throws(function () {\n container.lookup('apple:main');\n }, /Attempting to inject an unknown injection: 'banana:main'/);\n });\n\n QUnit.test('Lazy injection validations are cached', function () {\n expect(1);\n\n var registry = new _container.Registry();\n var container = registry.container();\n var Apple = (0, _internalTestHelpers.factory)();\n var Orange = (0, _internalTestHelpers.factory)();\n\n Apple.reopenClass({\n _lazyInjections: function () {\n ok(true, 'should call lazy injection method');\n return ['orange:main'];\n }\n });\n\n registry.register('apple:main', Apple);\n registry.register('orange:main', Orange);\n\n container.lookup('apple:main');\n container.lookup('apple:main');\n });\n\n QUnit.test('An object with its owner pre-set should be returned from ownerInjection', function () {\n var owner = {};\n var registry = new _container.Registry();\n var container = registry.container({ owner: owner });\n\n var result = container.ownerInjection();\n\n equal(result[_emberUtils.OWNER], owner, 'owner is properly included');\n });\n\n QUnit.test('lookup passes options through to expandlocallookup', function (assert) {\n var registry = new _container.Registry();\n var container = registry.container();\n var PostController = (0, _internalTestHelpers.factory)();\n\n registry.register('controller:post', PostController);\n registry.expandLocalLookup = function (fullName, options) {\n assert.ok(true, 'expandLocalLookup was called');\n assert.equal(fullName, 'foo:bar');\n assert.deepEqual(options, { source: 'baz:qux' });\n\n return 'controller:post';\n };\n\n var PostControllerLookupResult = container.lookup('foo:bar', { source: 'baz:qux' });\n\n assert.ok(PostControllerLookupResult instanceof PostController);\n });\n\n QUnit.test('#factoryFor class is registered class', function (assert) {\n var registry = new _container.Registry();\n var container = registry.container();\n\n var Component = (0, _internalTestHelpers.factory)();\n registry.register('component:foo-bar', Component);\n\n var factoryManager = container.factoryFor('component:foo-bar');\n assert.deepEqual(factoryManager.class, Component, 'No double extend');\n });\n\n QUnit.test('#factoryFor must supply a fullname', function (assert) {\n var registry = new _container.Registry();\n var container = registry.container();\n expectAssertion(function () {\n container.factoryFor('chad-bar');\n }, /fullName must be a proper full name/);\n });\n\n QUnit.test('#factoryFor returns a factory manager', function (assert) {\n var registry = new _container.Registry();\n var container = registry.container();\n\n var Component = (0, _internalTestHelpers.factory)();\n registry.register('component:foo-bar', Component);\n\n var factoryManager = container.factoryFor('component:foo-bar');\n assert.ok(factoryManager.create);\n assert.ok(factoryManager.class);\n });\n\n QUnit.test('#factoryFor returns a cached factory manager for the same type', function (assert) {\n var registry = new _container.Registry();\n var container = registry.container();\n\n var Component = (0, _internalTestHelpers.factory)();\n registry.register('component:foo-bar', Component);\n registry.register('component:baz-bar', Component);\n\n var factoryManager1 = container.factoryFor('component:foo-bar');\n var factoryManager2 = container.factoryFor('component:foo-bar');\n var factoryManager3 = container.factoryFor('component:baz-bar');\n\n assert.equal(factoryManager1, factoryManager2, 'cache hit');\n assert.notEqual(factoryManager1, factoryManager3, 'cache miss');\n });\n\n QUnit.test('#factoryFor class returns the factory function', function (assert) {\n var registry = new _container.Registry();\n var container = registry.container();\n\n var Component = (0, _internalTestHelpers.factory)();\n registry.register('component:foo-bar', Component);\n\n var factoryManager = container.factoryFor('component:foo-bar');\n assert.deepEqual(factoryManager.class, Component, 'No double extend');\n });\n\n QUnit.test('#factoryFor instance have a common parent', function (assert) {\n var registry = new _container.Registry();\n var container = registry.container();\n\n var Component = (0, _internalTestHelpers.factory)();\n registry.register('component:foo-bar', Component);\n\n var factoryManager1 = container.factoryFor('component:foo-bar');\n var factoryManager2 = container.factoryFor('component:foo-bar');\n var instance1 = factoryManager1.create({ foo: 'foo' });\n var instance2 = factoryManager2.create({ bar: 'bar' });\n\n assert.deepEqual(instance1.constructor, instance2.constructor);\n });\n\n QUnit.test('can properly reset cache', function (assert) {\n var registry = new _container.Registry();\n var container = registry.container();\n\n var Component = (0, _internalTestHelpers.factory)();\n registry.register('component:foo-bar', Component);\n\n var factory1 = container.factoryFor('component:foo-bar');\n var factory2 = container.factoryFor('component:foo-bar');\n\n var instance1 = container.lookup('component:foo-bar');\n var instance2 = container.lookup('component:foo-bar');\n\n assert.equal(instance1, instance2);\n assert.equal(factory1, factory2);\n\n container.reset();\n\n var factory3 = container.factoryFor('component:foo-bar');\n var instance3 = container.lookup('component:foo-bar');\n\n assert.notEqual(instance1, instance3);\n assert.notEqual(factory1, factory3);\n });\n\n QUnit.test('#factoryFor created instances come with instance injections', function (assert) {\n var registry = new _container.Registry();\n var container = registry.container();\n\n var Component = (0, _internalTestHelpers.factory)();\n var Ajax = (0, _internalTestHelpers.factory)();\n registry.register('component:foo-bar', Component);\n registry.register('util:ajax', Ajax);\n registry.injection('component:foo-bar', 'ajax', 'util:ajax');\n\n var componentFactory = container.factoryFor('component:foo-bar');\n var component = componentFactory.create();\n\n assert.ok(component.ajax);\n assert.ok(component.ajax instanceof Ajax);\n });\n\n QUnit.test('#factoryFor options passed to create clobber injections', function (assert) {\n var registry = new _container.Registry();\n var container = registry.container();\n\n var Component = (0, _internalTestHelpers.factory)();\n var Ajax = (0, _internalTestHelpers.factory)();\n registry.register('component:foo-bar', Component);\n registry.register('util:ajax', Ajax);\n registry.injection('component:foo-bar', 'ajax', 'util:ajax');\n\n var componentFactory = container.factoryFor('component:foo-bar');\n\n var instrance = componentFactory.create({ ajax: 'fetch' });\n\n assert.equal(instrance.ajax, 'fetch');\n });\n\n QUnit.test('#factoryFor does not add properties to the object being instantiated when _initFactory is present', function (assert) {\n var owner = {};\n var registry = new _container.Registry();\n var container = registry.container();\n\n var factory = void 0;\n\n var Component = function () {\n function Component() {\n (0, _emberBabel.classCallCheck)(this, Component);\n }\n\n Component._initFactory = function _initFactory(_factory) {\n factory = _factory;\n };\n\n Component.create = function create(options) {\n var instance = new this();\n (0, _emberUtils.assign)(instance, options);\n return instance;\n };\n\n return Component;\n }();\n\n registry.register('component:foo-bar', Component);\n\n var componentFactory = container.factoryFor('component:foo-bar');\n var instance = componentFactory.create();\n\n // note: _guid and isDestroyed are being set in the `factory` constructor\n // not via registry/container shenanigans\n assert.deepEqual(Object.keys(instance), []);\n });\n\n // this is skipped until templates and the glimmer environment do not require `OWNER` to be\n // passed in as constructor args\n QUnit.skip('#factoryFor does not add properties to the object being instantiated', function (assert) {\n var owner = {};\n var registry = new _container.Registry();\n var container = registry.container();\n\n var factory = void 0;\n\n var Component = function () {\n function Component() {\n (0, _emberBabel.classCallCheck)(this, Component);\n }\n\n Component.create = function create(options) {\n var instance = new this();\n (0, _emberUtils.assign)(instance, options);\n return instance;\n };\n\n return Component;\n }();\n\n registry.register('component:foo-bar', Component);\n\n var componentFactory = container.factoryFor('component:foo-bar');\n var instance = componentFactory.create();\n\n // note: _guid and isDestroyed are being set in the `factory` constructor\n // not via registry/container shenanigans\n assert.deepEqual(Object.keys(instance), []);\n });\n\n if (_features.EMBER_MODULE_UNIFICATION) {\n QUnit.module('Container module unification');\n\n QUnit.test('The container can pass a source to factoryFor', function (assert) {\n var PrivateComponent = (0, _internalTestHelpers.factory)();\n var lookup = 'component:my-input';\n var expectedSource = 'template:routes/application';\n var registry = new _container.Registry();\n var resolveCount = 0;\n registry.resolve = function (fullName, _ref) {\n var source = _ref.source;\n\n resolveCount++;\n if (fullName === lookup && source === expectedSource) {\n return PrivateComponent;\n }\n };\n\n var container = registry.container();\n\n assert.strictEqual(container.factoryFor(lookup, { source: expectedSource }).class, PrivateComponent, 'The correct factory was provided');\n assert.strictEqual(container.factoryFor(lookup, { source: expectedSource }).class, PrivateComponent, 'The correct factory was provided again');\n assert.equal(resolveCount, 1, 'resolve called only once and a cached factory was returned the second time');\n });\n\n QUnit.test('The container can pass a source to lookup', function (assert) {\n var PrivateComponent = (0, _internalTestHelpers.factory)();\n var lookup = 'component:my-input';\n var expectedSource = 'template:routes/application';\n var registry = new _container.Registry();\n registry.resolve = function (fullName, _ref2) {\n var source = _ref2.source;\n\n if (fullName === lookup && source === expectedSource) {\n return PrivateComponent;\n }\n };\n\n var container = registry.container();\n\n var result = container.lookup(lookup, { source: expectedSource });\n assert.ok(result instanceof PrivateComponent, 'The correct factory was provided');\n\n assert.ok(container.cache['template:routes/application:component:my-input'] instanceof PrivateComponent, 'The correct factory was stored in the cache with the correct key which includes the source.');\n });\n }\n});","QUnit.module('ESLint | container/tests/container_test.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'container/tests/container_test.js should pass ESLint\\n\\n');\n});\n","enifed('container/tests/owner_test', ['ember-utils'], function (_emberUtils) {\n 'use strict';\n\n QUnit.module('Owner', {});\n\n QUnit.test('An owner can be set with `setOwner` and retrieved with `getOwner`', function () {\n var owner = {};\n var obj = {};\n\n strictEqual((0, _emberUtils.getOwner)(obj), undefined, 'owner has not been set');\n\n (0, _emberUtils.setOwner)(obj, owner);\n\n strictEqual((0, _emberUtils.getOwner)(obj), owner, 'owner has been set');\n\n strictEqual(obj[_emberUtils.OWNER], owner, 'owner has been set to the OWNER symbol');\n });\n});","QUnit.module('ESLint | container/tests/owner_test.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'container/tests/owner_test.js should pass ESLint\\n\\n');\n});\n","enifed('container/tests/registry_test', ['container', 'internal-test-helpers', 'ember/features'], function (_container, _internalTestHelpers, _features) {\n 'use strict';\n\n QUnit.module('Registry');\n\n QUnit.test('A registered factory is returned from resolve', function () {\n var registry = new _container.Registry();\n var PostController = (0, _internalTestHelpers.factory)();\n\n registry.register('controller:post', PostController);\n\n var PostControllerFactory = registry.resolve('controller:post');\n\n ok(PostControllerFactory, 'factory is returned');\n ok(PostControllerFactory.create() instanceof PostController, 'The return of factory.create is an instance of PostController');\n });\n\n QUnit.test('The registered factory returned from resolve is the same factory each time', function () {\n var registry = new _container.Registry();\n var PostController = (0, _internalTestHelpers.factory)();\n\n registry.register('controller:post', PostController);\n\n deepEqual(registry.resolve('controller:post'), registry.resolve('controller:post'), 'The return of resolve is always the same');\n });\n\n QUnit.test('The registered value returned from resolve is the same value each time even if the value is falsy', function () {\n var registry = new _container.Registry();\n\n registry.register('falsy:value', null, { instantiate: false });\n\n strictEqual(registry.resolve('falsy:value'), registry.resolve('falsy:value'), 'The return of resolve is always the same');\n });\n\n QUnit.test('The value returned from resolver is the same value as the original value even if the value is falsy', function () {\n var resolver = {\n resolve: function (fullName) {\n if (fullName === 'falsy:value') {\n return null;\n }\n }\n };\n var registry = new _container.Registry({ resolver: resolver });\n\n strictEqual(registry.resolve('falsy:value'), null);\n });\n\n QUnit.test('A registered factory returns true for `has` if an item is registered', function () {\n var registry = new _container.Registry();\n var PostController = (0, _internalTestHelpers.factory)();\n\n registry.register('controller:post', PostController);\n\n equal(registry.has('controller:post'), true, 'The `has` method returned true for registered factories');\n equal(registry.has('controller:posts'), false, 'The `has` method returned false for unregistered factories');\n });\n\n QUnit.test('Throw exception when trying to inject `type:thing` on all type(s)', function () {\n var registry = new _container.Registry();\n var PostController = (0, _internalTestHelpers.factory)();\n\n registry.register('controller:post', PostController);\n\n expectAssertion(function () {\n registry.typeInjection('controller', 'injected', 'controller:post');\n }, /Cannot inject a 'controller:post' on other controller\\(s\\)\\./);\n });\n\n QUnit.test('The registry can take a hook to resolve factories lazily', function () {\n var PostController = (0, _internalTestHelpers.factory)();\n var resolver = {\n resolve: function (fullName) {\n if (fullName === 'controller:post') {\n return PostController;\n }\n }\n };\n var registry = new _container.Registry({ resolver: resolver });\n\n strictEqual(registry.resolve('controller:post'), PostController, 'The correct factory was provided');\n });\n\n QUnit.test('The registry respects the resolver hook for `has`', function () {\n var PostController = (0, _internalTestHelpers.factory)();\n var resolver = {\n resolve: function (fullName) {\n if (fullName === 'controller:post') {\n return PostController;\n }\n }\n };\n var registry = new _container.Registry({ resolver: resolver });\n\n ok(registry.has('controller:post'), 'the `has` method uses the resolver hook');\n });\n\n QUnit.test('The registry normalizes names when resolving', function () {\n var registry = new _container.Registry();\n var PostController = (0, _internalTestHelpers.factory)();\n\n registry.normalizeFullName = function (fullName) {\n return 'controller:post';\n };\n\n registry.register('controller:post', PostController);\n var type = registry.resolve('controller:normalized');\n\n strictEqual(type, PostController, 'Normalizes the name when resolving');\n });\n\n QUnit.test('The registry normalizes names when checking if the factory is registered', function () {\n var registry = new _container.Registry();\n var PostController = (0, _internalTestHelpers.factory)();\n\n registry.normalizeFullName = function (fullName) {\n return fullName === 'controller:normalized' ? 'controller:post' : fullName;\n };\n\n registry.register('controller:post', PostController);\n var isPresent = registry.has('controller:normalized');\n\n equal(isPresent, true, 'Normalizes the name when checking if the factory or instance is present');\n });\n\n QUnit.test('The registry normalizes names when injecting', function () {\n var registry = new _container.Registry();\n var PostController = (0, _internalTestHelpers.factory)();\n var user = { name: 'Stef' };\n\n registry.normalize = function (fullName) {\n return 'controller:post';\n };\n\n registry.register('controller:post', PostController);\n registry.register('user:post', user, { instantiate: false });\n registry.injection('controller:post', 'user', 'controller:normalized');\n\n deepEqual(registry.resolve('controller:post'), user, 'Normalizes the name when injecting');\n });\n\n QUnit.test('cannot register an `undefined` factory', function () {\n var registry = new _container.Registry();\n\n throws(function () {\n registry.register('controller:apple', undefined);\n }, '');\n });\n\n QUnit.test('can re-register a factory', function () {\n var registry = new _container.Registry();\n var FirstApple = (0, _internalTestHelpers.factory)('first');\n var SecondApple = (0, _internalTestHelpers.factory)('second');\n\n registry.register('controller:apple', FirstApple);\n registry.register('controller:apple', SecondApple);\n\n ok(registry.resolve('controller:apple').create() instanceof SecondApple);\n });\n\n QUnit.test('cannot re-register a factory if it has been resolved', function () {\n var registry = new _container.Registry();\n var FirstApple = (0, _internalTestHelpers.factory)('first');\n var SecondApple = (0, _internalTestHelpers.factory)('second');\n\n registry.register('controller:apple', FirstApple);\n strictEqual(registry.resolve('controller:apple'), FirstApple);\n\n expectAssertion(function () {\n registry.register('controller:apple', SecondApple);\n }, /Cannot re-register: 'controller:apple', as it has already been resolved\\./);\n\n strictEqual(registry.resolve('controller:apple'), FirstApple);\n });\n\n QUnit.test('registry.has should not accidentally cause injections on that factory to be run. (Mitigate merely on observing)', function () {\n expect(1);\n\n var registry = new _container.Registry();\n var FirstApple = (0, _internalTestHelpers.factory)('first');\n var SecondApple = (0, _internalTestHelpers.factory)('second');\n\n SecondApple.extend = function (a, b, c) {\n ok(false, 'should not extend or touch the injected model, merely to inspect existence of another');\n };\n\n registry.register('controller:apple', FirstApple);\n registry.register('controller:second-apple', SecondApple);\n registry.injection('controller:apple', 'badApple', 'controller:second-apple');\n\n ok(registry.has('controller:apple'));\n });\n\n QUnit.test('registry.has should not error for invalid fullNames)', function () {\n expect(1);\n\n var registry = new _container.Registry();\n\n ok(!registry.has('foo:bar:baz'));\n });\n\n QUnit.test('once resolved, always return the same result', function () {\n expect(1);\n\n var registry = new _container.Registry();\n\n registry.resolver = {\n resolve: function () {\n return 'bar';\n }\n };\n\n var Bar = registry.resolve('models:bar');\n\n registry.resolver = {\n resolve: function () {\n return 'not bar';\n }\n };\n\n equal(registry.resolve('models:bar'), Bar);\n });\n\n QUnit.test('factory resolves are cached', function () {\n var registry = new _container.Registry();\n var PostController = (0, _internalTestHelpers.factory)();\n var resolveWasCalled = [];\n\n registry.resolver = {\n resolve: function (fullName) {\n resolveWasCalled.push(fullName);\n return PostController;\n }\n };\n\n deepEqual(resolveWasCalled, []);\n registry.resolve('controller:post');\n deepEqual(resolveWasCalled, ['controller:post']);\n\n registry.resolve('controller:post');\n deepEqual(resolveWasCalled, ['controller:post']);\n });\n\n QUnit.test('factory for non extendables (MODEL) resolves are cached', function () {\n var registry = new _container.Registry();\n var PostController = (0, _internalTestHelpers.factory)();\n var resolveWasCalled = [];\n\n registry.resolver = {\n resolve: function (fullName) {\n resolveWasCalled.push(fullName);\n return PostController;\n }\n };\n\n deepEqual(resolveWasCalled, []);\n registry.resolve('model:post');\n deepEqual(resolveWasCalled, ['model:post']);\n\n registry.resolve('model:post');\n deepEqual(resolveWasCalled, ['model:post']);\n });\n\n QUnit.test('factory for non extendables resolves are cached', function () {\n var registry = new _container.Registry();\n var PostController = {};\n var resolveWasCalled = [];\n\n registry.resolver = {\n resolve: function (fullName) {\n resolveWasCalled.push(fullName);\n return PostController;\n }\n };\n\n deepEqual(resolveWasCalled, []);\n registry.resolve('foo:post');\n deepEqual(resolveWasCalled, ['foo:post']);\n\n registry.resolve('foo:post');\n deepEqual(resolveWasCalled, ['foo:post']);\n });\n\n QUnit.test('registry.container creates a container', function () {\n var registry = new _container.Registry();\n var PostController = (0, _internalTestHelpers.factory)();\n registry.register('controller:post', PostController);\n\n var container = registry.container();\n var postController = container.lookup('controller:post');\n\n ok(postController instanceof PostController, 'The lookup is an instance of the registered factory');\n });\n\n QUnit.test('`describe` will be handled by the resolver, then by the fallback registry, if available', function () {\n var fallback = {\n describe: function (fullName) {\n return fullName + '-fallback';\n }\n };\n\n var resolver = {\n lookupDescription: function (fullName) {\n return fullName + '-resolver';\n }\n };\n\n var registry = new _container.Registry({ fallback: fallback, resolver: resolver });\n\n equal(registry.describe('controller:post'), 'controller:post-resolver', '`describe` handled by the resolver first.');\n\n registry.resolver = null;\n\n equal(registry.describe('controller:post'), 'controller:post-fallback', '`describe` handled by fallback registry next.');\n\n registry.fallback = null;\n\n equal(registry.describe('controller:post'), 'controller:post', '`describe` by default returns argument.');\n });\n\n QUnit.test('`normalizeFullName` will be handled by the resolver, then by the fallback registry, if available', function () {\n var fallback = {\n normalizeFullName: function (fullName) {\n return fullName + '-fallback';\n }\n };\n\n var resolver = {\n normalize: function (fullName) {\n return fullName + '-resolver';\n }\n };\n\n var registry = new _container.Registry({ fallback: fallback, resolver: resolver });\n\n equal(registry.normalizeFullName('controller:post'), 'controller:post-resolver', '`normalizeFullName` handled by the resolver first.');\n\n registry.resolver = null;\n\n equal(registry.normalizeFullName('controller:post'), 'controller:post-fallback', '`normalizeFullName` handled by fallback registry next.');\n\n registry.fallback = null;\n\n equal(registry.normalizeFullName('controller:post'), 'controller:post', '`normalizeFullName` by default returns argument.');\n });\n\n QUnit.test('`makeToString` will be handled by the resolver, then by the fallback registry, if available', function () {\n var fallback = {\n makeToString: function (fullName) {\n return fullName + '-fallback';\n }\n };\n\n var resolver = {\n makeToString: function (fullName) {\n return fullName + '-resolver';\n }\n };\n\n var registry = new _container.Registry({ fallback: fallback, resolver: resolver });\n\n equal(registry.makeToString('controller:post'), 'controller:post-resolver', '`makeToString` handled by the resolver first.');\n\n registry.resolver = null;\n\n equal(registry.makeToString('controller:post'), 'controller:post-fallback', '`makeToString` handled by fallback registry next.');\n\n registry.fallback = null;\n\n equal(registry.makeToString('controller:post'), 'controller:post', '`makeToString` by default returns argument.');\n });\n\n QUnit.test('`resolve` can be handled by a fallback registry', function () {\n var fallback = new _container.Registry();\n\n var registry = new _container.Registry({ fallback: fallback });\n var PostController = (0, _internalTestHelpers.factory)();\n\n fallback.register('controller:post', PostController);\n\n var PostControllerFactory = registry.resolve('controller:post');\n\n ok(PostControllerFactory, 'factory is returned');\n ok(PostControllerFactory.create() instanceof PostController, 'The return of factory.create is an instance of PostController');\n });\n\n QUnit.test('`has` can be handled by a fallback registry', function () {\n var fallback = new _container.Registry();\n\n var registry = new _container.Registry({ fallback: fallback });\n var PostController = (0, _internalTestHelpers.factory)();\n\n fallback.register('controller:post', PostController);\n\n equal(registry.has('controller:post'), true, 'Fallback registry is checked for registration');\n });\n\n QUnit.test('`getInjections` includes injections from a fallback registry', function () {\n var fallback = new _container.Registry();\n var registry = new _container.Registry({ fallback: fallback });\n\n equal(registry.getInjections('model:user').length, 0, 'No injections in the primary registry');\n\n fallback.injection('model:user', 'post', 'model:post');\n\n equal(registry.getInjections('model:user').length, 1, 'Injections from the fallback registry are merged');\n });\n\n QUnit.test('`getTypeInjections` includes type injections from a fallback registry', function () {\n var fallback = new _container.Registry();\n var registry = new _container.Registry({ fallback: fallback });\n\n equal(registry.getTypeInjections('model').length, 0, 'No injections in the primary registry');\n\n fallback.injection('model', 'source', 'source:main');\n\n equal(registry.getTypeInjections('model').length, 1, 'Injections from the fallback registry are merged');\n });\n\n QUnit.test('`knownForType` contains keys for each item of a given type', function () {\n var registry = new _container.Registry();\n\n registry.register('foo:bar-baz', 'baz');\n registry.register('foo:qux-fez', 'fez');\n\n var found = registry.knownForType('foo');\n\n deepEqual(found, {\n 'foo:bar-baz': true,\n 'foo:qux-fez': true\n });\n });\n\n QUnit.test('`knownForType` includes fallback registry results', function () {\n var fallback = new _container.Registry();\n var registry = new _container.Registry({ fallback: fallback });\n\n registry.register('foo:bar-baz', 'baz');\n registry.register('foo:qux-fez', 'fez');\n fallback.register('foo:zurp-zorp', 'zorp');\n\n var found = registry.knownForType('foo');\n\n deepEqual(found, {\n 'foo:bar-baz': true,\n 'foo:qux-fez': true,\n 'foo:zurp-zorp': true\n });\n });\n\n QUnit.test('`knownForType` is called on the resolver if present', function () {\n expect(3);\n\n var resolver = {\n knownForType: function (type) {\n ok(true, 'knownForType called on the resolver');\n equal(type, 'foo', 'the type was passed through');\n\n return { 'foo:yorp': true };\n }\n };\n\n var registry = new _container.Registry({\n resolver: resolver\n });\n registry.register('foo:bar-baz', 'baz');\n\n var found = registry.knownForType('foo');\n\n deepEqual(found, {\n 'foo:yorp': true,\n 'foo:bar-baz': true\n });\n });\n\n QUnit.test('A registry can be created with a deprecated `resolver` function instead of an object', function () {\n expect(2);\n\n var registry = void 0;\n\n expectDeprecation(function () {\n registry = new _container.Registry({\n resolver: function (fullName) {\n return fullName + '-resolved';\n }\n });\n }, 'Passing a `resolver` function into a Registry is deprecated. Please pass in a Resolver object with a `resolve` method.');\n\n equal(registry.resolve('foo:bar'), 'foo:bar-resolved', '`resolve` still calls the deprecated function');\n });\n\n QUnit.test('resolver.expandLocalLookup is not required', function (assert) {\n assert.expect(1);\n\n var registry = new _container.Registry({\n resolver: {}\n });\n\n var result = registry.expandLocalLookup('foo:bar', {\n source: 'baz:qux'\n });\n\n assert.equal(result, null);\n });\n\n QUnit.test('expandLocalLookup is called on the resolver if present', function (assert) {\n assert.expect(4);\n\n var resolver = {\n expandLocalLookup: function (targetFullName, sourceFullName) {\n assert.ok(true, 'expandLocalLookup is called on the resolver');\n assert.equal(targetFullName, 'foo:bar', 'the targetFullName was passed through');\n assert.equal(sourceFullName, 'baz:qux', 'the sourceFullName was passed through');\n\n return 'foo:qux/bar';\n }\n };\n\n var registry = new _container.Registry({\n resolver: resolver\n });\n\n var result = registry.expandLocalLookup('foo:bar', {\n source: 'baz:qux'\n });\n\n assert.equal(result, 'foo:qux/bar');\n });\n\n QUnit.test('`expandLocalLookup` is handled by the resolver, then by the fallback registry, if available', function (assert) {\n assert.expect(9);\n\n var fallbackResolver = {\n expandLocalLookup: function (targetFullName, sourceFullName) {\n assert.ok(true, 'expandLocalLookup is called on the fallback resolver');\n assert.equal(targetFullName, 'foo:bar', 'the targetFullName was passed through');\n assert.equal(sourceFullName, 'baz:qux', 'the sourceFullName was passed through');\n\n return 'foo:qux/bar-fallback';\n }\n };\n\n var resolver = {\n expandLocalLookup: function (targetFullName, sourceFullName) {\n assert.ok(true, 'expandLocalLookup is called on the resolver');\n assert.equal(targetFullName, 'foo:bar', 'the targetFullName was passed through');\n assert.equal(sourceFullName, 'baz:qux', 'the sourceFullName was passed through');\n\n return 'foo:qux/bar-resolver';\n }\n };\n\n var fallbackRegistry = new _container.Registry({\n resolver: fallbackResolver\n });\n\n var registry = new _container.Registry({\n fallback: fallbackRegistry,\n resolver: resolver\n });\n\n var result = registry.expandLocalLookup('foo:bar', {\n source: 'baz:qux'\n });\n\n assert.equal(result, 'foo:qux/bar-resolver', 'handled by the resolver');\n\n registry.resolver = null;\n\n result = registry.expandLocalLookup('foo:bar', {\n source: 'baz:qux'\n });\n\n assert.equal(result, 'foo:qux/bar-fallback', 'handled by the fallback registry');\n\n registry.fallback = null;\n\n result = registry.expandLocalLookup('foo:bar', {\n source: 'baz:qux'\n });\n\n assert.equal(result, null, 'null is returned by default when no resolver or fallback registry is present');\n });\n\n QUnit.test('resolver.expandLocalLookup result is cached', function (assert) {\n assert.expect(3);\n var result = void 0;\n\n var resolver = {\n expandLocalLookup: function (targetFullName, sourceFullName) {\n assert.ok(true, 'expandLocalLookup is called on the resolver');\n\n return 'foo:qux/bar';\n }\n };\n\n var registry = new _container.Registry({\n resolver: resolver\n });\n\n result = registry.expandLocalLookup('foo:bar', {\n source: 'baz:qux'\n });\n\n assert.equal(result, 'foo:qux/bar');\n\n result = registry.expandLocalLookup('foo:bar', {\n source: 'baz:qux'\n });\n\n assert.equal(result, 'foo:qux/bar');\n });\n\n QUnit.test('resolver.expandLocalLookup cache is busted when any unregister is called', function (assert) {\n assert.expect(4);\n var result = void 0;\n\n var resolver = {\n expandLocalLookup: function (targetFullName, sourceFullName) {\n assert.ok(true, 'expandLocalLookup is called on the resolver');\n\n return 'foo:qux/bar';\n }\n };\n\n var registry = new _container.Registry({\n resolver: resolver\n });\n\n result = registry.expandLocalLookup('foo:bar', {\n source: 'baz:qux'\n });\n\n assert.equal(result, 'foo:qux/bar');\n\n registry.unregister('foo:bar');\n\n result = registry.expandLocalLookup('foo:bar', {\n source: 'baz:qux'\n });\n\n assert.equal(result, 'foo:qux/bar');\n });\n\n QUnit.test('resolve calls expandLocallookup when it receives options.source', function (assert) {\n assert.expect(3);\n\n var resolver = {\n resolve: function () {},\n expandLocalLookup: function (targetFullName, sourceFullName) {\n assert.ok(true, 'expandLocalLookup is called on the resolver');\n assert.equal(targetFullName, 'foo:bar', 'the targetFullName was passed through');\n assert.equal(sourceFullName, 'baz:qux', 'the sourceFullName was passed through');\n\n return 'foo:qux/bar';\n }\n };\n\n var registry = new _container.Registry({\n resolver: resolver\n });\n\n registry.resolve('foo:bar', {\n source: 'baz:qux'\n });\n });\n\n QUnit.test('has uses expandLocalLookup', function (assert) {\n assert.expect(5);\n var resolvedFullNames = [];\n var result = void 0;\n\n var resolver = {\n resolve: function (name) {\n if (_features.EMBER_MODULE_UNIFICATION && name === 'foo:baz') {\n return;\n }\n resolvedFullNames.push(name);\n\n return 'yippie!';\n },\n expandLocalLookup: function (targetFullName, sourceFullName) {\n assert.ok(true, 'expandLocalLookup is called on the resolver');\n\n if (targetFullName === 'foo:bar') {\n return 'foo:qux/bar';\n } else {\n return null;\n }\n }\n };\n\n var registry = new _container.Registry({\n resolver: resolver\n });\n\n result = registry.has('foo:bar', {\n source: 'baz:qux'\n });\n\n assert.ok(result, 'found foo:bar/qux');\n\n result = registry.has('foo:baz', {\n source: 'baz:qux'\n });\n\n assert.ok(!result, 'foo:baz/qux not found');\n\n assert.deepEqual(['foo:qux/bar'], resolvedFullNames);\n });\n\n QUnit.module('Registry privatize');\n\n QUnit.test('valid format', function (assert) {\n var privatized = (0, _container.privatize)(['secret:factory']);\n var matched = privatized.match(/^([^:]+):([^:]+)-(\\d+)$/);\n\n assert.ok(matched, 'privatized format was recognized');\n assert.equal(matched[1], 'secret');\n assert.equal(matched[2], 'factory');\n assert.ok(/^\\d+$/.test(matched[3]));\n });\n\n if (_features.EMBER_MODULE_UNIFICATION) {\n QUnit.module('Registry module unification');\n\n QUnit.test('The registry can pass a source to the resolver', function (assert) {\n var PrivateComponent = (0, _internalTestHelpers.factory)();\n var lookup = 'component:my-input';\n var source = 'template:routes/application';\n var resolveCount = 0;\n var resolver = {\n resolve: function (fullName, src) {\n resolveCount++;\n if (fullName === lookup && src === source) {\n return PrivateComponent;\n }\n }\n };\n var registry = new _container.Registry({ resolver: resolver });\n registry.normalize = function (name) {\n return name;\n };\n\n assert.strictEqual(registry.resolve(lookup, { source: source }), PrivateComponent, 'The correct factory was provided');\n assert.strictEqual(registry.resolve(lookup, { source: source }), PrivateComponent, 'The correct factory was provided again');\n assert.equal(resolveCount, 1, 'resolve called only once and a cached factory was returned the second time');\n });\n }\n});","QUnit.module('ESLint | container/tests/registry_test.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'container/tests/registry_test.js should pass ESLint\\n\\n');\n});\n","QUnit.module('ESLint | core.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'core.js should pass ESLint\\n\\n');\n});\n","QUnit.module('ESLint | dependent_keys.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'dependent_keys.js should pass ESLint\\n\\n');\n});\n","QUnit.module('ESLint | deprecate_property.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'deprecate_property.js should pass ESLint\\n\\n');\n});\n","QUnit.module('ESLint | descriptor.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'descriptor.js should pass ESLint\\n\\n');\n});\n","QUnit.module('ESLint | ember-application/lib/index.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-application/lib/index.js should pass ESLint\\n\\n');\n});\n","QUnit.module('ESLint | ember-application/lib/initializers/dom-templates.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-application/lib/initializers/dom-templates.js should pass ESLint\\n\\n');\n});\n","QUnit.module('ESLint | ember-application/lib/system/application-instance.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-application/lib/system/application-instance.js should pass ESLint\\n\\n');\n});\n","QUnit.module('ESLint | ember-application/lib/system/application.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-application/lib/system/application.js should pass ESLint\\n\\n');\n});\n","QUnit.module('ESLint | ember-application/lib/system/engine-instance.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-application/lib/system/engine-instance.js should pass ESLint\\n\\n');\n});\n","QUnit.module('ESLint | ember-application/lib/system/engine-parent.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-application/lib/system/engine-parent.js should pass ESLint\\n\\n');\n});\n","QUnit.module('ESLint | ember-application/lib/system/engine.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-application/lib/system/engine.js should pass ESLint\\n\\n');\n});\n","QUnit.module('ESLint | ember-application/lib/system/resolver.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-application/lib/system/resolver.js should pass ESLint\\n\\n');\n});\n","QUnit.module('ESLint | ember-application/lib/utils/validate-type.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-application/lib/utils/validate-type.js should pass ESLint\\n\\n');\n});\n","enifed('ember-application/tests/system/application_instance_test', ['ember-babel', 'ember-application/system/engine', 'ember-application/system/application', 'ember-application/system/application-instance', 'ember-metal', 'ember-views', 'container', 'internal-test-helpers', 'ember-runtime'], function (_emberBabel, _engine, _application, _applicationInstance, _emberMetal, _emberViews, _container, _internalTestHelpers, _emberRuntime) {\n 'use strict';\n\n var _templateObject = (0, _emberBabel.taggedTemplateLiteralLoose)(['-bucket-cache:main'], ['-bucket-cache:main']);\n\n var application = void 0,\n appInstance = void 0;\n\n QUnit.module('Ember.ApplicationInstance', {\n setup: function () {\n (0, _emberViews.jQuery)('#qunit-fixture').html('<div id=\\'one\\'><div id=\\'one-child\\'>HI</div></div><div id=\\'two\\'>HI</div>');\n application = (0, _emberMetal.run)(function () {\n return _application.default.create({ rootElement: '#one', router: null });\n });\n },\n teardown: function () {\n (0, _emberViews.jQuery)('#qunit-fixture').empty();\n\n if (appInstance) {\n (0, _emberMetal.run)(appInstance, 'destroy');\n }\n\n if (application) {\n (0, _emberMetal.run)(application, 'destroy');\n }\n }\n });\n\n QUnit.test('an application instance can be created based upon an application', function () {\n appInstance = (0, _emberMetal.run)(function () {\n return appInstance = _applicationInstance.default.create({ application: application });\n });\n\n ok(appInstance, 'instance should be created');\n equal(appInstance.application, application, 'application should be set to parent');\n });\n\n QUnit.test('properties (and aliases) are correctly assigned for accessing the container and registry', function () {\n expect(6);\n\n appInstance = (0, _emberMetal.run)(function () {\n return _applicationInstance.default.create({ application: application });\n });\n\n ok(appInstance, 'instance should be created');\n ok(appInstance.__container__, '#__container__ is accessible');\n ok(appInstance.__registry__, '#__registry__ is accessible');\n\n // stub with a no-op to keep deprecation test simple\n appInstance.__container__.lookup = function () {\n ok(true, '#loookup alias is called correctly');\n };\n\n ok(typeof appInstance.registry.register === 'function', '#registry.register is available as a function');\n appInstance.__registry__.register = function () {\n ok(true, '#register alias is called correctly');\n };\n\n expectDeprecation(function () {\n appInstance.registry.register();\n }, /Using `ApplicationInstance.registry.register` is deprecated. Please use `ApplicationInstance.register` instead./);\n });\n\n QUnit.test('customEvents added to the application before setupEventDispatcher', function (assert) {\n assert.expect(1);\n\n appInstance = (0, _emberMetal.run)(function () {\n return _applicationInstance.default.create({ application: application });\n });\n appInstance.setupRegistry();\n\n application.customEvents = {\n awesome: 'sauce'\n };\n\n var eventDispatcher = appInstance.lookup('event_dispatcher:main');\n eventDispatcher.setup = function (events) {\n assert.equal(events.awesome, 'sauce');\n };\n\n appInstance.setupEventDispatcher();\n });\n\n QUnit.test('customEvents added to the application before setupEventDispatcher', function (assert) {\n assert.expect(1);\n\n (0, _emberMetal.run)(function () {\n return appInstance = _applicationInstance.default.create({ application: application });\n });\n appInstance.setupRegistry();\n\n application.customEvents = {\n awesome: 'sauce'\n };\n\n var eventDispatcher = appInstance.lookup('event_dispatcher:main');\n eventDispatcher.setup = function (events) {\n assert.equal(events.awesome, 'sauce');\n };\n\n appInstance.setupEventDispatcher();\n });\n\n QUnit.test('customEvents added to the application instance before setupEventDispatcher', function (assert) {\n assert.expect(1);\n\n appInstance = (0, _emberMetal.run)(function () {\n return _applicationInstance.default.create({ application: application });\n });\n appInstance.setupRegistry();\n\n appInstance.customEvents = {\n awesome: 'sauce'\n };\n\n var eventDispatcher = appInstance.lookup('event_dispatcher:main');\n eventDispatcher.setup = function (events) {\n assert.equal(events.awesome, 'sauce');\n };\n\n appInstance.setupEventDispatcher();\n });\n\n QUnit.test('unregistering a factory clears all cached instances of that factory', function (assert) {\n assert.expect(5);\n\n appInstance = (0, _emberMetal.run)(function () {\n return _applicationInstance.default.create({ application: application });\n });\n\n var PostController1 = (0, _internalTestHelpers.factory)();\n var PostController2 = (0, _internalTestHelpers.factory)();\n\n appInstance.register('controller:post', PostController1);\n\n var postController1 = appInstance.lookup('controller:post');\n var postController1Factory = appInstance.factoryFor('controller:post');\n assert.ok(postController1 instanceof PostController1, 'precond - lookup creates instance');\n assert.equal(PostController1, postController1Factory.class, 'precond - factoryFor().class matches');\n\n appInstance.unregister('controller:post');\n appInstance.register('controller:post', PostController2);\n\n var postController2 = appInstance.lookup('controller:post');\n var postController2Factory = appInstance.factoryFor('controller:post');\n assert.ok(postController2 instanceof PostController2, 'lookup creates instance');\n assert.equal(PostController2, postController2Factory.class, 'factoryFor().class matches');\n\n assert.notStrictEqual(postController1, postController2, 'lookup creates a brand new instance, because the previous one was reset');\n });\n\n QUnit.test('can build and boot a registered engine', function (assert) {\n assert.expect(11);\n\n var ChatEngine = _engine.default.extend();\n var chatEngineInstance = void 0;\n\n application.register('engine:chat', ChatEngine);\n\n (0, _emberMetal.run)(function () {\n appInstance = _applicationInstance.default.create({ application: application });\n appInstance.setupRegistry();\n chatEngineInstance = appInstance.buildChildEngineInstance('chat');\n });\n\n return chatEngineInstance.boot().then(function () {\n assert.ok(true, 'boot successful');\n\n var registrations = ['route:basic', 'service:-routing', 'service:-glimmer-environment'];\n\n registrations.forEach(function (key) {\n assert.strictEqual(chatEngineInstance.resolveRegistration(key), appInstance.resolveRegistration(key), 'Engine and parent app share registrations for \\'' + key + '\\'');\n });\n\n var singletons = ['router:main', (0, _container.privatize)(_templateObject), '-view-registry:main', '-environment:main', 'service:-document', 'event_dispatcher:main'];\n\n var env = appInstance.lookup('-environment:main');\n singletons.push(env.isInteractive ? 'renderer:-dom' : 'renderer:-inert');\n\n singletons.forEach(function (key) {\n assert.strictEqual(chatEngineInstance.lookup(key), appInstance.lookup(key), 'Engine and parent app share singleton \\'' + key + '\\'');\n });\n });\n });\n\n QUnit.test('can build a registry via Ember.ApplicationInstance.setupRegistry() -- simulates ember-test-helpers', function (assert) {\n var namespace = _emberRuntime.Object.create({\n Resolver: { create: function () {} }\n });\n\n var registry = _application.default.buildRegistry(namespace);\n\n _applicationInstance.default.setupRegistry(registry);\n\n assert.equal(registry.resolve('service:-document'), document);\n });\n});","QUnit.module('ESLint | ember-application/tests/system/application_instance_test.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-application/tests/system/application_instance_test.js should pass ESLint\\n\\n');\n});\n","enifed('ember-application/tests/system/application_test', ['ember-babel', 'ember', 'ember-environment', 'ember-metal', 'ember-debug', 'ember-application/system/application', 'ember-routing', 'ember-views', 'ember-runtime', 'ember-template-compiler', 'ember-glimmer', 'container', 'ember-application/tests/test-helpers/registry-check', 'ember-utils', 'internal-test-helpers'], function (_emberBabel, _ember, _emberEnvironment, _emberMetal, _emberDebug, _application, _emberRouting, _emberViews, _emberRuntime, _emberTemplateCompiler, _emberGlimmer, _container, _registryCheck, _emberUtils, _internalTestHelpers) {\n 'use strict';\n\n var _templateObject = (0, _emberBabel.taggedTemplateLiteralLoose)(['-bucket-cache:main'], ['-bucket-cache:main']),\n _templateObject2 = (0, _emberBabel.taggedTemplateLiteralLoose)(['template:components/-default'], ['template:components/-default']);\n\n var secondApp = void 0;\n\n (0, _internalTestHelpers.moduleFor)('Ember.Application, autobooting multiple apps', function (_ApplicationTestCase) {\n (0, _emberBabel.inherits)(_class, _ApplicationTestCase);\n\n function _class() {\n (0, _emberBabel.classCallCheck)(this, _class);\n\n (0, _emberViews.jQuery)('#qunit-fixture').html('\\n <div id=\"one\">\\n <div id=\"one-child\">HI</div>\\n </div>\\n <div id=\"two\">HI</div>\\n ');\n return (0, _emberBabel.possibleConstructorReturn)(this, _ApplicationTestCase.call(this));\n }\n\n _class.prototype.createSecondApplication = function createSecondApplication(options) {\n var myOptions = (0, _emberUtils.assign)(this.applicationOptions, options);\n return this.secondApp = _application.default.create(myOptions);\n };\n\n _class.prototype.teardown = function teardown() {\n var _this2 = this;\n\n _ApplicationTestCase.prototype.teardown.call(this);\n\n if (this.secondApp) {\n this.runTask(function () {\n return _this2.secondApp.destroy();\n });\n }\n };\n\n _class.prototype['@test you can make a new application in a non-overlapping element'] = function (assert) {\n var _this3 = this;\n\n var app = this.runTask(function () {\n return _this3.createSecondApplication({\n rootElement: '#two'\n });\n });\n\n this.runTask(function () {\n return app.destroy();\n });\n assert.ok(true, 'should not raise');\n };\n\n _class.prototype['@test you cannot make a new application that is a parent of an existing application'] = function () {\n var _this4 = this;\n\n expectAssertion(function () {\n _this4.runTask(function () {\n return _this4.createSecondApplication({\n rootElement: _this4.applicationOptions.rootElement\n });\n });\n });\n };\n\n _class.prototype['@test you cannot make a new application that is a descendant of an existing application'] = function () {\n var _this5 = this;\n\n expectAssertion(function () {\n _this5.runTask(function () {\n return _this5.createSecondApplication({\n rootElement: '#one-child'\n });\n });\n });\n };\n\n _class.prototype['@test you cannot make a new application that is a duplicate of an existing application'] = function () {\n var _this6 = this;\n\n expectAssertion(function () {\n _this6.runTask(function () {\n return _this6.createSecondApplication({\n rootElement: '#one'\n });\n });\n });\n };\n\n _class.prototype['@test you cannot make two default applications without a rootElement error'] = function () {\n var _this7 = this;\n\n expectAssertion(function () {\n _this7.runTask(function () {\n return _this7.createSecondApplication();\n });\n });\n };\n\n (0, _emberBabel.createClass)(_class, [{\n key: 'applicationOptions',\n get: function () {\n return (0, _emberUtils.assign)(_ApplicationTestCase.prototype.applicationOptions, {\n rootElement: '#one',\n router: null,\n autoboot: true\n });\n }\n }]);\n return _class;\n }(_internalTestHelpers.ApplicationTestCase));\n\n (0, _internalTestHelpers.moduleFor)('Ember.Application', function (_ApplicationTestCase2) {\n (0, _emberBabel.inherits)(_class2, _ApplicationTestCase2);\n\n function _class2() {\n (0, _emberBabel.classCallCheck)(this, _class2);\n return (0, _emberBabel.possibleConstructorReturn)(this, _ApplicationTestCase2.apply(this, arguments));\n }\n\n _class2.prototype['@test includes deprecated access to `application.registry`'] = function testIncludesDeprecatedAccessToApplicationRegistry(assert) {\n var _this9 = this;\n\n assert.expect(3);\n\n assert.ok(typeof this.application.registry.register === 'function', '#registry.register is available as a function');\n\n this.application.__registry__.register = function () {\n assert.ok(true, '#register alias is called correctly');\n };\n\n expectDeprecation(function () {\n _this9.application.registry.register();\n }, /Using `Application.registry.register` is deprecated. Please use `Application.register` instead./);\n };\n\n _class2.prototype['@test builds a registry'] = function (assert) {\n var application = this.application;\n\n assert.strictEqual(application.resolveRegistration('application:main'), application, 'application:main is registered');\n assert.deepEqual(application.registeredOptionsForType('component'), { singleton: false }, 'optionsForType \\'component\\'');\n assert.deepEqual(application.registeredOptionsForType('view'), { singleton: false }, 'optionsForType \\'view\\'');\n (0, _registryCheck.verifyRegistration)(application, 'controller:basic');\n (0, _registryCheck.verifyRegistration)(application, '-view-registry:main');\n (0, _registryCheck.verifyInjection)(application, 'view', '_viewRegistry', '-view-registry:main');\n (0, _registryCheck.verifyInjection)(application, 'route', '_topLevelViewTemplate', 'template:-outlet');\n (0, _registryCheck.verifyRegistration)(application, 'route:basic');\n (0, _registryCheck.verifyRegistration)(application, 'event_dispatcher:main');\n (0, _registryCheck.verifyInjection)(application, 'router:main', 'namespace', 'application:main');\n (0, _registryCheck.verifyInjection)(application, 'view:-outlet', 'namespace', 'application:main');\n\n (0, _registryCheck.verifyRegistration)(application, 'location:auto');\n (0, _registryCheck.verifyRegistration)(application, 'location:hash');\n (0, _registryCheck.verifyRegistration)(application, 'location:history');\n (0, _registryCheck.verifyRegistration)(application, 'location:none');\n\n (0, _registryCheck.verifyInjection)(application, 'controller', 'target', 'router:main');\n (0, _registryCheck.verifyInjection)(application, 'controller', 'namespace', 'application:main');\n\n (0, _registryCheck.verifyRegistration)(application, (0, _container.privatize)(_templateObject));\n (0, _registryCheck.verifyInjection)(application, 'router', '_bucketCache', (0, _container.privatize)(_templateObject));\n (0, _registryCheck.verifyInjection)(application, 'route', '_bucketCache', (0, _container.privatize)(_templateObject));\n\n (0, _registryCheck.verifyInjection)(application, 'route', 'router', 'router:main');\n\n (0, _registryCheck.verifyRegistration)(application, 'component:-text-field');\n (0, _registryCheck.verifyRegistration)(application, 'component:-text-area');\n (0, _registryCheck.verifyRegistration)(application, 'component:-checkbox');\n (0, _registryCheck.verifyRegistration)(application, 'component:link-to');\n\n (0, _registryCheck.verifyRegistration)(application, 'service:-routing');\n (0, _registryCheck.verifyInjection)(application, 'service:-routing', 'router', 'router:main');\n\n // DEBUGGING\n (0, _registryCheck.verifyRegistration)(application, 'resolver-for-debugging:main');\n (0, _registryCheck.verifyInjection)(application, 'container-debug-adapter:main', 'resolver', 'resolver-for-debugging:main');\n (0, _registryCheck.verifyInjection)(application, 'data-adapter:main', 'containerDebugAdapter', 'container-debug-adapter:main');\n (0, _registryCheck.verifyRegistration)(application, 'container-debug-adapter:main');\n (0, _registryCheck.verifyRegistration)(application, 'component-lookup:main');\n\n (0, _registryCheck.verifyRegistration)(application, 'service:-glimmer-environment');\n (0, _registryCheck.verifyRegistration)(application, 'service:-dom-changes');\n (0, _registryCheck.verifyRegistration)(application, 'service:-dom-tree-construction');\n (0, _registryCheck.verifyInjection)(application, 'service:-glimmer-environment', 'appendOperations', 'service:-dom-tree-construction');\n (0, _registryCheck.verifyInjection)(application, 'service:-glimmer-environment', 'updateOperations', 'service:-dom-changes');\n (0, _registryCheck.verifyInjection)(application, 'renderer', 'env', 'service:-glimmer-environment');\n (0, _registryCheck.verifyRegistration)(application, 'view:-outlet');\n (0, _registryCheck.verifyRegistration)(application, 'renderer:-dom');\n (0, _registryCheck.verifyRegistration)(application, 'renderer:-inert');\n (0, _registryCheck.verifyRegistration)(application, (0, _container.privatize)(_templateObject2));\n (0, _registryCheck.verifyRegistration)(application, 'template:-outlet');\n (0, _registryCheck.verifyInjection)(application, 'view:-outlet', 'template', 'template:-outlet');\n (0, _registryCheck.verifyInjection)(application, 'template', 'env', 'service:-glimmer-environment');\n assert.deepEqual(application.registeredOptionsForType('helper'), { instantiate: false }, 'optionsForType \\'helper\\'');\n };\n\n return _class2;\n }(_internalTestHelpers.ApplicationTestCase));\n\n (0, _internalTestHelpers.moduleFor)('Ember.Application, default resolver with autoboot', function (_DefaultResolverAppli) {\n (0, _emberBabel.inherits)(_class3, _DefaultResolverAppli);\n\n function _class3() {\n (0, _emberBabel.classCallCheck)(this, _class3);\n\n var _this10 = (0, _emberBabel.possibleConstructorReturn)(this, _DefaultResolverAppli.call(this));\n\n _this10.originalLookup = _emberEnvironment.context.lookup;\n return _this10;\n }\n\n _class3.prototype.teardown = function teardown() {\n _emberEnvironment.context.lookup = this.originalLookup;\n _DefaultResolverAppli.prototype.teardown.call(this);\n (0, _emberGlimmer.setTemplates)({});\n };\n\n _class3.prototype['@test acts like a namespace'] = function (assert) {\n var _this11 = this;\n\n var lookup = _emberEnvironment.context.lookup = {};\n\n lookup.TestApp = this.runTask(function () {\n return _this11.createApplication();\n });\n\n (0, _emberRuntime.setNamespaceSearchDisabled)(false);\n var Foo = this.application.Foo = _emberRuntime.Object.extend();\n assert.equal(Foo.toString(), 'TestApp.Foo', 'Classes pick up their parent namespace');\n };\n\n _class3.prototype['@test can specify custom router'] = function (assert) {\n var _this12 = this;\n\n var MyRouter = _emberRouting.Router.extend();\n this.runTask(function () {\n _this12.createApplication();\n _this12.application.Router = MyRouter;\n });\n\n assert.ok(this.application.__deprecatedInstance__.lookup('router:main') instanceof MyRouter, 'application resolved the correct router');\n };\n\n _class3.prototype['@test Minimal Application initialized with just an application template'] = function (assert) {\n var _this13 = this;\n\n this.$().html('<script type=\"text/x-handlebars\">Hello World</script>');\n this.runTask(function () {\n return _this13.createApplication();\n });\n\n assert.equal(this.$().text().trim(), 'Hello World');\n };\n\n (0, _emberBabel.createClass)(_class3, [{\n key: 'applicationOptions',\n get: function () {\n return (0, _emberUtils.assign)(_DefaultResolverAppli.prototype.applicationOptions, {\n autoboot: true\n });\n }\n }]);\n return _class3;\n }(_internalTestHelpers.DefaultResolverApplicationTestCase));\n\n (0, _internalTestHelpers.moduleFor)('Ember.Application, autobooting', function (_AutobootApplicationT) {\n (0, _emberBabel.inherits)(_class4, _AutobootApplicationT);\n\n function _class4() {\n (0, _emberBabel.classCallCheck)(this, _class4);\n\n var _this14 = (0, _emberBabel.possibleConstructorReturn)(this, _AutobootApplicationT.call(this));\n\n _this14.originalLogVersion = _emberEnvironment.ENV.LOG_VERSION;\n _this14.originalDebug = (0, _emberDebug.getDebugFunction)('debug');\n _this14.originalWarn = (0, _emberDebug.getDebugFunction)('warn');\n return _this14;\n }\n\n _class4.prototype.teardown = function teardown() {\n (0, _emberDebug.setDebugFunction)('warn', this.originalWarn);\n (0, _emberDebug.setDebugFunction)('debug', this.originalDebug);\n _emberEnvironment.ENV.LOG_VERSION = this.originalLogVersion;\n _AutobootApplicationT.prototype.teardown.call(this);\n };\n\n _class4.prototype['@test initialized application goes to initial route'] = function (assert) {\n var _this15 = this;\n\n this.runTask(function () {\n _this15.createApplication();\n _this15.addTemplate('application', '{{outlet}}');\n _this15.addTemplate('index', '<h1>Hi from index</h1>');\n });\n\n assert.equal(this.$('h1').text(), 'Hi from index');\n };\n\n _class4.prototype['@test ready hook is called before routing begins'] = function (assert) {\n var _this16 = this;\n\n assert.expect(2);\n\n this.runTask(function () {\n function registerRoute(application, name, callback) {\n var route = _emberRouting.Route.extend({\n activate: callback\n });\n\n application.register('route:' + name, route);\n }\n\n var MyApplication = _application.default.extend({\n ready: function () {\n registerRoute(this, 'index', function () {\n assert.ok(true, 'last-minute route is activated');\n });\n }\n });\n\n var app = _this16.createApplication({}, MyApplication);\n\n registerRoute(app, 'application', function () {\n return ok(true, 'normal route is activated');\n });\n });\n };\n\n _class4.prototype['@test initialize application via initialize call'] = function (assert) {\n var _this17 = this;\n\n this.runTask(function () {\n return _this17.createApplication();\n });\n // This is not a public way to access the container; we just\n // need to make some assertions about the created router\n var router = this.applicationInstance.lookup('router:main');\n assert.equal(router instanceof _emberRouting.Router, true, 'Router was set from initialize call');\n assert.equal(router.location instanceof _emberRouting.NoneLocation, true, 'Location was set from location implementation name');\n };\n\n _class4.prototype['@test initialize application with stateManager via initialize call from Router class'] = function (assert) {\n var _this18 = this;\n\n this.runTask(function () {\n _this18.createApplication();\n _this18.addTemplate('application', '<h1>Hello!</h1>');\n });\n // This is not a public way to access the container; we just\n // need to make some assertions about the created router\n var router = this.application.__deprecatedInstance__.lookup('router:main');\n assert.equal(router instanceof _emberRouting.Router, true, 'Router was set from initialize call');\n assert.equal(this.$('h1').text(), 'Hello!');\n };\n\n _class4.prototype['@test Application Controller backs the appplication template'] = function (assert) {\n var _this19 = this;\n\n this.runTask(function () {\n _this19.createApplication();\n _this19.addTemplate('application', '<h1>{{greeting}}</h1>');\n _this19.add('controller:application', _emberRuntime.Controller.extend({\n greeting: 'Hello!'\n }));\n });\n assert.equal(this.$('h1').text(), 'Hello!');\n };\n\n _class4.prototype['@test enable log of libraries with an ENV var'] = function (assert) {\n var _this20 = this;\n\n if (EmberDev && EmberDev.runningProdBuild) {\n assert.ok(true, 'Logging does not occur in production builds');\n return;\n }\n\n var messages = [];\n\n _emberEnvironment.ENV.LOG_VERSION = true;\n\n (0, _emberDebug.setDebugFunction)('debug', function (message) {\n return messages.push(message);\n });\n\n _emberMetal.libraries.register('my-lib', '2.0.0a');\n\n this.runTask(function () {\n return _this20.createApplication();\n });\n\n assert.equal(messages[1], 'Ember : ' + _ember.VERSION);\n assert.equal(messages[2], 'jQuery : ' + (0, _emberViews.jQuery)().jquery);\n assert.equal(messages[3], 'my-lib : ' + '2.0.0a');\n\n _emberMetal.libraries.deRegister('my-lib');\n };\n\n _class4.prototype['@test disable log of version of libraries with an ENV var'] = function (assert) {\n var _this21 = this;\n\n var logged = false;\n\n _emberEnvironment.ENV.LOG_VERSION = false;\n\n (0, _emberDebug.setDebugFunction)('debug', function () {\n return logged = true;\n });\n\n this.runTask(function () {\n return _this21.createApplication();\n });\n\n assert.ok(!logged, 'library version logging skipped');\n };\n\n _class4.prototype['@test can resolve custom router'] = function (assert) {\n var _this22 = this;\n\n var CustomRouter = _emberRouting.Router.extend();\n\n this.runTask(function () {\n _this22.createApplication();\n _this22.add('router:main', CustomRouter);\n });\n\n assert.ok(this.application.__deprecatedInstance__.lookup('router:main') instanceof CustomRouter, 'application resolved the correct router');\n };\n\n _class4.prototype['@test does not leak itself in onLoad._loaded'] = function (assert) {\n var _this23 = this;\n\n assert.equal(_emberRuntime._loaded.application, undefined);\n this.runTask(function () {\n return _this23.createApplication();\n });\n assert.equal(_emberRuntime._loaded.application, this.application);\n this.runTask(function () {\n return _this23.application.destroy();\n });\n assert.equal(_emberRuntime._loaded.application, undefined);\n };\n\n _class4.prototype['@test can build a registry via Ember.Application.buildRegistry() --- simulates ember-test-helpers'] = function (assert) {\n var namespace = _emberRuntime.Object.create({\n Resolver: { create: function () {} }\n });\n\n var registry = _application.default.buildRegistry(namespace);\n\n assert.equal(registry.resolve('application:main'), namespace);\n };\n\n return _class4;\n }(_internalTestHelpers.AutobootApplicationTestCase));\n\n (0, _internalTestHelpers.moduleFor)('Ember.Application#buildRegistry', function (_AbstractTestCase) {\n (0, _emberBabel.inherits)(_class5, _AbstractTestCase);\n\n function _class5() {\n (0, _emberBabel.classCallCheck)(this, _class5);\n return (0, _emberBabel.possibleConstructorReturn)(this, _AbstractTestCase.apply(this, arguments));\n }\n\n _class5.prototype['@test can build a registry via Ember.Application.buildRegistry() --- simulates ember-test-helpers'] = function (assert) {\n var namespace = _emberRuntime.Object.create({\n Resolver: {\n create: function () {}\n }\n });\n\n var registry = _application.default.buildRegistry(namespace);\n\n assert.equal(registry.resolve('application:main'), namespace);\n };\n\n return _class5;\n }(_internalTestHelpers.AbstractTestCase));\n});","QUnit.module('ESLint | ember-application/tests/system/application_test.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-application/tests/system/application_test.js should pass ESLint\\n\\n');\n});\n","enifed('ember-application/tests/system/bootstrap-test', ['ember-babel', 'ember-utils', 'ember-views', 'internal-test-helpers'], function (_emberBabel, _emberUtils, _emberViews, _internalTestHelpers) {\n 'use strict';\n\n (0, _internalTestHelpers.moduleFor)('Ember.Application with default resolver and autoboot', function (_DefaultResolverAppli) {\n (0, _emberBabel.inherits)(_class, _DefaultResolverAppli);\n\n function _class() {\n (0, _emberBabel.classCallCheck)(this, _class);\n\n (0, _emberViews.jQuery)('#qunit-fixture').html('\\n <div id=\"app\"></div>\\n\\n <script type=\"text/x-handlebars\">Hello {{outlet}}</script>\\n <script type=\"text/x-handlebars\" id=\"index\">World!</script>\\n ');\n return (0, _emberBabel.possibleConstructorReturn)(this, _DefaultResolverAppli.call(this));\n }\n\n _class.prototype['@test templates in script tags are extracted at application creation'] = function testTemplatesInScriptTagsAreExtractedAtApplicationCreation(assert) {\n var _this2 = this;\n\n this.runTask(function () {\n return _this2.createApplication();\n });\n assert.equal(this.$('#app').text(), 'Hello World!');\n };\n\n (0, _emberBabel.createClass)(_class, [{\n key: 'applicationOptions',\n get: function () {\n return (0, _emberUtils.assign)(_DefaultResolverAppli.prototype.applicationOptions, {\n autoboot: true,\n rootElement: '#app'\n });\n }\n }]);\n return _class;\n }(_internalTestHelpers.DefaultResolverApplicationTestCase));\n});","QUnit.module('ESLint | ember-application/tests/system/bootstrap-test.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-application/tests/system/bootstrap-test.js should pass ESLint\\n\\n');\n});\n","enifed('ember-application/tests/system/dependency_injection/custom_resolver_test', ['ember-babel', 'ember-application/system/resolver', 'ember-utils', 'internal-test-helpers'], function (_emberBabel, _resolver, _emberUtils, _internalTestHelpers) {\n 'use strict';\n\n (0, _internalTestHelpers.moduleFor)('Ember.Application with extended default resolver and autoboot', function (_DefaultResolverAppli) {\n (0, _emberBabel.inherits)(_class, _DefaultResolverAppli);\n\n function _class() {\n (0, _emberBabel.classCallCheck)(this, _class);\n return (0, _emberBabel.possibleConstructorReturn)(this, _DefaultResolverAppli.apply(this, arguments));\n }\n\n _class.prototype['@test a resolver can be supplied to application'] = function (assert) {\n var _this2 = this;\n\n this.runTask(function () {\n return _this2.createApplication();\n });\n assert.equal(this.$('h1').text(), 'Fallback');\n };\n\n (0, _emberBabel.createClass)(_class, [{\n key: 'applicationOptions',\n get: function () {\n var applicationTemplate = this.compile('<h1>Fallback</h1>');\n\n var Resolver = _resolver.default.extend({\n resolveTemplate: function (resolvable) {\n if (resolvable.fullNameWithoutType === 'application') {\n return applicationTemplate;\n } else {\n return this._super(resolvable);\n }\n }\n });\n\n return (0, _emberUtils.assign)(_DefaultResolverAppli.prototype.applicationOptions, {\n Resolver: Resolver,\n autoboot: true\n });\n }\n }]);\n return _class;\n }(_internalTestHelpers.DefaultResolverApplicationTestCase));\n});","QUnit.module('ESLint | ember-application/tests/system/dependency_injection/custom_resolver_test.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-application/tests/system/dependency_injection/custom_resolver_test.js should pass ESLint\\n\\n');\n});\n","enifed('ember-application/tests/system/dependency_injection/default_resolver_test', ['ember-babel', 'internal-test-helpers', 'ember-environment', 'ember-runtime', 'ember-routing', 'ember-glimmer', 'ember-debug'], function (_emberBabel, _internalTestHelpers, _emberEnvironment, _emberRuntime, _emberRouting, _emberGlimmer, _emberDebug) {\n 'use strict';\n\n /* globals EmberDev */\n (0, _internalTestHelpers.moduleFor)('Ember.Application Dependency Injection - Integration - default resolver', function (_DefaultResolverAppli) {\n (0, _emberBabel.inherits)(_class, _DefaultResolverAppli);\n\n function _class() {\n (0, _emberBabel.classCallCheck)(this, _class);\n return (0, _emberBabel.possibleConstructorReturn)(this, _DefaultResolverAppli.apply(this, arguments));\n }\n\n _class.prototype.beforeEach = function beforeEach() {\n var _this2 = this;\n\n this.runTask(function () {\n return _this2.createApplication();\n });\n return this.visit('/');\n };\n\n _class.prototype['@test the default resolver looks up templates in Ember.TEMPLATES'] = function (assert) {\n var fooTemplate = this.addTemplate('foo', 'foo template');\n var fooBarTemplate = this.addTemplate('fooBar', 'fooBar template');\n var fooBarBazTemplate = this.addTemplate('fooBar/baz', 'fooBar/baz template');\n\n assert.equal(this.applicationInstance.factoryFor('template:foo').class, fooTemplate, 'resolves template:foo');\n assert.equal(this.applicationInstance.factoryFor('template:fooBar').class, fooBarTemplate, 'resolves template:foo_bar');\n assert.equal(this.applicationInstance.factoryFor('template:fooBar.baz').class, fooBarBazTemplate, 'resolves template:foo_bar.baz');\n };\n\n _class.prototype['@test the default resolver looks up basic name as no prefix'] = function (assert) {\n var instance = this.applicationInstance.lookup('controller:basic');\n assert.ok(_emberRuntime.Controller.detect(instance), 'locator looks up correct controller');\n };\n\n _class.prototype['@test the default resolver looks up arbitrary types on the namespace'] = function (assert) {\n var Class = this.application.FooManager = _emberRuntime.Object.extend();\n var resolvedClass = this.application.resolveRegistration('manager:foo');\n assert.equal(Class, resolvedClass, 'looks up FooManager on application');\n };\n\n _class.prototype['@test the default resolver resolves models on the namespace'] = function (assert) {\n var Class = this.application.Post = _emberRuntime.Object.extend();\n var factoryClass = this.applicationInstance.factoryFor('model:post').class;\n assert.equal(Class, factoryClass, 'looks up Post model on application');\n };\n\n _class.prototype['@test the default resolver resolves *:main on the namespace'] = function (assert) {\n var Class = this.application.FooBar = _emberRuntime.Object.extend();\n var factoryClass = this.applicationInstance.factoryFor('foo-bar:main').class;\n assert.equal(Class, factoryClass, 'looks up FooBar type without name on application');\n };\n\n _class.prototype['@test the default resolver resolves container-registered helpers'] = function (assert) {\n var shorthandHelper = (0, _emberGlimmer.helper)(function () {});\n var helper = _emberGlimmer.Helper.extend();\n\n this.application.register('helper:shorthand', shorthandHelper);\n this.application.register('helper:complete', helper);\n\n var lookedUpShorthandHelper = this.applicationInstance.factoryFor('helper:shorthand').class;\n\n assert.ok(lookedUpShorthandHelper.isHelperFactory, 'shorthand helper isHelper');\n\n var lookedUpHelper = this.applicationInstance.factoryFor('helper:complete').class;\n\n assert.ok(lookedUpHelper.isHelperFactory, 'complete helper is factory');\n assert.ok(helper.detect(lookedUpHelper), 'looked up complete helper');\n };\n\n _class.prototype['@test the default resolver resolves container-registered helpers via lookupFor'] = function (assert) {\n var shorthandHelper = (0, _emberGlimmer.helper)(function () {});\n var helper = _emberGlimmer.Helper.extend();\n\n this.application.register('helper:shorthand', shorthandHelper);\n this.application.register('helper:complete', helper);\n\n var lookedUpShorthandHelper = this.applicationInstance.factoryFor('helper:shorthand').class;\n\n assert.ok(lookedUpShorthandHelper.isHelperFactory, 'shorthand helper isHelper');\n\n var lookedUpHelper = this.applicationInstance.factoryFor('helper:complete').class;\n\n assert.ok(lookedUpHelper.isHelperFactory, 'complete helper is factory');\n assert.ok(helper.detect(lookedUpHelper), 'looked up complete helper');\n };\n\n _class.prototype['@test the default resolver resolves helpers on the namespace'] = function (assert) {\n var ShorthandHelper = (0, _emberGlimmer.helper)(function () {});\n var CompleteHelper = _emberGlimmer.Helper.extend();\n\n this.application.ShorthandHelper = ShorthandHelper;\n this.application.CompleteHelper = CompleteHelper;\n\n var resolvedShorthand = this.application.resolveRegistration('helper:shorthand');\n var resolvedComplete = this.application.resolveRegistration('helper:complete');\n\n assert.equal(resolvedShorthand, ShorthandHelper, 'resolve fetches the shorthand helper factory');\n assert.equal(resolvedComplete, CompleteHelper, 'resolve fetches the complete helper factory');\n };\n\n _class.prototype['@test the default resolver resolves to the same instance, no matter the notation '] = function (assert) {\n this.application.NestedPostController = _emberRuntime.Controller.extend({});\n\n assert.equal(this.applicationInstance.lookup('controller:nested-post'), this.applicationInstance.lookup('controller:nested_post'), 'looks up NestedPost controller on application');\n };\n\n _class.prototype['@test the default resolver throws an error if the fullName to resolve is invalid'] = function (assert) {\n var _this3 = this;\n\n expectAssertion(function () {\n _this3.applicationInstance.resolveRegistration(undefined);\n }, /fullName must be a proper full name/);\n expectAssertion(function () {\n _this3.applicationInstance.resolveRegistration(null);\n }, /fullName must be a proper full name/);\n expectAssertion(function () {\n _this3.applicationInstance.resolveRegistration('');\n }, /fullName must be a proper full name/);\n expectAssertion(function () {\n _this3.applicationInstance.resolveRegistration('');\n }, /fullName must be a proper full name/);\n expectAssertion(function () {\n _this3.applicationInstance.resolveRegistration(':');\n }, /fullName must be a proper full name/);\n expectAssertion(function () {\n _this3.applicationInstance.resolveRegistration('model');\n }, /fullName must be a proper full name/);\n expectAssertion(function () {\n _this3.applicationInstance.resolveRegistration('model:');\n }, /fullName must be a proper full name/);\n expectAssertion(function () {\n _this3.applicationInstance.resolveRegistration(':type');\n }, /fullName must be a proper full name/);\n };\n\n _class.prototype['@test lookup description'] = function (assert) {\n this.application.toString = function () {\n return 'App';\n };\n\n assert.equal(this.privateRegistry.describe('controller:foo'), 'App.FooController', 'Type gets appended at the end');\n assert.equal(this.privateRegistry.describe('controller:foo.bar'), 'App.FooBarController', 'dots are removed');\n assert.equal(this.privateRegistry.describe('model:foo'), 'App.Foo', 'models don\\'t get appended at the end');\n };\n\n _class.prototype['@test assertion for routes without isRouteFactory property'] = function (assert) {\n var _this4 = this;\n\n this.application.FooRoute = _emberGlimmer.Component.extend();\n\n expectAssertion(function () {\n _this4.privateRegistry.resolve('route:foo');\n }, /to resolve to an Ember.Route/, 'Should assert');\n };\n\n _class.prototype['@test no assertion for routes that extend from Ember.Route'] = function (assert) {\n assert.expect(0);\n this.application.FooRoute = _emberRouting.Route.extend();\n this.privateRegistry.resolve('route:foo');\n };\n\n _class.prototype['@test deprecation warning for service factories without isServiceFactory property'] = function (assert) {\n var _this5 = this;\n\n expectAssertion(function () {\n _this5.application.FooService = _emberRuntime.Object.extend();\n _this5.privateRegistry.resolve('service:foo');\n }, /Expected service:foo to resolve to an Ember.Service but instead it was \\.FooService\\./);\n };\n\n _class.prototype['@test no deprecation warning for service factories that extend from Ember.Service'] = function (assert) {\n assert.expect(0);\n this.application.FooService = _emberRuntime.Service.extend();\n this.privateRegistry.resolve('service:foo');\n };\n\n _class.prototype['@test deprecation warning for component factories without isComponentFactory property'] = function (assert) {\n var _this6 = this;\n\n expectAssertion(function () {\n _this6.application.FooComponent = _emberRuntime.Object.extend();\n _this6.privateRegistry.resolve('component:foo');\n }, /Expected component:foo to resolve to an Ember\\.Component but instead it was \\.FooComponent\\./);\n };\n\n _class.prototype['@test no deprecation warning for component factories that extend from Ember.Component'] = function (assert) {\n expectNoDeprecation();\n this.application.FooView = _emberGlimmer.Component.extend();\n this.privateRegistry.resolve('component:foo');\n };\n\n _class.prototype['@test knownForType returns each item for a given type found'] = function (assert) {\n this.application.FooBarHelper = 'foo';\n this.application.BazQuxHelper = 'bar';\n\n var found = this.privateRegistry.resolver.knownForType('helper');\n\n assert.deepEqual(found, {\n 'helper:foo-bar': true,\n 'helper:baz-qux': true\n });\n };\n\n _class.prototype['@test knownForType is not required to be present on the resolver'] = function (assert) {\n delete this.privateRegistry.resolver.knownForType;\n\n this.privateRegistry.resolver.knownForType('helper', function () {});\n\n assert.ok(true, 'does not error');\n };\n\n (0, _emberBabel.createClass)(_class, [{\n key: 'privateRegistry',\n get: function () {\n return this.application.__registry__;\n }\n }]);\n return _class;\n }(_internalTestHelpers.DefaultResolverApplicationTestCase));\n\n (0, _internalTestHelpers.moduleFor)('Ember.Application Dependency Injection - Integration - default resolver w/ other namespace', function (_DefaultResolverAppli2) {\n (0, _emberBabel.inherits)(_class2, _DefaultResolverAppli2);\n\n function _class2() {\n (0, _emberBabel.classCallCheck)(this, _class2);\n return (0, _emberBabel.possibleConstructorReturn)(this, _DefaultResolverAppli2.apply(this, arguments));\n }\n\n _class2.prototype.beforeEach = function beforeEach() {\n var _this8 = this;\n\n this.UserInterface = _emberEnvironment.context.lookup.UserInterface = _emberRuntime.Namespace.create();\n this.runTask(function () {\n return _this8.createApplication();\n });\n return this.visit('/');\n };\n\n _class2.prototype.teardown = function teardown() {\n var UserInterfaceNamespace = _emberRuntime.Namespace.NAMESPACES_BY_ID['UserInterface'];\n if (UserInterfaceNamespace) {\n this.runTask(function () {\n UserInterfaceNamespace.destroy();\n });\n }\n _DefaultResolverAppli2.prototype.teardown.call(this);\n };\n\n _class2.prototype['@test the default resolver can look things up in other namespaces'] = function (assert) {\n this.UserInterface.NavigationController = _emberRuntime.Controller.extend();\n\n var nav = this.applicationInstance.lookup('controller:userInterface/navigation');\n\n assert.ok(nav instanceof this.UserInterface.NavigationController, 'the result should be an instance of the specified class');\n };\n\n return _class2;\n }(_internalTestHelpers.DefaultResolverApplicationTestCase));\n\n (0, _internalTestHelpers.moduleFor)('Ember.Application Dependency Injection - Integration - default resolver', function (_DefaultResolverAppli3) {\n (0, _emberBabel.inherits)(_class3, _DefaultResolverAppli3);\n\n function _class3() {\n (0, _emberBabel.classCallCheck)(this, _class3);\n\n var _this9 = (0, _emberBabel.possibleConstructorReturn)(this, _DefaultResolverAppli3.call(this));\n\n _this9._originalLookup = _emberEnvironment.context.lookup;\n _this9._originalInfo = (0, _emberDebug.getDebugFunction)('info');\n return _this9;\n }\n\n _class3.prototype.beforeEach = function beforeEach() {\n var _this10 = this;\n\n this.runTask(function () {\n return _this10.createApplication();\n });\n return this.visit('/');\n };\n\n _class3.prototype.teardown = function teardown() {\n (0, _emberDebug.setDebugFunction)('info', this._originalInfo);\n _emberEnvironment.context.lookup = this._originalLookup;\n _DefaultResolverAppli3.prototype.teardown.call(this);\n };\n\n _class3.prototype['@test the default resolver logs hits if \\'LOG_RESOLVER\\' is set'] = function (assert) {\n if (EmberDev && EmberDev.runningProdBuild) {\n assert.ok(true, 'Logging does not occur in production builds');\n return;\n }\n\n assert.expect(3);\n\n this.application.LOG_RESOLVER = true;\n this.application.ScoobyDoo = _emberRuntime.Object.extend();\n this.application.toString = function () {\n return 'App';\n };\n\n (0, _emberDebug.setDebugFunction)('info', function (symbol, name, padding, lookupDescription) {\n assert.equal(symbol, '[✓]', 'proper symbol is printed when a module is found');\n assert.equal(name, 'doo:scooby', 'proper lookup value is logged');\n assert.equal(lookupDescription, 'App.ScoobyDoo');\n });\n\n this.applicationInstance.resolveRegistration('doo:scooby');\n };\n\n _class3.prototype['@test the default resolver logs misses if \\'LOG_RESOLVER\\' is set'] = function (assert) {\n if (EmberDev && EmberDev.runningProdBuild) {\n assert.ok(true, 'Logging does not occur in production builds');\n return;\n }\n\n assert.expect(3);\n\n this.application.LOG_RESOLVER = true;\n this.application.toString = function () {\n return 'App';\n };\n\n (0, _emberDebug.setDebugFunction)('info', function (symbol, name, padding, lookupDescription) {\n assert.equal(symbol, '[ ]', 'proper symbol is printed when a module is not found');\n assert.equal(name, 'doo:scooby', 'proper lookup value is logged');\n assert.equal(lookupDescription, 'App.ScoobyDoo');\n });\n\n this.applicationInstance.resolveRegistration('doo:scooby');\n };\n\n _class3.prototype['@test doesn\\'t log without LOG_RESOLVER'] = function (assert) {\n if (EmberDev && EmberDev.runningProdBuild) {\n assert.ok(true, 'Logging does not occur in production builds');\n return;\n }\n\n var infoCount = 0;\n\n this.application.ScoobyDoo = _emberRuntime.Object.extend();\n\n (0, _emberDebug.setDebugFunction)('info', function (symbol, name) {\n return infoCount = infoCount + 1;\n });\n\n this.applicationInstance.resolveRegistration('doo:scooby');\n this.applicationInstance.resolveRegistration('doo:scrappy');\n assert.equal(infoCount, 0, 'Logger.info should not be called if LOG_RESOLVER is not set');\n };\n\n return _class3;\n }(_internalTestHelpers.DefaultResolverApplicationTestCase));\n});","QUnit.module('ESLint | ember-application/tests/system/dependency_injection/default_resolver_test.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-application/tests/system/dependency_injection/default_resolver_test.js should pass ESLint\\n\\n');\n});\n","enifed('ember-application/tests/system/dependency_injection/normalization_test', ['ember-metal', 'ember-application/system/application'], function (_emberMetal, _application) {\n 'use strict';\n\n var application = void 0,\n registry = void 0;\n\n QUnit.module('Ember.Application Dependency Injection – normalization', {\n setup: function () {\n application = (0, _emberMetal.run)(_application.default, 'create');\n registry = application.__registry__;\n },\n teardown: function () {\n (0, _emberMetal.run)(application, 'destroy');\n }\n });\n\n QUnit.test('normalization', function () {\n ok(registry.normalize, 'registry#normalize is present');\n\n equal(registry.normalize('foo:bar'), 'foo:bar');\n\n equal(registry.normalize('controller:posts'), 'controller:posts');\n equal(registry.normalize('controller:posts_index'), 'controller:postsIndex');\n equal(registry.normalize('controller:posts.index'), 'controller:postsIndex');\n equal(registry.normalize('controller:posts-index'), 'controller:postsIndex');\n equal(registry.normalize('controller:posts.post.index'), 'controller:postsPostIndex');\n equal(registry.normalize('controller:posts_post.index'), 'controller:postsPostIndex');\n equal(registry.normalize('controller:posts.post_index'), 'controller:postsPostIndex');\n equal(registry.normalize('controller:posts.post-index'), 'controller:postsPostIndex');\n equal(registry.normalize('controller:postsIndex'), 'controller:postsIndex');\n equal(registry.normalize('controller:blogPosts.index'), 'controller:blogPostsIndex');\n equal(registry.normalize('controller:blog/posts.index'), 'controller:blog/postsIndex');\n equal(registry.normalize('controller:blog/posts-index'), 'controller:blog/postsIndex');\n equal(registry.normalize('controller:blog/posts.post.index'), 'controller:blog/postsPostIndex');\n equal(registry.normalize('controller:blog/posts_post.index'), 'controller:blog/postsPostIndex');\n equal(registry.normalize('controller:blog/posts_post-index'), 'controller:blog/postsPostIndex');\n\n equal(registry.normalize('template:blog/posts_index'), 'template:blog/posts_index');\n });\n\n QUnit.test('normalization is indempotent', function () {\n var examples = ['controller:posts', 'controller:posts.post.index', 'controller:blog/posts.post_index', 'template:foo_bar'];\n\n examples.forEach(function (example) {\n equal(registry.normalize(registry.normalize(example)), registry.normalize(example));\n });\n });\n});","QUnit.module('ESLint | ember-application/tests/system/dependency_injection/normalization_test.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-application/tests/system/dependency_injection/normalization_test.js should pass ESLint\\n\\n');\n});\n","enifed('ember-application/tests/system/dependency_injection/to_string_test', ['ember-babel', 'ember-utils', 'ember-runtime', 'ember-application', 'internal-test-helpers'], function (_emberBabel, _emberUtils, _emberRuntime, _emberApplication, _internalTestHelpers) {\n 'use strict';\n\n (0, _internalTestHelpers.moduleFor)('Ember.Application Dependency Injection - DefaultResolver#toString', function (_DefaultResolverAppli) {\n (0, _emberBabel.inherits)(_class, _DefaultResolverAppli);\n\n function _class() {\n (0, _emberBabel.classCallCheck)(this, _class);\n\n var _this = (0, _emberBabel.possibleConstructorReturn)(this, _DefaultResolverAppli.call(this));\n\n _this.runTask(function () {\n return _this.createApplication();\n });\n _this.application.Post = _emberRuntime.Object.extend();\n return _this;\n }\n\n _class.prototype.beforeEach = function beforeEach() {\n return this.visit('/');\n };\n\n _class.prototype['@test factories'] = function testFactories(assert) {\n var PostFactory = this.applicationInstance.factoryFor('model:post').class;\n assert.equal(PostFactory.toString(), '.Post', 'expecting the model to be post');\n };\n\n _class.prototype['@test instances'] = function testInstances(assert) {\n var post = this.applicationInstance.lookup('model:post');\n var guid = (0, _emberUtils.guidFor)(post);\n\n assert.equal(post.toString(), '<.Post:' + guid + '>', 'expecting the model to be post');\n };\n\n return _class;\n }(_internalTestHelpers.DefaultResolverApplicationTestCase));\n\n (0, _internalTestHelpers.moduleFor)('Ember.Application Dependency Injection - Resolver#toString', function (_ApplicationTestCase) {\n (0, _emberBabel.inherits)(_class2, _ApplicationTestCase);\n\n function _class2() {\n (0, _emberBabel.classCallCheck)(this, _class2);\n return (0, _emberBabel.possibleConstructorReturn)(this, _ApplicationTestCase.apply(this, arguments));\n }\n\n _class2.prototype.beforeEach = function beforeEach() {\n return this.visit('/');\n };\n\n _class2.prototype['@test toString called on a resolver'] = function testToStringCalledOnAResolver(assert) {\n this.add('model:peter', _emberRuntime.Object.extend());\n\n var peter = this.applicationInstance.lookup('model:peter');\n var guid = (0, _emberUtils.guidFor)(peter);\n assert.equal(peter.toString(), '<model:peter:' + guid + '>', 'expecting the supermodel to be peter');\n };\n\n (0, _emberBabel.createClass)(_class2, [{\n key: 'applicationOptions',\n get: function () {\n return (0, _emberUtils.assign)(_ApplicationTestCase.prototype.applicationOptions, {\n Resolver: function (_ModuleBasedTestResol) {\n (0, _emberBabel.inherits)(Resolver, _ModuleBasedTestResol);\n\n function Resolver() {\n (0, _emberBabel.classCallCheck)(this, Resolver);\n return (0, _emberBabel.possibleConstructorReturn)(this, _ModuleBasedTestResol.apply(this, arguments));\n }\n\n Resolver.prototype.makeToString = function makeToString(_, fullName) {\n return fullName;\n };\n\n return Resolver;\n }(_internalTestHelpers.ModuleBasedTestResolver)\n });\n }\n }]);\n return _class2;\n }(_internalTestHelpers.ApplicationTestCase));\n});","QUnit.module('ESLint | ember-application/tests/system/dependency_injection/to_string_test.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-application/tests/system/dependency_injection/to_string_test.js should pass ESLint\\n\\n');\n});\n","enifed('ember-application/tests/system/dependency_injection_test', ['ember-environment', 'ember-metal', 'ember-runtime', 'ember-application/system/application'], function (_emberEnvironment, _emberMetal, _emberRuntime, _application) {\n 'use strict';\n\n var EmberApplication = _application.default;\n\n var originalLookup = _emberEnvironment.context.lookup;\n var registry = void 0,\n locator = void 0,\n application = void 0;\n\n QUnit.module('Ember.Application Dependency Injection', {\n setup: function () {\n application = (0, _emberMetal.run)(EmberApplication, 'create');\n\n application.Person = _emberRuntime.Object.extend({});\n application.Orange = _emberRuntime.Object.extend({});\n application.Email = _emberRuntime.Object.extend({});\n application.User = _emberRuntime.Object.extend({});\n application.PostIndexController = _emberRuntime.Object.extend({});\n\n application.register('model:person', application.Person, { singleton: false });\n application.register('model:user', application.User, { singleton: false });\n application.register('fruit:favorite', application.Orange);\n application.register('communication:main', application.Email, { singleton: false });\n application.register('controller:postIndex', application.PostIndexController, { singleton: true });\n\n registry = application.__registry__;\n locator = application.__container__;\n\n _emberEnvironment.context.lookup = {};\n },\n teardown: function () {\n (0, _emberMetal.run)(application, 'destroy');\n application = locator = null;\n _emberEnvironment.context.lookup = originalLookup;\n }\n });\n\n QUnit.test('container lookup is normalized', function () {\n var dotNotationController = locator.lookup('controller:post.index');\n var camelCaseController = locator.lookup('controller:postIndex');\n\n ok(dotNotationController instanceof application.PostIndexController);\n ok(camelCaseController instanceof application.PostIndexController);\n\n equal(dotNotationController, camelCaseController);\n });\n\n QUnit.test('registered entities can be looked up later', function () {\n equal(registry.resolve('model:person'), application.Person);\n equal(registry.resolve('model:user'), application.User);\n equal(registry.resolve('fruit:favorite'), application.Orange);\n equal(registry.resolve('communication:main'), application.Email);\n equal(registry.resolve('controller:postIndex'), application.PostIndexController);\n\n equal(locator.lookup('fruit:favorite'), locator.lookup('fruit:favorite'), 'singleton lookup worked');\n ok(locator.lookup('model:user') !== locator.lookup('model:user'), 'non-singleton lookup worked');\n });\n\n QUnit.test('injections', function () {\n application.inject('model', 'fruit', 'fruit:favorite');\n application.inject('model:user', 'communication', 'communication:main');\n\n var user = locator.lookup('model:user');\n var person = locator.lookup('model:person');\n var fruit = locator.lookup('fruit:favorite');\n\n equal(user.get('fruit'), fruit);\n equal(person.get('fruit'), fruit);\n\n ok(application.Email.detectInstance(user.get('communication')));\n });\n});","QUnit.module('ESLint | ember-application/tests/system/dependency_injection_test.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-application/tests/system/dependency_injection_test.js should pass ESLint\\n\\n');\n});\n","enifed('ember-application/tests/system/engine_initializers_test', ['ember-metal', 'ember-application/system/engine'], function (_emberMetal, _engine) {\n 'use strict';\n\n var MyEngine = void 0,\n myEngine = void 0,\n myEngineInstance = void 0;\n\n QUnit.module('Ember.Engine initializers', {\n setup: function () {},\n teardown: function () {\n (0, _emberMetal.run)(function () {\n if (myEngineInstance) {\n myEngineInstance.destroy();\n }\n\n if (myEngine) {\n myEngine.destroy();\n }\n });\n }\n });\n\n QUnit.test('initializers require proper \\'name\\' and \\'initialize\\' properties', function () {\n MyEngine = _engine.default.extend();\n\n expectAssertion(function () {\n (0, _emberMetal.run)(function () {\n MyEngine.initializer({ name: 'initializer' });\n });\n });\n\n expectAssertion(function () {\n (0, _emberMetal.run)(function () {\n MyEngine.initializer({\n initialize: function () {}\n });\n });\n });\n });\n\n QUnit.test('initializers are passed an Engine', function () {\n MyEngine = _engine.default.extend();\n\n MyEngine.initializer({\n name: 'initializer',\n initialize: function (engine) {\n ok(engine instanceof _engine.default, 'initialize is passed an Engine');\n }\n });\n\n myEngine = MyEngine.create();\n myEngineInstance = myEngine.buildInstance();\n });\n\n QUnit.test('initializers can be registered in a specified order', function () {\n var order = [];\n\n MyEngine = _engine.default.extend();\n MyEngine.initializer({\n name: 'fourth',\n after: 'third',\n initialize: function (engine) {\n order.push('fourth');\n }\n });\n\n MyEngine.initializer({\n name: 'second',\n after: 'first',\n before: 'third',\n initialize: function (engine) {\n order.push('second');\n }\n });\n\n MyEngine.initializer({\n name: 'fifth',\n after: 'fourth',\n before: 'sixth',\n initialize: function (engine) {\n order.push('fifth');\n }\n });\n\n MyEngine.initializer({\n name: 'first',\n before: 'second',\n initialize: function (engine) {\n order.push('first');\n }\n });\n\n MyEngine.initializer({\n name: 'third',\n initialize: function (engine) {\n order.push('third');\n }\n });\n\n MyEngine.initializer({\n name: 'sixth',\n initialize: function (engine) {\n order.push('sixth');\n }\n });\n\n myEngine = MyEngine.create();\n myEngineInstance = myEngine.buildInstance();\n\n deepEqual(order, ['first', 'second', 'third', 'fourth', 'fifth', 'sixth']);\n });\n\n QUnit.test('initializers can be registered in a specified order as an array', function () {\n var order = [];\n\n MyEngine = _engine.default.extend();\n\n MyEngine.initializer({\n name: 'third',\n initialize: function (engine) {\n order.push('third');\n }\n });\n\n MyEngine.initializer({\n name: 'second',\n after: 'first',\n before: ['third', 'fourth'],\n initialize: function (engine) {\n order.push('second');\n }\n });\n\n MyEngine.initializer({\n name: 'fourth',\n after: ['second', 'third'],\n initialize: function (engine) {\n order.push('fourth');\n }\n });\n\n MyEngine.initializer({\n name: 'fifth',\n after: 'fourth',\n before: 'sixth',\n initialize: function (engine) {\n order.push('fifth');\n }\n });\n\n MyEngine.initializer({\n name: 'first',\n before: ['second'],\n initialize: function (engine) {\n order.push('first');\n }\n });\n\n MyEngine.initializer({\n name: 'sixth',\n initialize: function (engine) {\n order.push('sixth');\n }\n });\n\n myEngine = MyEngine.create();\n myEngineInstance = myEngine.buildInstance();\n\n deepEqual(order, ['first', 'second', 'third', 'fourth', 'fifth', 'sixth']);\n });\n\n QUnit.test('initializers can have multiple dependencies', function () {\n var order = [];\n\n MyEngine = _engine.default.extend();\n\n var a = {\n name: 'a',\n before: 'b',\n initialize: function (engine) {\n order.push('a');\n }\n };\n var b = {\n name: 'b',\n initialize: function (engine) {\n order.push('b');\n }\n };\n var c = {\n name: 'c',\n after: 'b',\n initialize: function (engine) {\n order.push('c');\n }\n };\n var afterB = {\n name: 'after b',\n after: 'b',\n initialize: function (engine) {\n order.push('after b');\n }\n };\n var afterC = {\n name: 'after c',\n after: 'c',\n initialize: function (engine) {\n order.push('after c');\n }\n };\n\n MyEngine.initializer(b);\n MyEngine.initializer(a);\n MyEngine.initializer(afterC);\n MyEngine.initializer(afterB);\n MyEngine.initializer(c);\n\n myEngine = MyEngine.create();\n myEngineInstance = myEngine.buildInstance();\n\n ok(order.indexOf(a.name) < order.indexOf(b.name), 'a < b');\n ok(order.indexOf(b.name) < order.indexOf(c.name), 'b < c');\n ok(order.indexOf(b.name) < order.indexOf(afterB.name), 'b < afterB');\n ok(order.indexOf(c.name) < order.indexOf(afterC.name), 'c < afterC');\n });\n\n QUnit.test('initializers set on Engine subclasses are not shared between engines', function () {\n var firstInitializerRunCount = 0;\n var secondInitializerRunCount = 0;\n var FirstEngine = _engine.default.extend();\n\n FirstEngine.initializer({\n name: 'first',\n initialize: function (engine) {\n firstInitializerRunCount++;\n }\n });\n\n var SecondEngine = _engine.default.extend();\n\n SecondEngine.initializer({\n name: 'second',\n initialize: function (engine) {\n secondInitializerRunCount++;\n }\n });\n\n var firstEngine = FirstEngine.create();\n var firstEngineInstance = firstEngine.buildInstance();\n\n equal(firstInitializerRunCount, 1, 'first initializer only was run');\n equal(secondInitializerRunCount, 0, 'first initializer only was run');\n\n var secondEngine = SecondEngine.create();\n var secondEngineInstance = secondEngine.buildInstance();\n\n equal(firstInitializerRunCount, 1, 'second initializer only was run');\n equal(secondInitializerRunCount, 1, 'second initializer only was run');\n\n (0, _emberMetal.run)(function () {\n firstEngineInstance.destroy();\n secondEngineInstance.destroy();\n\n firstEngine.destroy();\n secondEngine.destroy();\n });\n });\n\n QUnit.test('initializers are concatenated', function () {\n var firstInitializerRunCount = 0;\n var secondInitializerRunCount = 0;\n var FirstEngine = _engine.default.extend();\n\n FirstEngine.initializer({\n name: 'first',\n initialize: function (engine) {\n firstInitializerRunCount++;\n }\n });\n\n var SecondEngine = FirstEngine.extend();\n\n SecondEngine.initializer({\n name: 'second',\n initialize: function (engine) {\n secondInitializerRunCount++;\n }\n });\n\n var firstEngine = FirstEngine.create();\n var firstEngineInstance = firstEngine.buildInstance();\n\n equal(firstInitializerRunCount, 1, 'first initializer only was run when base class created');\n equal(secondInitializerRunCount, 0, 'second initializer was not run when first base class created');\n firstInitializerRunCount = 0;\n\n var secondEngine = SecondEngine.create();\n var secondEngineInstance = secondEngine.buildInstance();\n\n equal(firstInitializerRunCount, 1, 'first initializer was run when subclass created');\n equal(secondInitializerRunCount, 1, 'second initializers was run when subclass created');\n\n (0, _emberMetal.run)(function () {\n firstEngineInstance.destroy();\n secondEngineInstance.destroy();\n\n firstEngine.destroy();\n secondEngine.destroy();\n });\n });\n\n QUnit.test('initializers are per-engine', function () {\n expect(2);\n\n var FirstEngine = _engine.default.extend();\n\n FirstEngine.initializer({\n name: 'abc',\n initialize: function (engine) {}\n });\n\n expectAssertion(function () {\n FirstEngine.initializer({\n name: 'abc',\n initialize: function (engine) {}\n });\n });\n\n var SecondEngine = _engine.default.extend();\n SecondEngine.instanceInitializer({\n name: 'abc',\n initialize: function (engine) {}\n });\n\n ok(true, 'Two engines can have initializers named the same.');\n });\n\n QUnit.test('initializers are executed in their own context', function () {\n expect(1);\n\n MyEngine = _engine.default.extend();\n\n MyEngine.initializer({\n name: 'coolInitializer',\n myProperty: 'cool',\n initialize: function (engine) {\n equal(this.myProperty, 'cool', 'should have access to its own context');\n }\n });\n\n myEngine = MyEngine.create();\n myEngineInstance = myEngine.buildInstance();\n });\n});","QUnit.module('ESLint | ember-application/tests/system/engine_initializers_test.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-application/tests/system/engine_initializers_test.js should pass ESLint\\n\\n');\n});\n","enifed('ember-application/tests/system/engine_instance_initializers_test', ['ember-metal', 'ember-application/system/engine', 'ember-application/system/engine-instance', 'ember-application/system/engine-parent'], function (_emberMetal, _engine, _engineInstance, _engineParent) {\n 'use strict';\n\n var MyEngine = void 0,\n myEngine = void 0,\n myEngineInstance = void 0;\n\n function buildEngineInstance(EngineClass) {\n var engineInstance = EngineClass.buildInstance();\n (0, _engineParent.setEngineParent)(engineInstance, {\n lookup: function () {\n return {};\n },\n resolveRegistration: function () {\n return {};\n }\n });\n return engineInstance;\n }\n\n QUnit.module('Ember.Engine instance initializers', {\n setup: function () {},\n teardown: function () {\n (0, _emberMetal.run)(function () {\n if (myEngineInstance) {\n myEngineInstance.destroy();\n }\n\n if (myEngine) {\n myEngine.destroy();\n }\n });\n }\n });\n\n QUnit.test('initializers require proper \\'name\\' and \\'initialize\\' properties', function () {\n MyEngine = _engine.default.extend();\n\n expectAssertion(function () {\n (0, _emberMetal.run)(function () {\n MyEngine.instanceInitializer({ name: 'initializer' });\n });\n });\n\n expectAssertion(function () {\n (0, _emberMetal.run)(function () {\n MyEngine.instanceInitializer({\n initialize: function () {}\n });\n });\n });\n });\n\n QUnit.test('initializers are passed an engine instance', function () {\n MyEngine = _engine.default.extend();\n\n MyEngine.instanceInitializer({\n name: 'initializer',\n initialize: function (instance) {\n ok(instance instanceof _engineInstance.default, 'initialize is passed an engine instance');\n }\n });\n\n myEngine = MyEngine.create();\n myEngineInstance = buildEngineInstance(myEngine);\n return myEngineInstance.boot();\n });\n\n QUnit.test('initializers can be registered in a specified order', function () {\n var order = [];\n\n MyEngine = _engine.default.extend();\n\n MyEngine.instanceInitializer({\n name: 'fourth',\n after: 'third',\n initialize: function (engine) {\n order.push('fourth');\n }\n });\n\n MyEngine.instanceInitializer({\n name: 'second',\n after: 'first',\n before: 'third',\n initialize: function (engine) {\n order.push('second');\n }\n });\n\n MyEngine.instanceInitializer({\n name: 'fifth',\n after: 'fourth',\n before: 'sixth',\n initialize: function (engine) {\n order.push('fifth');\n }\n });\n\n MyEngine.instanceInitializer({\n name: 'first',\n before: 'second',\n initialize: function (engine) {\n order.push('first');\n }\n });\n\n MyEngine.instanceInitializer({\n name: 'third',\n initialize: function (engine) {\n order.push('third');\n }\n });\n\n MyEngine.instanceInitializer({\n name: 'sixth',\n initialize: function (engine) {\n order.push('sixth');\n }\n });\n\n myEngine = MyEngine.create();\n myEngineInstance = buildEngineInstance(myEngine);\n\n return myEngineInstance.boot().then(function () {\n deepEqual(order, ['first', 'second', 'third', 'fourth', 'fifth', 'sixth']);\n });\n });\n\n QUnit.test('initializers can be registered in a specified order as an array', function () {\n var order = [];\n MyEngine = _engine.default.extend();\n\n MyEngine.instanceInitializer({\n name: 'third',\n initialize: function (engine) {\n order.push('third');\n }\n });\n\n MyEngine.instanceInitializer({\n name: 'second',\n after: 'first',\n before: ['third', 'fourth'],\n initialize: function (engine) {\n order.push('second');\n }\n });\n\n MyEngine.instanceInitializer({\n name: 'fourth',\n after: ['second', 'third'],\n initialize: function (engine) {\n order.push('fourth');\n }\n });\n\n MyEngine.instanceInitializer({\n name: 'fifth',\n after: 'fourth',\n before: 'sixth',\n initialize: function (engine) {\n order.push('fifth');\n }\n });\n\n MyEngine.instanceInitializer({\n name: 'first',\n before: ['second'],\n initialize: function (engine) {\n order.push('first');\n }\n });\n\n MyEngine.instanceInitializer({\n name: 'sixth',\n initialize: function (engine) {\n order.push('sixth');\n }\n });\n\n myEngine = MyEngine.create();\n myEngineInstance = buildEngineInstance(myEngine);\n\n return myEngineInstance.boot().then(function () {\n deepEqual(order, ['first', 'second', 'third', 'fourth', 'fifth', 'sixth']);\n });\n });\n\n QUnit.test('initializers can have multiple dependencies', function () {\n var order = [];\n\n MyEngine = _engine.default.extend();\n\n var a = {\n name: 'a',\n before: 'b',\n initialize: function (engine) {\n order.push('a');\n }\n };\n var b = {\n name: 'b',\n initialize: function (engine) {\n order.push('b');\n }\n };\n var c = {\n name: 'c',\n after: 'b',\n initialize: function (engine) {\n order.push('c');\n }\n };\n var afterB = {\n name: 'after b',\n after: 'b',\n initialize: function (engine) {\n order.push('after b');\n }\n };\n var afterC = {\n name: 'after c',\n after: 'c',\n initialize: function (engine) {\n order.push('after c');\n }\n };\n\n MyEngine.instanceInitializer(b);\n MyEngine.instanceInitializer(a);\n MyEngine.instanceInitializer(afterC);\n MyEngine.instanceInitializer(afterB);\n MyEngine.instanceInitializer(c);\n\n myEngine = MyEngine.create();\n myEngineInstance = buildEngineInstance(myEngine);\n\n return myEngineInstance.boot().then(function () {\n ok(order.indexOf(a.name) < order.indexOf(b.name), 'a < b');\n ok(order.indexOf(b.name) < order.indexOf(c.name), 'b < c');\n ok(order.indexOf(b.name) < order.indexOf(afterB.name), 'b < afterB');\n ok(order.indexOf(c.name) < order.indexOf(afterC.name), 'c < afterC');\n });\n });\n\n QUnit.test('initializers set on Engine subclasses should not be shared between engines', function () {\n var firstInitializerRunCount = 0;\n var secondInitializerRunCount = 0;\n var FirstEngine = _engine.default.extend();\n var firstEngine = void 0,\n firstEngineInstance = void 0;\n\n FirstEngine.instanceInitializer({\n name: 'first',\n initialize: function (engine) {\n firstInitializerRunCount++;\n }\n });\n\n var SecondEngine = _engine.default.extend();\n var secondEngine = void 0,\n secondEngineInstance = void 0;\n\n SecondEngine.instanceInitializer({\n name: 'second',\n initialize: function (engine) {\n secondInitializerRunCount++;\n }\n });\n\n firstEngine = FirstEngine.create();\n firstEngineInstance = buildEngineInstance(firstEngine);\n\n return firstEngineInstance.boot().then(function () {\n equal(firstInitializerRunCount, 1, 'first initializer only was run');\n equal(secondInitializerRunCount, 0, 'first initializer only was run');\n\n secondEngine = SecondEngine.create();\n secondEngineInstance = buildEngineInstance(secondEngine);\n return secondEngineInstance.boot();\n }).then(function () {\n equal(firstInitializerRunCount, 1, 'second initializer only was run');\n equal(secondInitializerRunCount, 1, 'second initializer only was run');\n\n (0, _emberMetal.run)(function () {\n firstEngineInstance.destroy();\n secondEngineInstance.destroy();\n\n firstEngine.destroy();\n secondEngine.destroy();\n });\n });\n });\n\n QUnit.test('initializers are concatenated', function () {\n var firstInitializerRunCount = 0;\n var secondInitializerRunCount = 0;\n var FirstEngine = _engine.default.extend();\n\n FirstEngine.instanceInitializer({\n name: 'first',\n initialize: function (engine) {\n firstInitializerRunCount++;\n }\n });\n\n var SecondEngine = FirstEngine.extend();\n\n SecondEngine.instanceInitializer({\n name: 'second',\n initialize: function (engine) {\n secondInitializerRunCount++;\n }\n });\n\n var firstEngine = FirstEngine.create();\n var firstEngineInstance = buildEngineInstance(firstEngine);\n\n var secondEngine = void 0,\n secondEngineInstance = void 0;\n\n return firstEngineInstance.boot().then(function () {\n equal(firstInitializerRunCount, 1, 'first initializer only was run when base class created');\n equal(secondInitializerRunCount, 0, 'second initializer was not run when first base class created');\n firstInitializerRunCount = 0;\n\n secondEngine = SecondEngine.create();\n secondEngineInstance = buildEngineInstance(secondEngine);\n return secondEngineInstance.boot();\n }).then(function () {\n equal(firstInitializerRunCount, 1, 'first initializer was run when subclass created');\n equal(secondInitializerRunCount, 1, 'second initializers was run when subclass created');\n\n (0, _emberMetal.run)(function () {\n firstEngineInstance.destroy();\n secondEngineInstance.destroy();\n\n firstEngine.destroy();\n secondEngine.destroy();\n });\n });\n });\n\n QUnit.test('initializers are per-engine', function () {\n expect(2);\n\n var FirstEngine = _engine.default.extend();\n\n FirstEngine.instanceInitializer({\n name: 'abc',\n initialize: function (engine) {}\n });\n\n expectAssertion(function () {\n FirstEngine.instanceInitializer({\n name: 'abc',\n initialize: function (engine) {}\n });\n });\n\n var SecondEngine = _engine.default.extend();\n SecondEngine.instanceInitializer({\n name: 'abc',\n initialize: function (engine) {}\n });\n\n ok(true, 'Two engines can have initializers named the same.');\n });\n\n QUnit.test('initializers are executed in their own context', function () {\n expect(1);\n\n var MyEngine = _engine.default.extend();\n\n MyEngine.instanceInitializer({\n name: 'coolInitializer',\n myProperty: 'cool',\n initialize: function (engine) {\n equal(this.myProperty, 'cool', 'should have access to its own context');\n }\n });\n\n myEngine = MyEngine.create();\n myEngineInstance = buildEngineInstance(myEngine);\n\n return myEngineInstance.boot();\n });\n});","QUnit.module('ESLint | ember-application/tests/system/engine_instance_initializers_test.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-application/tests/system/engine_instance_initializers_test.js should pass ESLint\\n\\n');\n});\n","enifed('ember-application/tests/system/engine_instance_test', ['ember-application/system/engine', 'ember-application/system/engine-instance', 'ember-application/system/engine-parent', 'ember-metal', 'internal-test-helpers'], function (_engine, _engineInstance, _engineParent, _emberMetal, _internalTestHelpers) {\n 'use strict';\n\n var engine = void 0,\n engineInstance = void 0;\n\n QUnit.module('Ember.EngineInstance', {\n setup: function () {\n (0, _emberMetal.run)(function () {\n engine = _engine.default.create({ router: null });\n });\n },\n teardown: function () {\n if (engineInstance) {\n (0, _emberMetal.run)(engineInstance, 'destroy');\n }\n\n if (engine) {\n (0, _emberMetal.run)(engine, 'destroy');\n }\n }\n });\n\n QUnit.test('an engine instance can be created based upon a base engine', function () {\n (0, _emberMetal.run)(function () {\n engineInstance = _engineInstance.default.create({ base: engine });\n });\n\n ok(engineInstance, 'instance should be created');\n equal(engineInstance.base, engine, 'base should be set to engine');\n });\n\n QUnit.test('unregistering a factory clears all cached instances of that factory', function (assert) {\n assert.expect(3);\n\n engineInstance = (0, _emberMetal.run)(function () {\n return _engineInstance.default.create({ base: engine });\n });\n\n var PostComponent = (0, _internalTestHelpers.factory)();\n\n engineInstance.register('component:post', PostComponent);\n\n var postComponent1 = engineInstance.lookup('component:post');\n assert.ok(postComponent1, 'lookup creates instance');\n\n engineInstance.unregister('component:post');\n engineInstance.register('component:post', PostComponent);\n\n var postComponent2 = engineInstance.lookup('component:post');\n assert.ok(postComponent2, 'lookup creates instance');\n\n assert.notStrictEqual(postComponent1, postComponent2, 'lookup creates a brand new instance because previous one was reset');\n });\n\n QUnit.test('can be booted when its parent has been set', function (assert) {\n assert.expect(3);\n\n engineInstance = (0, _emberMetal.run)(function () {\n return _engineInstance.default.create({ base: engine });\n });\n\n expectAssertion(function () {\n engineInstance._bootSync();\n }, 'An engine instance\\'s parent must be set via `setEngineParent(engine, parent)` prior to calling `engine.boot()`.');\n\n (0, _engineParent.setEngineParent)(engineInstance, {});\n\n // Stub `cloneParentDependencies`, the internals of which are tested along\n // with application instances.\n engineInstance.cloneParentDependencies = function () {\n assert.ok(true, 'parent dependencies are cloned');\n };\n\n return engineInstance.boot().then(function () {\n assert.ok(true, 'boot successful');\n });\n });\n\n QUnit.test('can build a child instance of a registered engine', function (assert) {\n var ChatEngine = _engine.default.extend();\n var chatEngineInstance = void 0;\n\n engine.register('engine:chat', ChatEngine);\n\n (0, _emberMetal.run)(function () {\n engineInstance = _engineInstance.default.create({ base: engine });\n\n // Try to build an unregistered engine.\n throws(function () {\n engineInstance.buildChildEngineInstance('fake');\n }, 'You attempted to mount the engine \\'fake\\', but it is not registered with its parent.');\n\n // Build the `chat` engine, registered above.\n chatEngineInstance = engineInstance.buildChildEngineInstance('chat');\n });\n\n assert.ok(chatEngineInstance, 'child engine instance successfully created');\n\n assert.strictEqual((0, _engineParent.getEngineParent)(chatEngineInstance), engineInstance, 'child engine instance is assigned the correct parent');\n });\n});","QUnit.module('ESLint | ember-application/tests/system/engine_instance_test.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-application/tests/system/engine_instance_test.js should pass ESLint\\n\\n');\n});\n","enifed('ember-application/tests/system/engine_parent_test', ['ember-application/system/engine-parent'], function (_engineParent) {\n 'use strict';\n\n QUnit.module('EngineParent', {});\n\n QUnit.test('An engine\\'s parent can be set with `setEngineParent` and retrieved with `getEngineParent`', function () {\n var engine = {};\n var parent = {};\n\n strictEqual((0, _engineParent.getEngineParent)(engine), undefined, 'parent has not been set');\n\n (0, _engineParent.setEngineParent)(engine, parent);\n\n strictEqual((0, _engineParent.getEngineParent)(engine), parent, 'parent has been set');\n\n strictEqual(engine[_engineParent.ENGINE_PARENT], parent, 'parent has been set to the ENGINE_PARENT symbol');\n });\n});","QUnit.module('ESLint | ember-application/tests/system/engine_parent_test.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-application/tests/system/engine_parent_test.js should pass ESLint\\n\\n');\n});\n","enifed('ember-application/tests/system/engine_test', ['ember-babel', 'ember-environment', 'ember-metal', 'ember-application/system/engine', 'ember-runtime', 'container', 'ember-application/tests/test-helpers/registry-check'], function (_emberBabel, _emberEnvironment, _emberMetal, _engine, _emberRuntime, _container, _registryCheck) {\n 'use strict';\n\n var _templateObject = (0, _emberBabel.taggedTemplateLiteralLoose)(['-bucket-cache:main'], ['-bucket-cache:main']),\n _templateObject2 = (0, _emberBabel.taggedTemplateLiteralLoose)(['template:components/-default'], ['template:components/-default']);\n\n var engine = void 0;\n var originalLookup = _emberEnvironment.context.lookup;\n var lookup = void 0;\n\n QUnit.module('Ember.Engine', {\n setup: function () {\n lookup = _emberEnvironment.context.lookup = {};\n engine = (0, _emberMetal.run)(function () {\n return _engine.default.create();\n });\n },\n teardown: function () {\n _emberEnvironment.context.lookup = originalLookup;\n if (engine) {\n (0, _emberMetal.run)(engine, 'destroy');\n }\n }\n });\n\n QUnit.test('acts like a namespace', function () {\n engine = (0, _emberMetal.run)(function () {\n return lookup.TestEngine = _engine.default.create();\n });\n\n engine.Foo = _emberRuntime.Object.extend();\n equal(engine.Foo.toString(), 'TestEngine.Foo', 'Classes pick up their parent namespace');\n });\n\n QUnit.test('builds a registry', function () {\n strictEqual(engine.resolveRegistration('application:main'), engine, 'application:main is registered');\n deepEqual(engine.registeredOptionsForType('component'), { singleton: false }, 'optionsForType \\'component\\'');\n deepEqual(engine.registeredOptionsForType('view'), { singleton: false }, 'optionsForType \\'view\\'');\n (0, _registryCheck.verifyRegistration)(engine, 'controller:basic');\n (0, _registryCheck.verifyInjection)(engine, 'view', '_viewRegistry', '-view-registry:main');\n (0, _registryCheck.verifyInjection)(engine, 'route', '_topLevelViewTemplate', 'template:-outlet');\n (0, _registryCheck.verifyInjection)(engine, 'view:-outlet', 'namespace', 'application:main');\n\n (0, _registryCheck.verifyInjection)(engine, 'controller', 'target', 'router:main');\n (0, _registryCheck.verifyInjection)(engine, 'controller', 'namespace', 'application:main');\n\n (0, _registryCheck.verifyInjection)(engine, 'router', '_bucketCache', (0, _container.privatize)(_templateObject));\n (0, _registryCheck.verifyInjection)(engine, 'route', '_bucketCache', (0, _container.privatize)(_templateObject));\n\n (0, _registryCheck.verifyInjection)(engine, 'route', 'router', 'router:main');\n\n (0, _registryCheck.verifyRegistration)(engine, 'component:-text-field');\n (0, _registryCheck.verifyRegistration)(engine, 'component:-text-area');\n (0, _registryCheck.verifyRegistration)(engine, 'component:-checkbox');\n (0, _registryCheck.verifyRegistration)(engine, 'component:link-to');\n\n (0, _registryCheck.verifyRegistration)(engine, 'service:-routing');\n (0, _registryCheck.verifyInjection)(engine, 'service:-routing', 'router', 'router:main');\n\n // DEBUGGING\n (0, _registryCheck.verifyRegistration)(engine, 'resolver-for-debugging:main');\n (0, _registryCheck.verifyInjection)(engine, 'container-debug-adapter:main', 'resolver', 'resolver-for-debugging:main');\n (0, _registryCheck.verifyInjection)(engine, 'data-adapter:main', 'containerDebugAdapter', 'container-debug-adapter:main');\n (0, _registryCheck.verifyRegistration)(engine, 'container-debug-adapter:main');\n (0, _registryCheck.verifyRegistration)(engine, 'component-lookup:main');\n\n (0, _registryCheck.verifyInjection)(engine, 'service:-dom-changes', 'document', 'service:-document');\n (0, _registryCheck.verifyInjection)(engine, 'service:-dom-tree-construction', 'document', 'service:-document');\n (0, _registryCheck.verifyRegistration)(engine, 'view:-outlet');\n (0, _registryCheck.verifyRegistration)(engine, (0, _container.privatize)(_templateObject2));\n (0, _registryCheck.verifyRegistration)(engine, 'template:-outlet');\n (0, _registryCheck.verifyInjection)(engine, 'view:-outlet', 'template', 'template:-outlet');\n (0, _registryCheck.verifyInjection)(engine, 'template', 'env', 'service:-glimmer-environment');\n deepEqual(engine.registeredOptionsForType('helper'), { instantiate: false }, 'optionsForType \\'helper\\'');\n });\n});","QUnit.module('ESLint | ember-application/tests/system/engine_test.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-application/tests/system/engine_test.js should pass ESLint\\n\\n');\n});\n","enifed('ember-application/tests/system/initializers_test', ['ember-babel', 'ember-utils', 'internal-test-helpers', 'ember-application', 'ember-views'], function (_emberBabel, _emberUtils, _internalTestHelpers, _emberApplication, _emberViews) {\n 'use strict';\n\n (0, _internalTestHelpers.moduleFor)('Ember.Application initializers', function (_AutobootApplicationT) {\n (0, _emberBabel.inherits)(_class, _AutobootApplicationT);\n\n function _class() {\n (0, _emberBabel.classCallCheck)(this, _class);\n\n (0, _emberViews.jQuery)('#qunit-fixture').html('\\n <div id=\"one\">ONE</div>\\n <div id=\"two\">TWO</div>\\n ');\n return (0, _emberBabel.possibleConstructorReturn)(this, _AutobootApplicationT.call(this));\n }\n\n _class.prototype.createSecondApplication = function createSecondApplication(options) {\n var MyApplication = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _emberApplication.Application;\n\n var myOptions = (0, _emberUtils.assign)(this.applicationOptions, {\n rootElement: '#two'\n }, options);\n var secondApp = this.secondApp = MyApplication.create(myOptions);\n return secondApp;\n };\n\n _class.prototype.teardown = function teardown() {\n var _this2 = this;\n\n _AutobootApplicationT.prototype.teardown.call(this);\n\n if (this.secondApp) {\n this.runTask(function () {\n return _this2.secondApp.destroy();\n });\n }\n };\n\n _class.prototype['@test initializers require proper \\'name\\' and \\'initialize\\' properties'] = function () {\n var MyApplication = _emberApplication.Application.extend();\n\n expectAssertion(function () {\n MyApplication.initializer({ name: 'initializer' });\n });\n\n expectAssertion(function () {\n MyApplication.initializer({\n initialize: function () {}\n });\n });\n };\n\n _class.prototype['@test initializers that throw errors cause the boot promise to reject with the error'] = function (assert) {\n var _this3 = this;\n\n assert.expect(2);\n\n var MyApplication = _emberApplication.Application.extend();\n\n MyApplication.initializer({\n name: 'initializer',\n initialize: function () {\n throw new Error('boot failure');\n }\n });\n\n this.runTask(function () {\n _this3.createApplication({\n autoboot: false\n }, MyApplication);\n });\n\n var app = this.application;\n\n try {\n this.runTask(function () {\n app.boot().then(function (app) {\n assert.ok(false, 'The boot promise should not resolve when there is a boot error');\n }, function (error) {\n assert.ok(error instanceof Error, 'The boot promise should reject with an error');\n assert.equal(error.message, 'boot failure');\n });\n });\n } catch (error) {\n assert.ok(false, 'The boot method should not throw');\n throw error;\n }\n };\n\n _class.prototype['@test initializers are passed an App'] = function (assert) {\n var _this4 = this;\n\n var MyApplication = _emberApplication.Application.extend();\n\n MyApplication.initializer({\n name: 'initializer',\n initialize: function (App) {\n assert.ok(App instanceof _emberApplication.Application, 'initialize is passed an Application');\n }\n });\n\n this.runTask(function () {\n return _this4.createApplication({}, MyApplication);\n });\n };\n\n _class.prototype['@test initializers can be registered in a specified order'] = function (assert) {\n var _this5 = this;\n\n var order = [];\n var MyApplication = _emberApplication.Application.extend();\n\n MyApplication.initializer({\n name: 'fourth',\n after: 'third',\n initialize: function (registry) {\n order.push('fourth');\n }\n });\n\n MyApplication.initializer({\n name: 'second',\n after: 'first',\n before: 'third',\n initialize: function (registry) {\n order.push('second');\n }\n });\n\n MyApplication.initializer({\n name: 'fifth',\n after: 'fourth',\n before: 'sixth',\n initialize: function (registry) {\n order.push('fifth');\n }\n });\n\n MyApplication.initializer({\n name: 'first',\n before: 'second',\n initialize: function (registry) {\n order.push('first');\n }\n });\n\n MyApplication.initializer({\n name: 'third',\n initialize: function (registry) {\n order.push('third');\n }\n });\n\n MyApplication.initializer({\n name: 'sixth',\n initialize: function (registry) {\n order.push('sixth');\n }\n });\n\n this.runTask(function () {\n return _this5.createApplication({}, MyApplication);\n });\n\n assert.deepEqual(order, ['first', 'second', 'third', 'fourth', 'fifth', 'sixth']);\n };\n\n _class.prototype['@test initializers can be registered in a specified order as an array'] = function (assert) {\n var _this6 = this;\n\n var order = [];\n var MyApplication = _emberApplication.Application.extend();\n\n MyApplication.initializer({\n name: 'third',\n initialize: function (registry) {\n order.push('third');\n }\n });\n\n MyApplication.initializer({\n name: 'second',\n after: 'first',\n before: ['third', 'fourth'],\n initialize: function (registry) {\n order.push('second');\n }\n });\n\n MyApplication.initializer({\n name: 'fourth',\n after: ['second', 'third'],\n initialize: function (registry) {\n order.push('fourth');\n }\n });\n\n MyApplication.initializer({\n name: 'fifth',\n after: 'fourth',\n before: 'sixth',\n initialize: function (registry) {\n order.push('fifth');\n }\n });\n\n MyApplication.initializer({\n name: 'first',\n before: ['second'],\n initialize: function (registry) {\n order.push('first');\n }\n });\n\n MyApplication.initializer({\n name: 'sixth',\n initialize: function (registry) {\n order.push('sixth');\n }\n });\n\n this.runTask(function () {\n return _this6.createApplication({}, MyApplication);\n });\n\n assert.deepEqual(order, ['first', 'second', 'third', 'fourth', 'fifth', 'sixth']);\n };\n\n _class.prototype['@test initializers can have multiple dependencies'] = function (assert) {\n var _this7 = this;\n\n var order = [];\n var MyApplication = _emberApplication.Application.extend();\n var a = {\n name: 'a',\n before: 'b',\n initialize: function (registry) {\n order.push('a');\n }\n };\n var b = {\n name: 'b',\n initialize: function (registry) {\n order.push('b');\n }\n };\n var c = {\n name: 'c',\n after: 'b',\n initialize: function (registry) {\n order.push('c');\n }\n };\n var afterB = {\n name: 'after b',\n after: 'b',\n initialize: function (registry) {\n order.push('after b');\n }\n };\n var afterC = {\n name: 'after c',\n after: 'c',\n initialize: function (registry) {\n order.push('after c');\n }\n };\n\n MyApplication.initializer(b);\n MyApplication.initializer(a);\n MyApplication.initializer(afterC);\n MyApplication.initializer(afterB);\n MyApplication.initializer(c);\n\n this.runTask(function () {\n return _this7.createApplication({}, MyApplication);\n });\n\n assert.ok(order.indexOf(a.name) < order.indexOf(b.name), 'a < b');\n assert.ok(order.indexOf(b.name) < order.indexOf(c.name), 'b < c');\n assert.ok(order.indexOf(b.name) < order.indexOf(afterB.name), 'b < afterB');\n assert.ok(order.indexOf(c.name) < order.indexOf(afterC.name), 'c < afterC');\n };\n\n _class.prototype['@test initializers set on Application subclasses are not shared between apps'] = function (assert) {\n var _this8 = this;\n\n var firstInitializerRunCount = 0;\n var secondInitializerRunCount = 0;\n var FirstApp = _emberApplication.Application.extend();\n\n FirstApp.initializer({\n name: 'first',\n initialize: function (registry) {\n firstInitializerRunCount++;\n }\n });\n\n var SecondApp = _emberApplication.Application.extend();\n\n SecondApp.initializer({\n name: 'second',\n initialize: function (registry) {\n secondInitializerRunCount++;\n }\n });\n\n this.runTask(function () {\n return _this8.createApplication({}, FirstApp);\n });\n\n assert.equal(firstInitializerRunCount, 1, 'first initializer only was run');\n assert.equal(secondInitializerRunCount, 0, 'first initializer only was run');\n\n this.runTask(function () {\n return _this8.createSecondApplication({}, SecondApp);\n });\n\n assert.equal(firstInitializerRunCount, 1, 'second initializer only was run');\n assert.equal(secondInitializerRunCount, 1, 'second initializer only was run');\n };\n\n _class.prototype['@test initializers are concatenated'] = function (assert) {\n var _this9 = this;\n\n var firstInitializerRunCount = 0;\n var secondInitializerRunCount = 0;\n var FirstApp = _emberApplication.Application.extend();\n\n FirstApp.initializer({\n name: 'first',\n initialize: function (registry) {\n firstInitializerRunCount++;\n }\n });\n\n var SecondApp = FirstApp.extend();\n SecondApp.initializer({\n name: 'second',\n initialize: function (registry) {\n secondInitializerRunCount++;\n }\n });\n\n this.runTask(function () {\n return _this9.createApplication({}, FirstApp);\n });\n\n assert.equal(firstInitializerRunCount, 1, 'first initializer only was run when base class created');\n assert.equal(secondInitializerRunCount, 0, 'first initializer only was run when base class created');\n\n firstInitializerRunCount = 0;\n this.runTask(function () {\n return _this9.createSecondApplication({}, SecondApp);\n });\n\n assert.equal(firstInitializerRunCount, 1, 'first initializer was run when subclass created');\n assert.equal(secondInitializerRunCount, 1, 'second initializers was run when subclass created');\n };\n\n _class.prototype['@test initializers are per-app'] = function (assert) {\n assert.expect(2);\n\n var FirstApp = _emberApplication.Application.extend();\n\n FirstApp.initializer({\n name: 'abc',\n initialize: function (app) {}\n });\n\n expectAssertion(function () {\n FirstApp.initializer({\n name: 'abc',\n initialize: function (app) {}\n });\n });\n\n var SecondApp = _emberApplication.Application.extend();\n SecondApp.instanceInitializer({\n name: 'abc',\n initialize: function (app) {}\n });\n\n assert.ok(true, 'Two apps can have initializers named the same.');\n };\n\n _class.prototype['@test initializers are executed in their own context'] = function (assert) {\n var _this10 = this;\n\n assert.expect(1);\n var MyApplication = _emberApplication.Application.extend();\n\n MyApplication.initializer({\n name: 'coolInitializer',\n myProperty: 'cool',\n initialize: function (application) {\n assert.equal(this.myProperty, 'cool', 'should have access to its own context');\n }\n });\n\n this.runTask(function () {\n return _this10.createApplication({}, MyApplication);\n });\n };\n\n _class.prototype['@test initializers throw a deprecation warning when receiving a second argument'] = function (assert) {\n var _this11 = this;\n\n assert.expect(1);\n\n var MyApplication = _emberApplication.Application.extend();\n\n MyApplication.initializer({\n name: 'deprecated',\n initialize: function (registry, application) {}\n });\n\n expectDeprecation(function () {\n _this11.runTask(function () {\n return _this11.createApplication({}, MyApplication);\n });\n }, /The `initialize` method for Application initializer 'deprecated' should take only one argument - `App`, an instance of an `Application`./);\n };\n\n (0, _emberBabel.createClass)(_class, [{\n key: 'applicationOptions',\n get: function () {\n return (0, _emberUtils.assign)(_AutobootApplicationT.prototype.applicationOptions, {\n rootElement: '#one'\n });\n }\n }]);\n return _class;\n }(_internalTestHelpers.AutobootApplicationTestCase));\n});","QUnit.module('ESLint | ember-application/tests/system/initializers_test.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-application/tests/system/initializers_test.js should pass ESLint\\n\\n');\n});\n","enifed('ember-application/tests/system/instance_initializers_test', ['ember-babel', 'ember-utils', 'internal-test-helpers', 'ember-application', 'ember-views'], function (_emberBabel, _emberUtils, _internalTestHelpers, _emberApplication, _emberViews) {\n 'use strict';\n\n (0, _internalTestHelpers.moduleFor)('Ember.Application instance initializers', function (_AutobootApplicationT) {\n (0, _emberBabel.inherits)(_class, _AutobootApplicationT);\n\n function _class() {\n (0, _emberBabel.classCallCheck)(this, _class);\n\n (0, _emberViews.jQuery)('#qunit-fixture').html('\\n <div id=\"one\">ONE</div>\\n <div id=\"two\">TWO</div>\\n ');\n return (0, _emberBabel.possibleConstructorReturn)(this, _AutobootApplicationT.call(this));\n }\n\n _class.prototype.createSecondApplication = function createSecondApplication(options) {\n var MyApplication = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _emberApplication.Application;\n\n var myOptions = (0, _emberUtils.assign)(this.applicationOptions, {\n rootElement: '#two'\n }, options);\n var secondApp = this.secondApp = MyApplication.create(myOptions);\n return secondApp;\n };\n\n _class.prototype.teardown = function teardown() {\n var _this2 = this;\n\n _AutobootApplicationT.prototype.teardown.call(this);\n\n if (this.secondApp) {\n this.runTask(function () {\n return _this2.secondApp.destroy();\n });\n }\n };\n\n _class.prototype['@test initializers require proper \\'name\\' and \\'initialize\\' properties'] = function () {\n var _this3 = this;\n\n var MyApplication = _emberApplication.Application.extend();\n\n expectAssertion(function () {\n MyApplication.instanceInitializer({ name: 'initializer' });\n });\n\n expectAssertion(function () {\n MyApplication.instanceInitializer({\n initialize: function () {}\n });\n });\n\n this.runTask(function () {\n return _this3.createApplication({}, MyApplication);\n });\n };\n\n _class.prototype['@test initializers are passed an app instance'] = function (assert) {\n var _this4 = this;\n\n var MyApplication = _emberApplication.Application.extend();\n\n MyApplication.instanceInitializer({\n name: 'initializer',\n initialize: function (instance) {\n assert.ok(instance instanceof _emberApplication.ApplicationInstance, 'initialize is passed an application instance');\n }\n });\n\n this.runTask(function () {\n return _this4.createApplication({}, MyApplication);\n });\n };\n\n _class.prototype['@test initializers can be registered in a specified order'] = function (assert) {\n var _this5 = this;\n\n var order = [];\n var MyApplication = _emberApplication.Application.extend();\n\n MyApplication.instanceInitializer({\n name: 'fourth',\n after: 'third',\n initialize: function (registry) {\n order.push('fourth');\n }\n });\n\n MyApplication.instanceInitializer({\n name: 'second',\n after: 'first',\n before: 'third',\n initialize: function (registry) {\n order.push('second');\n }\n });\n\n MyApplication.instanceInitializer({\n name: 'fifth',\n after: 'fourth',\n before: 'sixth',\n initialize: function (registry) {\n order.push('fifth');\n }\n });\n\n MyApplication.instanceInitializer({\n name: 'first',\n before: 'second',\n initialize: function (registry) {\n order.push('first');\n }\n });\n\n MyApplication.instanceInitializer({\n name: 'third',\n initialize: function (registry) {\n order.push('third');\n }\n });\n\n MyApplication.instanceInitializer({\n name: 'sixth',\n initialize: function (registry) {\n order.push('sixth');\n }\n });\n\n this.runTask(function () {\n return _this5.createApplication({}, MyApplication);\n });\n\n assert.deepEqual(order, ['first', 'second', 'third', 'fourth', 'fifth', 'sixth']);\n };\n\n _class.prototype['@test initializers can be registered in a specified order as an array'] = function (assert) {\n var _this6 = this;\n\n var order = [];\n var MyApplication = _emberApplication.Application.extend();\n\n MyApplication.instanceInitializer({\n name: 'third',\n initialize: function (registry) {\n order.push('third');\n }\n });\n\n MyApplication.instanceInitializer({\n name: 'second',\n after: 'first',\n before: ['third', 'fourth'],\n initialize: function (registry) {\n order.push('second');\n }\n });\n\n MyApplication.instanceInitializer({\n name: 'fourth',\n after: ['second', 'third'],\n initialize: function (registry) {\n order.push('fourth');\n }\n });\n\n MyApplication.instanceInitializer({\n name: 'fifth',\n after: 'fourth',\n before: 'sixth',\n initialize: function (registry) {\n order.push('fifth');\n }\n });\n\n MyApplication.instanceInitializer({\n name: 'first',\n before: ['second'],\n initialize: function (registry) {\n order.push('first');\n }\n });\n\n MyApplication.instanceInitializer({\n name: 'sixth',\n initialize: function (registry) {\n order.push('sixth');\n }\n });\n\n this.runTask(function () {\n return _this6.createApplication({}, MyApplication);\n });\n\n assert.deepEqual(order, ['first', 'second', 'third', 'fourth', 'fifth', 'sixth']);\n };\n\n _class.prototype['@test initializers can have multiple dependencies'] = function (assert) {\n var _this7 = this;\n\n var order = [];\n var MyApplication = _emberApplication.Application.extend();\n var a = {\n name: 'a',\n before: 'b',\n initialize: function (registry) {\n order.push('a');\n }\n };\n var b = {\n name: 'b',\n initialize: function (registry) {\n order.push('b');\n }\n };\n var c = {\n name: 'c',\n after: 'b',\n initialize: function (registry) {\n order.push('c');\n }\n };\n var afterB = {\n name: 'after b',\n after: 'b',\n initialize: function (registry) {\n order.push('after b');\n }\n };\n var afterC = {\n name: 'after c',\n after: 'c',\n initialize: function (registry) {\n order.push('after c');\n }\n };\n\n MyApplication.instanceInitializer(b);\n MyApplication.instanceInitializer(a);\n MyApplication.instanceInitializer(afterC);\n MyApplication.instanceInitializer(afterB);\n MyApplication.instanceInitializer(c);\n\n this.runTask(function () {\n return _this7.createApplication({}, MyApplication);\n });\n\n assert.ok(order.indexOf(a.name) < order.indexOf(b.name), 'a < b');\n assert.ok(order.indexOf(b.name) < order.indexOf(c.name), 'b < c');\n assert.ok(order.indexOf(b.name) < order.indexOf(afterB.name), 'b < afterB');\n assert.ok(order.indexOf(c.name) < order.indexOf(afterC.name), 'c < afterC');\n };\n\n _class.prototype['@test initializers set on Application subclasses should not be shared between apps'] = function (assert) {\n var _this8 = this;\n\n var firstInitializerRunCount = 0;\n var secondInitializerRunCount = 0;\n var FirstApp = _emberApplication.Application.extend();\n\n FirstApp.instanceInitializer({\n name: 'first',\n initialize: function (registry) {\n firstInitializerRunCount++;\n }\n });\n\n var SecondApp = _emberApplication.Application.extend();\n SecondApp.instanceInitializer({\n name: 'second',\n initialize: function (registry) {\n secondInitializerRunCount++;\n }\n });\n\n this.runTask(function () {\n return _this8.createApplication({}, FirstApp);\n });\n\n assert.equal(firstInitializerRunCount, 1, 'first initializer only was run');\n assert.equal(secondInitializerRunCount, 0, 'first initializer only was run');\n\n this.runTask(function () {\n return _this8.createSecondApplication({}, SecondApp);\n });\n\n assert.equal(firstInitializerRunCount, 1, 'second initializer only was run');\n assert.equal(secondInitializerRunCount, 1, 'second initializer only was run');\n };\n\n _class.prototype['@test initializers are concatenated'] = function (assert) {\n var _this9 = this;\n\n var firstInitializerRunCount = 0;\n var secondInitializerRunCount = 0;\n var FirstApp = _emberApplication.Application.extend();\n\n FirstApp.instanceInitializer({\n name: 'first',\n initialize: function (registry) {\n firstInitializerRunCount++;\n }\n });\n\n var SecondApp = FirstApp.extend();\n SecondApp.instanceInitializer({\n name: 'second',\n initialize: function (registry) {\n secondInitializerRunCount++;\n }\n });\n\n this.runTask(function () {\n return _this9.createApplication({}, FirstApp);\n });\n\n equal(firstInitializerRunCount, 1, 'first initializer only was run when base class created');\n equal(secondInitializerRunCount, 0, 'first initializer only was run when base class created');\n\n firstInitializerRunCount = 0;\n this.runTask(function () {\n return _this9.createSecondApplication({}, SecondApp);\n });\n\n equal(firstInitializerRunCount, 1, 'first initializer was run when subclass created');\n equal(secondInitializerRunCount, 1, 'second initializers was run when subclass created');\n };\n\n _class.prototype['@test initializers are per-app'] = function (assert) {\n var _this10 = this;\n\n assert.expect(2);\n\n var FirstApp = _emberApplication.Application.extend();\n FirstApp.instanceInitializer({\n name: 'abc',\n initialize: function (app) {}\n });\n\n expectAssertion(function () {\n FirstApp.instanceInitializer({\n name: 'abc',\n initialize: function (app) {}\n });\n });\n\n this.runTask(function () {\n return _this10.createApplication({}, FirstApp);\n });\n\n var SecondApp = _emberApplication.Application.extend();\n SecondApp.instanceInitializer({\n name: 'abc',\n initialize: function (app) {}\n });\n\n this.runTask(function () {\n return _this10.createSecondApplication({}, SecondApp);\n });\n\n assert.ok(true, 'Two apps can have initializers named the same.');\n };\n\n _class.prototype['@test initializers are run before ready hook'] = function (assert) {\n var _this11 = this;\n\n assert.expect(2);\n\n var MyApplication = _emberApplication.Application.extend({\n ready: function () {\n assert.ok(true, 'ready is called');\n readyWasCalled = false;\n }\n });\n var readyWasCalled = false;\n\n MyApplication.instanceInitializer({\n name: 'initializer',\n initialize: function () {\n assert.ok(!readyWasCalled, 'ready is not yet called');\n }\n });\n\n this.runTask(function () {\n return _this11.createApplication({}, MyApplication);\n });\n };\n\n _class.prototype['@test initializers are executed in their own context'] = function (assert) {\n var _this12 = this;\n\n assert.expect(1);\n\n var MyApplication = _emberApplication.Application.extend();\n\n MyApplication.instanceInitializer({\n name: 'coolInitializer',\n myProperty: 'cool',\n initialize: function (registry, application) {\n assert.equal(this.myProperty, 'cool', 'should have access to its own context');\n }\n });\n\n this.runTask(function () {\n return _this12.createApplication({}, MyApplication);\n });\n };\n\n _class.prototype['@test initializers get an instance on app reset'] = function (assert) {\n var _this13 = this;\n\n assert.expect(2);\n\n var MyApplication = _emberApplication.Application.extend();\n\n MyApplication.instanceInitializer({\n name: 'giveMeAnInstance',\n initialize: function (instance) {\n assert.ok(!!instance, 'Initializer got an instance');\n }\n });\n\n this.runTask(function () {\n return _this13.createApplication({}, MyApplication);\n });\n\n this.runTask(function () {\n return _this13.application.reset();\n });\n };\n\n (0, _emberBabel.createClass)(_class, [{\n key: 'applicationOptions',\n get: function () {\n return (0, _emberUtils.assign)(_AutobootApplicationT.prototype.applicationOptions, {\n rootElement: '#one'\n });\n }\n }]);\n return _class;\n }(_internalTestHelpers.AutobootApplicationTestCase));\n});","QUnit.module('ESLint | ember-application/tests/system/instance_initializers_test.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-application/tests/system/instance_initializers_test.js should pass ESLint\\n\\n');\n});\n","enifed('ember-application/tests/system/logging_test', ['ember-babel', 'internal-test-helpers', 'ember-console', 'ember-runtime', 'ember-routing', 'ember-utils'], function (_emberBabel, _internalTestHelpers, _emberConsole, _emberRuntime, _emberRouting, _emberUtils) {\n 'use strict';\n\n var LoggingApplicationTestCase = function (_ApplicationTestCase) {\n (0, _emberBabel.inherits)(LoggingApplicationTestCase, _ApplicationTestCase);\n\n function LoggingApplicationTestCase() {\n (0, _emberBabel.classCallCheck)(this, LoggingApplicationTestCase);\n\n var _this = (0, _emberBabel.possibleConstructorReturn)(this, _ApplicationTestCase.call(this));\n\n _this.logs = {};\n\n _this._originalLogger = _emberConsole.default.info;\n\n _emberConsole.default.info = function (_, _ref) {\n var fullName = _ref.fullName;\n\n if (!_this.logs.hasOwnProperty(fullName)) {\n _this.logs[fullName] = 0;\n }\n _this.logs[fullName]++;\n };\n\n _this.router.map(function () {\n this.route('posts', { resetNamespace: true });\n });\n return _this;\n }\n\n LoggingApplicationTestCase.prototype.teardown = function teardown() {\n _emberConsole.default.info = this._originalLogger;\n _ApplicationTestCase.prototype.teardown.call(this);\n };\n\n return LoggingApplicationTestCase;\n }(_internalTestHelpers.ApplicationTestCase);\n\n (0, _internalTestHelpers.moduleFor)('Ember.Application with LOG_ACTIVE_GENERATION=true', function (_LoggingApplicationTe) {\n (0, _emberBabel.inherits)(_class, _LoggingApplicationTe);\n\n function _class() {\n (0, _emberBabel.classCallCheck)(this, _class);\n return (0, _emberBabel.possibleConstructorReturn)(this, _LoggingApplicationTe.apply(this, arguments));\n }\n\n _class.prototype['@test log class generation if logging enabled'] = function testLogClassGenerationIfLoggingEnabled(assert) {\n if (EmberDev && EmberDev.runningProdBuild) {\n assert.ok(true, 'Logging does not occur in production builds');\n return;\n }\n\n this.visit('/posts');\n assert.equal(Object.keys(this.logs).length, 4, 'expected logs');\n };\n\n _class.prototype['@test actively generated classes get logged'] = function testActivelyGeneratedClassesGetLogged(assert) {\n if (EmberDev && EmberDev.runningProdBuild) {\n assert.ok(true, 'Logging does not occur in production builds');\n return;\n }\n\n this.visit('/posts');\n assert.equal(this.logs['controller:application'], 1, 'expected: ApplicationController was generated');\n assert.equal(this.logs['controller:posts'], 1, 'expected: PostsController was generated');\n\n assert.equal(this.logs['route:application'], 1, 'expected: ApplicationRoute was generated');\n assert.equal(this.logs['route:posts'], 1, 'expected: PostsRoute was generated');\n };\n\n _class.prototype['@test predefined classes do not get logged'] = function testPredefinedClassesDoNotGetLogged(assert) {\n this.add('controller:application', _emberRuntime.Controller.extend());\n this.add('controller:posts', _emberRuntime.Controller.extend());\n this.add('route:application', _emberRouting.Route.extend());\n this.add('route:posts', _emberRouting.Route.extend());\n\n this.visit('/posts');\n\n assert.ok(!this.logs['controller:application'], 'did not expect: ApplicationController was generated');\n assert.ok(!this.logs['controller:posts'], 'did not expect: PostsController was generated');\n\n assert.ok(!this.logs['route:application'], 'did not expect: ApplicationRoute was generated');\n assert.ok(!this.logs['route:posts'], 'did not expect: PostsRoute was generated');\n };\n\n (0, _emberBabel.createClass)(_class, [{\n key: 'applicationOptions',\n get: function () {\n return (0, _emberUtils.assign)(_LoggingApplicationTe.prototype.applicationOptions, {\n LOG_ACTIVE_GENERATION: true\n });\n }\n }]);\n return _class;\n }(LoggingApplicationTestCase));\n\n (0, _internalTestHelpers.moduleFor)('Ember.Application when LOG_ACTIVE_GENERATION=false', function (_LoggingApplicationTe2) {\n (0, _emberBabel.inherits)(_class2, _LoggingApplicationTe2);\n\n function _class2() {\n (0, _emberBabel.classCallCheck)(this, _class2);\n return (0, _emberBabel.possibleConstructorReturn)(this, _LoggingApplicationTe2.apply(this, arguments));\n }\n\n _class2.prototype['@test do NOT log class generation if logging disabled'] = function (assert) {\n this.visit('/posts');\n assert.equal(Object.keys(this.logs).length, 0, 'expected logs');\n };\n\n (0, _emberBabel.createClass)(_class2, [{\n key: 'applicationOptions',\n get: function () {\n return (0, _emberUtils.assign)(_LoggingApplicationTe2.prototype.applicationOptions, {\n LOG_ACTIVE_GENERATION: false\n });\n }\n }]);\n return _class2;\n }(LoggingApplicationTestCase));\n\n (0, _internalTestHelpers.moduleFor)('Ember.Application with LOG_VIEW_LOOKUPS=true', function (_LoggingApplicationTe3) {\n (0, _emberBabel.inherits)(_class3, _LoggingApplicationTe3);\n\n function _class3() {\n (0, _emberBabel.classCallCheck)(this, _class3);\n return (0, _emberBabel.possibleConstructorReturn)(this, _LoggingApplicationTe3.apply(this, arguments));\n }\n\n _class3.prototype['@test log when template and view are missing when flag is active'] = function (assert) {\n if (EmberDev && EmberDev.runningProdBuild) {\n assert.ok(true, 'Logging does not occur in production builds');\n return;\n }\n\n this.addTemplate('application', '{{outlet}}');\n\n this.visit('/');\n this.visit('/posts');\n\n assert.equal(this.logs['template:application'], undefined, 'expected: Should not log template:application since it exists.');\n assert.equal(this.logs['template:index'], 1, 'expected: Could not find \"index\" template or view.');\n assert.equal(this.logs['template:posts'], 1, 'expected: Could not find \"posts\" template or view.');\n };\n\n (0, _emberBabel.createClass)(_class3, [{\n key: 'applicationOptions',\n get: function () {\n return (0, _emberUtils.assign)(_LoggingApplicationTe3.prototype.applicationOptions, {\n LOG_VIEW_LOOKUPS: true\n });\n }\n }]);\n return _class3;\n }(LoggingApplicationTestCase));\n\n (0, _internalTestHelpers.moduleFor)('Ember.Application with LOG_VIEW_LOOKUPS=false', function (_LoggingApplicationTe4) {\n (0, _emberBabel.inherits)(_class4, _LoggingApplicationTe4);\n\n function _class4() {\n (0, _emberBabel.classCallCheck)(this, _class4);\n return (0, _emberBabel.possibleConstructorReturn)(this, _LoggingApplicationTe4.apply(this, arguments));\n }\n\n _class4.prototype['@test do not log when template and view are missing when flag is not true'] = function (assert) {\n this.visit('/posts');\n assert.equal(Object.keys(this.logs).length, 0, 'expected no logs');\n };\n\n _class4.prototype['@test do not log which views are used with templates when flag is not true'] = function (assert) {\n this.visit('/posts');\n assert.equal(Object.keys(this.logs).length, 0, 'expected no logs');\n };\n\n (0, _emberBabel.createClass)(_class4, [{\n key: 'applicationOptions',\n get: function () {\n return (0, _emberUtils.assign)(_LoggingApplicationTe4.prototype.applicationOptions, {\n LOG_VIEW_LOOKUPS: false\n });\n }\n }]);\n return _class4;\n }(LoggingApplicationTestCase));\n});","QUnit.module('ESLint | ember-application/tests/system/logging_test.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-application/tests/system/logging_test.js should pass ESLint\\n\\n');\n});\n","enifed('ember-application/tests/system/readiness_test', ['ember-metal', 'ember-application/system/application'], function (_emberMetal, _application) {\n 'use strict';\n\n var jQuery = void 0,\n application = void 0,\n Application = void 0;\n var readyWasCalled = void 0,\n domReady = void 0,\n readyCallbacks = void 0;\n\n // We are using a small mock of jQuery because jQuery is third-party code with\n // very well-defined semantics, and we want to confirm that a jQuery stub run\n // in a more minimal server environment that implements this behavior will be\n // sufficient for Ember's requirements.\n\n QUnit.module('Application readiness', {\n setup: function () {\n readyWasCalled = 0;\n readyCallbacks = [];\n\n var jQueryInstance = {\n ready: function (callback) {\n readyCallbacks.push(callback);\n if (jQuery.isReady) {\n domReady();\n }\n }\n };\n\n jQuery = function () {\n return jQueryInstance;\n };\n jQuery.isReady = false;\n\n var domReadyCalled = 0;\n domReady = function () {\n if (domReadyCalled !== 0) {\n return;\n }\n domReadyCalled++;\n for (var i = 0; i < readyCallbacks.length; i++) {\n readyCallbacks[i]();\n }\n };\n\n Application = _application.default.extend({\n $: jQuery,\n\n ready: function () {\n readyWasCalled++;\n }\n });\n },\n teardown: function () {\n if (application) {\n (0, _emberMetal.run)(function () {\n return application.destroy();\n });\n }\n }\n });\n\n // These tests are confirming that if the callbacks passed into jQuery's ready hook is called\n // synchronously during the application's initialization, we get the same behavior as if\n // it was triggered after initialization.\n\n QUnit.test('Ember.Application\\'s ready event is called right away if jQuery is already ready', function () {\n jQuery.isReady = true;\n\n (0, _emberMetal.run)(function () {\n application = Application.create({ router: false });\n\n equal(readyWasCalled, 0, 'ready is not called until later');\n });\n\n equal(readyWasCalled, 1, 'ready was called');\n\n domReady();\n\n equal(readyWasCalled, 1, 'application\\'s ready was not called again');\n });\n\n QUnit.test('Ember.Application\\'s ready event is called after the document becomes ready', function () {\n (0, _emberMetal.run)(function () {\n application = Application.create({ router: false });\n });\n\n equal(readyWasCalled, 0, 'ready wasn\\'t called yet');\n\n domReady();\n\n equal(readyWasCalled, 1, 'ready was called now that DOM is ready');\n });\n\n QUnit.test('Ember.Application\\'s ready event can be deferred by other components', function () {\n (0, _emberMetal.run)(function () {\n application = Application.create({ router: false });\n application.deferReadiness();\n });\n\n equal(readyWasCalled, 0, 'ready wasn\\'t called yet');\n\n domReady();\n\n equal(readyWasCalled, 0, 'ready wasn\\'t called yet');\n\n (0, _emberMetal.run)(function () {\n application.advanceReadiness();\n equal(readyWasCalled, 0);\n });\n\n equal(readyWasCalled, 1, 'ready was called now all readiness deferrals are advanced');\n });\n\n QUnit.test('Ember.Application\\'s ready event can be deferred by other components', function () {\n jQuery.isReady = false;\n\n (0, _emberMetal.run)(function () {\n application = Application.create({ router: false });\n application.deferReadiness();\n equal(readyWasCalled, 0, 'ready wasn\\'t called yet');\n });\n\n domReady();\n\n equal(readyWasCalled, 0, 'ready wasn\\'t called yet');\n\n (0, _emberMetal.run)(function () {\n application.advanceReadiness();\n });\n\n equal(readyWasCalled, 1, 'ready was called now all readiness deferrals are advanced');\n\n expectAssertion(function () {\n application.deferReadiness();\n });\n });\n});","QUnit.module('ESLint | ember-application/tests/system/readiness_test.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-application/tests/system/readiness_test.js should pass ESLint\\n\\n');\n});\n","enifed('ember-application/tests/system/reset_test', ['ember-babel', 'ember-metal', 'ember-runtime', 'ember-routing', 'internal-test-helpers'], function (_emberBabel, _emberMetal, _emberRuntime, _emberRouting, _internalTestHelpers) {\n 'use strict';\n\n var application = void 0,\n Application = void 0;\n\n (0, _internalTestHelpers.moduleFor)('Ember.Application - resetting', function (_AutobootApplicationT) {\n (0, _emberBabel.inherits)(_class, _AutobootApplicationT);\n\n function _class() {\n (0, _emberBabel.classCallCheck)(this, _class);\n return (0, _emberBabel.possibleConstructorReturn)(this, _AutobootApplicationT.apply(this, arguments));\n }\n\n _class.prototype['@test Brings its own run-loop if not provided'] = function testBringsItsOwnRunLoopIfNotProvided(assert) {\n var _this2 = this;\n\n assert.expect(0);\n (0, _emberMetal.run)(function () {\n return _this2.createApplication();\n });\n this.application.reset();\n };\n\n _class.prototype['@test Does not bring its own run loop if one is already provided'] = function testDoesNotBringItsOwnRunLoopIfOneIsAlreadyProvided(assert) {\n var _this3 = this;\n\n assert.expect(3);\n\n var didBecomeReady = false;\n\n (0, _emberMetal.run)(function () {\n return _this3.createApplication();\n });\n\n (0, _emberMetal.run)(function () {\n _this3.application.ready = function () {\n didBecomeReady = true;\n };\n\n _this3.application.reset();\n\n _this3.application.deferReadiness();\n assert.ok(!didBecomeReady, 'app is not ready');\n });\n\n assert.ok(!didBecomeReady, 'app is not ready');\n (0, _emberMetal.run)(this.application, 'advanceReadiness');\n assert.ok(didBecomeReady, 'app is ready');\n };\n\n _class.prototype['@test When an application is reset, new instances of controllers are generated'] = function testWhenAnApplicationIsResetNewInstancesOfControllersAreGenerated(assert) {\n var _this4 = this;\n\n (0, _emberMetal.run)(function () {\n _this4.createApplication();\n _this4.add('controller:academic', _emberRuntime.Controller.extend());\n });\n\n var firstController = this.applicationInstance.lookup('controller:academic');\n var secondController = this.applicationInstance.lookup('controller:academic');\n\n this.application.reset();\n\n var thirdController = this.applicationInstance.lookup('controller:academic');\n\n assert.strictEqual(firstController, secondController, 'controllers looked up in succession should be the same instance');\n\n ok(firstController.isDestroying, 'controllers are destroyed when their application is reset');\n\n assert.notStrictEqual(firstController, thirdController, 'controllers looked up after the application is reset should not be the same instance');\n };\n\n _class.prototype['@test When an application is reset, the eventDispatcher is destroyed and recreated'] = function testWhenAnApplicationIsResetTheEventDispatcherIsDestroyedAndRecreated(assert) {\n var _this5 = this;\n\n var eventDispatcherWasSetup = 0;\n var eventDispatcherWasDestroyed = 0;\n\n var mockEventDispatcher = {\n setup: function () {\n eventDispatcherWasSetup++;\n },\n destroy: function () {\n eventDispatcherWasDestroyed++;\n }\n };\n\n (0, _emberMetal.run)(function () {\n _this5.createApplication();\n _this5.add('event_dispatcher:main', { create: function () {\n return mockEventDispatcher;\n } });\n\n assert.equal(eventDispatcherWasSetup, 0);\n assert.equal(eventDispatcherWasDestroyed, 0);\n });\n\n assert.equal(eventDispatcherWasSetup, 1);\n assert.equal(eventDispatcherWasDestroyed, 0);\n\n this.application.reset();\n\n assert.equal(eventDispatcherWasDestroyed, 1);\n assert.equal(eventDispatcherWasSetup, 2, 'setup called after reset');\n };\n\n _class.prototype['@test When an application is reset, the router URL is reset to `/`'] = function testWhenAnApplicationIsResetTheRouterURLIsResetTo(assert) {\n var _this6 = this;\n\n (0, _emberMetal.run)(function () {\n _this6.createApplication();\n\n _this6.add('router:main', _emberRouting.Router.extend({\n location: 'none'\n }));\n\n _this6.router.map(function () {\n this.route('one');\n this.route('two');\n });\n });\n\n this.visit('/one');\n\n this.application.reset();\n\n var applicationController = this.applicationInstance.lookup('controller:application');\n var router = this.applicationInstance.lookup('router:main');\n var location = router.get('location');\n\n assert.equal(location.getURL(), '');\n assert.equal((0, _emberMetal.get)(applicationController, 'currentPath'), 'index');\n\n this.visit('/one');\n\n assert.equal((0, _emberMetal.get)(applicationController, 'currentPath'), 'one');\n };\n\n _class.prototype['@test When an application with advance/deferReadiness is reset, the app does correctly become ready after reset'] = function testWhenAnApplicationWithAdvanceDeferReadinessIsResetTheAppDoesCorrectlyBecomeReadyAfterReset(assert) {\n var _this7 = this;\n\n var readyCallCount = 0;\n\n (0, _emberMetal.run)(function () {\n _this7.createApplication({\n ready: function () {\n readyCallCount++;\n }\n });\n\n _this7.application.deferReadiness();\n assert.equal(readyCallCount, 0, 'ready has not yet been called');\n });\n\n (0, _emberMetal.run)(this.application, 'advanceReadiness');\n\n assert.equal(readyCallCount, 1, 'ready was called once');\n\n this.application.reset();\n\n assert.equal(readyCallCount, 2, 'ready was called twice');\n };\n\n return _class;\n }(_internalTestHelpers.AutobootApplicationTestCase));\n});","QUnit.module('ESLint | ember-application/tests/system/reset_test.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-application/tests/system/reset_test.js should pass ESLint\\n\\n');\n});\n","enifed('ember-application/tests/system/visit_test', ['ember-babel', 'internal-test-helpers', 'ember-runtime', 'ember-metal', 'ember-application/system/application', 'ember-application/system/application-instance', 'ember-application/system/engine', 'ember-routing', 'ember-glimmer', 'ember-template-compiler', 'ember-views'], function (_emberBabel, _internalTestHelpers, _emberRuntime, _emberMetal, _application, _applicationInstance, _engine, _emberRouting, _emberGlimmer, _emberTemplateCompiler, _emberViews) {\n 'use strict';\n\n function expectAsyncError() {\n _emberRuntime.RSVP.off('error');\n }\n\n (0, _internalTestHelpers.moduleFor)('Ember.Application - visit()', function (_ApplicationTestCase) {\n (0, _emberBabel.inherits)(_class, _ApplicationTestCase);\n\n function _class() {\n (0, _emberBabel.classCallCheck)(this, _class);\n return (0, _emberBabel.possibleConstructorReturn)(this, _ApplicationTestCase.apply(this, arguments));\n }\n\n _class.prototype.teardown = function teardown() {\n _emberRuntime.RSVP.on('error', _emberRuntime.onerrorDefault);\n _ApplicationTestCase.prototype.teardown.call(this);\n };\n\n _class.prototype.createApplication = function createApplication(options) {\n return _ApplicationTestCase.prototype.createApplication.call(this, options, _application.default.extend());\n };\n\n _class.prototype['@test Applications with autoboot set to false do not autoboot'] = function (assert) {\n var _this2 = this;\n\n function delay(time) {\n return new _emberRuntime.RSVP.Promise(function (resolve) {\n return _emberMetal.run.later(resolve, time);\n });\n }\n\n var appBooted = 0;\n var instanceBooted = 0;\n\n this.application.initializer({\n name: 'assert-no-autoboot',\n initialize: function () {\n appBooted++;\n }\n });\n\n this.application.instanceInitializer({\n name: 'assert-no-autoboot',\n initialize: function () {\n instanceBooted++;\n }\n });\n\n assert.ok(!this.applicationInstance, 'precond - no instance');\n assert.ok(appBooted === 0, 'precond - not booted');\n assert.ok(instanceBooted === 0, 'precond - not booted');\n\n // Continue after 500ms\n return delay(500).then(function () {\n assert.ok(appBooted === 0, '500ms elapsed without app being booted');\n assert.ok(instanceBooted === 0, '500ms elapsed without instances being booted');\n\n return _this2.runTask(function () {\n return _this2.application.boot();\n });\n }).then(function () {\n assert.ok(appBooted === 1, 'app should boot when manually calling `app.boot()`');\n assert.ok(instanceBooted === 0, 'no instances should be booted automatically when manually calling `app.boot()');\n });\n };\n\n _class.prototype['@test calling visit() on an app without first calling boot() should boot the app'] = function (assert) {\n var appBooted = 0;\n var instanceBooted = 0;\n\n this.application.initializer({\n name: 'assert-no-autoboot',\n initialize: function () {\n appBooted++;\n }\n });\n\n this.application.instanceInitializer({\n name: 'assert-no-autoboot',\n initialize: function () {\n instanceBooted++;\n }\n });\n\n return this.visit('/').then(function () {\n assert.ok(appBooted === 1, 'the app should be booted`');\n assert.ok(instanceBooted === 1, 'an instances should be booted');\n });\n };\n\n _class.prototype['@test calling visit() on an already booted app should not boot it again'] = function (assert) {\n var _this3 = this;\n\n var appBooted = 0;\n var instanceBooted = 0;\n\n this.application.initializer({\n name: 'assert-no-autoboot',\n initialize: function () {\n appBooted++;\n }\n });\n\n this.application.instanceInitializer({\n name: 'assert-no-autoboot',\n initialize: function () {\n instanceBooted++;\n }\n });\n\n return this.runTask(function () {\n return _this3.application.boot();\n }).then(function () {\n assert.ok(appBooted === 1, 'the app should be booted');\n assert.ok(instanceBooted === 0, 'no instances should be booted');\n\n return _this3.visit('/');\n }).then(function () {\n assert.ok(appBooted === 1, 'the app should not be booted again');\n assert.ok(instanceBooted === 1, 'an instance should be booted');\n\n /*\n * Destroy the instance.\n */\n return _this3.runTask(function () {\n _this3.applicationInstance.destroy();\n _this3.applicationInstance = null;\n });\n }).then(function () {\n /*\n * Visit on the application a second time. The application should remain\n * booted, but a new instance will be created.\n */\n return _this3.visit('/');\n }).then(function () {\n assert.ok(appBooted === 1, 'the app should not be booted again');\n assert.ok(instanceBooted === 2, 'another instance should be booted');\n });\n };\n\n _class.prototype['@test visit() rejects on application boot failure'] = function (assert) {\n this.application.initializer({\n name: 'error',\n initialize: function () {\n throw new Error('boot failure');\n }\n });\n\n expectAsyncError();\n\n return this.visit('/').then(function () {\n assert.ok(false, 'It should not resolve the promise');\n }, function (error) {\n assert.ok(error instanceof Error, 'It should reject the promise with the boot error');\n assert.equal(error.message, 'boot failure');\n });\n };\n\n _class.prototype['@test visit() rejects on instance boot failure'] = function (assert) {\n this.application.instanceInitializer({\n name: 'error',\n initialize: function () {\n throw new Error('boot failure');\n }\n });\n\n expectAsyncError();\n\n return this.visit('/').then(function () {\n assert.ok(false, 'It should not resolve the promise');\n }, function (error) {\n assert.ok(error instanceof Error, 'It should reject the promise with the boot error');\n assert.equal(error.message, 'boot failure');\n });\n };\n\n _class.prototype['@test visit() follows redirects'] = function (assert) {\n this.router.map(function () {\n this.route('a');\n this.route('b', { path: '/b/:b' });\n this.route('c', { path: '/c/:c' });\n });\n\n this.add('route:a', _emberRouting.Route.extend({\n afterModel: function () {\n this.replaceWith('b', 'zomg');\n }\n }));\n\n this.add('route:b', _emberRouting.Route.extend({\n afterModel: function (params) {\n this.transitionTo('c', params.b);\n }\n }));\n\n /*\n * First call to `visit` is `this.application.visit` and returns the\n * applicationInstance.\n */\n return this.visit('/a').then(function (instance) {\n assert.ok(instance instanceof _applicationInstance.default, 'promise is resolved with an ApplicationInstance');\n assert.equal(instance.getURL(), '/c/zomg', 'It should follow all redirects');\n });\n };\n\n _class.prototype['@test visit() rejects if an error occurred during a transition'] = function (assert) {\n this.router.map(function () {\n this.route('a');\n this.route('b', { path: '/b/:b' });\n this.route('c', { path: '/c/:c' });\n });\n\n this.add('route:a', _emberRouting.Route.extend({\n afterModel: function () {\n this.replaceWith('b', 'zomg');\n }\n }));\n\n this.add('route:b', _emberRouting.Route.extend({\n afterModel: function (params) {\n this.transitionTo('c', params.b);\n }\n }));\n\n this.add('route:c', _emberRouting.Route.extend({\n afterModel: function (params) {\n throw new Error('transition failure');\n }\n }));\n\n expectAsyncError();\n\n return this.visit('/a').then(function () {\n assert.ok(false, 'It should not resolve the promise');\n }, function (error) {\n assert.ok(error instanceof Error, 'It should reject the promise with the boot error');\n assert.equal(error.message, 'transition failure');\n });\n };\n\n _class.prototype['@test visit() chain'] = function (assert) {\n this.router.map(function () {\n this.route('a');\n this.route('b');\n this.route('c');\n });\n\n return this.visit('/').then(function (instance) {\n assert.ok(instance instanceof _applicationInstance.default, 'promise is resolved with an ApplicationInstance');\n assert.equal(instance.getURL(), '/');\n\n return instance.visit('/a');\n }).then(function (instance) {\n assert.ok(instance instanceof _applicationInstance.default, 'promise is resolved with an ApplicationInstance');\n assert.equal(instance.getURL(), '/a');\n\n return instance.visit('/b');\n }).then(function (instance) {\n assert.ok(instance instanceof _applicationInstance.default, 'promise is resolved with an ApplicationInstance');\n assert.equal(instance.getURL(), '/b');\n\n return instance.visit('/c');\n }).then(function (instance) {\n assert.ok(instance instanceof _applicationInstance.default, 'promise is resolved with an ApplicationInstance');\n assert.equal(instance.getURL(), '/c');\n });\n };\n\n _class.prototype['@test visit() returns a promise that resolves when the view has rendered'] = function (assert) {\n var _this4 = this;\n\n this.addTemplate('application', '<h1>Hello world</h1>');\n\n assert.strictEqual(this.$().children().length, 0, 'there are no elements in the fixture element');\n\n return this.visit('/').then(function (instance) {\n assert.ok(instance instanceof _applicationInstance.default, 'promise is resolved with an ApplicationInstance');\n assert.equal(_this4.$('.ember-view h1').text(), 'Hello world', 'the application was rendered once the promise resolves');\n });\n };\n\n _class.prototype['@test visit() returns a promise that resolves without rendering when shouldRender is set to false'] = function (assert) {\n var _this5 = this;\n\n assert.expect(3);\n\n this.addTemplate('application', '<h1>Hello world</h1>');\n\n assert.strictEqual(this.$().children().length, 0, 'there are no elements in the fixture element');\n\n return this.visit('/', { shouldRender: false }).then(function (instance) {\n assert.ok(instance instanceof _applicationInstance.default, 'promise is resolved with an ApplicationInstance');\n assert.strictEqual(_this5.$().children().length, 0, 'there are still no elements in the fixture element after visit');\n });\n };\n\n _class.prototype['@test visit() renders a template when shouldRender is set to true'] = function (assert) {\n var _this6 = this;\n\n assert.expect(3);\n\n this.addTemplate('application', '<h1>Hello world</h1>');\n\n assert.strictEqual(this.$('#qunit-fixture').children().length, 0, 'there are no elements in the fixture element');\n\n return this.visit('/', { shouldRender: true }).then(function (instance) {\n assert.ok(instance instanceof _applicationInstance.default, 'promise is resolved with an ApplicationInstance');\n assert.strictEqual(_this6.$().children().length, 1, 'there is 1 element in the fixture element after visit');\n });\n };\n\n _class.prototype['@test visit() returns a promise that resolves without rendering when shouldRender is set to false with Engines'] = function (assert) {\n var _this7 = this;\n\n assert.expect(3);\n\n this.router.map(function () {\n this.mount('blog');\n });\n\n this.addTemplate('application', '<h1>Hello world</h1>');\n\n // Register engine\n var BlogEngine = _engine.default.extend();\n this.add('engine:blog', BlogEngine);\n\n // Register engine route map\n var BlogMap = function () {};\n this.add('route-map:blog', BlogMap);\n\n assert.strictEqual(this.$('#qunit-fixture').children().length, 0, 'there are no elements in the fixture element');\n\n return this.visit('/blog', { shouldRender: false }).then(function (instance) {\n assert.ok(instance instanceof _applicationInstance.default, 'promise is resolved with an ApplicationInstance');\n assert.strictEqual(_this7.$().children().length, 0, 'there are still no elements in the fixture element after visit');\n });\n };\n\n _class.prototype['@test visit() does not setup the event_dispatcher:main if isInteractive is false (with Engines) GH#15615'] = function (assert) {\n var _this8 = this;\n\n assert.expect(3);\n\n this.router.map(function () {\n this.mount('blog');\n });\n\n this.addTemplate('application', '<h1>Hello world</h1>{{outlet}}');\n this.add('event_dispatcher:main', {\n create: function () {\n throw new Error('should not happen!');\n }\n });\n\n // Register engine\n var BlogEngine = _engine.default.extend({\n init: function () {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n this._super.apply(this, args);\n this.register('template:application', (0, _emberTemplateCompiler.compile)('{{cache-money}}'));\n this.register('template:components/cache-money', (0, _emberTemplateCompiler.compile)('\\n <p>Dis cache money</p>\\n '));\n this.register('component:cache-money', _emberGlimmer.Component.extend({}));\n }\n });\n this.add('engine:blog', BlogEngine);\n\n // Register engine route map\n var BlogMap = function () {};\n this.add('route-map:blog', BlogMap);\n\n assert.strictEqual(this.$('#qunit-fixture').children().length, 0, 'there are no elements in the fixture element');\n\n return this.visit('/blog', { isInteractive: false }).then(function (instance) {\n assert.ok(instance instanceof _applicationInstance.default, 'promise is resolved with an ApplicationInstance');\n assert.strictEqual(_this8.$().find('p').text(), 'Dis cache money', 'Engine component is resolved');\n });\n };\n\n _class.prototype['@test visit() on engine resolves engine component'] = function (assert) {\n var _this9 = this;\n\n assert.expect(2);\n\n this.router.map(function () {\n this.mount('blog');\n });\n\n // Register engine\n var BlogEngine = _engine.default.extend({\n init: function () {\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n this._super.apply(this, args);\n this.register('template:application', (0, _emberTemplateCompiler.compile)('{{cache-money}}'));\n this.register('template:components/cache-money', (0, _emberTemplateCompiler.compile)('\\n <p>Dis cache money</p>\\n '));\n this.register('component:cache-money', _emberGlimmer.Component.extend({}));\n }\n });\n this.add('engine:blog', BlogEngine);\n\n // Register engine route map\n var BlogMap = function () {};\n this.add('route-map:blog', BlogMap);\n\n assert.strictEqual(this.$().children().length, 0, 'there are no elements in the fixture element');\n\n return this.visit('/blog', { shouldRender: true }).then(function (instance) {\n assert.strictEqual(_this9.$().find('p').text(), 'Dis cache money', 'Engine component is resolved');\n });\n };\n\n _class.prototype['@test visit() on engine resolves engine helper'] = function (assert) {\n var _this10 = this;\n\n assert.expect(2);\n\n this.router.map(function () {\n this.mount('blog');\n });\n\n // Register engine\n var BlogEngine = _engine.default.extend({\n init: function () {\n for (var _len3 = arguments.length, args = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n this._super.apply(this, args);\n this.register('template:application', (0, _emberTemplateCompiler.compile)('{{swag}}'));\n this.register('helper:swag', (0, _emberGlimmer.helper)(function () {\n return 'turnt up';\n }));\n }\n });\n this.add('engine:blog', BlogEngine);\n\n // Register engine route map\n var BlogMap = function () {};\n this.add('route-map:blog', BlogMap);\n\n assert.strictEqual(this.$().children().length, 0, 'there are no elements in the fixture element');\n\n return this.visit('/blog', { shouldRender: true }).then(function () {\n assert.strictEqual(_this10.$().text(), 'turnt up', 'Engine component is resolved');\n });\n };\n\n _class.prototype['@test Ember Islands-style setup'] = function (assert) {\n var _this11 = this;\n\n var xFooInitCalled = false;\n var xFooDidInsertElementCalled = false;\n\n var xBarInitCalled = false;\n var xBarDidInsertElementCalled = false;\n\n this.router.map(function () {\n this.route('show', { path: '/:component_name' });\n });\n\n this.add('route:show', _emberRouting.Route.extend({\n queryParams: {\n data: { refreshModel: true }\n },\n\n model: function (params) {\n return {\n componentName: params.component_name,\n componentData: params.data ? JSON.parse(params.data) : undefined\n };\n }\n }));\n\n var Counter = _emberRuntime.Object.extend({\n value: 0,\n\n increment: function () {\n this.incrementProperty('value');\n }\n });\n\n this.add('service:isolatedCounter', Counter);\n this.add('service:sharedCounter', Counter.create());\n this.application.registerOptions('service:sharedCounter', { instantiate: false });\n\n this.addTemplate('show', '{{component model.componentName model=model.componentData}}');\n\n this.addTemplate('components/x-foo', '\\n <h1>X-Foo</h1>\\n <p>Hello {{model.name}}, I have been clicked {{isolatedCounter.value}} times ({{sharedCounter.value}} times combined)!</p>\\n ');\n\n this.add('component:x-foo', _emberGlimmer.Component.extend({\n tagName: 'x-foo',\n\n isolatedCounter: _emberRuntime.inject.service(),\n sharedCounter: _emberRuntime.inject.service(),\n\n init: function () {\n this._super();\n xFooInitCalled = true;\n },\n didInsertElement: function () {\n xFooDidInsertElementCalled = true;\n },\n click: function () {\n this.get('isolatedCounter').increment();\n this.get('sharedCounter').increment();\n }\n }));\n\n this.addTemplate('components/x-bar', '\\n <h1>X-Bar</h1>\\n <button {{action \"incrementCounter\"}}>Join {{counter.value}} others in clicking me!</button>\\n ');\n\n this.add('component:x-bar', _emberGlimmer.Component.extend({\n counter: _emberRuntime.inject.service('sharedCounter'),\n\n actions: {\n incrementCounter: function () {\n this.get('counter').increment();\n }\n },\n\n init: function () {\n this._super();\n xBarInitCalled = true;\n },\n didInsertElement: function () {\n xBarDidInsertElementCalled = true;\n }\n }));\n\n var $foo = (0, _emberViews.jQuery)('<div />').appendTo(this.$());\n var $bar = (0, _emberViews.jQuery)('<div />').appendTo(this.$());\n\n var data = encodeURIComponent(JSON.stringify({ name: 'Godfrey' }));\n var instances = [];\n\n return _emberRuntime.RSVP.all([this.runTask(function () {\n return _this11.application.visit('/x-foo?data=' + data, { rootElement: $foo[0] });\n }), this.runTask(function () {\n return _this11.application.visit('/x-bar', { rootElement: $bar[0] });\n })]).then(function (_instances) {\n instances = _instances;\n\n assert.ok(xFooInitCalled);\n assert.ok(xFooDidInsertElementCalled);\n\n assert.ok(xBarInitCalled);\n assert.ok(xBarDidInsertElementCalled);\n\n assert.equal($foo.find('h1').text(), 'X-Foo');\n assert.equal($foo.find('p').text(), 'Hello Godfrey, I have been clicked 0 times (0 times combined)!');\n assert.ok($foo.text().indexOf('X-Bar') === -1);\n\n assert.equal($bar.find('h1').text(), 'X-Bar');\n assert.equal($bar.find('button').text(), 'Join 0 others in clicking me!');\n assert.ok($bar.text().indexOf('X-Foo') === -1);\n\n _this11.runTask(function () {\n $foo.find('x-foo').click();\n });\n\n assert.equal($foo.find('p').text(), 'Hello Godfrey, I have been clicked 1 times (1 times combined)!');\n assert.equal($bar.find('button').text(), 'Join 1 others in clicking me!');\n\n _this11.runTask(function () {\n $bar.find('button').click();\n $bar.find('button').click();\n });\n\n assert.equal($foo.find('p').text(), 'Hello Godfrey, I have been clicked 1 times (3 times combined)!');\n assert.equal($bar.find('button').text(), 'Join 3 others in clicking me!');\n }).finally(function () {\n _this11.runTask(function () {\n instances.forEach(function (instance) {\n instance.destroy();\n });\n });\n });\n };\n\n return _class;\n }(_internalTestHelpers.ApplicationTestCase));\n});","QUnit.module('ESLint | ember-application/tests/system/visit_test.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-application/tests/system/visit_test.js should pass ESLint\\n\\n');\n});\n","enifed('ember-application/tests/test-helpers/registry-check', ['exports'], function (exports) {\n 'use strict';\n\n exports.verifyRegistration = verifyRegistration;\n exports.verifyInjection = verifyInjection;\n function verifyRegistration(owner, fullName) {\n ok(owner.resolveRegistration(fullName), 'has registration: ' + fullName);\n }\n\n function verifyInjection(owner, fullName, property, injectionName) {\n var registry = owner.__registry__;\n var injections = void 0;\n\n if (fullName.indexOf(':') === -1) {\n injections = registry.getTypeInjections(fullName);\n } else {\n injections = registry.getInjections(registry.normalize(fullName));\n }\n\n var normalizedName = registry.normalize(injectionName);\n var hasInjection = false;\n var injection = void 0;\n\n for (var i = 0, l = injections.length; i < l; i++) {\n injection = injections[i];\n if (injection.property === property && injection.fullName === normalizedName) {\n hasInjection = true;\n break;\n }\n }\n\n ok(hasInjection, 'has injection: ' + fullName + '.' + property + ' = ' + injectionName);\n }\n});","QUnit.module('ESLint | ember-application/tests/test-helpers/registry-check.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-application/tests/test-helpers/registry-check.js should pass ESLint\\n\\n');\n});\n","enifed('ember-babel', ['exports'], function (exports) {\n 'use strict';\n\n exports.classCallCheck = classCallCheck;\n exports.inherits = inherits;\n exports.taggedTemplateLiteralLoose = taggedTemplateLiteralLoose;\n exports.createClass = createClass;\n exports.defaults = defaults;\n function classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError('Cannot call a class as a function');\n }\n }\n\n function inherits(subClass, superClass) {\n if (typeof superClass !== 'function' && superClass !== null) {\n throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : defaults(subClass, superClass);\n }\n\n function taggedTemplateLiteralLoose(strings, raw) {\n strings.raw = raw;\n return strings;\n }\n\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if ('value' in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function createClass(Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n }\n\n function defaults(obj, defaults) {\n var keys = Object.getOwnPropertyNames(defaults);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var value = Object.getOwnPropertyDescriptor(defaults, key);\n if (value && value.configurable && obj[key] === undefined) {\n Object.defineProperty(obj, key, value);\n }\n }\n return obj;\n }\n\n var possibleConstructorReturn = exports.possibleConstructorReturn = function (self, call) {\n if (!self) {\n throw new ReferenceError('this hasn\\'t been initialized - super() hasn\\'t been called');\n }\n return call && (typeof call === 'object' || typeof call === 'function') ? call : self;\n };\n\n var slice = exports.slice = Array.prototype.slice;\n});","QUnit.module('ESLint | ember-console.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-console.js should pass ESLint\\n\\n');\n});\n","QUnit.module('ESLint | ember-console/lib/index.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-console/lib/index.js should pass ESLint\\n\\n');\n});\n","QUnit.module('ESLint | ember-debug/deprecate.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-debug/deprecate.js should pass ESLint\\n\\n');\n});\n","QUnit.module('ESLint | ember-debug/error.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-debug/error.js should pass ESLint\\n\\n');\n});\n","QUnit.module('ESLint | ember-debug/features.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-debug/features.js should pass ESLint\\n\\n');\n});\n","QUnit.module('ESLint | ember-debug/handlers.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-debug/handlers.js should pass ESLint\\n\\n');\n});\n","QUnit.module('ESLint | ember-debug/index.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-debug/index.js should pass ESLint\\n\\n');\n});\n","QUnit.module('ESLint | ember-debug/lib/deprecate.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-debug/lib/deprecate.js should pass ESLint\\n\\n');\n});\n","QUnit.module('ESLint | ember-debug/lib/error.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-debug/lib/error.js should pass ESLint\\n\\n');\n});\n","QUnit.module('ESLint | ember-debug/lib/features.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-debug/lib/features.js should pass ESLint\\n\\n');\n});\n","QUnit.module('ESLint | ember-debug/lib/handlers.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-debug/lib/handlers.js should pass ESLint\\n\\n');\n});\n","QUnit.module('ESLint | ember-debug/lib/index.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-debug/lib/index.js should pass ESLint\\n\\n');\n});\n","QUnit.module('ESLint | ember-debug/lib/testing.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-debug/lib/testing.js should pass ESLint\\n\\n');\n});\n","QUnit.module('ESLint | ember-debug/lib/warn.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-debug/lib/warn.js should pass ESLint\\n\\n');\n});\n","QUnit.module('ESLint | ember-debug/testing.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-debug/testing.js should pass ESLint\\n\\n');\n});\n","enifed('ember-debug/tests/error_test', ['ember-debug/error'], function (_error) {\n 'use strict';\n\n QUnit.module('Ember Error Throwing');\n\n QUnit.test('new Ember.Error displays provided message', function () {\n throws(function () {\n throw new _error.default('A Message');\n }, function (e) {\n return e.message === 'A Message';\n }, 'the assigned message was displayed');\n });\n});","QUnit.module('ESLint | ember-debug/tests/error_test.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-debug/tests/error_test.js should pass ESLint\\n\\n');\n});\n","enifed('ember-debug/tests/handlers-test', ['ember-debug/handlers'], function (_handlers) {\n 'use strict';\n\n QUnit.module('ember-debug/handlers', {\n teardown: function () {\n delete _handlers.HANDLERS.blarz;\n }\n });\n\n QUnit.test('calls handler on `invoke` when `falsey`', function (assert) {\n assert.expect(2);\n\n function handler(message) {\n assert.ok(true, 'called handler');\n assert.equal(message, 'Foo bar');\n }\n\n (0, _handlers.registerHandler)('blarz', handler);\n\n (0, _handlers.invoke)('blarz', 'Foo bar', false);\n });\n\n QUnit.test('does not call handler on `invoke` when `truthy`', function (assert) {\n assert.expect(0);\n\n function handler() {\n assert.ok(false, 'called handler');\n }\n\n (0, _handlers.registerHandler)('blarz', handler);\n\n (0, _handlers.invoke)('blarz', 'Foo bar', true);\n });\n\n QUnit.test('calling `invoke` without handlers does not throw an error', function (assert) {\n assert.expect(0);\n\n (0, _handlers.invoke)('blarz', 'Foo bar', false);\n });\n\n QUnit.test('invoking `next` argument calls the next handler', function (assert) {\n assert.expect(2);\n\n function handler1(message, options, next) {\n assert.ok(true, 'called handler1');\n }\n\n function handler2(message, options, next) {\n assert.ok(true, 'called handler2');\n next(message, options);\n }\n\n (0, _handlers.registerHandler)('blarz', handler1);\n (0, _handlers.registerHandler)('blarz', handler2);\n\n (0, _handlers.invoke)('blarz', 'Foo', false);\n });\n\n QUnit.test('invoking `next` when no other handlers exists does not error', function (assert) {\n assert.expect(1);\n\n function handler(message, options, next) {\n assert.ok(true, 'called handler1');\n\n next(message, options);\n }\n\n (0, _handlers.registerHandler)('blarz', handler);\n\n (0, _handlers.invoke)('blarz', 'Foo', false);\n });\n\n QUnit.test('handlers are called in the proper order', function (assert) {\n assert.expect(11);\n\n var expectedMessage = 'This is the message';\n var expectedOptions = { id: 'foo-bar' };\n var expected = ['first', 'second', 'third', 'fourth', 'fifth'];\n var actualCalls = [];\n\n function generateHandler(item) {\n return function (message, options, next) {\n assert.equal(message, expectedMessage, 'message supplied to ' + item + ' handler is correct');\n assert.equal(options, expectedOptions, 'options supplied to ' + item + ' handler is correct');\n\n actualCalls.push(item);\n\n next(message, options);\n };\n }\n\n expected.forEach(function (item) {\n return (0, _handlers.registerHandler)('blarz', generateHandler(item));\n });\n\n (0, _handlers.invoke)('blarz', expectedMessage, false, expectedOptions);\n\n assert.deepEqual(actualCalls, expected.reverse(), 'handlers were called in proper order');\n });\n\n QUnit.test('not invoking `next` prevents further handlers from being called', function (assert) {\n assert.expect(1);\n\n function handler1(message, options, next) {\n assert.ok(false, 'called handler1');\n }\n\n function handler2(message, options, next) {\n assert.ok(true, 'called handler2');\n }\n\n (0, _handlers.registerHandler)('blarz', handler1);\n (0, _handlers.registerHandler)('blarz', handler2);\n\n (0, _handlers.invoke)('blarz', 'Foo', false);\n });\n\n QUnit.test('handlers can call `next` with custom message and/or options', function (assert) {\n assert.expect(4);\n\n var initialMessage = 'initial message';\n var initialOptions = { id: 'initial-options' };\n\n var handler2Message = 'Handler2 Message';\n var handler2Options = { id: 'handler-2' };\n\n function handler1(message, options, next) {\n assert.equal(message, handler2Message, 'handler2 message provided to handler1');\n assert.equal(options, handler2Options, 'handler2 options provided to handler1');\n }\n\n function handler2(message, options, next) {\n assert.equal(message, initialMessage, 'initial message provided to handler2');\n assert.equal(options, initialOptions, 'initial options proivided to handler2');\n\n next(handler2Message, handler2Options);\n }\n\n (0, _handlers.registerHandler)('blarz', handler1);\n (0, _handlers.registerHandler)('blarz', handler2);\n\n (0, _handlers.invoke)('blarz', initialMessage, false, initialOptions);\n });\n});","QUnit.module('ESLint | ember-debug/tests/handlers-test.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-debug/tests/handlers-test.js should pass ESLint\\n\\n');\n});\n","enifed('ember-debug/tests/main_test', ['ember-environment', 'ember-runtime', 'ember-debug/handlers', 'ember-debug/deprecate', 'ember-debug/warn', 'ember-debug/index'], function (_emberEnvironment, _emberRuntime, _handlers, _deprecate, _warn, _index) {\n 'use strict';\n\n var originalEnvValue = void 0;\n var originalDeprecateHandler = void 0;\n\n QUnit.module('ember-debug', {\n setup: function () {\n originalEnvValue = _emberEnvironment.ENV.RAISE_ON_DEPRECATION;\n originalDeprecateHandler = _handlers.HANDLERS.deprecate;\n\n _emberEnvironment.ENV.RAISE_ON_DEPRECATION = true;\n },\n teardown: function () {\n _handlers.HANDLERS.deprecate = originalDeprecateHandler;\n\n _emberEnvironment.ENV.RAISE_ON_DEPRECATION = originalEnvValue;\n }\n });\n\n QUnit.test('Ember.deprecate does not throw if RAISE_ON_DEPRECATION is false', function (assert) {\n assert.expect(1);\n\n _emberEnvironment.ENV.RAISE_ON_DEPRECATION = false;\n\n try {\n (0, _index.deprecate)('Should not throw', false, { id: 'test', until: 'forever' });\n assert.ok(true, 'Ember.deprecate did not throw');\n } catch (e) {\n assert.ok(false, 'Expected deprecate not to throw but it did: ' + e.message);\n }\n });\n\n QUnit.test('Ember.deprecate resets deprecation level to RAISE if ENV.RAISE_ON_DEPRECATION is set', function (assert) {\n assert.expect(2);\n\n _emberEnvironment.ENV.RAISE_ON_DEPRECATION = false;\n\n try {\n (0, _index.deprecate)('Should not throw', false, { id: 'test', until: 'forever' });\n assert.ok(true, 'Ember.deprecate did not throw');\n } catch (e) {\n assert.ok(false, 'Expected deprecate not to throw but it did: ' + e.message);\n }\n\n _emberEnvironment.ENV.RAISE_ON_DEPRECATION = true;\n\n assert.throws(function () {\n (0, _index.deprecate)('Should throw', false, { id: 'test', until: 'forever' });\n }, /Should throw/);\n });\n\n QUnit.test('When ENV.RAISE_ON_DEPRECATION is true, it is still possible to silence a deprecation by id', function (assert) {\n assert.expect(3);\n\n _emberEnvironment.ENV.RAISE_ON_DEPRECATION = true;\n (0, _deprecate.registerHandler)(function (message, options, next) {\n if (!options || options.id !== 'my-deprecation') {\n next.apply(undefined, arguments);\n }\n });\n\n try {\n (0, _index.deprecate)('should be silenced with matching id', false, { id: 'my-deprecation', until: 'forever' });\n assert.ok(true, 'Did not throw when level is set by id');\n } catch (e) {\n assert.ok(false, 'Expected deprecate not to throw but it did: ' + e.message);\n }\n\n assert.throws(function () {\n (0, _index.deprecate)('Should throw with no matching id', false, { id: 'test', until: 'forever' });\n }, /Should throw with no matching id/);\n\n assert.throws(function () {\n (0, _index.deprecate)('Should throw with non-matching id', false, { id: 'other-id', until: 'forever' });\n }, /Should throw with non-matching id/);\n });\n\n QUnit.test('Ember.deprecate throws deprecation if second argument is falsy', function () {\n expect(3);\n\n throws(function () {\n return (0, _index.deprecate)('Deprecation is thrown', false, { id: 'test', until: 'forever' });\n });\n throws(function () {\n return (0, _index.deprecate)('Deprecation is thrown', '', { id: 'test', until: 'forever' });\n });\n throws(function () {\n return (0, _index.deprecate)('Deprecation is thrown', 0, { id: 'test', until: 'forever' });\n });\n });\n\n QUnit.test('Ember.deprecate does not invoke a function as the second argument', function () {\n expect(1);\n\n (0, _index.deprecate)('Deprecation is thrown', function () {\n ok(false, 'this function should not be invoked');\n }, { id: 'test', until: 'forever' });\n\n ok(true, 'deprecations were not thrown');\n });\n\n QUnit.test('Ember.deprecate does not throw deprecations if second argument is truthy', function () {\n expect(1);\n\n (0, _index.deprecate)('Deprecation is thrown', true, { id: 'test', until: 'forever' });\n (0, _index.deprecate)('Deprecation is thrown', '1', { id: 'test', until: 'forever' });\n (0, _index.deprecate)('Deprecation is thrown', 1, { id: 'test', until: 'forever' });\n\n ok(true, 'deprecations were not thrown');\n });\n\n QUnit.test('Ember.assert throws if second argument is falsy', function () {\n expect(3);\n\n throws(function () {\n return (0, _index.assert)('Assertion is thrown', false);\n });\n throws(function () {\n return (0, _index.assert)('Assertion is thrown', '');\n });\n throws(function () {\n return (0, _index.assert)('Assertion is thrown', 0);\n });\n });\n\n QUnit.test('Ember.assert does not throw if second argument is a function', function (assert) {\n assert.expect(1);\n\n (0, _index.assert)('Assertion is thrown', function () {\n return true;\n });\n\n ok(true, 'assertions were not thrown');\n });\n\n QUnit.test('Ember.assert does not throw if second argument is truthy', function () {\n expect(1);\n\n (0, _index.assert)('Assertion is thrown', true);\n (0, _index.assert)('Assertion is thrown', '1');\n (0, _index.assert)('Assertion is thrown', 1);\n\n ok(true, 'assertions were not thrown');\n });\n\n QUnit.test('Ember.assert does not throw if second argument is an object', function () {\n expect(1);\n var Igor = _emberRuntime.Object.extend();\n\n (0, _index.assert)('is truthy', Igor);\n (0, _index.assert)('is truthy', Igor.create());\n\n ok(true, 'assertions were not thrown');\n });\n\n QUnit.test('Ember.deprecate does not throw a deprecation at log and silence levels', function () {\n expect(4);\n var id = 'ABC';\n var until = 'forever';\n var shouldThrow = false;\n\n (0, _deprecate.registerHandler)(function (message, options, next) {\n if (options && options.id === id) {\n if (shouldThrow) {\n throw new Error(message);\n }\n }\n });\n\n try {\n (0, _index.deprecate)('Deprecation for testing purposes', false, { id: id, until: until });\n ok(true, 'Deprecation did not throw');\n } catch (e) {\n ok(false, 'Deprecation was thrown despite being added to blacklist');\n }\n\n try {\n (0, _index.deprecate)('Deprecation for testing purposes', false, { id: id, until: until });\n ok(true, 'Deprecation did not throw');\n } catch (e) {\n ok(false, 'Deprecation was thrown despite being added to blacklist');\n }\n\n shouldThrow = true;\n\n throws(function () {\n (0, _index.deprecate)('Deprecation is thrown', false, { id: id, until: until });\n });\n\n throws(function () {\n (0, _index.deprecate)('Deprecation is thrown', false, { id: id, until: until });\n });\n });\n\n QUnit.test('Ember.deprecate without options triggers a deprecation', function (assert) {\n assert.expect(4);\n\n (0, _deprecate.registerHandler)(function (message) {\n if (message === _deprecate.missingOptionsDeprecation) {\n assert.ok(true, 'proper deprecation is triggered when options is missing');\n } else if (message === 'foo') {\n assert.ok(true, 'original deprecation is still triggered');\n }\n });\n\n (0, _index.deprecate)('foo');\n (0, _index.deprecate)('foo', false, {});\n });\n\n QUnit.test('Ember.deprecate without options.id triggers a deprecation', function (assert) {\n assert.expect(2);\n\n (0, _deprecate.registerHandler)(function (message) {\n if (message === _deprecate.missingOptionsIdDeprecation) {\n assert.ok(true, 'proper deprecation is triggered when options.id is missing');\n } else if (message === 'foo') {\n assert.ok(true, 'original deprecation is still triggered');\n }\n });\n\n (0, _index.deprecate)('foo', false, { until: 'forever' });\n });\n\n QUnit.test('Ember.deprecate without options.until triggers a deprecation', function (assert) {\n assert.expect(2);\n\n (0, _deprecate.registerHandler)(function (message) {\n if (message === _deprecate.missingOptionsUntilDeprecation) {\n assert.ok(true, 'proper deprecation is triggered when options.until is missing');\n } else if (message === 'foo') {\n assert.ok(true, 'original deprecation is still triggered');\n }\n });\n\n (0, _index.deprecate)('foo', false, { id: 'test' });\n });\n\n QUnit.test('warn without options triggers a deprecation', function (assert) {\n assert.expect(2);\n\n (0, _deprecate.registerHandler)(function (message) {\n assert.equal(message, _warn.missingOptionsDeprecation, 'deprecation is triggered when options is missing');\n });\n\n (0, _warn.registerHandler)(function (message) {\n assert.equal(message, 'foo', 'original warning is triggered');\n });\n\n (0, _index.warn)('foo');\n });\n\n QUnit.test('warn without options.id triggers a deprecation', function (assert) {\n assert.expect(2);\n\n (0, _deprecate.registerHandler)(function (message) {\n assert.equal(message, _warn.missingOptionsIdDeprecation, 'deprecation is triggered when options is missing');\n });\n\n (0, _warn.registerHandler)(function (message) {\n assert.equal(message, 'foo', 'original warning is triggered');\n });\n\n (0, _index.warn)('foo', false, {});\n });\n\n QUnit.test('warn without options.id nor test triggers a deprecation', function (assert) {\n assert.expect(2);\n\n (0, _deprecate.registerHandler)(function (message) {\n assert.equal(message, _warn.missingOptionsIdDeprecation, 'deprecation is triggered when options is missing');\n });\n\n (0, _warn.registerHandler)(function (message) {\n assert.equal(message, 'foo', 'original warning is triggered');\n });\n\n (0, _index.warn)('foo', {});\n });\n\n QUnit.test('warn without test but with options does not trigger a deprecation', function (assert) {\n assert.expect(1);\n\n (0, _deprecate.registerHandler)(function (message) {\n assert.ok(false, 'there should be no deprecation ' + message);\n });\n\n (0, _warn.registerHandler)(function (message) {\n assert.equal(message, 'foo', 'warning was triggered');\n });\n\n (0, _index.warn)('foo', { id: 'ember-debug.do-not-raise' });\n });\n});","QUnit.module('ESLint | ember-debug/tests/main_test.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-debug/tests/main_test.js should pass ESLint\\n\\n');\n});\n","enifed('ember-debug/tests/warn_if_using_stripped_feature_flags_test', ['ember-environment', 'ember-debug', 'ember-debug/index'], function (_emberEnvironment, _emberDebug, _index) {\n 'use strict';\n\n var oldWarn = void 0,\n oldRunInDebug = void 0,\n origEnvFeatures = void 0,\n origEnableOptional = void 0,\n features = void 0,\n knownFeatures = void 0;\n\n function confirmWarns(expectedMsg) {\n var featuresWereStripped = true;\n\n (0, _emberDebug.setDebugFunction)('warn', function (msg, test) {\n if (!test) {\n equal(msg, expectedMsg);\n }\n });\n\n (0, _emberDebug.setDebugFunction)('runInDebug', function (func) {\n func();\n });\n\n // Should trigger our 1 warning\n (0, _index._warnIfUsingStrippedFeatureFlags)(features, knownFeatures, featuresWereStripped);\n\n // Shouldn't trigger any warnings now that we're \"in canary\"\n featuresWereStripped = false;\n (0, _index._warnIfUsingStrippedFeatureFlags)(features, knownFeatures, featuresWereStripped);\n }\n\n QUnit.module('ember-debug - _warnIfUsingStrippedFeatureFlags', {\n setup: function () {\n oldWarn = (0, _emberDebug.getDebugFunction)('warn');\n oldRunInDebug = (0, _emberDebug.getDebugFunction)('runInDebug');\n origEnvFeatures = _emberEnvironment.ENV.FEATURES;\n origEnableOptional = _emberEnvironment.ENV.ENABLE_OPTIONAL_FEATURES;\n\n knownFeatures = {\n 'fred': null,\n 'barney': null,\n 'wilma': null\n };\n },\n teardown: function () {\n (0, _emberDebug.setDebugFunction)('warn', oldWarn);\n (0, _emberDebug.setDebugFunction)('runInDebug', oldRunInDebug);\n _emberEnvironment.ENV.FEATURES = origEnvFeatures;\n _emberEnvironment.ENV.ENABLE_OPTIONAL_FEATURES = origEnableOptional;\n }\n });\n\n QUnit.test('Setting Ember.ENV.ENABLE_OPTIONAL_FEATURES truthy in non-canary, debug build causes a warning', function () {\n expect(1);\n\n _emberEnvironment.ENV.ENABLE_OPTIONAL_FEATURES = true;\n features = {};\n\n confirmWarns('Ember.ENV.ENABLE_OPTIONAL_FEATURES is only available in canary builds.');\n });\n\n QUnit.test('Enabling a known FEATURE flag in non-canary, debug build causes a warning', function () {\n expect(1);\n\n _emberEnvironment.ENV.ENABLE_OPTIONAL_FEATURES = false;\n features = {\n 'fred': true,\n 'barney': false,\n 'wilma': null\n };\n\n confirmWarns('FEATURE[\"fred\"] is set as enabled, but FEATURE flags are only available in canary builds.');\n });\n\n QUnit.test('Enabling an unknown FEATURE flag in non-canary debug build does not cause a warning', function () {\n expect(0);\n\n _emberEnvironment.ENV.ENABLE_OPTIONAL_FEATURES = false;\n features = {\n 'some-ember-data-feature-flag': true\n };\n\n confirmWarns('FEATURE[\"fred\"] is set as enabled, but FEATURE flags are only available in canary builds.');\n });\n\n QUnit.test('`ENV.FEATURES` being undefined does not cause an error', function () {\n expect(0);\n\n _emberEnvironment.ENV.ENABLE_OPTIONAL_FEATURES = false;\n features = undefined;\n\n confirmWarns();\n });\n});","QUnit.module('ESLint | ember-debug/tests/warn_if_using_stripped_feature_flags_test.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-debug/tests/warn_if_using_stripped_feature_flags_test.js should pass ESLint\\n\\n');\n});\n","QUnit.module('ESLint | ember-debug/warn.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-debug/warn.js should pass ESLint\\n\\n');\n});\n","enifed('ember-dev/test-helper/assertion', ['exports', 'ember-dev/test-helper/utils'], function (exports, _utils) {\n 'use strict';\n\n exports.default = AssertionAssert;\n\n\n var BREAK = {};\n\n /**\n This assertion class is used to test assertions made using Ember.assert.\n It injects two helpers onto `window`:\n \n - expectAssertion(func: Function, [expectedMessage: String | RegExp])\n \n This function calls `func` and asserts that `Ember.assert` is invoked during\n the execution. Moreover, it takes a String or a RegExp as a second optional\n argument that can be used to test if a specific assertion message was\n generated.\n \n - ignoreAssertion(func: Function)\n \n This function calls `func` and disables `Ember.assert` during the execution.\n In particular, this prevents `Ember.assert` from throw errors that would\n disrupt the control flow.\n */\n function AssertionAssert(env) {\n this.env = env;\n }\n\n AssertionAssert.prototype = {\n reset: function reset() {},\n assert: function assert() {},\n\n inject: function inject() {\n var _this = this;\n\n var expectAssertion = function expectAssertion(func, expectedMessage) {\n if (_this.env.runningProdBuild) {\n QUnit.ok(true, 'Assertions disabled in production builds.');\n return;\n }\n\n var sawCall = undefined;\n var actualMessage = undefined;\n\n // The try-catch statement is used to \"exit\" `func` as soon as\n // the first useful assertion has been produced.\n try {\n (0, _utils.callWithStub)(_this.env, 'assert', func, function (message, test) {\n sawCall = true;\n if ((0, _utils.checkTest)(test)) {\n return;\n }\n actualMessage = message;\n throw BREAK;\n });\n } catch (e) {\n if (e !== BREAK) {\n throw e;\n }\n }\n\n assert(sawCall, actualMessage, expectedMessage);\n };\n\n var ignoreAssertion = function ignoreAssertion(func) {\n (0, _utils.callWithStub)(_this.env, 'assert', func);\n };\n\n window.expectAssertion = expectAssertion;\n window.ignoreAssertion = ignoreAssertion;\n },\n\n restore: function restore() {\n window.expectAssertion = null;\n window.ignoreAssertion = null;\n }\n };\n\n function assert(sawCall, actualMessage, expectedMessage) {\n // Run assertions in an order that is useful when debugging a test failure.\n if (!sawCall) {\n QUnit.ok(false, 'Expected Ember.assert to be called (Not called with any value).');\n } else if (!actualMessage) {\n QUnit.ok(false, 'Expected a failing Ember.assert (Ember.assert called, but without a failing test).');\n } else {\n if (expectedMessage) {\n if (expectedMessage instanceof RegExp) {\n QUnit.ok(expectedMessage.test(actualMessage), 'Expected failing Ember.assert: \\'' + expectedMessage + '\\', but got \\'' + actualMessage + '\\'.');\n } else {\n QUnit.equal(actualMessage, expectedMessage, 'Expected failing Ember.assert: \\'' + expectedMessage + '\\', but got \\'' + actualMessage + '\\'.');\n }\n } else {\n // Positive assertion that assert was called\n QUnit.ok(true, 'Expected a failing Ember.assert.');\n }\n }\n }\n});","enifed('ember-dev/test-helper/debug', ['exports', 'ember-dev/test-helper/method-call-tracker'], function (exports, _methodCallTracker) {\n 'use strict';\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if ('value' in descriptor) descriptor.writable = true;Object.defineProperty(target, descriptor.key, descriptor);\n }\n }return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);if (staticProps) defineProperties(Constructor, staticProps);return Constructor;\n };\n }();\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError('Cannot call a class as a function');\n }\n }\n\n var DebugAssert = function () {\n function DebugAssert(methodName, env) {\n _classCallCheck(this, DebugAssert);\n\n this.methodName = methodName;\n this.env = env;\n }\n\n _createClass(DebugAssert, [{\n key: 'inject',\n value: function inject() {}\n }, {\n key: 'restore',\n value: function restore() {\n this.reset();\n }\n }, {\n key: 'reset',\n value: function reset() {\n if (this.tracker) {\n this.tracker.restoreMethod();\n }\n\n this.tracker = null;\n }\n }, {\n key: 'assert',\n value: function assert() {\n if (this.tracker) {\n this.tracker.assert();\n }\n }\n\n // Run an expectation callback within the context of a new tracker, optionally\n // accepting a function to run, which asserts immediately\n }, {\n key: 'runExpectation',\n value: function runExpectation(func, callback) {\n var originalTracker = undefined;\n\n // When helpers are passed a callback, they get a new tracker context\n if (func) {\n originalTracker = this.tracker;\n this.tracker = null;\n }\n\n if (!this.tracker) {\n this.tracker = new _methodCallTracker.default(this.env, this.methodName);\n }\n\n // Yield to caller with tracker instance\n callback(this.tracker);\n\n // Once the given callback is invoked, the pending assertions should be\n // flushed immediately\n if (func) {\n func();\n this.assert();\n this.reset();\n\n this.tracker = originalTracker;\n }\n }\n }]);\n\n return DebugAssert;\n }();\n\n exports.default = DebugAssert;\n});","enifed('ember-dev/test-helper/deprecation', ['exports', 'ember-babel', 'ember-dev/test-helper/debug', 'ember-dev/test-helper/utils'], function (exports, _emberBabel, _debug, _utils) {\n 'use strict';\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if ('value' in descriptor) descriptor.writable = true;Object.defineProperty(target, descriptor.key, descriptor);\n }\n }return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);if (staticProps) defineProperties(Constructor, staticProps);return Constructor;\n };\n }();\n\n var _get = function get(_x, _x2, _x3) {\n var _again = true;_function: while (_again) {\n var object = _x,\n property = _x2,\n receiver = _x3;_again = false;if (object === null) object = Function.prototype;var desc = Object.getOwnPropertyDescriptor(object, property);if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);if (parent === null) {\n return undefined;\n } else {\n _x = parent;_x2 = property;_x3 = receiver;_again = true;desc = parent = undefined;continue _function;\n }\n } else if ('value' in desc) {\n return desc.value;\n } else {\n var getter = desc.get;if (getter === undefined) {\n return undefined;\n }return getter.call(receiver);\n }\n }\n };\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError('Cannot call a class as a function');\n }\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== 'function' && superClass !== null) {\n throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass);\n }subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } });if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : (0, _emberBabel.defaults)(subClass, superClass);\n }\n\n var DeprecationAssert = function (_DebugAssert) {\n _inherits(DeprecationAssert, _DebugAssert);\n\n function DeprecationAssert(env) {\n _classCallCheck(this, DeprecationAssert);\n\n _get(Object.getPrototypeOf(DeprecationAssert.prototype), 'constructor', this).call(this, 'deprecate', env);\n }\n\n _createClass(DeprecationAssert, [{\n key: 'inject',\n value: function inject() {\n var _this = this;\n\n // Expects no deprecation to happen within a function, or if no function is\n // passed, from the time of calling until the end of the test.\n //\n // expectNoDeprecation(function() {\n // fancyNewThing();\n // });\n //\n // expectNoDeprecation();\n // Ember.deprecate(\"Old And Busted\");\n //\n var expectNoDeprecation = function expectNoDeprecation(func) {\n if (typeof func !== 'function') {\n func = null;\n }\n\n _this.runExpectation(func, function (tracker) {\n if (tracker.isExpectingCalls()) {\n throw new Error(\"expectNoDeprecation was called after expectDeprecation was called!\");\n }\n\n tracker.expectNoCalls();\n });\n };\n\n // Expect a deprecation to happen within a function, or if no function\n // is pass, from the time of calling until the end of the test. Can be called\n // multiple times to assert deprecations with different specific messages\n // were fired.\n //\n // expectDeprecation(function() {\n // Ember.deprecate(\"Old And Busted\");\n // }, /* optionalStringOrRegex */);\n //\n // expectDeprecation(/* optionalStringOrRegex */);\n // Ember.deprecate(\"Old And Busted\");\n //\n var expectDeprecation = function expectDeprecation(func, message) {\n if (typeof func !== 'function') {\n message = func;\n func = null;\n }\n\n _this.runExpectation(func, function (tracker) {\n if (tracker.isExpectingNoCalls()) {\n throw new Error(\"expectDeprecation was called after expectNoDeprecation was called!\");\n }\n\n tracker.expectCall(message);\n });\n };\n\n var ignoreDeprecation = function ignoreDeprecation(func) {\n (0, _utils.callWithStub)(_this.env, 'deprecate', func);\n };\n\n window.expectNoDeprecation = expectNoDeprecation;\n window.expectDeprecation = expectDeprecation;\n window.ignoreDeprecation = ignoreDeprecation;\n }\n }, {\n key: 'restore',\n value: function restore() {\n _get(Object.getPrototypeOf(DeprecationAssert.prototype), 'restore', this).call(this);\n window.expectDeprecation = null;\n window.expectNoDeprecation = null;\n window.ignoreDeprecation = null;\n }\n }]);\n\n return DeprecationAssert;\n }(_debug.default);\n\n exports.default = DeprecationAssert;\n});","enifed(\"ember-dev/test-helper/index\", [\"exports\", \"ember-dev/test-helper/deprecation\", \"ember-dev/test-helper/warning\", \"ember-dev/test-helper/remaining-view\", \"ember-dev/test-helper/remaining-template\", \"ember-dev/test-helper/assertion\", \"ember-dev/test-helper/run-loop\", \"ember-dev/test-helper/utils\"], function (exports, _deprecation, _warning, _remainingView, _remainingTemplate, _assertion, _runLoop, _utils) {\n \"use strict\";\n\n var EmberDevTestHelperAssert = (0, _utils.buildCompositeAssert)([_deprecation.default, _warning.default, _remainingView.default, _remainingTemplate.default, _assertion.default, _runLoop.default]);\n\n exports.default = EmberDevTestHelperAssert;\n});","enifed('ember-dev/test-helper/method-call-tracker', ['exports', 'ember-dev/test-helper/utils'], function (exports, _utils) {\n 'use strict';\n\n var MethodCallTracker = function MethodCallTracker(env, methodName) {\n this._env = env;\n this._methodName = methodName;\n this._isExpectingNoCalls = false;\n this._expecteds = [];\n this._actuals = [];\n }; /* globals QUnit */\n\n MethodCallTracker.prototype = {\n stubMethod: function stubMethod() {\n var _this = this;\n\n if (this._originalMethod) {\n // Method is already stubbed\n return;\n }\n\n var env = this._env;\n var methodName = this._methodName;\n\n this._originalMethod = env.getDebugFunction(methodName);\n\n env.setDebugFunction(methodName, function (message, test) {\n var resultOfTest = (0, _utils.checkTest)(test);\n\n _this._actuals.push([message, resultOfTest]);\n });\n },\n\n restoreMethod: function restoreMethod() {\n if (this._originalMethod) {\n this._env.setDebugFunction(this._methodName, this._originalMethod);\n }\n },\n\n expectCall: function expectCall(message) {\n this.stubMethod();\n this._expecteds.push(message || /.*/);\n },\n\n expectNoCalls: function expectNoCalls() {\n this.stubMethod();\n this._isExpectingNoCalls = true;\n },\n\n isExpectingNoCalls: function isExpectingNoCalls() {\n return this._isExpectingNoCalls;\n },\n\n isExpectingCalls: function isExpectingCalls() {\n return !this._isExpectingNoCalls && this._expecteds.length;\n },\n\n assert: function assert() {\n var env = this._env;\n var methodName = this._methodName;\n var isExpectingNoCalls = this._isExpectingNoCalls;\n var expecteds = this._expecteds;\n var actuals = this._actuals;\n var o = undefined,\n i = undefined;\n\n if (!isExpectingNoCalls && expecteds.length === 0 && actuals.length === 0) {\n return;\n }\n\n if (env.runningProdBuild) {\n QUnit.ok(true, 'calls to Ember.' + methodName + ' disabled in production builds.');\n return;\n }\n\n if (isExpectingNoCalls) {\n var actualMessages = [];\n for (i = 0; i < actuals.length; i++) {\n if (!actuals[i][1]) {\n actualMessages.push(actuals[i][0]);\n }\n }\n QUnit.ok(actualMessages.length === 0, 'Expected no Ember.' + methodName + ' calls, got ' + actuals.length + ': ' + actualMessages.join(', '));\n return;\n }\n\n var expected = undefined,\n actual = undefined,\n match = undefined;\n\n for (o = 0; o < expecteds.length; o++) {\n expected = expecteds[o];\n for (i = 0; i < actuals.length; i++) {\n actual = actuals[i];\n if (!actual[1]) {\n if (expected instanceof RegExp) {\n if (expected.test(actual[0])) {\n match = actual;\n break;\n }\n } else {\n if (expected === actual[0]) {\n match = actual;\n break;\n }\n }\n }\n }\n\n if (!actual) {\n QUnit.ok(false, 'Recieved no Ember.' + methodName + ' calls at all, expecting: ' + expected);\n } else if (match && !match[1]) {\n QUnit.ok(true, 'Recieved failing Ember.' + methodName + ' call with message: ' + match[0]);\n } else if (match && match[1]) {\n QUnit.ok(false, 'Expected failing Ember.' + methodName + ' call, got succeeding with message: ' + match[0]);\n } else if (actual[1]) {\n QUnit.ok(false, 'Did not receive failing Ember.' + methodName + ' call matching \\'' + expected + '\\', last was success with \\'' + actual[0] + '\\'');\n } else if (!actual[1]) {\n QUnit.ok(false, 'Did not receive failing Ember.' + methodName + ' call matching \\'' + expected + '\\', last was failure with \\'' + actual[0] + '\\'');\n }\n }\n }\n };\n\n exports.default = MethodCallTracker;\n});","enifed(\"ember-dev/test-helper/remaining-template\", [\"exports\"], function (exports) {\n \"use strict\";\n\n /* globals QUnit */\n\n var RemainingTemplateAssert = function RemainingTemplateAssert(env) {\n this.env = env;\n };\n\n RemainingTemplateAssert.prototype = {\n reset: function reset() {},\n inject: function inject() {},\n assert: function assert() {\n if (this.env.Ember && this.env.Ember.TEMPLATES) {\n var templateNames = [],\n name;\n for (name in this.env.Ember.TEMPLATES) {\n if (this.env.Ember.TEMPLATES[name] != null) {\n templateNames.push(name);\n }\n }\n\n if (templateNames.length > 0) {\n QUnit.deepEqual(templateNames, [], \"Ember.TEMPLATES should be empty\");\n this.env.Ember.TEMPLATES = {};\n }\n }\n },\n restore: function restore() {}\n };\n\n exports.default = RemainingTemplateAssert;\n});","enifed(\"ember-dev/test-helper/remaining-view\", [\"exports\"], function (exports) {\n \"use strict\";\n\n /* globals QUnit */\n\n var RemainingViewAssert = function RemainingViewAssert(env) {\n this.env = env;\n };\n\n RemainingViewAssert.prototype = {\n reset: function reset() {},\n inject: function inject() {},\n assert: function assert() {\n if (this.env.Ember && this.env.Ember.View) {\n var viewIds = [],\n id;\n for (id in this.env.Ember.View.views) {\n if (this.env.Ember.View.views[id] != null) {\n viewIds.push(id);\n }\n }\n\n if (viewIds.length > 0) {\n QUnit.deepEqual(viewIds, [], \"Ember.View.views should be empty\");\n this.env.Ember.View.views = [];\n }\n }\n },\n restore: function restore() {}\n };\n\n exports.default = RemainingViewAssert;\n});","enifed(\"ember-dev/test-helper/run-loop\", [\"exports\"], function (exports) {\n \"use strict\";\n\n /* globals QUnit */\n\n function RunLoopAssertion(env) {\n this.env = env;\n }\n\n RunLoopAssertion.prototype = {\n reset: function reset() {},\n inject: function inject() {},\n assert: function assert() {\n var run = this.env.Ember.run;\n\n if (run.currentRunLoop) {\n QUnit.ok(false, \"Should not be in a run loop at end of test\");\n while (run.currentRunLoop) {\n run.end();\n }\n }\n\n if (run.hasScheduledTimers()) {\n QUnit.ok(false, \"Ember run should not have scheduled timers at end of test\");\n run.cancelTimers();\n }\n },\n restore: function restore() {}\n };\n\n exports.default = RunLoopAssertion;\n});","enifed(\"ember-dev/test-helper/setup-qunit\", [\"exports\"], function (exports) {\n \"use strict\";\n\n exports.default = setupQUnit;\n\n /* globals QUnit */\n function setupQUnit(assertion, _qunitGlobal) {\n var qunitGlobal = QUnit;\n\n if (_qunitGlobal) {\n qunitGlobal = _qunitGlobal;\n }\n\n var originalModule = qunitGlobal.module;\n\n qunitGlobal.module = function (name, _options) {\n var options = _options || {};\n var originalSetup = options.setup || function () {};\n var originalTeardown = options.teardown || function () {};\n\n options.setup = function () {\n assertion.reset();\n assertion.inject();\n\n originalSetup.call(this);\n };\n\n options.teardown = function () {\n originalTeardown.call(this);\n\n assertion.assert();\n assertion.restore();\n };\n\n return originalModule(name, options);\n };\n }\n});","enifed('ember-dev/test-helper/utils', ['exports'], function (exports) {\n 'use strict';\n\n exports.buildCompositeAssert = buildCompositeAssert;\n exports.callWithStub = callWithStub;\n exports.checkTest = checkTest;\n\n function callForEach(prop, func) {\n return function () {\n for (var i = 0, l = this[prop].length; i < l; i++) {\n this[prop][i][func]();\n }\n };\n }\n\n function buildCompositeAssert(assertClasses) {\n function Composite(env) {\n this.asserts = assertClasses.map(function (Assert) {\n return new Assert(env);\n });\n }\n\n Composite.prototype = {\n reset: callForEach('asserts', 'reset'),\n inject: callForEach('asserts', 'inject'),\n assert: callForEach('asserts', 'assert'),\n restore: callForEach('asserts', 'restore')\n };\n\n return Composite;\n }\n\n function noop() {}\n\n function callWithStub(env, name, func) {\n var debugStub = arguments.length <= 3 || arguments[3] === undefined ? noop : arguments[3];\n\n var originalFunc = env.getDebugFunction(name);\n try {\n env.setDebugFunction(name, debugStub);\n func();\n } finally {\n env.setDebugFunction(name, originalFunc);\n }\n }\n\n function checkTest(test) {\n return typeof test === 'function' ? test() : test;\n }\n});","enifed('ember-dev/test-helper/warning', ['exports', 'ember-babel', 'ember-dev/test-helper/debug', 'ember-dev/test-helper/utils'], function (exports, _emberBabel, _debug, _utils) {\n 'use strict';\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if ('value' in descriptor) descriptor.writable = true;Object.defineProperty(target, descriptor.key, descriptor);\n }\n }return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);if (staticProps) defineProperties(Constructor, staticProps);return Constructor;\n };\n }();\n\n var _get = function get(_x, _x2, _x3) {\n var _again = true;_function: while (_again) {\n var object = _x,\n property = _x2,\n receiver = _x3;_again = false;if (object === null) object = Function.prototype;var desc = Object.getOwnPropertyDescriptor(object, property);if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);if (parent === null) {\n return undefined;\n } else {\n _x = parent;_x2 = property;_x3 = receiver;_again = true;desc = parent = undefined;continue _function;\n }\n } else if ('value' in desc) {\n return desc.value;\n } else {\n var getter = desc.get;if (getter === undefined) {\n return undefined;\n }return getter.call(receiver);\n }\n }\n };\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError('Cannot call a class as a function');\n }\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== 'function' && superClass !== null) {\n throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass);\n }subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } });if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : (0, _emberBabel.defaults)(subClass, superClass);\n }\n\n var WarningAssert = function (_DebugAssert) {\n _inherits(WarningAssert, _DebugAssert);\n\n function WarningAssert(env) {\n _classCallCheck(this, WarningAssert);\n\n _get(Object.getPrototypeOf(WarningAssert.prototype), 'constructor', this).call(this, 'warn', env);\n }\n\n _createClass(WarningAssert, [{\n key: 'inject',\n value: function inject() {\n var _this = this;\n\n // Expects no warning to happen within a function, or if no function is\n // passed, from the time of calling until the end of the test.\n //\n // expectNoWarning(function() {\n // fancyNewThing();\n // });\n //\n // expectNoWarning();\n // Ember.warn(\"Oh snap, didn't expect that\");\n //\n var expectNoWarning = function expectNoWarning(func) {\n if (typeof func !== 'function') {\n func = null;\n }\n\n _this.runExpectation(func, function (tracker) {\n if (tracker.isExpectingCalls()) {\n throw new Error(\"expectNoWarning was called after expectWarning was called!\");\n }\n\n tracker.expectNoCalls();\n });\n };\n\n // Expect a warning to happen within a function, or if no function is\n // passed, from the time of calling until the end of the test. Can be called\n // multiple times to assert warnings with different specific messages\n // happened.\n //\n // expectWarning(function() {\n // Ember.warn(\"Times they are a-changin'\");\n // }, /* optionalStringOrRegex */);\n //\n // expectWarning(/* optionalStringOrRegex */);\n // Ember.warn(\"Times definitely be changin'\");\n //\n var expectWarning = function expectWarning(fn, message) {\n if (typeof fn !== 'function') {\n message = fn;\n fn = null;\n }\n\n _this.runExpectation(fn, function (tracker) {\n if (tracker.isExpectingNoCalls()) {\n throw new Error(\"expectWarning was called after expectNoWarning was called!\");\n }\n\n tracker.expectCall(message);\n });\n };\n\n var ignoreWarning = function ignoreWarning(func) {\n (0, _utils.callWithStub)(_this.env, 'warn', func);\n };\n\n window.expectNoWarning = expectNoWarning;\n window.expectWarning = expectWarning;\n window.ignoreWarning = ignoreWarning;\n }\n }, {\n key: 'restore',\n value: function restore() {\n _get(Object.getPrototypeOf(WarningAssert.prototype), 'restore', this).call(this);\n window.expectWarning = null;\n window.expectNoWarning = null;\n window.ignoreWarning = null;\n }\n }]);\n\n return WarningAssert;\n }(_debug.default);\n\n exports.default = WarningAssert;\n});","QUnit.module('ESLint | ember-environment.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-environment.js should pass ESLint\\n\\n');\n});\n","QUnit.module('ESLint | ember-environment/lib/global.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-environment/lib/global.js should pass ESLint\\n\\n');\n});\n","QUnit.module('ESLint | ember-environment/lib/index.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-environment/lib/index.js should pass ESLint\\n\\n');\n});\n","QUnit.module('ESLint | ember-environment/lib/utils.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-environment/lib/utils.js should pass ESLint\\n\\n');\n});\n","QUnit.module('ESLint | ember-extension-support/lib/container_debug_adapter.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-extension-support/lib/container_debug_adapter.js should pass ESLint\\n\\n');\n});\n","QUnit.module('ESLint | ember-extension-support/lib/data_adapter.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-extension-support/lib/data_adapter.js should pass ESLint\\n\\n');\n});\n","QUnit.module('ESLint | ember-extension-support/lib/index.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-extension-support/lib/index.js should pass ESLint\\n\\n');\n});\n","enifed('ember-extension-support/tests/container_debug_adapter_test', ['ember-babel', 'internal-test-helpers', 'ember-utils', 'ember-metal', 'ember-runtime', 'ember-extension-support/index'], function (_emberBabel, _internalTestHelpers, _emberUtils, _emberMetal, _emberRuntime) {\n 'use strict';\n\n // Must be required to export Ember.ContainerDebugAdapter.\n\n var adapter = void 0;\n\n (0, _internalTestHelpers.moduleFor)('Container Debug Adapter', function (_ApplicationTestCase) {\n (0, _emberBabel.inherits)(_class, _ApplicationTestCase);\n\n function _class() {\n (0, _emberBabel.classCallCheck)(this, _class);\n\n var _this = (0, _emberBabel.possibleConstructorReturn)(this, _ApplicationTestCase.call(this));\n\n adapter = _this.application.__deprecatedInstance__.lookup('container-debug-adapter:main');\n return _this;\n }\n\n _class.prototype.teardown = function teardown() {\n (0, _emberMetal.run)(function () {\n adapter.destroy();\n });\n\n _ApplicationTestCase.prototype.teardown.call(this);\n };\n\n _class.prototype['@test default ContainerDebugAdapter cannot catalog certain entries by type'] = function testDefaultContainerDebugAdapterCannotCatalogCertainEntriesByType(assert) {\n assert.equal(adapter.canCatalogEntriesByType('model'), false, 'canCatalogEntriesByType should return false for model');\n assert.equal(adapter.canCatalogEntriesByType('template'), false, 'canCatalogEntriesByType should return false for template');\n };\n\n _class.prototype['@test default ContainerDebugAdapter can catalog typical entries by type'] = function testDefaultContainerDebugAdapterCanCatalogTypicalEntriesByType(assert) {\n assert.equal(adapter.canCatalogEntriesByType('controller'), true, 'canCatalogEntriesByType should return true for controller');\n assert.equal(adapter.canCatalogEntriesByType('route'), true, 'canCatalogEntriesByType should return true for route');\n assert.equal(adapter.canCatalogEntriesByType('view'), true, 'canCatalogEntriesByType should return true for view');\n };\n\n _class.prototype['@test default ContainerDebugAdapter catalogs controller entries'] = function testDefaultContainerDebugAdapterCatalogsControllerEntries(assert) {\n this.application.PostController = _emberRuntime.Controller.extend();\n var controllerClasses = adapter.catalogEntriesByType('controller');\n\n assert.equal(controllerClasses.length, 1, 'found 1 class');\n assert.equal(controllerClasses[0], 'post', 'found the right class');\n };\n\n (0, _emberBabel.createClass)(_class, [{\n key: 'applicationOptions',\n get: function () {\n return (0, _emberUtils.assign)(_ApplicationTestCase.prototype.applicationOptions, {\n autoboot: true\n });\n }\n }]);\n return _class;\n }(_internalTestHelpers.ApplicationTestCase));\n});","QUnit.module('ESLint | ember-extension-support/tests/container_debug_adapter_test.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-extension-support/tests/container_debug_adapter_test.js should pass ESLint\\n\\n');\n});\n","enifed('ember-extension-support/tests/data_adapter_test', ['ember-babel', 'ember-metal', 'ember-runtime', 'ember-extension-support/data_adapter', 'internal-test-helpers'], function (_emberBabel, _emberMetal, _emberRuntime, _data_adapter, _internalTestHelpers) {\n 'use strict';\n\n var adapter = void 0,\n App = void 0;\n var Model = _emberRuntime.Object.extend();\n\n var PostClass = Model.extend();\n\n var DataAdapter = _data_adapter.default.extend({\n detect: function (klass) {\n return klass !== Model && Model.detect(klass);\n },\n init: function () {\n this._super.apply(this, arguments);\n this.set('containerDebugAdapter', {\n canCatalogEntriesByType: function (type) {\n return true;\n },\n catalogEntriesByType: function (type) {\n return (0, _emberRuntime.A)(['post']);\n }\n });\n }\n });\n\n (0, _internalTestHelpers.moduleFor)('Data Adapter', function (_ApplicationTestCase) {\n (0, _emberBabel.inherits)(_class, _ApplicationTestCase);\n\n function _class() {\n (0, _emberBabel.classCallCheck)(this, _class);\n return (0, _emberBabel.possibleConstructorReturn)(this, _ApplicationTestCase.apply(this, arguments));\n }\n\n _class.prototype['@test Model types added'] = function testModelTypesAdded() {\n var _this2 = this;\n\n this.add('data-adapter:main', DataAdapter.extend({\n getRecords: function () {\n return (0, _emberRuntime.A)([1, 2, 3]);\n },\n columnsForType: function () {\n return [{ name: 'title', desc: 'Title' }];\n }\n }));\n this.add('model:post', PostClass);\n\n return this.visit('/').then(function () {\n var adapter = _this2.applicationInstance.lookup('data-adapter:main');\n\n function modelTypesAdded(types) {\n equal(types.length, 1);\n var postType = types[0];\n equal(postType.name, 'post', 'Correctly sets the name');\n equal(postType.count, 3, 'Correctly sets the record count');\n strictEqual(postType.object, PostClass, 'Correctly sets the object');\n deepEqual(postType.columns, [{ name: 'title', desc: 'Title' }], 'Correctly sets the columns');\n }\n\n adapter.watchModelTypes(modelTypesAdded);\n });\n };\n\n _class.prototype['@test getRecords gets a model name as second argument'] = function testGetRecordsGetsAModelNameAsSecondArgument() {\n var _this3 = this;\n\n this.add('data-adapter:main', DataAdapter.extend({\n getRecords: function (klass, name) {\n equal(name, 'post');\n return (0, _emberRuntime.A)();\n }\n }));\n this.add('model:post', PostClass);\n\n return this.visit('/').then(function () {\n adapter = _this3.applicationInstance.lookup('data-adapter:main');\n adapter.watchModelTypes(function () {});\n });\n };\n\n _class.prototype['@test Model types added with custom container-debug-adapter'] = function testModelTypesAddedWithCustomContainerDebugAdapter() {\n var _this4 = this;\n\n var StubContainerDebugAdapter = _emberRuntime.Object.extend({\n canCatalogEntriesByType: function (type) {\n return true;\n },\n catalogEntriesByType: function (type) {\n return (0, _emberRuntime.A)(['post']);\n }\n });\n this.add('container-debug-adapter:main', StubContainerDebugAdapter);\n this.add('data-adapter:main', DataAdapter.extend({\n getRecords: function () {\n return (0, _emberRuntime.A)([1, 2, 3]);\n },\n columnsForType: function () {\n return [{ name: 'title', desc: 'Title' }];\n }\n }));\n this.add('model:post', PostClass);\n\n return this.visit('/').then(function () {\n var adapter = _this4.applicationInstance.lookup('data-adapter:main');\n\n function modelTypesAdded(types) {\n equal(types.length, 1);\n var postType = types[0];\n equal(postType.name, 'post', 'Correctly sets the name');\n equal(postType.count, 3, 'Correctly sets the record count');\n strictEqual(postType.object, PostClass, 'Correctly sets the object');\n deepEqual(postType.columns, [{ name: 'title', desc: 'Title' }], 'Correctly sets the columns');\n }\n\n adapter.watchModelTypes(modelTypesAdded);\n });\n };\n\n _class.prototype['@test Model Types Updated'] = function testModelTypesUpdated() {\n var _this5 = this;\n\n var records = (0, _emberRuntime.A)([1, 2, 3]);\n this.add('data-adapter:main', DataAdapter.extend({\n getRecords: function (klass, name) {\n return records;\n }\n }));\n this.add('model:post', PostClass);\n\n return this.visit('/').then(function () {\n adapter = _this5.applicationInstance.lookup('data-adapter:main');\n\n function modelTypesAdded(types) {\n (0, _emberMetal.run)(function () {\n records.pushObject(4);\n });\n }\n\n function modelTypesUpdated(types) {\n var postType = types[0];\n equal(postType.count, 4, 'Correctly updates the count');\n }\n\n adapter.watchModelTypes(modelTypesAdded, modelTypesUpdated);\n });\n };\n\n _class.prototype['@test Model Types Updated but Unchanged Do not Trigger Callbacks'] = function testModelTypesUpdatedButUnchangedDoNotTriggerCallbacks() {\n var _this6 = this;\n\n expect(0);\n var records = (0, _emberRuntime.A)([1, 2, 3]);\n this.add('data-adapter:main', DataAdapter.extend({\n getRecords: function (klass, name) {\n return records;\n }\n }));\n this.add('model:post', PostClass);\n\n return this.visit('/').then(function () {\n adapter = _this6.applicationInstance.lookup('data-adapter:main');\n\n function modelTypesAdded(types) {\n (0, _emberMetal.run)(function () {\n records.arrayContentDidChange(0, 0, 0);\n });\n }\n\n function modelTypesUpdated(types) {\n ok(false, \"modelTypesUpdated should not be triggered if the array didn't change\");\n }\n\n adapter.watchModelTypes(modelTypesAdded, modelTypesUpdated);\n });\n };\n\n _class.prototype['@test Records Added'] = function testRecordsAdded() {\n var _this7 = this;\n\n var countAdded = 1;\n var post = PostClass.create();\n var recordList = (0, _emberRuntime.A)([post]);\n\n this.add('data-adapter:main', DataAdapter.extend({\n getRecords: function (klass, name) {\n return recordList;\n },\n getRecordColor: function () {\n return 'blue';\n },\n getRecordColumnValues: function () {\n return { title: 'Post ' + countAdded };\n },\n getRecordKeywords: function () {\n return ['Post ' + countAdded];\n }\n }));\n this.add('model:post', PostClass);\n\n return this.visit('/').then(function () {\n adapter = _this7.applicationInstance.lookup('data-adapter:main');\n\n function recordsAdded(records) {\n var record = records[0];\n equal(record.color, 'blue', 'Sets the color correctly');\n deepEqual(record.columnValues, { title: 'Post ' + countAdded }, 'Sets the column values correctly');\n deepEqual(record.searchKeywords, ['Post ' + countAdded], 'Sets search keywords correctly');\n strictEqual(record.object, post, 'Sets the object to the record instance');\n }\n\n adapter.watchRecords('post', recordsAdded);\n countAdded++;\n post = PostClass.create();\n recordList.pushObject(post);\n });\n };\n\n _class.prototype['@test Observes and releases a record correctly'] = function testObservesAndReleasesARecordCorrectly() {\n var _this8 = this;\n\n var updatesCalled = 0;\n var post = PostClass.create({ title: 'Post' });\n var recordList = (0, _emberRuntime.A)([post]);\n\n this.add('data-adapter:main', DataAdapter.extend({\n getRecords: function () {\n return recordList;\n },\n observeRecord: function (record, recordUpdated) {\n var self = this;\n function callback() {\n recordUpdated(self.wrapRecord(record));\n }\n (0, _emberMetal.addObserver)(record, 'title', callback);\n return function () {\n (0, _emberMetal.removeObserver)(record, 'title', callback);\n };\n },\n getRecordColumnValues: function (record) {\n return { title: (0, _emberMetal.get)(record, 'title') };\n }\n }));\n this.add('model:post', PostClass);\n\n return this.visit('/').then(function () {\n adapter = _this8.applicationInstance.lookup('data-adapter:main');\n\n function recordsAdded() {\n (0, _emberMetal.set)(post, 'title', 'Post Modified');\n }\n\n function recordsUpdated(records) {\n updatesCalled++;\n equal(records[0].columnValues.title, 'Post Modified');\n }\n\n var release = adapter.watchRecords('post', recordsAdded, recordsUpdated);\n release();\n (0, _emberMetal.set)(post, 'title', 'New Title');\n equal(updatesCalled, 1, 'Release function removes observers');\n });\n };\n\n _class.prototype['@test _nameToClass does not error when not found'] = function test_nameToClassDoesNotErrorWhenNotFound() {\n var _this9 = this;\n\n this.add('data-adapter:main', DataAdapter);\n\n return this.visit('/').then(function () {\n adapter = _this9.applicationInstance.lookup('data-adapter:main');\n\n var klass = adapter._nameToClass('foo');\n\n equal(klass, undefined, 'returns undefined');\n });\n };\n\n return _class;\n }(_internalTestHelpers.ApplicationTestCase));\n});","QUnit.module('ESLint | ember-extension-support/tests/data_adapter_test.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-extension-support/tests/data_adapter_test.js should pass ESLint\\n\\n');\n});\n","enifed('ember-glimmer/tests/integration/application/actions-test', ['ember-babel', 'ember-runtime', 'ember-glimmer/tests/utils/test-case', 'ember-glimmer/tests/utils/helpers'], function (_emberBabel, _emberRuntime, _testCase, _helpers) {\n 'use strict';\n\n (0, _testCase.moduleFor)('Application test: actions', function (_ApplicationTest) {\n (0, _emberBabel.inherits)(_class, _ApplicationTest);\n\n function _class() {\n (0, _emberBabel.classCallCheck)(this, _class);\n return (0, _emberBabel.possibleConstructorReturn)(this, _ApplicationTest.apply(this, arguments));\n }\n\n _class.prototype['@test actions in top level template application template target application controller'] = function testActionsInTopLevelTemplateApplicationTemplateTargetApplicationController(assert) {\n var _this2 = this;\n\n assert.expect(1);\n\n this.add('controller:application', _emberRuntime.Controller.extend({\n actions: {\n handleIt: function (arg) {\n assert.ok(true, 'controller received action properly');\n }\n }\n }));\n\n this.addTemplate('application', '<button id=\"handle-it\" {{action \"handleIt\"}}>Click!</button>');\n\n return this.visit('/').then(function () {\n _this2.runTask(function () {\n return _this2.$('#handle-it').click();\n });\n });\n };\n\n _class.prototype['@test actions in nested outlet template target their controller'] = function testActionsInNestedOutletTemplateTargetTheirController(assert) {\n var _this3 = this;\n\n assert.expect(1);\n\n this.add('controller:application', _emberRuntime.Controller.extend({\n actions: {\n handleIt: function (arg) {\n assert.ok(false, 'application controller should not have received action!');\n }\n }\n }));\n\n this.add('controller:index', _emberRuntime.Controller.extend({\n actions: {\n handleIt: function (arg) {\n assert.ok(true, 'controller received action properly');\n }\n }\n }));\n\n this.addTemplate('index', '<button id=\"handle-it\" {{action \"handleIt\"}}>Click!</button>');\n\n return this.visit('/').then(function () {\n _this3.runTask(function () {\n return _this3.$('#handle-it').click();\n });\n });\n };\n\n return _class;\n }(_testCase.ApplicationTest));\n\n (0, _testCase.moduleFor)('Rendering test: non-interactive actions', function (_RenderingTest) {\n (0, _emberBabel.inherits)(_class2, _RenderingTest);\n\n function _class2() {\n (0, _emberBabel.classCallCheck)(this, _class2);\n return (0, _emberBabel.possibleConstructorReturn)(this, _RenderingTest.apply(this, arguments));\n }\n\n _class2.prototype.getBootOptions = function getBootOptions() {\n return { isInteractive: false };\n };\n\n _class2.prototype['@test doesn\\'t attatch actions'] = function (assert) {\n this.registerComponent('foo-bar', {\n ComponentClass: _helpers.Component.extend({\n actions: {\n fire: function () {\n assert.ok(false);\n }\n }\n }),\n template: '<button {{action \\'fire\\'}}>Fire!</button>'\n });\n\n this.render('{{foo-bar tagName=\"\"}}');\n\n this.assertHTML('<button>Fire!</button>');\n\n this.$('button').click();\n };\n\n return _class2;\n }(_testCase.RenderingTest));\n});","QUnit.module('ESLint | ember-glimmer/tests/integration/application/actions-test.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-glimmer/tests/integration/application/actions-test.js should pass ESLint\\n\\n');\n});\n","enifed('ember-glimmer/tests/integration/application/engine-test', ['ember-babel', 'ember-glimmer/tests/utils/test-case', 'ember-glimmer/tests/utils/abstract-test-case', 'ember-glimmer/tests/utils/helpers', 'ember-runtime', 'ember-glimmer', 'ember-application', 'ember-routing', 'ember-metal'], function (_emberBabel, _testCase, _abstractTestCase, _helpers, _emberRuntime, _emberGlimmer, _emberApplication, _emberRouting, _emberMetal) {\n 'use strict';\n\n var _templateObject = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n <h1>{{contextType}}</h1>\\n {{ambiguous-curlies}}\\n\\n {{outlet}}\\n '], ['\\n <h1>{{contextType}}</h1>\\n {{ambiguous-curlies}}\\n\\n {{outlet}}\\n ']),\n _templateObject2 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n <p>Component!</p>\\n '], ['\\n <p>Component!</p>\\n ']),\n _templateObject3 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n {{ambiguous-curlies}}\\n '], ['\\n {{ambiguous-curlies}}\\n ']),\n _templateObject4 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n <h1>Application</h1>\\n {{my-component ambiguous-curlies=\"Local Data!\"}}\\n {{outlet}}\\n '], ['\\n <h1>Application</h1>\\n {{my-component ambiguous-curlies=\"Local Data!\"}}\\n {{outlet}}\\n ']),\n _templateObject5 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n <h1>Engine</h1>\\n {{my-component}}\\n {{outlet}}\\n '], ['\\n <h1>Engine</h1>\\n {{my-component}}\\n {{outlet}}\\n ']),\n _templateObject6 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n <p>Component!</p>\\n '], ['\\n <p>Component!</p>\\n ']);\n\n (0, _testCase.moduleFor)('Application test: engine rendering', function (_ApplicationTest) {\n (0, _emberBabel.inherits)(_class, _ApplicationTest);\n\n function _class() {\n (0, _emberBabel.classCallCheck)(this, _class);\n return (0, _emberBabel.possibleConstructorReturn)(this, _ApplicationTest.apply(this, arguments));\n }\n\n _class.prototype.setupAppAndRoutableEngine = function setupAppAndRoutableEngine() {\n var hooks = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n var self = this;\n\n this.addTemplate('application', 'Application{{outlet}}');\n\n this.router.map(function () {\n this.mount('blog');\n });\n this.add('route-map:blog', function () {\n this.route('post', function () {\n this.route('comments');\n this.route('likes');\n });\n this.route('category', { path: 'category/:id' });\n this.route('author', { path: 'author/:id' });\n });\n this.add('route:application', _emberRouting.Route.extend({\n model: function () {\n hooks.push('application - application');\n }\n }));\n\n this.add('engine:blog', _emberApplication.Engine.extend({\n init: function () {\n this._super.apply(this, arguments);\n this.register('controller:application', _emberRuntime.Controller.extend({\n queryParams: ['lang'],\n lang: ''\n }));\n this.register('controller:category', _emberRuntime.Controller.extend({\n queryParams: ['type']\n }));\n this.register('controller:authorKtrl', _emberRuntime.Controller.extend({\n queryParams: ['official']\n }));\n this.register('template:application', (0, _helpers.compile)('Engine{{lang}}{{outlet}}'));\n this.register('route:application', _emberRouting.Route.extend({\n model: function () {\n hooks.push('engine - application');\n }\n }));\n this.register('route:author', _emberRouting.Route.extend({\n controllerName: 'authorKtrl'\n }));\n\n if (self._additionalEngineRegistrations) {\n self._additionalEngineRegistrations.call(this);\n }\n }\n }));\n };\n\n _class.prototype.setupAppAndRoutelessEngine = function setupAppAndRoutelessEngine(hooks) {\n this.setupRoutelessEngine(hooks);\n\n this.add('engine:chat-engine', _emberApplication.Engine.extend({\n init: function () {\n this._super.apply(this, arguments);\n this.register('template:application', (0, _helpers.compile)('Engine'));\n this.register('controller:application', _emberRuntime.Controller.extend({\n init: function () {\n this._super.apply(this, arguments);\n hooks.push('engine - application');\n }\n }));\n }\n }));\n };\n\n _class.prototype.setupAppAndRoutableEngineWithPartial = function setupAppAndRoutableEngineWithPartial(hooks) {\n this.addTemplate('application', 'Application{{outlet}}');\n\n this.router.map(function () {\n this.mount('blog');\n });\n this.add('route-map:blog', function () {});\n this.add('route:application', _emberRouting.Route.extend({\n model: function () {\n hooks.push('application - application');\n }\n }));\n\n this.add('engine:blog', _emberApplication.Engine.extend({\n init: function () {\n this._super.apply(this, arguments);\n this.register('template:foo', (0, _helpers.compile)('foo partial'));\n this.register('template:application', (0, _helpers.compile)('Engine{{outlet}} {{partial \"foo\"}}'));\n this.register('route:application', _emberRouting.Route.extend({\n model: function () {\n hooks.push('engine - application');\n }\n }));\n }\n }));\n };\n\n _class.prototype.setupRoutelessEngine = function setupRoutelessEngine(hooks) {\n this.addTemplate('application', 'Application{{mount \"chat-engine\"}}');\n this.add('route:application', _emberRouting.Route.extend({\n model: function () {\n hooks.push('application - application');\n }\n }));\n };\n\n _class.prototype.setupAppAndRoutlessEngineWithPartial = function setupAppAndRoutlessEngineWithPartial(hooks) {\n this.setupRoutelessEngine(hooks);\n\n this.add('engine:chat-engine', _emberApplication.Engine.extend({\n init: function () {\n this._super.apply(this, arguments);\n this.register('template:foo', (0, _helpers.compile)('foo partial'));\n this.register('template:application', (0, _helpers.compile)('Engine {{partial \"foo\"}}'));\n this.register('controller:application', _emberRuntime.Controller.extend({\n init: function () {\n this._super.apply(this, arguments);\n hooks.push('engine - application');\n }\n }));\n }\n }));\n };\n\n _class.prototype.additionalEngineRegistrations = function additionalEngineRegistrations(callback) {\n this._additionalEngineRegistrations = callback;\n };\n\n _class.prototype.setupEngineWithAttrs = function setupEngineWithAttrs(hooks) {\n this.addTemplate('application', 'Application{{mount \"chat-engine\"}}');\n\n this.add('engine:chat-engine', _emberApplication.Engine.extend({\n init: function () {\n this._super.apply(this, arguments);\n this.register('template:components/foo-bar', (0, _helpers.compile)('{{partial \"troll\"}}'));\n this.register('template:troll', (0, _helpers.compile)('{{attrs.wat}}'));\n this.register('controller:application', _emberRuntime.Controller.extend({\n contextType: 'Engine'\n }));\n this.register('template:application', (0, _helpers.compile)('Engine {{foo-bar wat=contextType}}'));\n }\n }));\n };\n\n _class.prototype.stringsEndWith = function stringsEndWith(str, suffix) {\n return str.indexOf(suffix, str.length - suffix.length) !== -1;\n };\n\n _class.prototype['@test attrs in an engine'] = function testAttrsInAnEngine() {\n var _this2 = this;\n\n this.setupEngineWithAttrs([]);\n\n return this.visit('/').then(function () {\n _this2.assertText('ApplicationEngine Engine');\n });\n };\n\n _class.prototype['@test sharing a template between engine and application has separate refinements'] = function testSharingATemplateBetweenEngineAndApplicationHasSeparateRefinements() {\n var _this3 = this;\n\n this.assert.expect(1);\n\n var sharedTemplate = (0, _helpers.compile)((0, _abstractTestCase.strip)(_templateObject));\n\n this.add('template:application', sharedTemplate);\n this.add('controller:application', _emberRuntime.Controller.extend({\n contextType: 'Application',\n 'ambiguous-curlies': 'Controller Data!'\n }));\n\n this.router.map(function () {\n this.mount('blog');\n });\n this.add('route-map:blog', function () {});\n\n this.add('engine:blog', _emberApplication.Engine.extend({\n init: function () {\n this._super.apply(this, arguments);\n\n this.register('controller:application', _emberRuntime.Controller.extend({\n contextType: 'Engine'\n }));\n this.register('template:application', sharedTemplate);\n this.register('template:components/ambiguous-curlies', (0, _helpers.compile)((0, _abstractTestCase.strip)(_templateObject2)));\n }\n }));\n\n return this.visit('/blog').then(function () {\n _this3.assertText('ApplicationController Data!EngineComponent!');\n });\n };\n\n _class.prototype['@test sharing a layout between engine and application has separate refinements'] = function testSharingALayoutBetweenEngineAndApplicationHasSeparateRefinements() {\n var _this4 = this;\n\n this.assert.expect(1);\n\n var sharedLayout = (0, _helpers.compile)((0, _abstractTestCase.strip)(_templateObject3));\n\n var sharedComponent = _emberGlimmer.Component.extend({\n layout: sharedLayout\n });\n\n this.addTemplate('application', (0, _abstractTestCase.strip)(_templateObject4));\n\n this.add('component:my-component', sharedComponent);\n\n this.router.map(function () {\n this.mount('blog');\n });\n this.add('route-map:blog', function () {});\n\n this.add('engine:blog', _emberApplication.Engine.extend({\n init: function () {\n this._super.apply(this, arguments);\n this.register('template:application', (0, _helpers.compile)((0, _abstractTestCase.strip)(_templateObject5)));\n this.register('component:my-component', sharedComponent);\n this.register('template:components/ambiguous-curlies', (0, _helpers.compile)((0, _abstractTestCase.strip)(_templateObject6)));\n }\n }));\n\n return this.visit('/blog').then(function () {\n _this4.assertText('ApplicationLocal Data!EngineComponent!');\n });\n };\n\n _class.prototype['@test visit() with `shouldRender: true` returns a promise that resolves when application and engine templates have rendered'] = function testVisitWithShouldRenderTrueReturnsAPromiseThatResolvesWhenApplicationAndEngineTemplatesHaveRendered(assert) {\n var _this5 = this;\n\n assert.expect(2);\n\n var hooks = [];\n\n this.setupAppAndRoutableEngine(hooks);\n\n return this.visit('/blog', { shouldRender: true }).then(function () {\n _this5.assertText('ApplicationEngine');\n\n _this5.assert.deepEqual(hooks, ['application - application', 'engine - application'], 'the expected model hooks were fired');\n });\n };\n\n _class.prototype['@test visit() with `shouldRender: false` returns a promise that resolves without rendering'] = function testVisitWithShouldRenderFalseReturnsAPromiseThatResolvesWithoutRendering(assert) {\n var _this6 = this;\n\n assert.expect(2);\n\n var hooks = [];\n\n this.setupAppAndRoutableEngine(hooks);\n\n return this.visit('/blog', { shouldRender: false }).then(function () {\n _this6.assertText('');\n\n _this6.assert.deepEqual(hooks, ['application - application', 'engine - application'], 'the expected model hooks were fired');\n });\n };\n\n _class.prototype['@test visit() with `shouldRender: true` returns a promise that resolves when application and routeless engine templates have rendered'] = function testVisitWithShouldRenderTrueReturnsAPromiseThatResolvesWhenApplicationAndRoutelessEngineTemplatesHaveRendered(assert) {\n var _this7 = this;\n\n assert.expect(2);\n\n var hooks = [];\n\n this.setupAppAndRoutelessEngine(hooks);\n\n return this.visit('/', { shouldRender: true }).then(function () {\n _this7.assertText('ApplicationEngine');\n\n _this7.assert.deepEqual(hooks, ['application - application', 'engine - application'], 'the expected hooks were fired');\n });\n };\n\n _class.prototype['@test visit() with partials in routable engine'] = function testVisitWithPartialsInRoutableEngine(assert) {\n var _this8 = this;\n\n assert.expect(2);\n\n var hooks = [];\n\n this.setupAppAndRoutableEngineWithPartial(hooks);\n\n return this.visit('/blog', { shouldRender: true }).then(function () {\n _this8.assertText('ApplicationEngine foo partial');\n\n _this8.assert.deepEqual(hooks, ['application - application', 'engine - application'], 'the expected hooks were fired');\n });\n };\n\n _class.prototype['@test visit() with partials in non-routable engine'] = function testVisitWithPartialsInNonRoutableEngine(assert) {\n var _this9 = this;\n\n assert.expect(2);\n\n var hooks = [];\n\n this.setupAppAndRoutlessEngineWithPartial(hooks);\n\n return this.visit('/', { shouldRender: true }).then(function () {\n _this9.assertText('ApplicationEngine foo partial');\n\n _this9.assert.deepEqual(hooks, ['application - application', 'engine - application'], 'the expected hooks were fired');\n });\n };\n\n _class.prototype['@test deactivate should be called on Engine Routes before destruction'] = function testDeactivateShouldBeCalledOnEngineRoutesBeforeDestruction(assert) {\n var _this10 = this;\n\n assert.expect(3);\n\n this.setupAppAndRoutableEngine();\n\n this.add('engine:blog', _emberApplication.Engine.extend({\n init: function () {\n this._super.apply(this, arguments);\n this.register('template:application', (0, _helpers.compile)('Engine{{outlet}}'));\n this.register('route:application', _emberRouting.Route.extend({\n deactivate: function () {\n assert.notOk(this.isDestroyed, 'Route is not destroyed');\n assert.notOk(this.isDestroying, 'Route is not being destroyed');\n }\n }));\n }\n }));\n\n return this.visit('/blog').then(function () {\n _this10.assertText('ApplicationEngine');\n });\n };\n\n _class.prototype['@test engine should lookup and use correct controller'] = function testEngineShouldLookupAndUseCorrectController(assert) {\n var _this11 = this;\n\n this.setupAppAndRoutableEngine();\n\n return this.visit('/blog?lang=English').then(function () {\n _this11.assertText('ApplicationEngineEnglish');\n });\n };\n\n _class.prototype['@test error substate route works for the application route of an Engine'] = function testErrorSubstateRouteWorksForTheApplicationRouteOfAnEngine(assert) {\n var _this12 = this;\n\n assert.expect(2);\n\n var errorEntered = _emberRuntime.RSVP.defer();\n\n this.setupAppAndRoutableEngine();\n this.additionalEngineRegistrations(function () {\n this.register('route:application_error', _emberRouting.Route.extend({\n activate: function () {\n _emberMetal.run.next(errorEntered.resolve);\n }\n }));\n this.register('template:application_error', (0, _helpers.compile)('Error! {{model.message}}'));\n this.register('route:post', _emberRouting.Route.extend({\n model: function () {\n return _emberRuntime.RSVP.reject(new Error('Oh, noes!'));\n }\n }));\n });\n\n return this.visit('/').then(function () {\n _this12.assertText('Application');\n return _this12.transitionTo('blog.post');\n }).then(function () {\n return errorEntered.promise;\n }).then(function () {\n _this12.assertText('ApplicationError! Oh, noes!');\n });\n };\n\n _class.prototype['@test error route works for the application route of an Engine'] = function testErrorRouteWorksForTheApplicationRouteOfAnEngine(assert) {\n var _this13 = this;\n\n assert.expect(2);\n\n var errorEntered = _emberRuntime.RSVP.defer();\n\n this.setupAppAndRoutableEngine();\n this.additionalEngineRegistrations(function () {\n this.register('route:error', _emberRouting.Route.extend({\n activate: function () {\n _emberMetal.run.next(errorEntered.resolve);\n }\n }));\n this.register('template:error', (0, _helpers.compile)('Error! {{model.message}}'));\n this.register('route:post', _emberRouting.Route.extend({\n model: function () {\n return _emberRuntime.RSVP.reject(new Error('Oh, noes!'));\n }\n }));\n });\n\n return this.visit('/').then(function () {\n _this13.assertText('Application');\n return _this13.transitionTo('blog.post');\n }).then(function () {\n return errorEntered.promise;\n }).then(function () {\n _this13.assertText('ApplicationEngineError! Oh, noes!');\n });\n };\n\n _class.prototype['@test error substate route works for a child route of an Engine'] = function testErrorSubstateRouteWorksForAChildRouteOfAnEngine(assert) {\n var _this14 = this;\n\n assert.expect(2);\n\n var errorEntered = _emberRuntime.RSVP.defer();\n\n this.setupAppAndRoutableEngine();\n this.additionalEngineRegistrations(function () {\n this.register('route:post_error', _emberRouting.Route.extend({\n activate: function () {\n _emberMetal.run.next(errorEntered.resolve);\n }\n }));\n this.register('template:post_error', (0, _helpers.compile)('Error! {{model.message}}'));\n this.register('route:post', _emberRouting.Route.extend({\n model: function () {\n return _emberRuntime.RSVP.reject(new Error('Oh, noes!'));\n }\n }));\n });\n\n return this.visit('/').then(function () {\n _this14.assertText('Application');\n return _this14.transitionTo('blog.post');\n }).then(function () {\n return errorEntered.promise;\n }).then(function () {\n _this14.assertText('ApplicationEngineError! Oh, noes!');\n });\n };\n\n _class.prototype['@test error route works for a child route of an Engine'] = function testErrorRouteWorksForAChildRouteOfAnEngine(assert) {\n var _this15 = this;\n\n assert.expect(2);\n\n var errorEntered = _emberRuntime.RSVP.defer();\n\n this.setupAppAndRoutableEngine();\n this.additionalEngineRegistrations(function () {\n this.register('route:post.error', _emberRouting.Route.extend({\n activate: function () {\n _emberMetal.run.next(errorEntered.resolve);\n }\n }));\n this.register('template:post.error', (0, _helpers.compile)('Error! {{model.message}}'));\n this.register('route:post.comments', _emberRouting.Route.extend({\n model: function () {\n return _emberRuntime.RSVP.reject(new Error('Oh, noes!'));\n }\n }));\n });\n\n return this.visit('/').then(function () {\n _this15.assertText('Application');\n return _this15.transitionTo('blog.post.comments');\n }).then(function () {\n return errorEntered.promise;\n }).then(function () {\n _this15.assertText('ApplicationEngineError! Oh, noes!');\n });\n };\n\n _class.prototype['@test loading substate route works for the application route of an Engine'] = function testLoadingSubstateRouteWorksForTheApplicationRouteOfAnEngine(assert) {\n var _this16 = this;\n\n assert.expect(3);\n var done = assert.async();\n\n var loadingEntered = _emberRuntime.RSVP.defer();\n var resolveLoading = _emberRuntime.RSVP.defer();\n\n this.setupAppAndRoutableEngine();\n this.additionalEngineRegistrations(function () {\n this.register('route:application_loading', _emberRouting.Route.extend({\n activate: function () {\n _emberMetal.run.next(loadingEntered.resolve);\n }\n }));\n this.register('template:application_loading', (0, _helpers.compile)('Loading'));\n this.register('template:post', (0, _helpers.compile)('Post'));\n this.register('route:post', _emberRouting.Route.extend({\n model: function () {\n return resolveLoading.promise;\n }\n }));\n });\n\n return this.visit('/').then(function () {\n _this16.assertText('Application');\n var transition = _this16.transitionTo('blog.post');\n\n loadingEntered.promise.then(function () {\n _this16.assertText('ApplicationLoading');\n resolveLoading.resolve();\n\n _this16.runTaskNext(function () {\n _this16.assertText('ApplicationEnginePost');\n done();\n });\n });\n\n return transition;\n });\n };\n\n _class.prototype['@test loading route works for the application route of an Engine'] = function testLoadingRouteWorksForTheApplicationRouteOfAnEngine(assert) {\n var _this17 = this;\n\n assert.expect(3);\n var done = assert.async();\n\n var loadingEntered = _emberRuntime.RSVP.defer();\n var resolveLoading = _emberRuntime.RSVP.defer();\n\n this.setupAppAndRoutableEngine();\n this.additionalEngineRegistrations(function () {\n this.register('route:loading', _emberRouting.Route.extend({\n activate: function () {\n _emberMetal.run.next(loadingEntered.resolve);\n }\n }));\n this.register('template:loading', (0, _helpers.compile)('Loading'));\n this.register('template:post', (0, _helpers.compile)('Post'));\n this.register('route:post', _emberRouting.Route.extend({\n model: function () {\n return resolveLoading.promise;\n }\n }));\n });\n\n return this.visit('/').then(function () {\n _this17.assertText('Application');\n var transition = _this17.transitionTo('blog.post');\n\n loadingEntered.promise.then(function () {\n _this17.assertText('ApplicationEngineLoading');\n resolveLoading.resolve();\n\n _this17.runTaskNext(function () {\n _this17.assertText('ApplicationEnginePost');\n done();\n });\n });\n\n return transition;\n });\n };\n\n _class.prototype['@test loading substate route works for a child route of an Engine'] = function testLoadingSubstateRouteWorksForAChildRouteOfAnEngine(assert) {\n var _this18 = this;\n\n assert.expect(3);\n\n var resolveLoading = void 0;\n\n this.setupAppAndRoutableEngine();\n this.additionalEngineRegistrations(function () {\n this.register('template:post', (0, _helpers.compile)('{{outlet}}'));\n this.register('template:post.comments', (0, _helpers.compile)('Comments'));\n this.register('template:post.likes_loading', (0, _helpers.compile)('Loading'));\n this.register('template:post.likes', (0, _helpers.compile)('Likes'));\n this.register('route:post.likes', _emberRouting.Route.extend({\n model: function () {\n return new _emberRuntime.RSVP.Promise(function (resolve) {\n resolveLoading = resolve;\n });\n }\n }));\n });\n\n return this.visit('/blog/post/comments').then(function () {\n _this18.assertText('ApplicationEngineComments');\n var transition = _this18.transitionTo('blog.post.likes');\n\n _this18.runTaskNext(function () {\n _this18.assertText('ApplicationEngineLoading');\n resolveLoading();\n });\n\n return transition.then(function () {\n _this18.runTaskNext(function () {\n return _this18.assertText('ApplicationEngineLikes');\n });\n });\n });\n };\n\n _class.prototype['@test loading route works for a child route of an Engine'] = function testLoadingRouteWorksForAChildRouteOfAnEngine(assert) {\n var _this19 = this;\n\n assert.expect(3);\n var done = assert.async();\n\n var loadingEntered = _emberRuntime.RSVP.defer();\n var resolveLoading = _emberRuntime.RSVP.defer();\n\n this.setupAppAndRoutableEngine();\n this.additionalEngineRegistrations(function () {\n this.register('template:post', (0, _helpers.compile)('{{outlet}}'));\n this.register('template:post.comments', (0, _helpers.compile)('Comments'));\n this.register('route:post.loading', _emberRouting.Route.extend({\n activate: function () {\n _emberMetal.run.next(loadingEntered.resolve);\n }\n }));\n this.register('template:post.loading', (0, _helpers.compile)('Loading'));\n this.register('template:post.likes', (0, _helpers.compile)('Likes'));\n this.register('route:post.likes', _emberRouting.Route.extend({\n model: function () {\n return resolveLoading.promise;\n }\n }));\n });\n\n return this.visit('/blog/post/comments').then(function () {\n _this19.assertText('ApplicationEngineComments');\n var transition = _this19.transitionTo('blog.post.likes');\n\n loadingEntered.promise.then(function () {\n _this19.assertText('ApplicationEngineLoading');\n resolveLoading.resolve();\n\n _this19.runTaskNext(function () {\n _this19.assertText('ApplicationEngineLikes');\n done();\n });\n });\n\n return transition;\n });\n };\n\n _class.prototype['@test query params don\\'t have stickiness by default between model'] = function testQueryParamsDonTHaveStickinessByDefaultBetweenModel(assert) {\n var _this20 = this;\n\n assert.expect(1);\n var tmpl = '{{#link-to \"blog.category\" 1337}}Category 1337{{/link-to}}';\n this.setupAppAndRoutableEngine();\n this.additionalEngineRegistrations(function () {\n this.register('template:category', (0, _helpers.compile)(tmpl));\n });\n\n return this.visit('/blog/category/1?type=news').then(function () {\n var suffix = '/blog/category/1337';\n var href = _this20.element.querySelector('a').href;\n\n // check if link ends with the suffix\n assert.ok(_this20.stringsEndWith(href, suffix));\n });\n };\n\n _class.prototype['@test query params in customized controllerName have stickiness by default between model'] = function testQueryParamsInCustomizedControllerNameHaveStickinessByDefaultBetweenModel(assert) {\n var _this21 = this;\n\n assert.expect(2);\n var tmpl = '{{#link-to \"blog.author\" 1337 class=\"author-1337\"}}Author 1337{{/link-to}}{{#link-to \"blog.author\" 1 class=\"author-1\"}}Author 1{{/link-to}}';\n this.setupAppAndRoutableEngine();\n this.additionalEngineRegistrations(function () {\n this.register('template:author', (0, _helpers.compile)(tmpl));\n });\n\n return this.visit('/blog/author/1?official=true').then(function () {\n var suffix1 = '/blog/author/1?official=true';\n var href1 = _this21.element.querySelector('.author-1').href;\n var suffix1337 = '/blog/author/1337';\n var href1337 = _this21.element.querySelector('.author-1337').href;\n\n // check if link ends with the suffix\n assert.ok(_this21.stringsEndWith(href1, suffix1));\n assert.ok(_this21.stringsEndWith(href1337, suffix1337));\n });\n };\n\n _class.prototype['@test visit() routable engine which errors on init'] = function testVisitRoutableEngineWhichErrorsOnInit(assert) {\n var _this22 = this;\n\n assert.expect(1);\n\n var hooks = [];\n\n this.additionalEngineRegistrations(function () {\n this.register('route:application', _emberRouting.Route.extend({\n init: function () {\n throw new Error('Whoops! Something went wrong...');\n }\n }));\n });\n\n this.setupAppAndRoutableEngine(hooks);\n\n return this.visit('/', { shouldRender: true }).then(function () {\n return _this22.visit('/blog');\n }).catch(function (error) {\n assert.equal(error.message, 'Whoops! Something went wrong...');\n });\n };\n\n (0, _emberBabel.createClass)(_class, [{\n key: 'routerOptions',\n get: function () {\n var assert = this.assert;\n\n return {\n location: 'none',\n\n _getHandlerFunction: function () {\n var _this23 = this;\n\n var syncHandler = this._super.apply(this, arguments);\n this._enginePromises = Object.create(null);\n this._resolvedEngines = Object.create(null);\n\n return function (name) {\n var engineInfo = _this23._engineInfoByRoute[name];\n if (!engineInfo) {\n return syncHandler(name);\n }\n\n var engineName = engineInfo.name;\n if (_this23._resolvedEngines[engineName]) {\n return syncHandler(name);\n }\n\n var enginePromise = _this23._enginePromises[engineName];\n\n if (!enginePromise) {\n enginePromise = new _emberRuntime.RSVP.Promise(function (resolve) {\n setTimeout(function () {\n _this23._resolvedEngines[engineName] = true;\n\n resolve();\n }, 1);\n });\n _this23._enginePromises[engineName] = enginePromise;\n }\n\n return enginePromise.then(function () {\n return syncHandler(name);\n });\n };\n }\n };\n }\n }]);\n return _class;\n }(_testCase.ApplicationTest));\n});","QUnit.module('ESLint | ember-glimmer/tests/integration/application/engine-test.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-glimmer/tests/integration/application/engine-test.js should pass ESLint\\n\\n');\n});\n","enifed('ember-glimmer/tests/integration/application/rendering-test', ['ember-babel', 'ember-runtime', 'ember-glimmer/tests/utils/test-case', 'ember-glimmer/tests/utils/abstract-test-case', 'ember-routing', 'ember-glimmer', 'ember/features'], function (_emberBabel, _emberRuntime, _testCase, _abstractTestCase, _emberRouting, _emberGlimmer, _features) {\n 'use strict';\n\n var _templateObject = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n <ul>\\n {{#each model as |item|}}\\n <li>{{item}}</li>\\n {{/each}}\\n </ul>\\n '], ['\\n <ul>\\n {{#each model as |item|}}\\n <li>{{item}}</li>\\n {{/each}}\\n </ul>\\n ']),\n _templateObject2 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n <ul>\\n <li>red</li>\\n <li>yellow</li>\\n <li>blue</li>\\n </ul>\\n '], ['\\n <ul>\\n <li>red</li>\\n <li>yellow</li>\\n <li>blue</li>\\n </ul>\\n ']),\n _templateObject3 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n <nav>{{outlet \"nav\"}}</nav>\\n <main>{{outlet}}</main>\\n '], ['\\n <nav>{{outlet \"nav\"}}</nav>\\n <main>{{outlet}}</main>\\n ']),\n _templateObject4 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n <a href=\"https://emberjs.com/\">Ember</a>\\n '], ['\\n <a href=\"https://emberjs.com/\">Ember</a>\\n ']),\n _templateObject5 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n <nav>\\n <a href=\"https://emberjs.com/\">Ember</a>\\n </nav>\\n <main>\\n <ul>\\n <li>red</li>\\n <li>yellow</li>\\n <li>blue</li>\\n </ul>\\n </main>\\n '], ['\\n <nav>\\n <a href=\"https://emberjs.com/\">Ember</a>\\n </nav>\\n <main>\\n <ul>\\n <li>red</li>\\n <li>yellow</li>\\n <li>blue</li>\\n </ul>\\n </main>\\n ']);\n\n (0, _testCase.moduleFor)('Application test: rendering', function (_ApplicationTest) {\n (0, _emberBabel.inherits)(_class, _ApplicationTest);\n\n function _class() {\n (0, _emberBabel.classCallCheck)(this, _class);\n return (0, _emberBabel.possibleConstructorReturn)(this, _ApplicationTest.apply(this, arguments));\n }\n\n _class.prototype['@test it can render the application template'] = function testItCanRenderTheApplicationTemplate(assert) {\n var _this2 = this;\n\n this.addTemplate('application', 'Hello world!');\n\n return this.visit('/').then(function () {\n _this2.assertText('Hello world!');\n });\n };\n\n _class.prototype['@test it can access the model provided by the route'] = function testItCanAccessTheModelProvidedByTheRoute(assert) {\n var _this3 = this;\n\n this.add('route:application', _emberRouting.Route.extend({\n model: function () {\n return ['red', 'yellow', 'blue'];\n }\n }));\n\n this.addTemplate('application', (0, _abstractTestCase.strip)(_templateObject));\n\n return this.visit('/').then(function () {\n _this3.assertComponentElement(_this3.firstChild, {\n content: (0, _abstractTestCase.strip)(_templateObject2)\n });\n });\n };\n\n _class.prototype['@test it can render a nested route'] = function testItCanRenderANestedRoute(assert) {\n var _this4 = this;\n\n this.router.map(function () {\n this.route('lists', function () {\n this.route('colors', function () {\n this.route('favorite');\n });\n });\n });\n\n // The \"favorite\" route will inherit the model\n this.add('route:lists.colors', _emberRouting.Route.extend({\n model: function () {\n return ['red', 'yellow', 'blue'];\n }\n }));\n\n this.addTemplate('lists.colors.favorite', (0, _abstractTestCase.strip)(_templateObject));\n\n return this.visit('/lists/colors/favorite').then(function () {\n _this4.assertComponentElement(_this4.firstChild, {\n content: (0, _abstractTestCase.strip)(_templateObject2)\n });\n });\n };\n\n _class.prototype['@test it can render into named outlets'] = function testItCanRenderIntoNamedOutlets(assert) {\n var _this5 = this;\n\n this.router.map(function () {\n this.route('colors');\n });\n\n this.addTemplate('application', (0, _abstractTestCase.strip)(_templateObject3));\n\n this.addTemplate('nav', (0, _abstractTestCase.strip)(_templateObject4));\n\n this.add('route:application', _emberRouting.Route.extend({\n renderTemplate: function () {\n this.render();\n this.render('nav', {\n into: 'application',\n outlet: 'nav'\n });\n }\n }));\n\n this.add('route:colors', _emberRouting.Route.extend({\n model: function () {\n return ['red', 'yellow', 'blue'];\n }\n }));\n\n this.addTemplate('colors', (0, _abstractTestCase.strip)(_templateObject));\n\n return this.visit('/colors').then(function () {\n _this5.assertComponentElement(_this5.firstChild, {\n content: (0, _abstractTestCase.strip)(_templateObject5)\n });\n });\n };\n\n _class.prototype['@test it can render into named outlets'] = function testItCanRenderIntoNamedOutlets(assert) {\n var _this6 = this;\n\n this.router.map(function () {\n this.route('colors');\n });\n\n this.addTemplate('application', (0, _abstractTestCase.strip)(_templateObject3));\n\n this.addTemplate('nav', (0, _abstractTestCase.strip)(_templateObject4));\n\n this.add('route:application', _emberRouting.Route.extend({\n renderTemplate: function () {\n this.render();\n this.render('nav', {\n into: 'application',\n outlet: 'nav'\n });\n }\n }));\n\n this.add('route:colors', _emberRouting.Route.extend({\n model: function () {\n return ['red', 'yellow', 'blue'];\n }\n }));\n\n this.addTemplate('colors', (0, _abstractTestCase.strip)(_templateObject));\n\n return this.visit('/colors').then(function () {\n _this6.assertComponentElement(_this6.firstChild, {\n content: (0, _abstractTestCase.strip)(_templateObject5)\n });\n });\n };\n\n _class.prototype['@test it should update the outlets when switching between routes'] = function testItShouldUpdateTheOutletsWhenSwitchingBetweenRoutes(assert) {\n var _this7 = this;\n\n this.router.map(function () {\n this.route('a');\n this.route('b', function () {\n this.route('c');\n this.route('d');\n });\n });\n\n this.addTemplate('a', 'A{{outlet}}');\n this.addTemplate('b', 'B{{outlet}}');\n this.addTemplate('b.c', 'C');\n this.addTemplate('b.d', 'D');\n\n return this.visit('/b/c').then(function () {\n // this.assertComponentElement(this.firstChild, { content: 'BC' });\n _this7.assertText('BC');\n return _this7.visit('/a');\n }).then(function () {\n // this.assertComponentElement(this.firstChild, { content: 'A' });\n _this7.assertText('A');\n return _this7.visit('/b/d');\n }).then(function () {\n _this7.assertText('BD');\n // this.assertComponentElement(this.firstChild, { content: 'BD' });\n });\n };\n\n _class.prototype['@test it should produce a stable DOM when the model changes'] = function testItShouldProduceAStableDOMWhenTheModelChanges(assert) {\n var _this8 = this;\n\n this.router.map(function () {\n this.route('color', { path: '/colors/:color' });\n });\n\n this.add('route:color', _emberRouting.Route.extend({\n model: function (params) {\n return params.color;\n }\n }));\n\n this.addTemplate('color', 'color: {{model}}');\n\n return this.visit('/colors/red').then(function () {\n _this8.assertComponentElement(_this8.firstChild, { content: 'color: red' });\n _this8.takeSnapshot();\n return _this8.visit('/colors/green');\n }).then(function () {\n _this8.assertComponentElement(_this8.firstChild, { content: 'color: green' });\n _this8.assertInvariants();\n });\n };\n\n _class.prototype['@test it should have the right controller in scope for the route template'] = function testItShouldHaveTheRightControllerInScopeForTheRouteTemplate() {\n var _this9 = this;\n\n this.router.map(function () {\n this.route('a');\n this.route('b');\n });\n\n this.add('controller:a', _emberRuntime.Controller.extend({\n value: 'a'\n }));\n\n this.add('controller:b', _emberRuntime.Controller.extend({\n value: 'b'\n }));\n\n this.addTemplate('a', '{{value}}');\n this.addTemplate('b', '{{value}}');\n\n return this.visit('/a').then(function () {\n _this9.assertText('a');\n return _this9.visit('/b');\n }).then(function () {\n return _this9.assertText('b');\n });\n };\n\n _class.prototype['@test it should update correctly when the controller changes'] = function testItShouldUpdateCorrectlyWhenTheControllerChanges(assert) {\n var _this10 = this;\n\n this.router.map(function () {\n this.route('color', { path: '/colors/:color' });\n });\n\n this.add('route:color', _emberRouting.Route.extend({\n model: function (params) {\n return { color: params.color };\n },\n renderTemplate: function (controller, model) {\n this.render({ controller: model.color, model: model });\n }\n }));\n\n this.add('controller:red', _emberRuntime.Controller.extend({\n color: 'red'\n }));\n\n this.add('controller:green', _emberRuntime.Controller.extend({\n color: 'green'\n }));\n\n this.addTemplate('color', 'model color: {{model.color}}, controller color: {{color}}');\n\n return this.visit('/colors/red').then(function () {\n _this10.assertComponentElement(_this10.firstChild, { content: 'model color: red, controller color: red' });\n _this10.takeSnapshot();\n return _this10.visit('/colors/green');\n }).then(function () {\n _this10.assertComponentElement(_this10.firstChild, { content: 'model color: green, controller color: green' });\n _this10.assertInvariants();\n });\n };\n\n _class.prototype['@test it should produce a stable DOM when two routes render the same template'] = function testItShouldProduceAStableDOMWhenTwoRoutesRenderTheSameTemplate(assert) {\n var _this11 = this;\n\n this.router.map(function () {\n this.route('a');\n this.route('b');\n });\n\n this.add('route:a', _emberRouting.Route.extend({\n model: function () {\n return 'A';\n },\n renderTemplate: function (controller, model) {\n this.render('common', { controller: 'common', model: model });\n }\n }));\n\n this.add('route:b', _emberRouting.Route.extend({\n model: function () {\n return 'B';\n },\n renderTemplate: function (controller, model) {\n this.render('common', { controller: 'common', model: model });\n }\n }));\n\n this.add('controller:common', _emberRuntime.Controller.extend({\n prefix: 'common'\n }));\n\n this.addTemplate('common', '{{prefix}} {{model}}');\n\n return this.visit('/a').then(function () {\n _this11.assertComponentElement(_this11.firstChild, { content: 'common A' });\n _this11.takeSnapshot();\n return _this11.visit('/b');\n }).then(function () {\n _this11.assertComponentElement(_this11.firstChild, { content: 'common B' });\n _this11.assertInvariants();\n });\n };\n\n _class.prototype['@test a child outlet is always a fragment'] = function testAChildOutletIsAlwaysAFragment() {\n var _this12 = this;\n\n this.addTemplate('application', '{{outlet}}');\n this.addTemplate('index', '{{#if true}}1{{/if}}<div>2</div>');\n return this.visit('/').then(function () {\n _this12.assertComponentElement(_this12.firstChild, { content: '1<div>2</div>' });\n });\n };\n\n _class.prototype['@test it allows a transition during route activate'] = function testItAllowsATransitionDuringRouteActivate(assert) {\n var _this13 = this;\n\n this.router.map(function () {\n this.route('a');\n });\n\n this.add('route:index', _emberRouting.Route.extend({\n activate: function () {\n this.transitionTo('a');\n }\n }));\n\n this.addTemplate('a', 'Hello from A!');\n\n return this.visit('/').then(function () {\n _this13.assertComponentElement(_this13.firstChild, {\n content: 'Hello from A!'\n });\n });\n };\n\n _class.prototype['@test it emits a useful backtracking re-render assertion message'] = function testItEmitsAUsefulBacktrackingReRenderAssertionMessage(assert) {\n var _this14 = this;\n\n this.router.map(function () {\n this.route('routeWithError');\n });\n\n this.add('route:routeWithError', _emberRouting.Route.extend({\n model: function () {\n return { name: 'Alex' };\n }\n }));\n\n this.addTemplate('routeWithError', 'Hi {{model.name}} {{x-foo person=model}}');\n\n this.addComponent('x-foo', {\n ComponentClass: _emberGlimmer.Component.extend({\n init: function () {\n this._super.apply(this, arguments);\n this.set('person.name', 'Ben');\n }\n }),\n template: 'Hi {{person.name}} from component'\n });\n\n var expectedBacktrackingMessage = /modified \"model\\.name\" twice on \\[object Object\\] in a single render\\. It was rendered in \"template:routeWithError\" and modified in \"component:x-foo\"/;\n\n if (_features.EMBER_GLIMMER_ALLOW_BACKTRACKING_RERENDER) {\n expectDeprecation(expectedBacktrackingMessage);\n return this.visit('/routeWithError');\n } else {\n return this.visit('/').then(function () {\n expectAssertion(function () {\n _this14.visit('/routeWithError');\n }, expectedBacktrackingMessage);\n });\n }\n };\n\n return _class;\n }(_testCase.ApplicationTest));\n});","QUnit.module('ESLint | ember-glimmer/tests/integration/application/rendering-test.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-glimmer/tests/integration/application/rendering-test.js should pass ESLint\\n\\n');\n});\n","enifed('ember-glimmer/tests/integration/binding_integration_test', ['ember-babel', 'ember-glimmer/tests/utils/test-case', 'ember-glimmer/tests/utils/helpers', 'ember-metal'], function (_emberBabel, _testCase, _helpers, _emberMetal) {\n 'use strict';\n\n (0, _testCase.moduleFor)('Binding integration tests', function (_RenderingTest) {\n (0, _emberBabel.inherits)(_class, _RenderingTest);\n\n function _class() {\n (0, _emberBabel.classCallCheck)(this, _class);\n return (0, _emberBabel.possibleConstructorReturn)(this, _RenderingTest.apply(this, arguments));\n }\n\n _class.prototype['@test should accept bindings as a string or an Ember.binding'] = function testShouldAcceptBindingsAsAStringOrAnEmberBinding() {\n var _this2 = this;\n\n var FooBarComponent = _helpers.Component.extend({\n twoWayTestBinding: _emberMetal.Binding.from('direction'),\n stringTestBinding: 'direction',\n twoWayObjectTestBinding: _emberMetal.Binding.from('displacement.distance'),\n stringObjectTestBinding: 'displacement.distance'\n });\n\n this.registerComponent('foo-bar', {\n ComponentClass: FooBarComponent,\n template: 'two way: {{twoWayTest}}, string: {{stringTest}}, object: {{twoWayObjectTest}}, string object: {{stringObjectTest}}'\n });\n\n expectDeprecation(function () {\n _this2.render('{{foo-bar direction=direction displacement=displacement}}', {\n direction: 'down',\n displacement: {\n distance: 10\n }\n });\n }, /`Ember\\.Binding` is deprecated/);\n\n this.assertText('two way: down, string: down, object: 10, string object: 10');\n\n this.assertStableRerender();\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this2.context, 'direction', 'up');\n });\n\n this.assertText('two way: up, string: up, object: 10, string object: 10');\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this2.context, 'displacement.distance', 20);\n });\n\n this.assertText('two way: up, string: up, object: 20, string object: 20');\n\n this.runTask(function () {\n (0, _emberMetal.set)(_this2.context, 'direction', 'right');\n (0, _emberMetal.set)(_this2.context, 'displacement.distance', 30);\n });\n\n this.assertText('two way: right, string: right, object: 30, string object: 30');\n\n this.runTask(function () {\n (0, _emberMetal.set)(_this2.context, 'direction', 'down');\n (0, _emberMetal.set)(_this2.context, 'displacement', { distance: 10 });\n });\n\n this.assertText('two way: down, string: down, object: 10, string object: 10');\n };\n\n return _class;\n }(_testCase.RenderingTest));\n});","QUnit.module('ESLint | ember-glimmer/tests/integration/binding_integration_test.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-glimmer/tests/integration/binding_integration_test.js should pass ESLint\\n\\n');\n});\n","enifed('ember-glimmer/tests/integration/components/append-test', ['ember-babel', 'ember-metal', 'ember-views', 'ember-glimmer/tests/utils/test-case', 'ember-glimmer/tests/utils/helpers', 'ember-glimmer/tests/utils/abstract-test-case'], function (_emberBabel, _emberMetal, _emberViews, _testCase, _helpers, _abstractTestCase) {\n 'use strict';\n\n var _templateObject = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n {{#if showFooBar}}\\n {{foo-bar}}\\n {{else}}\\n {{baz-qux}}\\n {{/if}}\\n '], ['\\n {{#if showFooBar}}\\n {{foo-bar}}\\n {{else}}\\n {{baz-qux}}\\n {{/if}}\\n ']);\n\n var AbstractAppendTest = function (_RenderingTest) {\n (0, _emberBabel.inherits)(AbstractAppendTest, _RenderingTest);\n\n function AbstractAppendTest() {\n (0, _emberBabel.classCallCheck)(this, AbstractAppendTest);\n\n var _this = (0, _emberBabel.possibleConstructorReturn)(this, _RenderingTest.call(this));\n\n _this.components = [];\n _this.ids = [];\n return _this;\n }\n\n AbstractAppendTest.prototype.teardown = function teardown() {\n var _this2 = this;\n\n this.component = null;\n\n this.components.forEach(function (component) {\n _this2.runTask(function () {\n return component.destroy();\n });\n });\n\n this.ids.forEach(function (id) {\n var $element = (0, _emberViews.jQuery)(id).remove();\n _this2.assert.strictEqual($element.length, 0, 'Should not leak element: #' + id);\n });\n\n _RenderingTest.prototype.teardown.call(this);\n };\n\n AbstractAppendTest.prototype.didAppend = function didAppend(component) {\n this.components.push(component);\n this.ids.push(component.elementId);\n };\n\n AbstractAppendTest.prototype['@test lifecycle hooks during component append'] = function testLifecycleHooksDuringComponentAppend(assert) {\n var _this4 = this;\n\n var hooks = [];\n\n var oldRegisterComponent = this.registerComponent;\n var componentsByName = {};\n\n // TODO: refactor/combine with other life-cycle tests\n this.registerComponent = function (name, _options) {\n function pushHook(hookName) {\n hooks.push([name, hookName]);\n }\n\n var options = {\n ComponentClass: _options.ComponentClass.extend({\n init: function () {\n var _this3 = this,\n _arguments = arguments;\n\n expectDeprecation(function () {\n _this3._super.apply(_this3, _arguments);\n }, /didInitAttrs called/);\n if (name in componentsByName) {\n throw new TypeError('Component named: ` ' + name + ' ` already registered');\n }\n componentsByName[name] = this;\n pushHook('init');\n this.on('init', function () {\n return pushHook('on(init)');\n });\n },\n didInitAttrs: function (options) {\n pushHook('didInitAttrs', options);\n },\n didReceiveAttrs: function () {\n pushHook('didReceiveAttrs');\n },\n willInsertElement: function () {\n pushHook('willInsertElement');\n },\n willRender: function () {\n pushHook('willRender');\n },\n didInsertElement: function () {\n pushHook('didInsertElement');\n },\n didRender: function () {\n pushHook('didRender');\n },\n didUpdateAttrs: function () {\n pushHook('didUpdateAttrs');\n },\n willUpdate: function () {\n pushHook('willUpdate');\n },\n didUpdate: function () {\n pushHook('didUpdate');\n },\n willDestroyElement: function () {\n pushHook('willDestroyElement');\n },\n willClearRender: function () {\n pushHook('willClearRender');\n },\n didDestroyElement: function () {\n pushHook('didDestroyElement');\n },\n willDestroy: function () {\n pushHook('willDestroy');\n this._super.apply(this, arguments);\n }\n }),\n template: _options.template\n };\n\n oldRegisterComponent.call(this, name, options);\n };\n\n this.registerComponent('x-parent', {\n ComponentClass: _helpers.Component.extend({\n layoutName: 'components/x-parent'\n }),\n\n template: '[parent: {{foo}}]{{#x-child bar=foo}}[yielded: {{foo}}]{{/x-child}}'\n });\n\n this.registerComponent('x-child', {\n ComponentClass: _helpers.Component.extend({\n tagName: ''\n }),\n\n template: '[child: {{bar}}]{{yield}}'\n });\n\n var XParent = void 0;\n\n XParent = this.owner.factoryFor('component:x-parent');\n\n this.component = XParent.create({ foo: 'zomg' });\n\n assert.deepEqual(hooks, [['x-parent', 'init'], ['x-parent', 'didInitAttrs'], ['x-parent', 'didReceiveAttrs'], ['x-parent', 'on(init)']], 'creation of x-parent');\n\n hooks.length = 0;\n\n this.element = this.append(this.component);\n\n assert.deepEqual(hooks, [['x-parent', 'willInsertElement'], ['x-child', 'init'], ['x-child', 'didInitAttrs'], ['x-child', 'didReceiveAttrs'], ['x-child', 'on(init)'], ['x-child', 'willRender'], ['x-child', 'willInsertElement'], ['x-child', 'didInsertElement'], ['x-child', 'didRender'], ['x-parent', 'didInsertElement'], ['x-parent', 'didRender']], 'appending of x-parent');\n\n hooks.length = 0;\n\n this.runTask(function () {\n return componentsByName['x-parent'].rerender();\n });\n\n assert.deepEqual(hooks, [['x-parent', 'willUpdate'], ['x-parent', 'willRender'], ['x-parent', 'didUpdate'], ['x-parent', 'didRender']], 'rerender x-parent');\n\n hooks.length = 0;\n\n this.runTask(function () {\n return componentsByName['x-child'].rerender();\n });\n\n assert.deepEqual(hooks, [['x-parent', 'willUpdate'], ['x-parent', 'willRender'], ['x-child', 'willUpdate'], ['x-child', 'willRender'], ['x-child', 'didUpdate'], ['x-child', 'didRender'], ['x-parent', 'didUpdate'], ['x-parent', 'didRender']], 'rerender x-child');\n\n hooks.length = 0;\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this4.component, 'foo', 'wow');\n });\n\n assert.deepEqual(hooks, [['x-parent', 'willUpdate'], ['x-parent', 'willRender'], ['x-child', 'didUpdateAttrs'], ['x-child', 'didReceiveAttrs'], ['x-child', 'willUpdate'], ['x-child', 'willRender'], ['x-child', 'didUpdate'], ['x-child', 'didRender'], ['x-parent', 'didUpdate'], ['x-parent', 'didRender']], 'set foo = wow');\n\n hooks.length = 0;\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this4.component, 'foo', 'zomg');\n });\n\n assert.deepEqual(hooks, [['x-parent', 'willUpdate'], ['x-parent', 'willRender'], ['x-child', 'didUpdateAttrs'], ['x-child', 'didReceiveAttrs'], ['x-child', 'willUpdate'], ['x-child', 'willRender'], ['x-child', 'didUpdate'], ['x-child', 'didRender'], ['x-parent', 'didUpdate'], ['x-parent', 'didRender']], 'set foo = zomg');\n\n hooks.length = 0;\n\n this.runTask(function () {\n return _this4.component.destroy();\n });\n\n assert.deepEqual(hooks, [['x-parent', 'willDestroyElement'], ['x-parent', 'willClearRender'], ['x-child', 'willDestroyElement'], ['x-child', 'willClearRender'], ['x-child', 'didDestroyElement'], ['x-parent', 'didDestroyElement'], ['x-parent', 'willDestroy'], ['x-child', 'willDestroy']], 'destroy');\n };\n\n AbstractAppendTest.prototype['@test appending, updating and destroying a single component'] = function testAppendingUpdatingAndDestroyingASingleComponent(assert) {\n var _this5 = this;\n\n var willDestroyCalled = 0;\n\n this.registerComponent('x-parent', {\n ComponentClass: _helpers.Component.extend({\n layoutName: 'components/x-parent',\n willDestroyElement: function () {\n willDestroyCalled++;\n }\n }),\n\n template: '[parent: {{foo}}]{{#x-child bar=foo}}[yielded: {{foo}}]{{/x-child}}'\n });\n\n this.registerComponent('x-child', {\n ComponentClass: _helpers.Component.extend({\n tagName: ''\n }),\n\n template: '[child: {{bar}}]{{yield}}'\n });\n\n var XParent = void 0;\n\n XParent = this.owner.factoryFor('component:x-parent');\n\n this.component = XParent.create({ foo: 'zomg' });\n\n assert.ok(!this.component.element, 'precond - should not have an element');\n\n this.element = this.append(this.component);\n\n var componentElement = this.component.element;\n\n this.assertComponentElement(componentElement, { content: '[parent: zomg][child: zomg][yielded: zomg]' });\n\n assert.equal(componentElement.parentElement, this.element, 'It should be attached to the target');\n\n this.runTask(function () {\n return _this5.rerender();\n });\n\n this.assertComponentElement(componentElement, { content: '[parent: zomg][child: zomg][yielded: zomg]' });\n\n assert.equal(componentElement.parentElement, this.element, 'It should be attached to the target');\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this5.component, 'foo', 'wow');\n });\n\n this.assertComponentElement(componentElement, { content: '[parent: wow][child: wow][yielded: wow]' });\n\n assert.equal(componentElement.parentElement, this.element, 'It should be attached to the target');\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this5.component, 'foo', 'zomg');\n });\n\n this.assertComponentElement(componentElement, { content: '[parent: zomg][child: zomg][yielded: zomg]' });\n\n assert.equal(componentElement.parentElement, this.element, 'It should be attached to the target');\n\n this.runTask(function () {\n return _this5.component.destroy();\n });\n\n assert.ok(!this.component.element, 'It should not have an element');\n assert.ok(!componentElement.parentElement, 'The component element should be detached');\n\n this.assert.equal(willDestroyCalled, 1);\n };\n\n AbstractAppendTest.prototype['@test releasing a root component after it has been destroy'] = function testReleasingARootComponentAfterItHasBeenDestroy(assert) {\n var _this6 = this;\n\n var renderer = this.owner.lookup('renderer:-dom');\n\n this.registerComponent('x-component', {\n ComponentClass: _helpers.Component.extend()\n });\n\n this.component = this.owner.factoryFor('component:x-component').create();\n this.append(this.component);\n\n assert.equal(renderer._roots.length, 1, 'added a root component');\n\n this.runTask(function () {\n return _this6.component.destroy();\n });\n\n assert.equal(renderer._roots.length, 0, 'released the root component');\n };\n\n AbstractAppendTest.prototype['@test appending, updating and destroying multiple components'] = function testAppendingUpdatingAndDestroyingMultipleComponents(assert) {\n var _this7 = this;\n\n var willDestroyCalled = 0;\n\n this.registerComponent('x-first', {\n ComponentClass: _helpers.Component.extend({\n layoutName: 'components/x-first',\n\n willDestroyElement: function () {\n willDestroyCalled++;\n }\n }),\n\n template: 'x-first {{foo}}!'\n });\n\n this.registerComponent('x-second', {\n ComponentClass: _helpers.Component.extend({\n layoutName: 'components/x-second',\n\n willDestroyElement: function () {\n willDestroyCalled++;\n }\n }),\n\n template: 'x-second {{bar}}!'\n });\n\n var First = void 0,\n Second = void 0;\n\n First = this.owner.factoryFor('component:x-first');\n Second = this.owner.factoryFor('component:x-second');\n\n var first = First.create({ foo: 'foo' });\n var second = Second.create({ bar: 'bar' });\n\n this.assert.ok(!first.element, 'precond - should not have an element');\n this.assert.ok(!second.element, 'precond - should not have an element');\n\n var wrapper1 = void 0,\n wrapper2 = void 0;\n\n this.runTask(function () {\n return wrapper1 = _this7.append(first);\n });\n this.runTask(function () {\n return wrapper2 = _this7.append(second);\n });\n\n var componentElement1 = first.element;\n var componentElement2 = second.element;\n\n this.assertComponentElement(componentElement1, { content: 'x-first foo!' });\n this.assertComponentElement(componentElement2, { content: 'x-second bar!' });\n\n assert.equal(componentElement1.parentElement, wrapper1, 'The first component should be attached to the target');\n assert.equal(componentElement2.parentElement, wrapper2, 'The second component should be attached to the target');\n\n this.runTask(function () {\n return (0, _emberMetal.set)(first, 'foo', 'FOO');\n });\n\n this.assertComponentElement(componentElement1, { content: 'x-first FOO!' });\n this.assertComponentElement(componentElement2, { content: 'x-second bar!' });\n\n assert.equal(componentElement1.parentElement, wrapper1, 'The first component should be attached to the target');\n assert.equal(componentElement2.parentElement, wrapper2, 'The second component should be attached to the target');\n\n this.runTask(function () {\n return (0, _emberMetal.set)(second, 'bar', 'BAR');\n });\n\n this.assertComponentElement(componentElement1, { content: 'x-first FOO!' });\n this.assertComponentElement(componentElement2, { content: 'x-second BAR!' });\n\n assert.equal(componentElement1.parentElement, wrapper1, 'The first component should be attached to the target');\n assert.equal(componentElement2.parentElement, wrapper2, 'The second component should be attached to the target');\n\n this.runTask(function () {\n (0, _emberMetal.set)(first, 'foo', 'foo');\n (0, _emberMetal.set)(second, 'bar', 'bar');\n });\n\n this.assertComponentElement(componentElement1, { content: 'x-first foo!' });\n this.assertComponentElement(componentElement2, { content: 'x-second bar!' });\n\n assert.equal(componentElement1.parentElement, wrapper1, 'The first component should be attached to the target');\n assert.equal(componentElement2.parentElement, wrapper2, 'The second component should be attached to the target');\n\n this.runTask(function () {\n first.destroy();\n second.destroy();\n });\n\n assert.ok(!first.element, 'The first component should not have an element');\n assert.ok(!second.element, 'The second component should not have an element');\n\n assert.ok(!componentElement1.parentElement, 'The first component element should be detached');\n assert.ok(!componentElement2.parentElement, 'The second component element should be detached');\n\n this.assert.equal(willDestroyCalled, 2);\n };\n\n AbstractAppendTest.prototype['@test can appendTo while rendering'] = function testCanAppendToWhileRendering(assert) {\n var _this8 = this;\n\n var owner = this.owner;\n\n var append = function (component) {\n return _this8.append(component);\n };\n\n var element1 = void 0,\n element2 = void 0;\n this.registerComponent('first-component', {\n ComponentClass: _helpers.Component.extend({\n layout: (0, _helpers.compile)('component-one'),\n\n didInsertElement: function () {\n element1 = this.element;\n\n var SecondComponent = owner.factoryFor('component:second-component');\n\n append(SecondComponent.create());\n }\n })\n });\n\n this.registerComponent('second-component', {\n ComponentClass: _helpers.Component.extend({\n layout: (0, _helpers.compile)('component-two'),\n\n didInsertElement: function () {\n element2 = this.element;\n }\n })\n });\n\n var FirstComponent = this.owner.factoryFor('component:first-component');\n\n this.runTask(function () {\n return append(FirstComponent.create());\n });\n\n this.assertComponentElement(element1, { content: 'component-one' });\n this.assertComponentElement(element2, { content: 'component-two' });\n };\n\n AbstractAppendTest.prototype['@test can appendTo and remove while rendering'] = function testCanAppendToAndRemoveWhileRendering(assert) {\n var _this9 = this;\n\n var owner = this.owner;\n\n var append = function (component) {\n return _this9.append(component);\n };\n\n var element1 = void 0,\n element2 = void 0,\n element3 = void 0,\n element4 = void 0,\n component1 = void 0,\n component2 = void 0;\n this.registerComponent('foo-bar', {\n ComponentClass: _helpers.Component.extend({\n layout: (0, _helpers.compile)('foo-bar'),\n\n init: function () {\n this._super.apply(this, arguments);\n component1 = this;\n },\n didInsertElement: function () {\n element1 = this.element;\n\n var OtherRoot = owner.factoryFor('component:other-root');\n\n this._instance = OtherRoot.create({\n didInsertElement: function () {\n element2 = this.element;\n }\n });\n\n append(this._instance);\n },\n willDestroy: function () {\n this._instance.destroy();\n }\n })\n });\n\n this.registerComponent('baz-qux', {\n ComponentClass: _helpers.Component.extend({\n layout: (0, _helpers.compile)('baz-qux'),\n\n init: function () {\n this._super.apply(this, arguments);\n component2 = this;\n },\n didInsertElement: function () {\n element3 = this.element;\n\n var OtherRoot = owner.factoryFor('component:other-root');\n\n this._instance = OtherRoot.create({\n didInsertElement: function () {\n element4 = this.element;\n }\n });\n\n append(this._instance);\n },\n willDestroy: function () {\n this._instance.destroy();\n }\n })\n });\n\n var instantiatedRoots = 0;\n var destroyedRoots = 0;\n this.registerComponent('other-root', {\n ComponentClass: _helpers.Component.extend({\n layout: (0, _helpers.compile)('fake-thing: {{counter}}'),\n init: function () {\n this._super.apply(this, arguments);\n this.counter = instantiatedRoots++;\n },\n willDestroy: function () {\n destroyedRoots++;\n this._super.apply(this, arguments);\n }\n })\n });\n\n this.render((0, _abstractTestCase.strip)(_templateObject), { showFooBar: true });\n\n this.assertComponentElement(element1, {});\n this.assertComponentElement(element2, { content: 'fake-thing: 0' });\n assert.equal(instantiatedRoots, 1);\n\n this.assertStableRerender();\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this9.context, 'showFooBar', false);\n });\n\n assert.equal(instantiatedRoots, 2);\n assert.equal(destroyedRoots, 1);\n\n this.assertComponentElement(element3, {});\n this.assertComponentElement(element4, { content: 'fake-thing: 1' });\n\n this.runTask(function () {\n component1.destroy();\n component2.destroy();\n });\n\n assert.equal(instantiatedRoots, 2);\n assert.equal(destroyedRoots, 2);\n };\n\n return AbstractAppendTest;\n }(_testCase.RenderingTest);\n\n (0, _testCase.moduleFor)('append: no arguments (attaching to document.body)', function (_AbstractAppendTest) {\n (0, _emberBabel.inherits)(_class, _AbstractAppendTest);\n\n function _class() {\n (0, _emberBabel.classCallCheck)(this, _class);\n return (0, _emberBabel.possibleConstructorReturn)(this, _AbstractAppendTest.apply(this, arguments));\n }\n\n _class.prototype.append = function append(component) {\n this.runTask(function () {\n return component.append();\n });\n this.didAppend(component);\n return document.body;\n };\n\n return _class;\n }(AbstractAppendTest));\n\n (0, _testCase.moduleFor)('appendTo: a selector', function (_AbstractAppendTest2) {\n (0, _emberBabel.inherits)(_class2, _AbstractAppendTest2);\n\n function _class2() {\n (0, _emberBabel.classCallCheck)(this, _class2);\n return (0, _emberBabel.possibleConstructorReturn)(this, _AbstractAppendTest2.apply(this, arguments));\n }\n\n _class2.prototype.append = function append(component) {\n this.runTask(function () {\n return component.appendTo('#qunit-fixture');\n });\n this.didAppend(component);\n return (0, _emberViews.jQuery)('#qunit-fixture')[0];\n };\n\n _class2.prototype['@test raises an assertion when the target does not exist in the DOM'] = function testRaisesAnAssertionWhenTheTargetDoesNotExistInTheDOM(assert) {\n var _this12 = this;\n\n this.registerComponent('foo-bar', {\n ComponentClass: _helpers.Component.extend({\n layoutName: 'components/foo-bar'\n }),\n template: 'FOO BAR!'\n });\n\n var FooBar = this.owner.factoryFor('component:foo-bar');\n\n this.component = FooBar.create();\n\n assert.ok(!this.component.element, 'precond - should not have an element');\n\n this.runTask(function () {\n expectAssertion(function () {\n _this12.component.appendTo('#does-not-exist-in-dom');\n }, /You tried to append to \\(#does-not-exist-in-dom\\) but that isn't in the DOM/);\n });\n\n assert.ok(!this.component.element, 'component should not have an element');\n };\n\n return _class2;\n }(AbstractAppendTest));\n\n (0, _testCase.moduleFor)('appendTo: an element', function (_AbstractAppendTest3) {\n (0, _emberBabel.inherits)(_class3, _AbstractAppendTest3);\n\n function _class3() {\n (0, _emberBabel.classCallCheck)(this, _class3);\n return (0, _emberBabel.possibleConstructorReturn)(this, _AbstractAppendTest3.apply(this, arguments));\n }\n\n _class3.prototype.append = function append(component) {\n var element = (0, _emberViews.jQuery)('#qunit-fixture')[0];\n this.runTask(function () {\n return component.appendTo(element);\n });\n this.didAppend(component);\n return element;\n };\n\n return _class3;\n }(AbstractAppendTest));\n\n (0, _testCase.moduleFor)('appendTo: with multiple components', function (_AbstractAppendTest4) {\n (0, _emberBabel.inherits)(_class4, _AbstractAppendTest4);\n\n function _class4() {\n (0, _emberBabel.classCallCheck)(this, _class4);\n return (0, _emberBabel.possibleConstructorReturn)(this, _AbstractAppendTest4.apply(this, arguments));\n }\n\n _class4.prototype.append = function append(component) {\n this.runTask(function () {\n return component.appendTo('#qunit-fixture');\n });\n this.didAppend(component);\n return (0, _emberViews.jQuery)('#qunit-fixture')[0];\n };\n\n return _class4;\n }(AbstractAppendTest));\n});","QUnit.module('ESLint | ember-glimmer/tests/integration/components/append-test.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-glimmer/tests/integration/components/append-test.js should pass ESLint\\n\\n');\n});\n","enifed('ember-glimmer/tests/integration/components/attribute-bindings-test', ['ember-babel', 'ember-glimmer/tests/utils/test-case', 'ember-glimmer/tests/utils/helpers', 'ember-glimmer/tests/utils/abstract-test-case', 'ember-metal'], function (_emberBabel, _testCase, _helpers, _abstractTestCase, _emberMetal) {\n 'use strict';\n\n var _templateObject = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n {{foo-bar hasFoo=true foo=foo hasBar=false bar=bar}}\\n {{foo-bar hasFoo=false foo=foo hasBar=true bar=bar}}\\n {{foo-bar hasFoo=true foo=foo hasBar=true bar=bar}}\\n {{foo-bar hasFoo=false foo=foo hasBar=false bar=bar}}\\n '], ['\\n {{foo-bar hasFoo=true foo=foo hasBar=false bar=bar}}\\n {{foo-bar hasFoo=false foo=foo hasBar=true bar=bar}}\\n {{foo-bar hasFoo=true foo=foo hasBar=true bar=bar}}\\n {{foo-bar hasFoo=false foo=foo hasBar=false bar=bar}}\\n ']);\n\n (0, _testCase.moduleFor)('Attribute bindings integration', function (_RenderingTest) {\n (0, _emberBabel.inherits)(_class, _RenderingTest);\n\n function _class() {\n (0, _emberBabel.classCallCheck)(this, _class);\n return (0, _emberBabel.possibleConstructorReturn)(this, _RenderingTest.apply(this, arguments));\n }\n\n _class.prototype['@test it can have attribute bindings'] = function testItCanHaveAttributeBindings() {\n var _this2 = this;\n\n var FooBarComponent = _helpers.Component.extend({\n attributeBindings: ['foo:data-foo', 'bar:data-bar']\n });\n\n this.registerComponent('foo-bar', { ComponentClass: FooBarComponent, template: 'hello' });\n\n this.render('{{foo-bar foo=foo bar=bar}}', { foo: 'foo', bar: 'bar' });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { 'data-foo': 'foo', 'data-bar': 'bar' }, content: 'hello' });\n\n this.runTask(function () {\n return _this2.rerender();\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { 'data-foo': 'foo', 'data-bar': 'bar' }, content: 'hello' });\n\n this.runTask(function () {\n (0, _emberMetal.set)(_this2.context, 'foo', 'FOO');\n (0, _emberMetal.set)(_this2.context, 'bar', undefined);\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { 'data-foo': 'FOO' }, content: 'hello' });\n\n this.runTask(function () {\n (0, _emberMetal.set)(_this2.context, 'foo', 'foo');\n (0, _emberMetal.set)(_this2.context, 'bar', 'bar');\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { 'data-foo': 'foo', 'data-bar': 'bar' }, content: 'hello' });\n };\n\n _class.prototype['@test it can have attribute bindings with attrs'] = function testItCanHaveAttributeBindingsWithAttrs() {\n var _this3 = this;\n\n var FooBarComponent = _helpers.Component.extend({\n attributeBindings: ['attrs.foo:data-foo', 'attrs.baz.bar:data-bar']\n });\n\n this.registerComponent('foo-bar', { ComponentClass: FooBarComponent, template: 'hello' });\n\n this.render('{{foo-bar foo=model.foo baz=model.baz}}', {\n model: { foo: undefined, baz: { bar: 'bar' } }\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', content: 'hello', attrs: { 'data-bar': 'bar' } });\n\n this.runTask(function () {\n return _this3.rerender();\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', content: 'hello', attrs: { 'data-bar': 'bar' } });\n\n this.runTask(function () {\n (0, _emberMetal.set)(_this3.context, 'model.foo', 'foo');\n (0, _emberMetal.set)(_this3.context, 'model.baz.bar', undefined);\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { 'data-foo': 'foo' }, content: 'hello' });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this3.context, 'model', {\n foo: undefined, baz: { bar: 'bar' }\n });\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', content: 'hello', attrs: { 'data-bar': 'bar' } });\n };\n\n _class.prototype['@test it can have attribute bindings with a nested path'] = function testItCanHaveAttributeBindingsWithANestedPath() {\n var _this4 = this;\n\n var FooBarComponent = _helpers.Component.extend({\n attributeBindings: ['foo.bar:data-foo-bar']\n });\n\n this.registerComponent('foo-bar', { ComponentClass: FooBarComponent, template: 'hello' });\n\n this.render('{{foo-bar foo=foo}}', { foo: { bar: 'foo-bar' } });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { 'data-foo-bar': 'foo-bar' }, content: 'hello' });\n\n this.runTask(function () {\n return _this4.rerender();\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { 'data-foo-bar': 'foo-bar' }, content: 'hello' });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this4.context, 'foo.bar', 'FOO-BAR');\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { 'data-foo-bar': 'FOO-BAR' }, content: 'hello' });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this4.context, 'foo.bar', undefined);\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: {}, content: 'hello' });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this4.context, 'foo', undefined);\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: {}, content: 'hello' });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this4.context, 'foo', { bar: 'foo-bar' });\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { 'data-foo-bar': 'foo-bar' }, content: 'hello' });\n };\n\n _class.prototype['@test handles non-microsyntax attributeBindings'] = function testHandlesNonMicrosyntaxAttributeBindings() {\n var _this5 = this;\n\n var FooBarComponent = _helpers.Component.extend({\n attributeBindings: ['type']\n });\n\n this.registerComponent('foo-bar', { ComponentClass: FooBarComponent, template: 'hello' });\n\n this.render('{{foo-bar type=submit}}', {\n submit: 'submit'\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { type: 'submit' }, content: 'hello' });\n\n this.runTask(function () {\n return _this5.rerender();\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { type: 'submit' }, content: 'hello' });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this5.context, 'submit', 'password');\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { type: 'password' }, content: 'hello' });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this5.context, 'submit', null);\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: {}, content: 'hello' });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this5.context, 'submit', 'submit');\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { type: 'submit' }, content: 'hello' });\n };\n\n _class.prototype['@test non-microsyntax attributeBindings cannot contain nested paths'] = function testNonMicrosyntaxAttributeBindingsCannotContainNestedPaths() {\n var _this6 = this;\n\n var FooBarComponent = _helpers.Component.extend({\n attributeBindings: ['foo.bar']\n });\n\n this.registerComponent('foo-bar', { ComponentClass: FooBarComponent, template: 'hello' });\n\n expectAssertion(function () {\n _this6.render('{{foo-bar foo=foo}}', { foo: { bar: 'foo-bar' } });\n }, /Illegal attributeBinding: 'foo.bar' is not a valid attribute name./);\n };\n\n _class.prototype['@test normalizes attributeBindings for property names'] = function testNormalizesAttributeBindingsForPropertyNames() {\n var _this7 = this;\n\n var FooBarComponent = _helpers.Component.extend({\n attributeBindings: ['tiTLe']\n });\n\n this.registerComponent('foo-bar', { ComponentClass: FooBarComponent, template: 'hello' });\n\n this.render('{{foo-bar tiTLe=name}}', {\n name: 'qux'\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { title: 'qux' }, content: 'hello' });\n\n this.assertStableRerender();\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this7.context, 'name', null);\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: {}, content: 'hello' });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this7.context, 'name', 'qux');\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { title: 'qux' }, content: 'hello' });\n };\n\n _class.prototype['@test normalizes attributeBindings for attribute names'] = function testNormalizesAttributeBindingsForAttributeNames() {\n var _this8 = this;\n\n var FooBarComponent = _helpers.Component.extend({\n attributeBindings: ['foo:data-FOO']\n });\n\n this.registerComponent('foo-bar', { ComponentClass: FooBarComponent, template: 'hello' });\n\n this.render('{{foo-bar foo=foo}}', {\n foo: 'qux'\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { 'data-foo': 'qux' }, content: 'hello' });\n\n this.assertStableRerender();\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this8.context, 'foo', null);\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: {}, content: 'hello' });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this8.context, 'foo', 'qux');\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { 'data-foo': 'qux' }, content: 'hello' });\n };\n\n _class.prototype['@test attributeBindings handles null/undefined'] = function testAttributeBindingsHandlesNullUndefined() {\n var _this9 = this;\n\n var FooBarComponent = _helpers.Component.extend({\n attributeBindings: ['fizz', 'bar']\n });\n\n this.registerComponent('foo-bar', { ComponentClass: FooBarComponent, template: 'hello' });\n\n this.render('{{foo-bar fizz=fizz bar=bar}}', {\n fizz: null,\n bar: undefined\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: {}, content: 'hello' });\n\n this.runTask(function () {\n return _this9.rerender();\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: {}, content: 'hello' });\n\n this.runTask(function () {\n (0, _emberMetal.set)(_this9.context, 'fizz', 'fizz');\n (0, _emberMetal.set)(_this9.context, 'bar', 'bar');\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { fizz: 'fizz', bar: 'bar' }, content: 'hello' });\n\n this.runTask(function () {\n (0, _emberMetal.set)(_this9.context, 'fizz', null);\n (0, _emberMetal.set)(_this9.context, 'bar', undefined);\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: {}, content: 'hello' });\n };\n\n _class.prototype['@test attributeBindings handles number value'] = function testAttributeBindingsHandlesNumberValue() {\n var _this10 = this;\n\n var FooBarComponent = _helpers.Component.extend({\n attributeBindings: ['size']\n });\n\n this.registerComponent('foo-bar', { ComponentClass: FooBarComponent, template: 'hello' });\n\n this.render('{{foo-bar size=size}}', {\n size: 21\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { size: '21' }, content: 'hello' });\n\n this.runTask(function () {\n return _this10.rerender();\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { size: '21' }, content: 'hello' });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this10.context, 'size', 0);\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { size: '0' }, content: 'hello' });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this10.context, 'size', 21);\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { size: '21' }, content: 'hello' });\n };\n\n _class.prototype['@test handles internal and external changes'] = function testHandlesInternalAndExternalChanges() {\n var _this11 = this;\n\n var component = void 0;\n var FooBarComponent = _helpers.Component.extend({\n attributeBindings: ['type'],\n type: 'password',\n init: function () {\n this._super.apply(this, arguments);\n component = this;\n }\n });\n\n this.registerComponent('foo-bar', { ComponentClass: FooBarComponent, template: 'hello' });\n\n this.render('{{foo-bar}}');\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { type: 'password' }, content: 'hello' });\n\n this.runTask(function () {\n return _this11.rerender();\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { type: 'password' }, content: 'hello' });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(component, 'type', 'checkbox');\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { type: 'checkbox' }, content: 'hello' });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(component, 'type', 'password');\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { type: 'password' }, content: 'hello' });\n };\n\n _class.prototype['@test can set attributeBindings on component with a different tagName'] = function testCanSetAttributeBindingsOnComponentWithADifferentTagName() {\n var _this12 = this;\n\n var FooBarComponent = _helpers.Component.extend({\n tagName: 'input',\n attributeBindings: ['type', 'isDisabled:disabled']\n });\n\n this.registerComponent('foo-bar', { ComponentClass: FooBarComponent });\n\n this.render('{{foo-bar type=type isDisabled=disabled}}', {\n type: 'password',\n disabled: false\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'input', attrs: { type: 'password' } });\n\n this.runTask(function () {\n return _this12.rerender();\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'input', attrs: { type: 'password' } });\n\n this.runTask(function () {\n (0, _emberMetal.set)(_this12.context, 'type', 'checkbox');\n (0, _emberMetal.set)(_this12.context, 'disabled', true);\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'input', attrs: { type: 'checkbox', disabled: '' } });\n\n this.runTask(function () {\n (0, _emberMetal.set)(_this12.context, 'type', 'password');\n (0, _emberMetal.set)(_this12.context, 'disabled', false);\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'input', attrs: { type: 'password' } });\n };\n\n _class.prototype['@test should allow namespaced attributes in micro syntax'] = function testShouldAllowNamespacedAttributesInMicroSyntax() {\n var _this13 = this;\n\n var FooBarComponent = _helpers.Component.extend({\n attributeBindings: ['xlinkHref:xlink:href']\n });\n\n this.registerComponent('foo-bar', { ComponentClass: FooBarComponent });\n\n this.render('{{foo-bar type=type xlinkHref=xlinkHref}}', {\n xlinkHref: '/foo.png'\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { 'xlink:href': '/foo.png' } });\n\n this.runTask(function () {\n return _this13.rerender();\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { 'xlink:href': '/foo.png' } });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this13.context, 'xlinkHref', '/lol.png');\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { 'xlink:href': '/lol.png' } });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this13.context, 'xlinkHref', '/foo.png');\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { 'xlink:href': '/foo.png' } });\n };\n\n _class.prototype['@test should allow for String objects'] = function testShouldAllowForStringObjects() {\n var _this14 = this;\n\n var FooBarComponent = _helpers.Component.extend({\n attributeBindings: ['foo']\n });\n\n this.registerComponent('foo-bar', { ComponentClass: FooBarComponent });\n\n this.render('{{foo-bar foo=foo}}', {\n foo: function () {\n return this;\n }.call('bar')\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { 'foo': 'bar' } });\n\n this.runTask(function () {\n return _this14.rerender();\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { 'foo': 'bar' } });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this14.context, 'foo', function () {\n return this;\n }.call('baz'));\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { 'foo': 'baz' } });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this14.context, 'foo', function () {\n return this;\n }.call('bar'));\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { 'foo': 'bar' } });\n };\n\n _class.prototype['@test can set id initially via attributeBindings '] = function testCanSetIdInitiallyViaAttributeBindings() {\n var _this15 = this;\n\n var FooBarComponent = _helpers.Component.extend({\n attributeBindings: ['specialSauce:id']\n });\n\n this.registerComponent('foo-bar', { ComponentClass: FooBarComponent });\n\n this.render('{{foo-bar specialSauce=sauce}}', {\n sauce: 'special-sauce'\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { 'id': 'special-sauce' } });\n\n this.runTask(function () {\n return _this15.rerender();\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { 'id': 'special-sauce' } });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this15.context, 'sauce', 'foo');\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { 'id': 'special-sauce' } });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this15.context, 'sauce', 'special-sauce');\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { 'id': 'special-sauce' } });\n };\n\n _class.prototype['@test attributeBindings are overwritten'] = function testAttributeBindingsAreOverwritten() {\n var _this16 = this;\n\n var FooBarComponent = _helpers.Component.extend({\n attributeBindings: ['href'],\n href: 'a href'\n });\n\n var FizzBarComponent = FooBarComponent.extend({\n attributeBindings: ['newHref:href']\n });\n\n this.registerComponent('fizz-bar', { ComponentClass: FizzBarComponent });\n\n this.render('{{fizz-bar newHref=href}}', {\n href: 'dog.html'\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { href: 'dog.html' } });\n\n this.runTask(function () {\n return _this16.rerender();\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { href: 'dog.html' } });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this16.context, 'href', 'cat.html');\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { href: 'cat.html' } });\n };\n\n _class.prototype['@test it can set attribute bindings in the constructor'] = function testItCanSetAttributeBindingsInTheConstructor() {\n var _this17 = this;\n\n var FooBarComponent = _helpers.Component.extend({\n init: function () {\n this._super();\n\n var bindings = [];\n\n if (this.get('hasFoo')) {\n bindings.push('foo:data-foo');\n }\n\n if (this.get('hasBar')) {\n bindings.push('bar:data-bar');\n }\n\n this.attributeBindings = bindings;\n }\n });\n\n this.registerComponent('foo-bar', { ComponentClass: FooBarComponent, template: 'hello' });\n\n this.render((0, _abstractTestCase.strip)(_templateObject), { foo: 'foo', bar: 'bar' });\n\n this.assertComponentElement(this.nthChild(0), { tagName: 'div', attrs: { 'data-foo': 'foo' }, content: 'hello' });\n this.assertComponentElement(this.nthChild(1), { tagName: 'div', attrs: { 'data-bar': 'bar' }, content: 'hello' });\n this.assertComponentElement(this.nthChild(2), { tagName: 'div', attrs: { 'data-foo': 'foo', 'data-bar': 'bar' }, content: 'hello' });\n this.assertComponentElement(this.nthChild(3), { tagName: 'div', attrs: {}, content: 'hello' });\n\n this.runTask(function () {\n return _this17.rerender();\n });\n\n this.assertComponentElement(this.nthChild(0), { tagName: 'div', attrs: { 'data-foo': 'foo' }, content: 'hello' });\n this.assertComponentElement(this.nthChild(1), { tagName: 'div', attrs: { 'data-bar': 'bar' }, content: 'hello' });\n this.assertComponentElement(this.nthChild(2), { tagName: 'div', attrs: { 'data-foo': 'foo', 'data-bar': 'bar' }, content: 'hello' });\n this.assertComponentElement(this.nthChild(3), { tagName: 'div', attrs: {}, content: 'hello' });\n\n this.runTask(function () {\n (0, _emberMetal.set)(_this17.context, 'foo', 'FOO');\n (0, _emberMetal.set)(_this17.context, 'bar', undefined);\n });\n\n this.assertComponentElement(this.nthChild(0), { tagName: 'div', attrs: { 'data-foo': 'FOO' }, content: 'hello' });\n this.assertComponentElement(this.nthChild(1), { tagName: 'div', attrs: {}, content: 'hello' });\n this.assertComponentElement(this.nthChild(2), { tagName: 'div', attrs: { 'data-foo': 'FOO' }, content: 'hello' });\n this.assertComponentElement(this.nthChild(3), { tagName: 'div', attrs: {}, content: 'hello' });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this17.context, 'bar', 'BAR');\n });\n\n this.assertComponentElement(this.nthChild(0), { tagName: 'div', attrs: { 'data-foo': 'FOO' }, content: 'hello' });\n this.assertComponentElement(this.nthChild(1), { tagName: 'div', attrs: { 'data-bar': 'BAR' }, content: 'hello' });\n this.assertComponentElement(this.nthChild(2), { tagName: 'div', attrs: { 'data-foo': 'FOO', 'data-bar': 'BAR' }, content: 'hello' });\n this.assertComponentElement(this.nthChild(3), { tagName: 'div', attrs: {}, content: 'hello' });\n\n this.runTask(function () {\n (0, _emberMetal.set)(_this17.context, 'foo', 'foo');\n (0, _emberMetal.set)(_this17.context, 'bar', 'bar');\n });\n\n this.assertComponentElement(this.nthChild(0), { tagName: 'div', attrs: { 'data-foo': 'foo' }, content: 'hello' });\n this.assertComponentElement(this.nthChild(1), { tagName: 'div', attrs: { 'data-bar': 'bar' }, content: 'hello' });\n this.assertComponentElement(this.nthChild(2), { tagName: 'div', attrs: { 'data-foo': 'foo', 'data-bar': 'bar' }, content: 'hello' });\n this.assertComponentElement(this.nthChild(3), { tagName: 'div', attrs: {}, content: 'hello' });\n };\n\n _class.prototype['@test it should not allow attributeBindings to be set'] = function testItShouldNotAllowAttributeBindingsToBeSet() {\n var _this18 = this;\n\n this.registerComponent('foo-bar', { template: 'hello' });\n\n expectAssertion(function () {\n _this18.render('{{foo-bar attributeBindings=\"one two\"}}');\n }, /Setting 'attributeBindings' via template helpers is not allowed/);\n };\n\n _class.prototype['@test asserts if an attributeBinding is setup on class'] = function testAssertsIfAnAttributeBindingIsSetupOnClass() {\n var _this19 = this;\n\n var FooBarComponent = _helpers.Component.extend({\n attributeBindings: ['class']\n });\n\n this.registerComponent('foo-bar', { ComponentClass: FooBarComponent, template: 'hello' });\n\n expectAssertion(function () {\n _this19.render('{{foo-bar}}');\n }, /You cannot use class as an attributeBinding, use classNameBindings instead./i);\n };\n\n _class.prototype['@test blacklists href bindings based on protocol'] = function testBlacklistsHrefBindingsBasedOnProtocol() {\n /* jshint scripturl:true */\n\n var FooBarComponent = _helpers.Component.extend({\n tagName: 'a',\n attributeBindings: ['href']\n });\n\n this.registerComponent('foo-bar', { ComponentClass: FooBarComponent, template: 'hello' });\n\n this.render('{{foo-bar href=xss}}', {\n xss: 'javascript:alert(\\'foo\\')'\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'a', attrs: { href: 'unsafe:javascript:alert(\\'foo\\')' } });\n };\n\n _class.prototype['@test it can bind the role attribute (issue #14007)'] = function testItCanBindTheRoleAttributeIssue14007() {\n var _this20 = this;\n\n var FooBarComponent = _helpers.Component.extend({ attributeBindings: ['role'] });\n\n this.registerComponent('foo-bar', { ComponentClass: FooBarComponent, template: 'hello' });\n\n this.render('{{foo-bar role=role}}', { role: 'button' });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { role: 'button' } });\n\n this.runTask(function () {\n return _this20.rerender();\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { role: 'button' } });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this20.context, 'role', 'combobox');\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { role: 'combobox' } });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this20.context, 'role', null);\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div' });\n };\n\n _class.prototype['@test component with an `id` attribute binding of undefined'] = function testComponentWithAnIdAttributeBindingOfUndefined() {\n this.registerComponent('foo-bar', {\n ComponentClass: _helpers.Component.extend({\n attributeBindings: ['id'],\n\n id: undefined\n })\n });\n\n this.registerComponent('baz-qux', {\n ComponentClass: _helpers.Component.extend({\n attributeBindings: ['somethingUndefined:id'],\n\n somethingUndefined: undefined\n })\n });\n this.render('{{foo-bar}}{{baz-qux}}');\n\n this.assertComponentElement(this.nthChild(0), { content: '' });\n this.assertComponentElement(this.nthChild(1), { content: '' });\n\n this.assert.ok(this.nthChild(0).id.match(/ember\\d+/), 'a valid `id` was used');\n this.assert.ok(this.nthChild(1).id.match(/ember\\d+/), 'a valid `id` was used');\n };\n\n _class.prototype['@test component with an `id` attribute binding of null'] = function testComponentWithAnIdAttributeBindingOfNull() {\n this.registerComponent('foo-bar', {\n ComponentClass: _helpers.Component.extend({\n attributeBindings: ['id'],\n\n id: null\n })\n });\n\n this.registerComponent('baz-qux', {\n ComponentClass: _helpers.Component.extend({\n attributeBindings: ['somethingNull:id'],\n\n somethingNull: null\n })\n });\n this.render('{{foo-bar}}{{baz-qux}}');\n\n this.assertComponentElement(this.nthChild(0), { content: '' });\n this.assertComponentElement(this.nthChild(1), { content: '' });\n\n this.assert.ok(this.nthChild(0).id.match(/ember\\d+/), 'a valid `id` was used');\n this.assert.ok(this.nthChild(1).id.match(/ember\\d+/), 'a valid `id` was used');\n };\n\n return _class;\n }(_testCase.RenderingTest));\n});","QUnit.module('ESLint | ember-glimmer/tests/integration/components/attribute-bindings-test.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-glimmer/tests/integration/components/attribute-bindings-test.js should pass ESLint\\n\\n');\n});\n","enifed('ember-glimmer/tests/integration/components/attrs-lookup-test', ['ember-babel', 'ember-glimmer/tests/utils/test-case', 'ember-glimmer/tests/utils/helpers', 'ember-metal', 'ember-glimmer/tests/utils/test-helpers'], function (_emberBabel, _testCase, _helpers, _emberMetal, _testHelpers) {\n 'use strict';\n\n (0, _testCase.moduleFor)('Components test: attrs lookup', function (_RenderingTest) {\n (0, _emberBabel.inherits)(_class, _RenderingTest);\n\n function _class() {\n (0, _emberBabel.classCallCheck)(this, _class);\n return (0, _emberBabel.possibleConstructorReturn)(this, _RenderingTest.apply(this, arguments));\n }\n\n _class.prototype['@test it should be able to lookup attrs without `attrs.` - template access'] = function testItShouldBeAbleToLookupAttrsWithoutAttrsTemplateAccess() {\n var _this2 = this;\n\n this.registerComponent('foo-bar', { template: '{{first}}' });\n\n this.render('{{foo-bar first=firstAttr}}', {\n firstAttr: 'first attr'\n });\n\n this.assertText('first attr');\n\n this.runTask(function () {\n return _this2.rerender();\n });\n\n this.assertText('first attr');\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this2.context, 'firstAttr', 'second attr');\n });\n\n this.assertText('second attr');\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this2.context, 'firstAttr', 'first attr');\n });\n\n this.assertText('first attr');\n };\n\n _class.prototype['@test it should be able to lookup attrs without `attrs.` - component access'] = function testItShouldBeAbleToLookupAttrsWithoutAttrsComponentAccess(assert) {\n var _this3 = this;\n\n var instance = void 0;\n\n var FooBarComponent = _helpers.Component.extend({\n init: function () {\n this._super.apply(this, arguments);\n instance = this;\n }\n });\n this.registerComponent('foo-bar', { ComponentClass: FooBarComponent, template: '{{first}}' });\n\n this.render('{{foo-bar first=firstAttr}}', {\n firstAttr: 'first attr'\n });\n\n assert.equal(instance.get('first'), 'first attr');\n\n this.runTask(function () {\n return _this3.rerender();\n });\n\n assert.equal(instance.get('first'), 'first attr');\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this3.context, 'firstAttr', 'second attr');\n });\n\n assert.equal(instance.get('first'), 'second attr');\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this3.context, 'firstAttr', 'first attr');\n });\n\n this.assertText('first attr');\n };\n\n _class.prototype['@test should be able to modify a provided attr into local state #11571 / #11559'] = function testShouldBeAbleToModifyAProvidedAttrIntoLocalState1157111559(assert) {\n var _this4 = this;\n\n var instance = void 0;\n var FooBarComponent = _helpers.Component.extend({\n init: function () {\n this._super.apply(this, arguments);\n instance = this;\n },\n didReceiveAttrs: function () {\n this.set('first', this.get('first').toUpperCase());\n }\n });\n this.registerComponent('foo-bar', { ComponentClass: FooBarComponent, template: '{{first}}' });\n\n this.render('{{foo-bar first=\"first attr\"}}');\n\n assert.equal(instance.get('first'), 'FIRST ATTR', 'component lookup uses local state');\n this.assertText('FIRST ATTR');\n\n this.runTask(function () {\n return _this4.rerender();\n });\n\n assert.equal(instance.get('first'), 'FIRST ATTR', 'component lookup uses local state during rerender');\n this.assertText('FIRST ATTR');\n\n // This is testing that passing string literals for use as initial values,\n // so there is no update step\n };\n\n _class.prototype['@test should be able to access unspecified attr #12035'] = function testShouldBeAbleToAccessUnspecifiedAttr12035(assert) {\n var _this5 = this;\n\n var instance = void 0;\n var wootVal = 'yes';\n\n var FooBarComponent = _helpers.Component.extend({\n init: function () {\n this._super.apply(this, arguments);\n instance = this;\n },\n didReceiveAttrs: function () {\n assert.equal(this.get('woot'), wootVal, 'found attr in didReceiveAttrs');\n }\n });\n this.registerComponent('foo-bar', { ComponentClass: FooBarComponent });\n\n this.render('{{foo-bar woot=woot}}', {\n woot: wootVal\n });\n\n assert.equal(instance.get('woot'), 'yes', 'component found attr');\n\n this.runTask(function () {\n return _this5.rerender();\n });\n\n assert.equal(instance.get('woot'), 'yes', 'component found attr after rerender');\n\n this.runTask(function () {\n wootVal = 'nope';\n (0, _emberMetal.set)(_this5.context, 'woot', wootVal);\n });\n\n assert.equal(instance.get('woot'), 'nope', 'component found attr after attr change');\n\n this.runTask(function () {\n wootVal = 'yes';\n (0, _emberMetal.set)(_this5.context, 'woot', wootVal);\n });\n\n assert.equal(instance.get('woot'), 'yes', 'component found attr after reset');\n };\n\n _class.prototype['@test getAttr() should return the same value as get()'] = function testGetAttrShouldReturnTheSameValueAsGet(assert) {\n var _this6 = this;\n\n assert.expect(33);\n\n var instance = void 0;\n var FooBarComponent = _helpers.Component.extend({\n init: function () {\n this._super.apply(this, arguments);\n instance = this;\n },\n didReceiveAttrs: function () {\n var rootFirstPositional = this.get('firstPositional');\n var rootFirst = this.get('first');\n var rootSecond = this.get('second');\n var attrFirstPositional = this.getAttr('firstPositional');\n var attrFirst = this.getAttr('first');\n var attrSecond = this.getAttr('second');\n\n equal(rootFirstPositional, attrFirstPositional, 'root property matches attrs value');\n equal(rootFirst, attrFirst, 'root property matches attrs value');\n equal(rootSecond, attrSecond, 'root property matches attrs value');\n }\n });\n\n FooBarComponent.reopenClass({\n positionalParams: ['firstPositional']\n });\n\n this.registerComponent('foo-bar', { ComponentClass: FooBarComponent });\n\n this.render('{{foo-bar firstPositional first=first second=second}}', {\n firstPositional: 'firstPositional',\n first: 'first',\n second: 'second'\n });\n\n assert.equal(instance.get('firstPositional'), 'firstPositional', 'matches known value');\n assert.equal(instance.get('first'), 'first', 'matches known value');\n assert.equal(instance.get('second'), 'second', 'matches known value');\n\n this.runTask(function () {\n return _this6.rerender();\n });\n\n assert.equal(instance.get('firstPositional'), 'firstPositional', 'matches known value');\n assert.equal(instance.get('first'), 'first', 'matches known value');\n assert.equal(instance.get('second'), 'second', 'matches known value');\n\n this.runTask(function () {\n (0, _emberMetal.set)(_this6.context, 'first', 'third');\n });\n\n assert.equal(instance.get('firstPositional'), 'firstPositional', 'matches known value');\n assert.equal(instance.get('first'), 'third', 'matches known value');\n assert.equal(instance.get('second'), 'second', 'matches known value');\n\n this.runTask(function () {\n (0, _emberMetal.set)(_this6.context, 'second', 'fourth');\n });\n\n assert.equal(instance.get('firstPositional'), 'firstPositional', 'matches known value');\n assert.equal(instance.get('first'), 'third', 'matches known value');\n assert.equal(instance.get('second'), 'fourth', 'matches known value');\n\n this.runTask(function () {\n (0, _emberMetal.set)(_this6.context, 'firstPositional', 'fifth');\n });\n\n assert.equal(instance.get('firstPositional'), 'fifth', 'matches known value');\n assert.equal(instance.get('first'), 'third', 'matches known value');\n assert.equal(instance.get('second'), 'fourth', 'matches known value');\n\n this.runTask(function () {\n (0, _emberMetal.set)(_this6.context, 'firstPositional', 'firstPositional');\n (0, _emberMetal.set)(_this6.context, 'first', 'first');\n (0, _emberMetal.set)(_this6.context, 'second', 'second');\n });\n\n assert.equal(instance.get('firstPositional'), 'firstPositional', 'matches known value');\n assert.equal(instance.get('first'), 'first', 'matches known value');\n assert.equal(instance.get('second'), 'second', 'matches known value');\n };\n\n _class.prototype['@test bound computed properties can be overridden in extensions, set during init, and passed in as attrs'] = function testBoundComputedPropertiesCanBeOverriddenInExtensionsSetDuringInitAndPassedInAsAttrs() {\n var FooClass = _helpers.Component.extend({\n attributeBindings: ['style'],\n style: (0, _emberMetal.computed)('height', 'color', function () {\n var height = this.get('height');\n var color = this.get('color');\n return 'height: ' + height + 'px; background-color: ' + color + ';';\n }),\n color: 'red',\n height: 20\n });\n\n var BarClass = FooClass.extend({\n init: function () {\n this._super.apply(this, arguments);\n this.height = 150;\n },\n\n color: 'yellow'\n });\n\n this.registerComponent('x-foo', { ComponentClass: FooClass });\n this.registerComponent('x-bar', { ComponentClass: BarClass });\n\n this.render('{{x-foo}}{{x-bar}}{{x-bar color=\"green\"}}');\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { style: (0, _testHelpers.styles)('height: 20px; background-color: red;') } });\n this.assertComponentElement(this.nthChild(1), { tagName: 'div', attrs: { style: (0, _testHelpers.styles)('height: 150px; background-color: yellow;') } });\n this.assertComponentElement(this.nthChild(2), { tagName: 'div', attrs: { style: (0, _testHelpers.styles)('height: 150px; background-color: green;') } });\n\n this.assertStableRerender();\n\n // No U-R\n };\n\n return _class;\n }(_testCase.RenderingTest));\n});","QUnit.module('ESLint | ember-glimmer/tests/integration/components/attrs-lookup-test.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-glimmer/tests/integration/components/attrs-lookup-test.js should pass ESLint\\n\\n');\n});\n","enifed('ember-glimmer/tests/integration/components/class-bindings-test', ['ember-babel', 'ember-glimmer/tests/utils/test-case', 'ember-glimmer/tests/utils/helpers', 'ember-glimmer/tests/utils/test-helpers', 'ember-metal', 'ember-glimmer/tests/utils/abstract-test-case'], function (_emberBabel, _testCase, _helpers, _testHelpers, _emberMetal, _abstractTestCase) {\n 'use strict';\n\n var _templateObject = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n {{foo-bar foo=foo bindIsEnabled=true isEnabled=isEnabled bindIsHappy=false isHappy=isHappy}}\\n {{foo-bar foo=foo bindIsEnabled=false isEnabled=isEnabled bindIsHappy=true isHappy=isHappy}}\\n {{foo-bar foo=foo bindIsEnabled=true isEnabled=isEnabled bindIsHappy=true isHappy=isHappy}}\\n {{foo-bar foo=foo bindIsEnabled=false isEnabled=isEnabled bindIsHappy=false isHappy=isHappy}}\\n '], ['\\n {{foo-bar foo=foo bindIsEnabled=true isEnabled=isEnabled bindIsHappy=false isHappy=isHappy}}\\n {{foo-bar foo=foo bindIsEnabled=false isEnabled=isEnabled bindIsHappy=true isHappy=isHappy}}\\n {{foo-bar foo=foo bindIsEnabled=true isEnabled=isEnabled bindIsHappy=true isHappy=isHappy}}\\n {{foo-bar foo=foo bindIsEnabled=false isEnabled=isEnabled bindIsHappy=false isHappy=isHappy}}\\n ']);\n\n (0, _testCase.moduleFor)('ClassNameBindings integration', function (_RenderingTest) {\n (0, _emberBabel.inherits)(_class, _RenderingTest);\n\n function _class() {\n (0, _emberBabel.classCallCheck)(this, _class);\n return (0, _emberBabel.possibleConstructorReturn)(this, _RenderingTest.apply(this, arguments));\n }\n\n _class.prototype['@test it can have class name bindings on the class definition'] = function testItCanHaveClassNameBindingsOnTheClassDefinition() {\n var _this2 = this;\n\n var FooBarComponent = _helpers.Component.extend({\n classNameBindings: ['foo', 'isEnabled:enabled', 'isHappy:happy:sad']\n });\n\n this.registerComponent('foo-bar', { ComponentClass: FooBarComponent, template: 'hello' });\n\n this.render('{{foo-bar foo=foo isEnabled=isEnabled isHappy=isHappy}}', { foo: 'foo', isEnabled: true, isHappy: false });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { 'class': (0, _testHelpers.classes)('ember-view foo enabled sad') }, content: 'hello' });\n\n this.runTask(function () {\n return _this2.rerender();\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { 'class': (0, _testHelpers.classes)('ember-view foo enabled sad') }, content: 'hello' });\n\n this.runTask(function () {\n (0, _emberMetal.set)(_this2.context, 'foo', 'FOO');\n (0, _emberMetal.set)(_this2.context, 'isEnabled', false);\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { 'class': (0, _testHelpers.classes)('ember-view FOO sad') }, content: 'hello' });\n\n this.runTask(function () {\n (0, _emberMetal.set)(_this2.context, 'foo', undefined);\n (0, _emberMetal.set)(_this2.context, 'isHappy', true);\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { 'class': (0, _testHelpers.classes)('ember-view happy') }, content: 'hello' });\n\n this.runTask(function () {\n (0, _emberMetal.set)(_this2.context, 'foo', 'foo');\n (0, _emberMetal.set)(_this2.context, 'isEnabled', true);\n (0, _emberMetal.set)(_this2.context, 'isHappy', false);\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { 'class': (0, _testHelpers.classes)('ember-view foo enabled sad') }, content: 'hello' });\n };\n\n _class.prototype['@test attrs in classNameBindings'] = function testAttrsInClassNameBindings() {\n var _this3 = this;\n\n var FooBarComponent = _helpers.Component.extend({\n classNameBindings: ['attrs.joker:purple:green', 'attrs.batman.robin:black:red']\n });\n\n this.registerComponent('foo-bar', { ComponentClass: FooBarComponent, template: 'hello' });\n\n this.render('{{foo-bar joker=model.wat batman=model.super}}', {\n model: { wat: false, super: { robin: true } }\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { 'class': (0, _testHelpers.classes)('ember-view green black') }, content: 'hello' });\n\n this.runTask(function () {\n return _this3.rerender();\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { 'class': (0, _testHelpers.classes)('ember-view green black') }, content: 'hello' });\n\n this.runTask(function () {\n (0, _emberMetal.set)(_this3.context, 'model.wat', true);\n (0, _emberMetal.set)(_this3.context, 'model.super.robin', false);\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { 'class': (0, _testHelpers.classes)('ember-view purple red') }, content: 'hello' });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this3.context, 'model', {\n wat: false, super: { robin: true }\n });\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { 'class': (0, _testHelpers.classes)('ember-view green black') }, content: 'hello' });\n };\n\n _class.prototype['@test it can have class name bindings in the template'] = function testItCanHaveClassNameBindingsInTheTemplate() {\n var _this4 = this;\n\n this.registerComponent('foo-bar', { template: 'hello' });\n\n this.render('{{foo-bar classNameBindings=\"model.someInitiallyTrueProperty model.someInitiallyFalseProperty model.someInitiallyUndefinedProperty :static model.isBig:big model.isOpen:open:closed model.isUp::down model.bar:isTruthy:isFalsy\"}}', {\n model: {\n someInitiallyTrueProperty: true,\n someInitiallyFalseProperty: false,\n isBig: true,\n isOpen: false,\n isUp: true,\n bar: true\n }\n });\n\n this.assertComponentElement(this.firstChild, {\n attrs: { 'class': (0, _testHelpers.classes)('ember-view some-initially-true-property static big closed isTruthy') },\n content: 'hello'\n });\n\n this.runTask(function () {\n return _this4.rerender();\n });\n\n this.assertComponentElement(this.firstChild, {\n attrs: { 'class': (0, _testHelpers.classes)('ember-view some-initially-true-property static big closed isTruthy') },\n content: 'hello'\n });\n\n this.runTask(function () {\n (0, _emberMetal.set)(_this4.context, 'model.someInitiallyTrueProperty', false);\n (0, _emberMetal.set)(_this4.context, 'model.someInitiallyFalseProperty', true);\n (0, _emberMetal.set)(_this4.context, 'model.someInitiallyUndefinedProperty', true);\n (0, _emberMetal.set)(_this4.context, 'model.isBig', false);\n (0, _emberMetal.set)(_this4.context, 'model.isOpen', true);\n (0, _emberMetal.set)(_this4.context, 'model.isUp', false);\n (0, _emberMetal.set)(_this4.context, 'model.bar', false);\n });\n\n this.assertComponentElement(this.firstChild, {\n attrs: { 'class': (0, _testHelpers.classes)('ember-view some-initially-false-property some-initially-undefined-property static open down isFalsy') },\n content: 'hello'\n });\n\n this.runTask(function () {\n (0, _emberMetal.set)(_this4.context, 'model', {\n someInitiallyTrueProperty: true,\n someInitiallyFalseProperty: false,\n someInitiallyUndefinedProperty: undefined,\n isBig: true,\n isOpen: false,\n isUp: true,\n bar: true\n });\n });\n\n this.assertComponentElement(this.firstChild, {\n attrs: { 'class': (0, _testHelpers.classes)('ember-view some-initially-true-property static big closed isTruthy') },\n content: 'hello'\n });\n };\n\n _class.prototype['@test it can have class name bindings with nested paths'] = function testItCanHaveClassNameBindingsWithNestedPaths() {\n var _this5 = this;\n\n var FooBarComponent = _helpers.Component.extend({\n classNameBindings: ['foo.bar', 'is.enabled:enabled', 'is.happy:happy:sad']\n });\n\n this.registerComponent('foo-bar', { ComponentClass: FooBarComponent, template: 'hello' });\n\n this.render('{{foo-bar foo=foo is=is}}', { foo: { bar: 'foo-bar' }, is: { enabled: true, happy: false } });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { 'class': (0, _testHelpers.classes)('ember-view foo-bar enabled sad') }, content: 'hello' });\n\n this.runTask(function () {\n return _this5.rerender();\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { 'class': (0, _testHelpers.classes)('ember-view foo-bar enabled sad') }, content: 'hello' });\n\n this.runTask(function () {\n (0, _emberMetal.set)(_this5.context, 'foo.bar', 'FOO-BAR');\n (0, _emberMetal.set)(_this5.context, 'is.enabled', false);\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { 'class': (0, _testHelpers.classes)('ember-view FOO-BAR sad') }, content: 'hello' });\n\n this.runTask(function () {\n (0, _emberMetal.set)(_this5.context, 'foo.bar', null);\n (0, _emberMetal.set)(_this5.context, 'is.happy', true);\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { 'class': (0, _testHelpers.classes)('ember-view happy') }, content: 'hello' });\n\n this.runTask(function () {\n (0, _emberMetal.set)(_this5.context, 'foo', null);\n (0, _emberMetal.set)(_this5.context, 'is', null);\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { 'class': (0, _testHelpers.classes)('ember-view sad') }, content: 'hello' });\n\n this.runTask(function () {\n (0, _emberMetal.set)(_this5.context, 'foo', { bar: 'foo-bar' });\n (0, _emberMetal.set)(_this5.context, 'is', { enabled: true, happy: false });\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { 'class': (0, _testHelpers.classes)('ember-view foo-bar enabled sad') }, content: 'hello' });\n };\n\n _class.prototype['@test it should dasherize the path when the it resolves to true'] = function testItShouldDasherizeThePathWhenTheItResolvesToTrue() {\n var _this6 = this;\n\n var FooBarComponent = _helpers.Component.extend({\n classNameBindings: ['fooBar', 'nested.fooBarBaz']\n });\n\n this.registerComponent('foo-bar', { ComponentClass: FooBarComponent, template: 'hello' });\n\n this.render('{{foo-bar fooBar=fooBar nested=nested}}', { fooBar: true, nested: { fooBarBaz: false } });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { 'class': (0, _testHelpers.classes)('ember-view foo-bar') }, content: 'hello' });\n\n this.runTask(function () {\n return _this6.rerender();\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { 'class': (0, _testHelpers.classes)('ember-view foo-bar') }, content: 'hello' });\n\n this.runTask(function () {\n (0, _emberMetal.set)(_this6.context, 'fooBar', false);\n (0, _emberMetal.set)(_this6.context, 'nested.fooBarBaz', true);\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { 'class': (0, _testHelpers.classes)('ember-view foo-bar-baz') }, content: 'hello' });\n\n this.runTask(function () {\n (0, _emberMetal.set)(_this6.context, 'fooBar', 'FOO-BAR');\n (0, _emberMetal.set)(_this6.context, 'nested.fooBarBaz', null);\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { 'class': (0, _testHelpers.classes)('ember-view FOO-BAR') }, content: 'hello' });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this6.context, 'nested', null);\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { 'class': (0, _testHelpers.classes)('ember-view FOO-BAR') }, content: 'hello' });\n\n this.runTask(function () {\n (0, _emberMetal.set)(_this6.context, 'fooBar', true);\n (0, _emberMetal.set)(_this6.context, 'nested', { fooBarBaz: false });\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { 'class': (0, _testHelpers.classes)('ember-view foo-bar') }, content: 'hello' });\n };\n\n _class.prototype['@test const bindings can be set as attrs'] = function testConstBindingsCanBeSetAsAttrs() {\n var _this7 = this;\n\n this.registerComponent('foo-bar', { template: 'hello' });\n this.render('{{foo-bar classNameBindings=\"foo:enabled:disabled\"}}', {\n foo: true\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { 'class': (0, _testHelpers.classes)('ember-view enabled') }, content: 'hello' });\n\n this.runTask(function () {\n return _this7.rerender();\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { 'class': (0, _testHelpers.classes)('ember-view enabled') }, content: 'hello' });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this7.context, 'foo', false);\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { 'class': (0, _testHelpers.classes)('ember-view disabled') }, content: 'hello' });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this7.context, 'foo', true);\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { 'class': (0, _testHelpers.classes)('ember-view enabled') }, content: 'hello' });\n };\n\n _class.prototype['@test :: class name syntax works with an empty true class'] = function testClassNameSyntaxWorksWithAnEmptyTrueClass() {\n var _this8 = this;\n\n var FooBarComponent = _helpers.Component.extend({\n classNameBindings: ['isEnabled::not-enabled']\n });\n\n this.registerComponent('foo-bar', { ComponentClass: FooBarComponent, template: 'hello' });\n\n this.render('{{foo-bar isEnabled=enabled}}', {\n enabled: false\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { 'class': (0, _testHelpers.classes)('ember-view not-enabled') }, content: 'hello' });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this8.context, 'enabled', true);\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { 'class': (0, _testHelpers.classes)('ember-view') }, content: 'hello' });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this8.context, 'enabled', false);\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { 'class': (0, _testHelpers.classes)('ember-view not-enabled') }, content: 'hello' });\n };\n\n _class.prototype['@test uses all provided static class names (issue #11193)'] = function testUsesAllProvidedStaticClassNamesIssue11193() {\n var _this9 = this;\n\n var FooBarComponent = _helpers.Component.extend({\n classNameBindings: [':class-one', ':class-two']\n });\n\n this.registerComponent('foo-bar', { ComponentClass: FooBarComponent, template: 'hello' });\n\n this.render('{{foo-bar}}', {\n enabled: false\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { 'class': (0, _testHelpers.classes)('ember-view class-one class-two') }, content: 'hello' });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this9.context, 'enabled', true);\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { 'class': (0, _testHelpers.classes)('ember-view class-one class-two') }, content: 'hello' });\n };\n\n _class.prototype['@test Providing a binding with a space in it asserts'] = function testProvidingABindingWithASpaceInItAsserts() {\n var _this10 = this;\n\n var FooBarComponent = _helpers.Component.extend({\n classNameBindings: 'i:think:i am:so:clever'\n });\n\n this.registerComponent('foo-bar', { ComponentClass: FooBarComponent, template: 'hello' });\n\n expectAssertion(function () {\n _this10.render('{{foo-bar}}');\n }, /classNameBindings must not have spaces in them/i);\n };\n\n _class.prototype['@test it asserts that items must be strings'] = function testItAssertsThatItemsMustBeStrings() {\n var _this11 = this;\n\n var FooBarComponent = _helpers.Component.extend({\n foo: 'foo',\n bar: 'bar',\n classNameBindings: ['foo',, 'bar'] // eslint-disable-line no-sparse-arrays\n });\n\n this.registerComponent('foo-bar', { ComponentClass: FooBarComponent, template: 'hello' });\n\n expectAssertion(function () {\n _this11.render('{{foo-bar}}');\n }, /classNameBindings must be non-empty strings/);\n };\n\n _class.prototype['@test it asserts that items must be non-empty strings'] = function testItAssertsThatItemsMustBeNonEmptyStrings() {\n var _this12 = this;\n\n var FooBarComponent = _helpers.Component.extend({\n foo: 'foo',\n bar: 'bar',\n classNameBindings: ['foo', '', 'bar']\n });\n\n this.registerComponent('foo-bar', { ComponentClass: FooBarComponent, template: 'hello' });\n\n expectAssertion(function () {\n _this12.render('{{foo-bar}}');\n }, /classNameBindings must be non-empty strings/);\n };\n\n _class.prototype['@test it can set class name bindings in the constructor'] = function testItCanSetClassNameBindingsInTheConstructor() {\n var _this13 = this;\n\n var FooBarComponent = _helpers.Component.extend({\n classNameBindings: ['foo'],\n\n init: function () {\n this._super();\n\n var bindings = this.classNameBindings = this.classNameBindings.slice();\n\n if (this.get('bindIsEnabled')) {\n bindings.push('isEnabled:enabled');\n }\n\n if (this.get('bindIsHappy')) {\n bindings.push('isHappy:happy:sad');\n }\n }\n });\n\n this.registerComponent('foo-bar', { ComponentClass: FooBarComponent, template: 'hello' });\n\n this.render((0, _abstractTestCase.strip)(_templateObject), { foo: 'foo', isEnabled: true, isHappy: false });\n\n this.assertComponentElement(this.nthChild(0), { tagName: 'div', attrs: { 'class': (0, _testHelpers.classes)('ember-view foo enabled') }, content: 'hello' });\n this.assertComponentElement(this.nthChild(1), { tagName: 'div', attrs: { 'class': (0, _testHelpers.classes)('ember-view foo sad') }, content: 'hello' });\n this.assertComponentElement(this.nthChild(2), { tagName: 'div', attrs: { 'class': (0, _testHelpers.classes)('ember-view foo enabled sad') }, content: 'hello' });\n this.assertComponentElement(this.nthChild(3), { tagName: 'div', attrs: { 'class': (0, _testHelpers.classes)('ember-view foo') }, content: 'hello' });\n\n this.runTask(function () {\n return _this13.rerender();\n });\n\n this.assertComponentElement(this.nthChild(0), { tagName: 'div', attrs: { 'class': (0, _testHelpers.classes)('ember-view foo enabled') }, content: 'hello' });\n this.assertComponentElement(this.nthChild(1), { tagName: 'div', attrs: { 'class': (0, _testHelpers.classes)('ember-view foo sad') }, content: 'hello' });\n this.assertComponentElement(this.nthChild(2), { tagName: 'div', attrs: { 'class': (0, _testHelpers.classes)('ember-view foo enabled sad') }, content: 'hello' });\n this.assertComponentElement(this.nthChild(3), { tagName: 'div', attrs: { 'class': (0, _testHelpers.classes)('ember-view foo') }, content: 'hello' });\n\n this.runTask(function () {\n (0, _emberMetal.set)(_this13.context, 'foo', 'FOO');\n (0, _emberMetal.set)(_this13.context, 'isEnabled', false);\n });\n\n this.assertComponentElement(this.nthChild(0), { tagName: 'div', attrs: { 'class': (0, _testHelpers.classes)('ember-view FOO') }, content: 'hello' });\n this.assertComponentElement(this.nthChild(1), { tagName: 'div', attrs: { 'class': (0, _testHelpers.classes)('ember-view FOO sad') }, content: 'hello' });\n this.assertComponentElement(this.nthChild(2), { tagName: 'div', attrs: { 'class': (0, _testHelpers.classes)('ember-view FOO sad') }, content: 'hello' });\n this.assertComponentElement(this.nthChild(3), { tagName: 'div', attrs: { 'class': (0, _testHelpers.classes)('ember-view FOO') }, content: 'hello' });\n\n this.runTask(function () {\n (0, _emberMetal.set)(_this13.context, 'foo', undefined);\n (0, _emberMetal.set)(_this13.context, 'isHappy', true);\n });\n\n this.assertComponentElement(this.nthChild(0), { tagName: 'div', attrs: { 'class': (0, _testHelpers.classes)('ember-view') }, content: 'hello' });\n this.assertComponentElement(this.nthChild(1), { tagName: 'div', attrs: { 'class': (0, _testHelpers.classes)('ember-view happy') }, content: 'hello' });\n this.assertComponentElement(this.nthChild(2), { tagName: 'div', attrs: { 'class': (0, _testHelpers.classes)('ember-view happy') }, content: 'hello' });\n this.assertComponentElement(this.nthChild(3), { tagName: 'div', attrs: { 'class': (0, _testHelpers.classes)('ember-view') }, content: 'hello' });\n\n this.runTask(function () {\n (0, _emberMetal.set)(_this13.context, 'foo', 'foo');\n (0, _emberMetal.set)(_this13.context, 'isEnabled', true);\n (0, _emberMetal.set)(_this13.context, 'isHappy', false);\n });\n\n this.assertComponentElement(this.nthChild(0), { tagName: 'div', attrs: { 'class': (0, _testHelpers.classes)('ember-view foo enabled') }, content: 'hello' });\n this.assertComponentElement(this.nthChild(1), { tagName: 'div', attrs: { 'class': (0, _testHelpers.classes)('ember-view foo sad') }, content: 'hello' });\n this.assertComponentElement(this.nthChild(2), { tagName: 'div', attrs: { 'class': (0, _testHelpers.classes)('ember-view foo enabled sad') }, content: 'hello' });\n this.assertComponentElement(this.nthChild(3), { tagName: 'div', attrs: { 'class': (0, _testHelpers.classes)('ember-view foo') }, content: 'hello' });\n };\n\n _class.prototype['@test using a computed property for classNameBindings triggers an assertion'] = function testUsingAComputedPropertyForClassNameBindingsTriggersAnAssertion() {\n var _this14 = this;\n\n var FooBarComponent = _helpers.Component.extend({\n classNameBindings: (0, _emberMetal.computed)(function () {\n return ['isHappy:happy:sad'];\n })\n });\n\n this.registerComponent('foo-bar', { ComponentClass: FooBarComponent, template: 'hello' });\n\n expectAssertion(function () {\n _this14.render('{{foo-bar}}');\n }, /Only arrays are allowed/);\n };\n\n return _class;\n }(_testCase.RenderingTest));\n\n (0, _testCase.moduleFor)('ClassBinding integration', function (_RenderingTest2) {\n (0, _emberBabel.inherits)(_class2, _RenderingTest2);\n\n function _class2() {\n (0, _emberBabel.classCallCheck)(this, _class2);\n return (0, _emberBabel.possibleConstructorReturn)(this, _RenderingTest2.apply(this, arguments));\n }\n\n _class2.prototype['@test it should apply classBinding without condition always'] = function testItShouldApplyClassBindingWithoutConditionAlways() {\n var _this16 = this;\n\n this.registerComponent('foo-bar', { template: 'hello' });\n\n this.render('{{foo-bar classBinding=\":foo\"}}');\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', content: 'hello', attrs: { 'class': (0, _testHelpers.classes)('foo ember-view') } });\n\n this.runTask(function () {\n return _this16.rerender();\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', content: 'hello', attrs: { 'class': (0, _testHelpers.classes)('foo ember-view') } });\n };\n\n _class2.prototype['@test it should merge classBinding with class'] = function testItShouldMergeClassBindingWithClass() {\n var _this17 = this;\n\n this.registerComponent('foo-bar', { template: 'hello' });\n\n this.render('{{foo-bar classBinding=\"birdman:respeck\" class=\"myName\"}}', { birdman: true });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', content: 'hello', attrs: { 'class': (0, _testHelpers.classes)('respeck myName ember-view') } });\n\n this.runTask(function () {\n return _this17.rerender();\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', content: 'hello', attrs: { 'class': (0, _testHelpers.classes)('respeck myName ember-view') } });\n };\n\n _class2.prototype['@test it should apply classBinding with only truthy condition'] = function testItShouldApplyClassBindingWithOnlyTruthyCondition() {\n var _this18 = this;\n\n this.registerComponent('foo-bar', { template: 'hello' });\n\n this.render('{{foo-bar classBinding=\"myName:respeck\"}}', { myName: true });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', content: 'hello', attrs: { 'class': (0, _testHelpers.classes)('respeck ember-view') } });\n\n this.runTask(function () {\n return _this18.rerender();\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', content: 'hello', attrs: { 'class': (0, _testHelpers.classes)('respeck ember-view') } });\n };\n\n _class2.prototype['@test it should apply classBinding with only falsy condition'] = function testItShouldApplyClassBindingWithOnlyFalsyCondition() {\n var _this19 = this;\n\n this.registerComponent('foo-bar', { template: 'hello' });\n\n this.render('{{foo-bar classBinding=\"myName::shade\"}}', { myName: false });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', content: 'hello', attrs: { 'class': (0, _testHelpers.classes)('shade ember-view') } });\n\n this.runTask(function () {\n return _this19.rerender();\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', content: 'hello', attrs: { 'class': (0, _testHelpers.classes)('shade ember-view') } });\n };\n\n _class2.prototype['@test it should apply nothing when classBinding is falsy but only supplies truthy class'] = function testItShouldApplyNothingWhenClassBindingIsFalsyButOnlySuppliesTruthyClass() {\n var _this20 = this;\n\n this.registerComponent('foo-bar', { template: 'hello' });\n\n this.render('{{foo-bar classBinding=\"myName:respeck\"}}', { myName: false });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', content: 'hello', attrs: { 'class': (0, _testHelpers.classes)('ember-view') } });\n\n this.runTask(function () {\n return _this20.rerender();\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', content: 'hello', attrs: { 'class': (0, _testHelpers.classes)('ember-view') } });\n };\n\n _class2.prototype['@test it should apply nothing when classBinding is truthy but only supplies falsy class'] = function testItShouldApplyNothingWhenClassBindingIsTruthyButOnlySuppliesFalsyClass() {\n var _this21 = this;\n\n this.registerComponent('foo-bar', { template: 'hello' });\n\n this.render('{{foo-bar classBinding=\"myName::shade\"}}', { myName: true });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', content: 'hello', attrs: { 'class': (0, _testHelpers.classes)('ember-view') } });\n\n this.runTask(function () {\n return _this21.rerender();\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', content: 'hello', attrs: { 'class': (0, _testHelpers.classes)('ember-view') } });\n };\n\n _class2.prototype['@test it should apply classBinding with falsy condition'] = function testItShouldApplyClassBindingWithFalsyCondition() {\n var _this22 = this;\n\n this.registerComponent('foo-bar', { template: 'hello' });\n\n this.render('{{foo-bar classBinding=\"swag:fresh:scrub\"}}', { swag: false });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', content: 'hello', attrs: { 'class': (0, _testHelpers.classes)('scrub ember-view') } });\n\n this.runTask(function () {\n return _this22.rerender();\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', content: 'hello', attrs: { 'class': (0, _testHelpers.classes)('scrub ember-view') } });\n };\n\n _class2.prototype['@test it should apply classBinding with truthy condition'] = function testItShouldApplyClassBindingWithTruthyCondition() {\n var _this23 = this;\n\n this.registerComponent('foo-bar', { template: 'hello' });\n\n this.render('{{foo-bar classBinding=\"swag:fresh:scrub\"}}', { swag: true });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', content: 'hello', attrs: { 'class': (0, _testHelpers.classes)('fresh ember-view') } });\n\n this.runTask(function () {\n return _this23.rerender();\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', content: 'hello', attrs: { 'class': (0, _testHelpers.classes)('fresh ember-view') } });\n };\n\n return _class2;\n }(_testCase.RenderingTest));\n});","QUnit.module('ESLint | ember-glimmer/tests/integration/components/class-bindings-test.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-glimmer/tests/integration/components/class-bindings-test.js should pass ESLint\\n\\n');\n});\n","enifed('ember-glimmer/tests/integration/components/contextual-components-test', ['ember-babel', 'ember-utils', 'ember-glimmer/tests/utils/helpers', 'ember-glimmer/tests/utils/abstract-test-case', 'ember-glimmer/tests/utils/test-case', 'ember-metal', 'ember-runtime/system/native_array'], function (_emberBabel, _emberUtils, _helpers, _abstractTestCase, _testCase, _emberMetal, _native_array) {\n 'use strict';\n\n var _templateObject = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n {{component (component \"-looked-up\") \"Hodari\" greeting=\"Hodi\"}}'], ['\\n {{component (component \"-looked-up\") \"Hodari\" greeting=\"Hodi\"}}']),\n _templateObject2 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n {{component (component \"-looked-up\" \"Hodari\" greeting=\"Hodi\")\\n greeting=\"Hola\"}}'], ['\\n {{component (component \"-looked-up\" \"Hodari\" greeting=\"Hodi\")\\n greeting=\"Hola\"}}']),\n _templateObject3 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n {{#with (hash comp=(component \"-looked-up\" greeting=model.greeting)) as |my|}}\\n {{#my.comp}}{{/my.comp}}\\n {{/with}}'], ['\\n {{#with (hash comp=(component \"-looked-up\" greeting=model.greeting)) as |my|}}\\n {{#my.comp}}{{/my.comp}}\\n {{/with}}']),\n _templateObject4 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n {{#with (component \"-looked-up\" greeting=\"Hola\" name=\"Dolores\" age=33) as |first|}}\\n {{#with (component first greeting=\"Hej\" name=\"Sigmundur\") as |second|}}\\n {{component second greeting=model.greeting}}\\n {{/with}}\\n {{/with}}'], ['\\n {{#with (component \"-looked-up\" greeting=\"Hola\" name=\"Dolores\" age=33) as |first|}}\\n {{#with (component first greeting=\"Hej\" name=\"Sigmundur\") as |second|}}\\n {{component second greeting=model.greeting}}\\n {{/with}}\\n {{/with}}']),\n _templateObject5 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n {{#with (hash lookedup=(component \"-looked-up\")) as |object|}}\\n {{object.lookedup}}\\n {{/with}}'], ['\\n {{#with (hash lookedup=(component \"-looked-up\")) as |object|}}\\n {{object.lookedup}}\\n {{/with}}']),\n _templateObject6 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n {{#with (hash lookedup=(component \"-looked-up\")) as |object|}}\\n {{object.lookedup expectedText=model.expectedText}}\\n {{/with}}'], ['\\n {{#with (hash lookedup=(component \"-looked-up\")) as |object|}}\\n {{object.lookedup expectedText=model.expectedText}}\\n {{/with}}']),\n _templateObject7 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n {{#with (hash lookedup=(component \"-looked-up\" expectedText=model.expectedText)) as |object|}}\\n {{object.lookedup}}\\n {{/with}}'], ['\\n {{#with (hash lookedup=(component \"-looked-up\" expectedText=model.expectedText)) as |object|}}\\n {{object.lookedup}}\\n {{/with}}']),\n _templateObject8 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n {{#with (hash lookedup=(component \"-looked-up\")) as |object|}}\\n {{object.lookedup model.expectedText \"Hola\"}}\\n {{/with}}'], ['\\n {{#with (hash lookedup=(component \"-looked-up\")) as |object|}}\\n {{object.lookedup model.expectedText \"Hola\"}}\\n {{/with}}']),\n _templateObject9 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n {{#with (hash my-component=(component \\'my-component\\' first)) as |c|}}\\n {{c.my-component}}\\n {{/with}}'], ['\\n {{#with (hash my-component=(component \\'my-component\\' first)) as |c|}}\\n {{c.my-component}}\\n {{/with}}']),\n _templateObject10 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n {{#my-component my-attr=myProp as |api|}}\\n {{api.my-nested-component}}\\n {{/my-component}}\\n <br>\\n <button onclick={{action \\'changeValue\\'}}>Change value</button>'], ['\\n {{#my-component my-attr=myProp as |api|}}\\n {{api.my-nested-component}}\\n {{/my-component}}\\n <br>\\n <button onclick={{action \\'changeValue\\'}}>Change value</button>']),\n _templateObject11 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n {{#select-box as |sb|}}\\n {{sb.option label=\"Foo\"}}\\n {{sb.option}}\\n {{/select-box}}'], ['\\n {{#select-box as |sb|}}\\n {{sb.option label=\"Foo\"}}\\n {{sb.option}}\\n {{/select-box}}']),\n _templateObject12 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n <button {{action (action (mut val) 10)}} class=\"my-button\">\\n Change to 10\\n </button>'], ['\\n <button {{action (action (mut val) 10)}} class=\"my-button\">\\n Change to 10\\n </button>']),\n _templateObject13 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n {{component (component \"change-button\" model.val2)}}\\n <span class=\"value\">{{model.val2}}</span>'], ['\\n {{component (component \"change-button\" model.val2)}}\\n <span class=\"value\">{{model.val2}}</span>']),\n _templateObject14 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n message: {{message}}{{inner-component message=message}}\\n <button onclick={{action \"change\"}} />'], ['\\n message: {{message}}{{inner-component message=message}}\\n <button onclick={{action \"change\"}} />']),\n _templateObject15 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n {{#with (hash ctxCmp=(component \"my-comp\" isOpen=isOpen)) as |thing|}}\\n {{#thing.ctxCmp}}This is a contextual component{{/thing.ctxCmp}}\\n {{/with}}\\n '], ['\\n {{#with (hash ctxCmp=(component \"my-comp\" isOpen=isOpen)) as |thing|}}\\n {{#thing.ctxCmp}}This is a contextual component{{/thing.ctxCmp}}\\n {{/with}}\\n ']),\n _templateObject16 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n {{#with (hash ctxCmp=(component compName isOpen=isOpen)) as |thing|}}\\n {{#thing.ctxCmp}}This is a contextual component{{/thing.ctxCmp}}\\n {{/with}}\\n '], ['\\n {{#with (hash ctxCmp=(component compName isOpen=isOpen)) as |thing|}}\\n {{#thing.ctxCmp}}This is a contextual component{{/thing.ctxCmp}}\\n {{/with}}\\n ']),\n _templateObject17 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n <button {{action (action (mut val) 10)}} class=\"my-button\">\\n Change to 10\\n </button>'], ['\\n <button {{action (action (mut val) 10)}} class=\"my-button\">\\n Change to 10\\n </button>']);\n\n (0, _testCase.moduleFor)('Components test: contextual components', function (_RenderingTest) {\n (0, _emberBabel.inherits)(_class, _RenderingTest);\n\n function _class() {\n (0, _emberBabel.classCallCheck)(this, _class);\n return (0, _emberBabel.possibleConstructorReturn)(this, _RenderingTest.apply(this, arguments));\n }\n\n _class.prototype['@test renders with component helper'] = function testRendersWithComponentHelper() {\n var _this2 = this;\n\n var expectedText = 'Hodi';\n\n this.registerComponent('-looked-up', {\n template: expectedText\n });\n\n this.render('{{component (component \"-looked-up\")}}');\n\n this.assertText(expectedText);\n\n this.runTask(function () {\n return _this2.rerender();\n });\n\n this.assertText(expectedText);\n };\n\n _class.prototype['@test renders with component helper with invocation params, hash'] = function testRendersWithComponentHelperWithInvocationParamsHash() {\n var _this3 = this;\n\n this.registerComponent('-looked-up', {\n ComponentClass: _helpers.Component.extend().reopenClass({\n positionalParams: ['name']\n }),\n template: '{{greeting}} {{name}}'\n });\n\n this.render((0, _abstractTestCase.strip)(_templateObject));\n\n this.assertText('Hodi Hodari');\n\n this.runTask(function () {\n return _this3.rerender();\n });\n\n this.assertText('Hodi Hodari');\n };\n\n _class.prototype['@test GH#13742 keeps nested rest positional parameters if rendered with no positional parameters'] = function testGH13742KeepsNestedRestPositionalParametersIfRenderedWithNoPositionalParameters() {\n var _this4 = this;\n\n this.registerComponent('-looked-up', {\n ComponentClass: _helpers.Component.extend().reopenClass({\n positionalParams: 'params'\n }),\n template: '{{#each params as |p|}}{{p}}{{/each}}'\n });\n\n this.render('{{component (component \"-looked-up\" model.greeting model.name)}}', {\n model: {\n greeting: 'Gabon ',\n name: 'Zack'\n }\n });\n\n this.assertText('Gabon Zack');\n\n this.runTask(function () {\n return _this4.rerender();\n });\n\n this.assertText('Gabon Zack');\n\n this.runTask(function () {\n return _this4.context.set('model.greeting', 'Good morning ');\n });\n\n this.assertText('Good morning Zack');\n\n this.runTask(function () {\n return _this4.context.set('model.name', 'Matthew');\n });\n\n this.assertText('Good morning Matthew');\n\n this.runTask(function () {\n return _this4.context.set('model', { greeting: 'Gabon ', name: 'Zack' });\n });\n\n this.assertText('Gabon Zack');\n };\n\n _class.prototype['@test overwrites nested rest positional parameters if rendered with positional parameters'] = function testOverwritesNestedRestPositionalParametersIfRenderedWithPositionalParameters() {\n var _this5 = this;\n\n this.registerComponent('-looked-up', {\n ComponentClass: _helpers.Component.extend().reopenClass({\n positionalParams: 'params'\n }),\n template: '{{#each params as |p|}}{{p}}{{/each}}'\n });\n\n this.render('{{component (component \"-looked-up\" model.greeting model.name) model.name model.greeting}}', {\n model: {\n greeting: 'Gabon ',\n name: 'Zack'\n }\n });\n\n this.assertText('ZackGabon ');\n\n this.runTask(function () {\n return _this5.rerender();\n });\n\n this.assertText('ZackGabon ');\n\n this.runTask(function () {\n return _this5.context.set('model.greeting', 'Good morning ');\n });\n\n this.assertText('ZackGood morning ');\n\n this.runTask(function () {\n return _this5.context.set('model.name', 'Matthew');\n });\n\n this.assertText('MatthewGood morning ');\n\n this.runTask(function () {\n return _this5.context.set('model', { greeting: 'Gabon ', name: 'Zack' });\n });\n\n this.assertText('ZackGabon ');\n };\n\n _class.prototype['@test GH#13742 keeps nested rest positional parameters if nested and rendered with no positional parameters'] = function testGH13742KeepsNestedRestPositionalParametersIfNestedAndRenderedWithNoPositionalParameters() {\n var _this6 = this;\n\n this.registerComponent('-looked-up', {\n ComponentClass: _helpers.Component.extend().reopenClass({\n positionalParams: 'params'\n }),\n template: '{{#each params as |p|}}{{p}}{{/each}}'\n });\n\n this.render('{{component (component (component \"-looked-up\" model.greeting model.name))}}', {\n model: {\n greeting: 'Gabon ',\n name: 'Zack'\n }\n });\n\n this.assertText('Gabon Zack');\n\n this.runTask(function () {\n return _this6.rerender();\n });\n\n this.assertText('Gabon Zack');\n\n this.runTask(function () {\n return _this6.context.set('model.greeting', 'Good morning ');\n });\n\n this.assertText('Good morning Zack');\n\n this.runTask(function () {\n return _this6.context.set('model.name', 'Matthew');\n });\n\n this.assertText('Good morning Matthew');\n\n this.runTask(function () {\n return _this6.context.set('model', { greeting: 'Gabon ', name: 'Zack' });\n });\n\n this.assertText('Gabon Zack');\n };\n\n _class.prototype['@test overwrites nested rest positional parameters if nested with new pos params and rendered with no positional parameters'] = function testOverwritesNestedRestPositionalParametersIfNestedWithNewPosParamsAndRenderedWithNoPositionalParameters() {\n var _this7 = this;\n\n this.registerComponent('-looked-up', {\n ComponentClass: _helpers.Component.extend().reopenClass({\n positionalParams: 'params'\n }),\n template: '{{#each params as |p|}}{{p}}{{/each}}'\n });\n\n this.render('{{component (component (component \"-looked-up\" model.greeting model.name) model.name model.greeting)}}', {\n model: {\n greeting: 'Gabon ',\n name: 'Zack'\n }\n });\n\n this.assertText('ZackGabon ');\n\n this.runTask(function () {\n return _this7.rerender();\n });\n\n this.assertText('ZackGabon ');\n\n this.runTask(function () {\n return _this7.context.set('model.greeting', 'Good morning ');\n });\n\n this.assertText('ZackGood morning ');\n\n this.runTask(function () {\n return _this7.context.set('model.name', 'Matthew');\n });\n\n this.assertText('MatthewGood morning ');\n\n this.runTask(function () {\n return _this7.context.set('model', { greeting: 'Gabon ', name: 'Zack' });\n });\n\n this.assertText('ZackGabon ');\n };\n\n _class.prototype['@test renders with component helper with curried params, hash'] = function testRendersWithComponentHelperWithCurriedParamsHash() {\n var _this8 = this;\n\n this.registerComponent('-looked-up', {\n ComponentClass: _helpers.Component.extend().reopenClass({\n positionalParams: ['name']\n }),\n template: '{{greeting}} {{name}}'\n });\n\n this.render((0, _abstractTestCase.strip)(_templateObject2));\n\n this.assertText('Hola Hodari');\n\n this.runTask(function () {\n return _this8.rerender();\n });\n\n this.assertText('Hola Hodari');\n };\n\n _class.prototype['@test updates when component path is bound'] = function testUpdatesWhenComponentPathIsBound() {\n var _this9 = this;\n\n this.registerComponent('-mandarin', {\n template: 'ni hao'\n });\n\n this.registerComponent('-hindi', {\n template: 'Namaste'\n });\n\n this.render('{{component (component model.lookupComponent)}}', {\n model: {\n lookupComponent: '-mandarin'\n }\n });\n\n this.assertText('ni hao');\n\n this.runTask(function () {\n return _this9.rerender();\n });\n\n this.assertText('ni hao');\n\n this.runTask(function () {\n return _this9.context.set('model.lookupComponent', '-hindi');\n });\n\n this.assertText('Namaste');\n\n this.runTask(function () {\n return _this9.context.set('model', { lookupComponent: '-mandarin' });\n });\n\n this.assertText('ni hao');\n };\n\n _class.prototype['@test updates when curried hash argument is bound'] = function testUpdatesWhenCurriedHashArgumentIsBound() {\n var _this10 = this;\n\n this.registerComponent('-looked-up', {\n template: '{{greeting}}'\n });\n\n this.render('{{component (component \"-looked-up\" greeting=model.greeting)}}', {\n model: {\n greeting: 'Hodi'\n }\n });\n\n this.assertText('Hodi');\n\n this.runTask(function () {\n return _this10.rerender();\n });\n\n this.assertText('Hodi');\n\n this.runTask(function () {\n return _this10.context.set('model.greeting', 'Hola');\n });\n\n this.assertText('Hola');\n\n this.runTask(function () {\n return _this10.context.set('model', { greeting: 'Hodi' });\n });\n\n this.assertText('Hodi');\n };\n\n _class.prototype['@test updates when curried hash arguments is bound in block form'] = function testUpdatesWhenCurriedHashArgumentsIsBoundInBlockForm() {\n var _this11 = this;\n\n this.registerComponent('-looked-up', {\n template: '{{greeting}}'\n });\n\n this.render((0, _abstractTestCase.strip)(_templateObject3), {\n model: {\n greeting: 'Hodi'\n }\n });\n\n this.assertText('Hodi');\n\n this.runTask(function () {\n return _this11.rerender();\n });\n\n this.assertText('Hodi');\n\n this.runTask(function () {\n return _this11.context.set('model.greeting', 'Hola');\n });\n\n this.assertText('Hola');\n\n this.runTask(function () {\n return _this11.context.set('model', { greeting: 'Hodi' });\n });\n\n this.assertText('Hodi');\n };\n\n _class.prototype['@test nested components overwrite named positional parameters'] = function testNestedComponentsOverwriteNamedPositionalParameters() {\n var _this12 = this;\n\n this.registerComponent('-looked-up', {\n ComponentClass: _helpers.Component.extend().reopenClass({\n positionalParams: ['name', 'age']\n }),\n template: '{{name}} {{age}}'\n });\n\n this.render('{{component (component (component \"-looked-up\" \"Sergio\" 29) \"Marvin\" 21) \"Hodari\"}}');\n\n this.assertText('Hodari 21');\n\n this.runTask(function () {\n return _this12.rerender();\n });\n\n this.assertText('Hodari 21');\n };\n\n _class.prototype['@test nested components overwrite hash parameters'] = function testNestedComponentsOverwriteHashParameters() {\n var _this13 = this;\n\n this.registerComponent('-looked-up', {\n template: '{{greeting}} {{name}} {{age}}'\n });\n\n this.render((0, _abstractTestCase.strip)(_templateObject4), {\n model: {\n greeting: 'Hodi'\n }\n });\n\n this.assertText('Hodi Sigmundur 33');\n\n this.runTask(function () {\n return _this13.rerender();\n });\n\n this.assertText('Hodi Sigmundur 33');\n\n this.runTask(function () {\n return _this13.context.set('model.greeting', 'Kaixo');\n });\n\n this.assertText('Kaixo Sigmundur 33');\n\n this.runTask(function () {\n return _this13.context.set('model', { greeting: 'Hodi' });\n });\n\n this.assertText('Hodi Sigmundur 33');\n };\n\n _class.prototype['@test bound outer named parameters get updated in the right scope'] = function testBoundOuterNamedParametersGetUpdatedInTheRightScope() {\n var _this14 = this;\n\n this.registerComponent('-inner-component', {\n ComponentClass: _helpers.Component.extend().reopenClass({\n positionalParams: ['comp']\n }),\n template: '{{component comp \"Inner\"}}'\n });\n\n this.registerComponent('-looked-up', {\n ComponentClass: _helpers.Component.extend().reopenClass({\n positionalParams: ['name', 'age']\n }),\n template: '{{name}} {{age}}'\n });\n\n this.render('{{component \"-inner-component\" (component \"-looked-up\" model.outerName model.outerAge)}}', {\n model: {\n outerName: 'Outer',\n outerAge: 28\n }\n });\n\n this.assertText('Inner 28');\n\n this.runTask(function () {\n return _this14.rerender();\n });\n\n this.assertText('Inner 28');\n\n this.runTask(function () {\n return _this14.context.set('model.outerAge', 29);\n });\n\n this.assertText('Inner 29');\n\n this.runTask(function () {\n return _this14.context.set('model.outerName', 'Not outer');\n });\n\n this.assertText('Inner 29');\n\n this.runTask(function () {\n _this14.context.set('model', {\n outerName: 'Outer',\n outerAge: 28\n });\n });\n\n this.assertText('Inner 28');\n };\n\n _class.prototype['@test bound outer hash parameters get updated in the right scope'] = function testBoundOuterHashParametersGetUpdatedInTheRightScope() {\n var _this15 = this;\n\n this.registerComponent('-inner-component', {\n ComponentClass: _helpers.Component.extend().reopenClass({\n positionalParams: ['comp']\n }),\n template: '{{component comp name=\"Inner\"}}'\n });\n\n this.registerComponent('-looked-up', {\n template: '{{name}} {{age}}'\n });\n\n this.render('{{component \"-inner-component\" (component \"-looked-up\" name=model.outerName age=model.outerAge)}}', {\n model: {\n outerName: 'Outer',\n outerAge: 28\n }\n });\n\n this.assertText('Inner 28');\n\n this.runTask(function () {\n return _this15.rerender();\n });\n\n this.assertText('Inner 28');\n\n this.runTask(function () {\n return _this15.context.set('model.outerAge', 29);\n });\n\n this.assertText('Inner 29');\n\n this.runTask(function () {\n return _this15.context.set('model.outerName', 'Not outer');\n });\n\n this.assertText('Inner 29');\n\n this.runTask(function () {\n _this15.context.set('model', {\n outerName: 'Outer',\n outerAge: 28\n });\n });\n\n this.assertText('Inner 28');\n };\n\n _class.prototype['@test conflicting positional and hash parameters raise and assertion if in the same component context'] = function testConflictingPositionalAndHashParametersRaiseAndAssertionIfInTheSameComponentContext() {\n var _this16 = this;\n\n this.registerComponent('-looked-up', {\n ComponentClass: _helpers.Component.extend().reopenClass({\n positionalParams: ['name']\n }),\n template: '{{greeting}} {{name}}'\n });\n\n expectAssertion(function () {\n _this16.render('{{component (component \"-looked-up\" \"Hodari\" name=\"Sergio\") \"Hodari\" greeting=\"Hodi\"}}');\n }, 'You cannot specify both a positional param (at position 0) and the hash argument `name`.');\n };\n\n _class.prototype['@test conflicting positional and hash parameters does not raise an assertion if rerendered'] = function testConflictingPositionalAndHashParametersDoesNotRaiseAnAssertionIfRerendered() {\n var _this17 = this;\n\n // In some cases, rerendering with a positional param used to cause an\n // assertion. This test checks it does not.\n this.registerComponent('-looked-up', {\n ComponentClass: _helpers.Component.extend().reopenClass({\n positionalParams: ['name']\n }),\n template: '{{greeting}} {{name}}'\n });\n\n this.render('{{component (component \"-looked-up\" model.name greeting=\"Hodi\")}}', {\n model: {\n name: 'Hodari'\n }\n });\n\n this.assertText('Hodi Hodari');\n\n this.runTask(function () {\n return _this17.rerender();\n });\n\n this.assertText('Hodi Hodari');\n\n this.runTask(function () {\n return _this17.context.set('model.name', 'Sergio');\n });\n\n this.assertText('Hodi Sergio');\n\n this.runTask(function () {\n return _this17.context.set('model', { name: 'Hodari' });\n });\n\n this.assertText('Hodi Hodari');\n };\n\n _class.prototype['@test conflicting positional and hash parameters does not raise an assertion if in different component context'] = function testConflictingPositionalAndHashParametersDoesNotRaiseAnAssertionIfInDifferentComponentContext() {\n var _this18 = this;\n\n this.registerComponent('-looked-up', {\n ComponentClass: _helpers.Component.extend().reopenClass({\n positionalParams: ['name']\n }),\n template: '{{greeting}} {{name}}'\n });\n\n this.render('{{component (component \"-looked-up\" \"Hodari\") name=\"Sergio\" greeting=\"Hodi\"}}');\n\n this.assertText('Hodi Sergio');\n\n this.runTask(function () {\n return _this18.rerender();\n });\n\n this.assertText('Hodi Sergio');\n };\n\n _class.prototype['@test raises an asserton when component path is null'] = function testRaisesAnAssertonWhenComponentPathIsNull() {\n var _this19 = this;\n\n expectAssertion(function () {\n _this19.render('{{component (component lookupComponent)}}');\n });\n };\n\n _class.prototype['@test raises an assertion when component path is not a component name (static)'] = function testRaisesAnAssertionWhenComponentPathIsNotAComponentNameStatic() {\n var _this20 = this;\n\n expectAssertion(function () {\n _this20.render('{{component (component \"not-a-component\")}}');\n }, 'The component helper cannot be used without a valid component name. You used \"not-a-component\" via (component \"not-a-component\")');\n };\n\n _class.prototype['@test raises an assertion when component path is not a component name (dynamic)'] = function testRaisesAnAssertionWhenComponentPathIsNotAComponentNameDynamic() {\n var _this21 = this;\n\n expectAssertion(function () {\n _this21.render('{{component (component compName)}}', {\n compName: 'not-a-component'\n });\n }, /The component helper cannot be used without a valid component name. You used \"not-a-component\" via \\(component .*\\)/);\n };\n\n _class.prototype['@test renders with dot path'] = function testRendersWithDotPath() {\n var _this22 = this;\n\n var expectedText = 'Hodi';\n this.registerComponent('-looked-up', {\n template: expectedText\n });\n\n this.render((0, _abstractTestCase.strip)(_templateObject5));\n\n this.assertText(expectedText);\n\n this.runTask(function () {\n return _this22.rerender();\n });\n\n this.assertText(expectedText);\n };\n\n _class.prototype['@test renders with dot path and attr'] = function testRendersWithDotPathAndAttr() {\n var _this23 = this;\n\n var expectedText = 'Hodi';\n this.registerComponent('-looked-up', {\n template: '{{expectedText}}'\n });\n\n this.render((0, _abstractTestCase.strip)(_templateObject6), {\n model: {\n expectedText: expectedText\n }\n });\n\n this.assertText(expectedText);\n\n this.runTask(function () {\n return _this23.rerender();\n });\n\n this.assertText(expectedText);\n\n this.runTask(function () {\n return _this23.context.set('model.expectedText', 'Hola');\n });\n\n this.assertText('Hola');\n\n this.runTask(function () {\n return _this23.context.set('model', { expectedText: expectedText });\n });\n\n this.assertText(expectedText);\n };\n\n _class.prototype['@test renders with dot path and curried over attr'] = function testRendersWithDotPathAndCurriedOverAttr() {\n var _this24 = this;\n\n var expectedText = 'Hodi';\n this.registerComponent('-looked-up', {\n template: '{{expectedText}}'\n });\n\n this.render((0, _abstractTestCase.strip)(_templateObject7), {\n model: {\n expectedText: expectedText\n }\n });\n\n this.assertText(expectedText);\n\n this.runTask(function () {\n return _this24.rerender();\n });\n\n this.assertText(expectedText);\n\n this.runTask(function () {\n return _this24.context.set('model.expectedText', 'Hola');\n });\n\n this.assertText('Hola');\n\n this.runTask(function () {\n return _this24.context.set('model', { expectedText: expectedText });\n });\n\n this.assertText(expectedText);\n };\n\n _class.prototype['@test renders with dot path and with rest positional parameters'] = function testRendersWithDotPathAndWithRestPositionalParameters() {\n var _this25 = this;\n\n this.registerComponent('-looked-up', {\n ComponentClass: _helpers.Component.extend().reopenClass({\n positionalParams: 'params'\n }),\n template: '{{params}}'\n });\n\n var expectedText = 'Hodi';\n\n this.render((0, _abstractTestCase.strip)(_templateObject8), {\n model: {\n expectedText: expectedText\n }\n });\n\n this.assertText(expectedText + ',Hola');\n\n this.runTask(function () {\n return _this25.rerender();\n });\n\n this.assertText(expectedText + ',Hola');\n\n this.runTask(function () {\n return _this25.context.set('model.expectedText', 'Kaixo');\n });\n\n this.assertText('Kaixo,Hola');\n\n this.runTask(function () {\n return _this25.context.set('model', { expectedText: expectedText });\n });\n\n this.assertText(expectedText + ',Hola');\n };\n\n _class.prototype['@test renders with dot path and rest parameter does not leak'] = function testRendersWithDotPathAndRestParameterDoesNotLeak(assert) {\n // In the original implementation, positional parameters were not handled\n // correctly causing the first positional parameter to be the contextual\n // component itself.\n var value = false;\n\n this.registerComponent('my-component', {\n ComponentClass: _helpers.Component.extend({\n didReceiveAttrs: function () {\n value = this.getAttr('value');\n }\n }).reopenClass({\n positionalParams: ['value']\n })\n });\n\n this.render((0, _abstractTestCase.strip)(_templateObject9), { first: 'first' });\n\n assert.equal(value, 'first', 'value is the expected parameter');\n };\n\n _class.prototype['@test renders with dot path and updates attributes'] = function testRendersWithDotPathAndUpdatesAttributes(assert) {\n var _this26 = this;\n\n this.registerComponent('my-nested-component', {\n ComponentClass: _helpers.Component.extend({\n didReceiveAttrs: function () {\n this.set('myProp', this.getAttr('my-parent-attr'));\n }\n }),\n template: '<span id=\"nested-prop\">{{myProp}}</span>'\n });\n\n this.registerComponent('my-component', {\n template: '{{yield (hash my-nested-component=(component \"my-nested-component\" my-parent-attr=my-attr))}}'\n });\n\n this.registerComponent('my-action-component', {\n ComponentClass: _helpers.Component.extend({\n actions: {\n changeValue: function () {\n this.incrementProperty('myProp');\n }\n }\n }),\n template: (0, _abstractTestCase.strip)(_templateObject10)\n });\n\n this.render('{{my-action-component myProp=model.myProp}}', {\n model: {\n myProp: 1\n }\n });\n\n assert.equal(this.$('#nested-prop').text(), '1');\n\n this.runTask(function () {\n return _this26.rerender();\n });\n\n assert.equal(this.$('#nested-prop').text(), '1');\n\n this.runTask(function () {\n return _this26.$('button').click();\n });\n\n assert.equal(this.$('#nested-prop').text(), '2');\n\n this.runTask(function () {\n return _this26.$('button').click();\n });\n\n assert.equal(this.$('#nested-prop').text(), '3');\n\n this.runTask(function () {\n return _this26.context.set('model', { myProp: 1 });\n });\n\n assert.equal(this.$('#nested-prop').text(), '1');\n };\n\n _class.prototype['@test adding parameters to a contextual component\\'s instance does not add it to other instances'] = function testAddingParametersToAContextualComponentSInstanceDoesNotAddItToOtherInstances() {\n var _this27 = this;\n\n // If parameters and attributes are not handled correctly, setting a value\n // in an invokation can leak to others invocation.\n this.registerComponent('select-box', {\n template: '{{yield (hash option=(component \"select-box-option\"))}}'\n });\n\n this.registerComponent('select-box-option', {\n template: '{{label}}'\n });\n\n this.render((0, _abstractTestCase.strip)(_templateObject11));\n\n this.assertText('Foo');\n\n this.runTask(function () {\n return _this27.rerender();\n });\n\n this.assertText('Foo');\n };\n\n _class.prototype['@test parameters in a contextual component are mutable when value is a param'] = function testParametersInAContextualComponentAreMutableWhenValueIsAParam(assert) {\n var _this28 = this;\n\n // This checks that a `(mut)` is added to parameters and attributes to\n // contextual components when it is a param.\n\n this.registerComponent('change-button', {\n ComponentClass: _helpers.Component.extend().reopenClass({\n positionalParams: ['val']\n }),\n template: (0, _abstractTestCase.strip)(_templateObject12)\n });\n\n this.render((0, _abstractTestCase.strip)(_templateObject13), {\n model: {\n val2: 8\n }\n });\n\n assert.equal(this.$('.value').text(), '8');\n\n this.runTask(function () {\n return _this28.rerender();\n });\n\n assert.equal(this.$('.value').text(), '8');\n\n this.runTask(function () {\n return _this28.$('.my-button').click();\n });\n\n assert.equal(this.$('.value').text(), '10');\n\n this.runTask(function () {\n return _this28.context.set('model', { val2: 8 });\n });\n\n assert.equal(this.$('.value').text(), '8');\n };\n\n _class.prototype['@test tagless blockless components render'] = function testTaglessBlocklessComponentsRender(assert) {\n var _this29 = this;\n\n this.registerComponent('my-comp', {\n ComponentClass: _helpers.Component.extend({ tagName: '' })\n });\n\n this.render('{{my-comp}}');\n\n this.runTask(function () {\n return _this29.rerender();\n });\n\n assert.equal(this.$().text(), '');\n };\n\n _class.prototype['@test GH#13494 tagless blockless component with property binding'] = function testGH13494TaglessBlocklessComponentWithPropertyBinding(assert) {\n var _this30 = this;\n\n this.registerComponent('outer-component', {\n ComponentClass: _helpers.Component.extend({\n message: 'hello',\n actions: {\n change: function () {\n this.set('message', 'goodbye');\n }\n }\n }),\n template: (0, _abstractTestCase.strip)(_templateObject14)\n });\n\n this.registerComponent('inner-component', {\n ComponentClass: _helpers.Component.extend({\n tagName: ''\n })\n });\n\n this.render('{{outer-component}}');\n\n assert.equal(this.$().text(), 'message: hello');\n\n this.runTask(function () {\n return _this30.rerender();\n });\n\n assert.equal(this.$().text(), 'message: hello');\n\n this.runTask(function () {\n return _this30.$('button').click();\n });\n\n assert.equal(this.$().text(), 'message: goodbye');\n\n this.runTask(function () {\n return _this30.rerender();\n });\n\n assert.equal(this.$().text(), 'message: goodbye');\n };\n\n _class.prototype['@test GH#13982 contextual component ref is stable even when bound params change'] = function testGH13982ContextualComponentRefIsStableEvenWhenBoundParamsChange(assert) {\n var _this31 = this;\n\n var instance = void 0,\n previousInstance = void 0;\n var initCount = 0;\n\n this.registerComponent('my-comp', {\n ComponentClass: _helpers.Component.extend({\n init: function () {\n this._super();\n previousInstance = instance;\n instance = this;\n initCount++;\n },\n\n isOpen: undefined\n }),\n template: '{{if isOpen \"open\" \"closed\"}}'\n });\n\n this.render((0, _abstractTestCase.strip)(_templateObject15), {\n isOpen: true\n });\n\n assert.ok(!(0, _emberMetal.isEmpty)(instance), 'a instance was created');\n assert.equal(previousInstance, undefined, 'no previous component exists');\n assert.equal(initCount, 1, 'the component was constructed exactly 1 time');\n assert.equal(this.$().text(), 'open', 'the components text is \"open\"');\n\n this.runTask(function () {\n return _this31.rerender();\n });\n\n assert.ok(!(0, _emberMetal.isEmpty)(instance), 'the component instance exists');\n assert.equal(previousInstance, undefined, 'no previous component exists');\n assert.equal(initCount, 1, 'the component was constructed exactly 1 time');\n assert.equal(this.$().text(), 'open', 'the components text is \"open\"');\n\n this.runTask(function () {\n return _this31.context.set('isOpen', false);\n });\n\n assert.ok(!(0, _emberMetal.isEmpty)(instance), 'the component instance exists');\n assert.equal(previousInstance, undefined, 'no previous component exists');\n assert.equal(initCount, 1, 'the component was constructed exactly 1 time');\n assert.equal(this.$().text(), 'closed', 'the component text is \"closed\"');\n\n this.runTask(function () {\n return _this31.rerender();\n });\n\n assert.ok(!(0, _emberMetal.isEmpty)(instance), 'the component instance exists');\n assert.equal(previousInstance, undefined, 'no previous component exists');\n assert.equal(initCount, 1, 'the component was constructed exactly 1 time');\n assert.equal(this.$().text(), 'closed', 'the component text is \"closed\"');\n\n this.runTask(function () {\n return _this31.context.set('isOpen', true);\n });\n\n assert.ok(!(0, _emberMetal.isEmpty)(instance), 'the component instance exists');\n assert.equal(previousInstance, undefined, 'no previous component exists');\n assert.equal(initCount, 1, 'the component was constructed exactly 1 time');\n assert.equal(this.$().text(), 'open', 'the components text is \"open\"');\n };\n\n _class.prototype['@test GH#13982 contextual component ref is stable even when bound params change (bound name param)'] = function testGH13982ContextualComponentRefIsStableEvenWhenBoundParamsChangeBoundNameParam(assert) {\n var _this32 = this;\n\n var instance = void 0,\n previousInstance = void 0;\n var initCount = 0;\n\n this.registerComponent('my-comp', {\n ComponentClass: _helpers.Component.extend({\n init: function () {\n this._super();\n previousInstance = instance;\n instance = this;\n initCount++;\n },\n\n isOpen: undefined\n }),\n template: '{{if isOpen \"open\" \"closed\"}}'\n });\n\n this.render((0, _abstractTestCase.strip)(_templateObject16), {\n compName: 'my-comp',\n isOpen: true\n });\n\n assert.ok(!(0, _emberMetal.isEmpty)(instance), 'a instance was created');\n assert.equal(previousInstance, undefined, 'no previous component exists');\n assert.equal(initCount, 1, 'the component was constructed exactly 1 time');\n assert.equal(this.$().text(), 'open', 'the components text is \"open\"');\n\n this.runTask(function () {\n return _this32.rerender();\n });\n\n assert.ok(!(0, _emberMetal.isEmpty)(instance), 'the component instance exists');\n assert.equal(previousInstance, undefined, 'no previous component exists');\n assert.equal(initCount, 1, 'the component was constructed exactly 1 time');\n assert.equal(this.$().text(), 'open', 'the components text is \"open\"');\n\n this.runTask(function () {\n return _this32.context.set('isOpen', false);\n });\n\n assert.ok(!(0, _emberMetal.isEmpty)(instance), 'the component instance exists');\n assert.equal(previousInstance, undefined, 'no previous component exists');\n assert.equal(initCount, 1, 'the component was constructed exactly 1 time');\n assert.equal(this.$().text(), 'closed', 'the component text is \"closed\"');\n\n this.runTask(function () {\n return _this32.rerender();\n });\n\n assert.ok(!(0, _emberMetal.isEmpty)(instance), 'the component instance exists');\n assert.equal(previousInstance, undefined, 'no previous component exists');\n assert.equal(initCount, 1, 'the component was constructed exactly 1 time');\n assert.equal(this.$().text(), 'closed', 'the component text is \"closed\"');\n\n this.runTask(function () {\n return _this32.context.set('isOpen', true);\n });\n\n assert.ok(!(0, _emberMetal.isEmpty)(instance), 'the component instance exists');\n assert.equal(previousInstance, undefined, 'no previous component exists');\n assert.equal(initCount, 1, 'the component was constructed exactly 1 time');\n assert.equal(this.$().text(), 'open', 'the components text is \"open\"');\n };\n\n _class.prototype['@test GH#13982 contextual component ref is recomputed when component name param changes'] = function testGH13982ContextualComponentRefIsRecomputedWhenComponentNameParamChanges(assert) {\n var _this33 = this;\n\n var instance = void 0,\n previousInstance = void 0;\n var initCount = 0;\n\n this.registerComponent('my-comp', {\n ComponentClass: _helpers.Component.extend({\n init: function () {\n this._super();\n previousInstance = instance;\n instance = this;\n initCount++;\n },\n\n isOpen: undefined\n }),\n template: 'my-comp: {{if isOpen \"open\" \"closed\"}}'\n });\n\n this.registerComponent('your-comp', {\n ComponentClass: _helpers.Component.extend({\n init: function () {\n this._super();\n previousInstance = instance;\n instance = this;\n initCount++;\n },\n\n isOpen: undefined\n }),\n template: 'your-comp: {{if isOpen \"open\" \"closed\"}}'\n });\n\n this.render((0, _abstractTestCase.strip)(_templateObject16), {\n compName: 'my-comp',\n isOpen: true\n });\n\n assert.ok(!(0, _emberMetal.isEmpty)(instance), 'a instance was created');\n assert.equal(previousInstance, undefined, 'there is no previous instance');\n assert.equal(initCount, 1, 'the component was constructed exactly 1 time');\n assert.equal(this.$().text(), 'my-comp: open');\n\n this.runTask(function () {\n return _this33.rerender();\n });\n\n assert.ok(!(0, _emberMetal.isEmpty)(instance), 'a instance exists after rerender');\n assert.equal(previousInstance, undefined, 'there is no previous instance after rerender');\n assert.equal(initCount, 1, 'the component was constructed exactly 1 time');\n assert.equal(this.$().text(), 'my-comp: open');\n\n this.runTask(function () {\n return _this33.context.set('compName', 'your-comp');\n });\n\n assert.ok(!(0, _emberMetal.isEmpty)(instance), 'an instance was created after component name changed');\n assert.ok(!(0, _emberMetal.isEmpty)(previousInstance), 'a previous instance now exists');\n assert.notEqual(instance, previousInstance, 'the instance and previous instance are not the same object');\n assert.equal(initCount, 2, 'the component was constructed exactly 2 times');\n assert.equal(this.$().text(), 'your-comp: open');\n\n this.runTask(function () {\n return _this33.rerender();\n });\n\n assert.ok(!(0, _emberMetal.isEmpty)(instance), 'an instance was created after component name changed (rerender)');\n assert.ok(!(0, _emberMetal.isEmpty)(previousInstance), 'a previous instance now exists (rerender)');\n assert.notEqual(instance, previousInstance, 'the instance and previous instance are not the same object (rerender)');\n assert.equal(initCount, 2, 'the component was constructed exactly 2 times (rerender)');\n assert.equal(this.$().text(), 'your-comp: open');\n\n this.runTask(function () {\n return _this33.context.set('compName', 'my-comp');\n });\n\n assert.ok(!(0, _emberMetal.isEmpty)(instance), 'an instance was created after component name changed');\n assert.ok(!(0, _emberMetal.isEmpty)(previousInstance), 'a previous instance still exists');\n assert.notEqual(instance, previousInstance, 'the instance and previous instance are not the same object');\n assert.equal(initCount, 3, 'the component was constructed exactly 3 times (rerender)');\n assert.equal(this.$().text(), 'my-comp: open');\n };\n\n _class.prototype['@test GH#14508 rest positional params are received when passed as named parameter'] = function testGH14508RestPositionalParamsAreReceivedWhenPassedAsNamedParameter() {\n var _this34 = this;\n\n this.registerComponent('my-link', {\n ComponentClass: _helpers.Component.extend().reopenClass({\n positionalParams: 'params'\n }),\n template: '{{#each params as |p|}}{{p}}{{/each}}'\n });\n\n this.render('{{component (component \"my-link\") params=allParams}}', {\n allParams: (0, _native_array.A)(['a', 'b'])\n });\n\n this.assertText('ab');\n\n this.runTask(function () {\n return _this34.rerender();\n });\n\n this.assertText('ab');\n\n this.runTask(function () {\n return _this34.context.get('allParams').pushObject('c');\n });\n\n this.assertText('abc');\n\n this.runTask(function () {\n return _this34.context.get('allParams').popObject();\n });\n\n this.assertText('ab');\n\n this.runTask(function () {\n return _this34.context.get('allParams').clear();\n });\n\n this.assertText('');\n\n this.runTask(function () {\n return _this34.context.set('allParams', (0, _native_array.A)(['1', '2']));\n });\n\n this.assertText('12');\n\n this.runTask(function () {\n return _this34.context.set('allParams', (0, _native_array.A)(['a', 'b']));\n });\n\n this.assertText('ab');\n };\n\n _class.prototype['@test GH#14508 rest positional params are received when passed as named parameter with dot notation'] = function testGH14508RestPositionalParamsAreReceivedWhenPassedAsNamedParameterWithDotNotation() {\n var _this35 = this;\n\n this.registerComponent('my-link', {\n ComponentClass: _helpers.Component.extend().reopenClass({\n positionalParams: 'params'\n }),\n template: '{{#each params as |p|}}{{p}}{{/each}}'\n });\n\n this.render('{{#with (hash link=(component \"my-link\")) as |c|}}{{c.link params=allParams}}{{/with}}', {\n allParams: (0, _native_array.A)(['a', 'b'])\n });\n\n this.assertText('ab');\n\n this.runTask(function () {\n return _this35.rerender();\n });\n\n this.assertText('ab');\n\n this.runTask(function () {\n return _this35.context.get('allParams').pushObject('c');\n });\n\n this.assertText('abc');\n\n this.runTask(function () {\n return _this35.context.get('allParams').popObject();\n });\n\n this.assertText('ab');\n\n this.runTask(function () {\n return _this35.context.get('allParams').clear();\n });\n\n this.assertText('');\n\n this.runTask(function () {\n return _this35.context.set('allParams', (0, _native_array.A)(['1', '2']));\n });\n\n this.assertText('12');\n\n this.runTask(function () {\n return _this35.context.set('allParams', (0, _native_array.A)(['a', 'b']));\n });\n\n this.assertText('ab');\n };\n\n _class.prototype['@test GH#14632 give useful warning when calling contextual components with input as a name'] = function testGH14632GiveUsefulWarningWhenCallingContextualComponentsWithInputAsAName() {\n var _this36 = this;\n\n expectAssertion(function () {\n _this36.render('{{component (component \"input\" type=\"text\")}}');\n }, 'You cannot use the input helper as a contextual helper. Please extend TextField or Checkbox to use it as a contextual component.');\n };\n\n _class.prototype['@test GH#14632 give useful warning when calling contextual components with textarea as a name'] = function testGH14632GiveUsefulWarningWhenCallingContextualComponentsWithTextareaAsAName() {\n var _this37 = this;\n\n expectAssertion(function () {\n _this37.render('{{component (component \"textarea\" type=\"text\")}}');\n }, 'You cannot use the textarea helper as a contextual helper. Please extend TextArea to use it as a contextual component.');\n };\n\n return _class;\n }(_testCase.RenderingTest));\n\n var ContextualComponentMutableParamsTest = function (_RenderingTest2) {\n (0, _emberBabel.inherits)(ContextualComponentMutableParamsTest, _RenderingTest2);\n\n function ContextualComponentMutableParamsTest() {\n (0, _emberBabel.classCallCheck)(this, ContextualComponentMutableParamsTest);\n return (0, _emberBabel.possibleConstructorReturn)(this, _RenderingTest2.apply(this, arguments));\n }\n\n ContextualComponentMutableParamsTest.prototype.render = function render(templateStr) {\n var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _RenderingTest2.prototype.render.call(this, templateStr + '<span class=\"value\">{{model.val2}}</span>', (0, _emberUtils.assign)(context, { model: { val2: 8 } }));\n };\n\n return ContextualComponentMutableParamsTest;\n }(_testCase.RenderingTest);\n\n var MutableParamTestGenerator = function () {\n function MutableParamTestGenerator(cases) {\n (0, _emberBabel.classCallCheck)(this, MutableParamTestGenerator);\n\n this.cases = cases;\n }\n\n MutableParamTestGenerator.prototype.generate = function generate(_ref) {\n var _ref2;\n\n var title = _ref.title,\n setup = _ref.setup;\n\n return _ref2 = {}, _ref2['@test parameters in a contextual component are mutable when value is a ' + title] = function (assert) {\n var _this39 = this;\n\n this.registerComponent('change-button', {\n ComponentClass: _helpers.Component.extend().reopenClass({\n positionalParams: ['val']\n }),\n template: (0, _abstractTestCase.strip)(_templateObject17)\n });\n\n setup.call(this, assert);\n\n assert.equal(this.$('.value').text(), '8');\n\n this.runTask(function () {\n return _this39.rerender();\n });\n\n assert.equal(this.$('.value').text(), '8');\n\n this.runTask(function () {\n return _this39.$('.my-button').click();\n });\n\n assert.equal(this.$('.value').text(), '10');\n\n this.runTask(function () {\n return _this39.context.set('model', { val2: 8 });\n });\n\n assert.equal(this.$('.value').text(), '8');\n }, _ref2;\n };\n\n return MutableParamTestGenerator;\n }();\n\n (0, _abstractTestCase.applyMixins)(ContextualComponentMutableParamsTest, new MutableParamTestGenerator([{\n title: 'param',\n setup: function () {\n this.render('{{component (component \"change-button\" model.val2)}}');\n }\n }, {\n title: 'nested param',\n setup: function () {\n this.registerComponent('my-comp', {\n ComponentClass: _helpers.Component.extend().reopenClass({\n positionalParams: ['components']\n }),\n template: '{{component components.comp}}'\n });\n\n this.render('{{my-comp (hash comp=(component \"change-button\" model.val2))}}');\n }\n }, {\n title: 'hash value',\n setup: function () {\n this.registerComponent('my-comp', {\n template: '{{component component}}'\n });\n\n this.render('{{my-comp component=(component \"change-button\" val=model.val2)}}');\n }\n }, {\n title: 'nested hash value',\n setup: function () {\n this.registerComponent('my-comp', {\n template: '{{component components.button}}'\n });\n\n this.render('{{my-comp components=(hash button=(component \"change-button\" val=model.val2))}}');\n }\n }]));\n\n (0, _testCase.moduleFor)('Components test: contextual components -- mutable params', ContextualComponentMutableParamsTest);\n});","QUnit.module('ESLint | ember-glimmer/tests/integration/components/contextual-components-test.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-glimmer/tests/integration/components/contextual-components-test.js should pass ESLint\\n\\n');\n});\n","enifed('ember-glimmer/tests/integration/components/curly-components-test', ['ember-babel', 'ember-metal', 'ember-runtime', 'ember-glimmer/tests/utils/helpers', 'ember-glimmer/tests/utils/abstract-test-case', 'ember-glimmer/tests/utils/test-case', 'ember-glimmer/tests/utils/test-helpers', 'ember/features'], function (_emberBabel, _emberMetal, _emberRuntime, _helpers, _abstractTestCase, _testCase, _testHelpers, _features) {\n 'use strict';\n\n var _templateObject = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n {{foo-bar class=\"bar baz\"}}\\n {{foo-bar classNames=\"bar baz\"}}\\n {{foo-bar}}\\n '], ['\\n {{foo-bar class=\"bar baz\"}}\\n {{foo-bar classNames=\"bar baz\"}}\\n {{foo-bar}}\\n ']),\n _templateObject2 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n {{#if cond1}}\\n {{#foo-bar id=1}}\\n {{#if cond2}}\\n {{#foo-bar id=2}}{{/foo-bar}}\\n {{#if cond3}}\\n {{#foo-bar id=3}}\\n {{#if cond4}}\\n {{#foo-bar id=4}}\\n {{#if cond5}}\\n {{#foo-bar id=5}}{{/foo-bar}}\\n {{#foo-bar id=6}}{{/foo-bar}}\\n {{#foo-bar id=7}}{{/foo-bar}}\\n {{/if}}\\n {{#foo-bar id=8}}{{/foo-bar}}\\n {{/foo-bar}}\\n {{/if}}\\n {{/foo-bar}}\\n {{/if}}\\n {{/if}}\\n {{/foo-bar}}\\n {{/if}}'], ['\\n {{#if cond1}}\\n {{#foo-bar id=1}}\\n {{#if cond2}}\\n {{#foo-bar id=2}}{{/foo-bar}}\\n {{#if cond3}}\\n {{#foo-bar id=3}}\\n {{#if cond4}}\\n {{#foo-bar id=4}}\\n {{#if cond5}}\\n {{#foo-bar id=5}}{{/foo-bar}}\\n {{#foo-bar id=6}}{{/foo-bar}}\\n {{#foo-bar id=7}}{{/foo-bar}}\\n {{/if}}\\n {{#foo-bar id=8}}{{/foo-bar}}\\n {{/foo-bar}}\\n {{/if}}\\n {{/foo-bar}}\\n {{/if}}\\n {{/if}}\\n {{/foo-bar}}\\n {{/if}}']),\n _templateObject3 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n {{#if isStream}}\\n true\\n {{else}}\\n false\\n {{/if}}\\n '], ['\\n {{#if isStream}}\\n true\\n {{else}}\\n false\\n {{/if}}\\n ']),\n _templateObject4 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n Args: {{this.attrs.value}} | {{attrs.value}} | {{value}}\\n {{#each this.attrs.items as |item|}}\\n {{item}}\\n {{/each}}\\n {{#each attrs.items as |item|}}\\n {{item}}\\n {{/each}}\\n {{#each items as |item|}}\\n {{item}}\\n {{/each}}\\n '], ['\\n Args: {{this.attrs.value}} | {{attrs.value}} | {{value}}\\n {{#each this.attrs.items as |item|}}\\n {{item}}\\n {{/each}}\\n {{#each attrs.items as |item|}}\\n {{item}}\\n {{/each}}\\n {{#each items as |item|}}\\n {{item}}\\n {{/each}}\\n ']),\n _templateObject5 = (0, _emberBabel.taggedTemplateLiteralLoose)(['Args: lul | lul | lul111'], ['Args: lul | lul | lul111']),\n _templateObject6 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n {{#with-block someProp=prop}}\\n In template\\n {{/with-block}}'], ['\\n {{#with-block someProp=prop}}\\n In template\\n {{/with-block}}']),\n _templateObject7 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n {{#each names as |name|}}\\n {{name}}\\n {{/each}}'], ['\\n {{#each names as |name|}}\\n {{name}}\\n {{/each}}']),\n _templateObject8 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n {{sample-component \"Foo\" 4 \"Bar\" elementId=\"args-3\"}}\\n {{sample-component \"Foo\" 4 \"Bar\" 5 \"Baz\" elementId=\"args-5\"}}'], ['\\n {{sample-component \"Foo\" 4 \"Bar\" elementId=\"args-3\"}}\\n {{sample-component \"Foo\" 4 \"Bar\" 5 \"Baz\" elementId=\"args-5\"}}']),\n _templateObject9 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n {{sample-component \"one\" \"two\" elementId=\"two-positional\"}}\\n {{sample-component \"one\" second=\"two\" elementId=\"one-positional\"}}\\n {{sample-component first=\"one\" second=\"two\" elementId=\"no-positional\"}}'], ['\\n {{sample-component \"one\" \"two\" elementId=\"two-positional\"}}\\n {{sample-component \"one\" second=\"two\" elementId=\"one-positional\"}}\\n {{sample-component first=\"one\" second=\"two\" elementId=\"no-positional\"}}']),\n _templateObject10 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n {{#each n as |name|}}\\n {{name}}\\n {{/each}}'], ['\\n {{#each n as |name|}}\\n {{name}}\\n {{/each}}']),\n _templateObject11 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n {{#with-template name=\"with-block\"}}\\n [In block - {{name}}]\\n {{/with-template}}\\n {{with-template name=\"without-block\"}}'], ['\\n {{#with-template name=\"with-block\"}}\\n [In block - {{name}}]\\n {{/with-template}}\\n {{with-template name=\"without-block\"}}']),\n _templateObject12 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n {{#if hasBlock}}\\n {{yield}}\\n {{else}}\\n No Block!\\n {{/if}}'], ['\\n {{#if hasBlock}}\\n {{yield}}\\n {{else}}\\n No Block!\\n {{/if}}']),\n _templateObject13 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n {{#with-block}}\\n In template\\n {{/with-block}}'], ['\\n {{#with-block}}\\n In template\\n {{/with-block}}']),\n _templateObject14 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n {{#if hasBlockParams}}\\n {{yield this}} - In Component\\n {{else}}\\n {{yield}} No Block!\\n {{/if}}'], ['\\n {{#if hasBlockParams}}\\n {{yield this}} - In Component\\n {{else}}\\n {{yield}} No Block!\\n {{/if}}']),\n _templateObject15 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n {{#with-block as |something|}}\\n In template\\n {{/with-block}}'], ['\\n {{#with-block as |something|}}\\n In template\\n {{/with-block}}']),\n _templateObject16 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n {{#if hasBlockParams}}\\n {{yield this}}\\n {{else}}\\n {{yield}} No Block Param!\\n {{/if}}'], ['\\n {{#if hasBlockParams}}\\n {{yield this}}\\n {{else}}\\n {{yield}} No Block Param!\\n {{/if}}']),\n _templateObject17 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n {{#with-block}}\\n In block\\n {{/with-block}}'], ['\\n {{#with-block}}\\n In block\\n {{/with-block}}']),\n _templateObject18 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n {{#if predicate}}\\n Yes:{{yield someValue}}\\n {{else}}\\n No:{{yield to=\"inverse\"}}\\n {{/if}}'], ['\\n {{#if predicate}}\\n Yes:{{yield someValue}}\\n {{else}}\\n No:{{yield to=\"inverse\"}}\\n {{/if}}']),\n _templateObject19 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n {{#my-if predicate=activated someValue=42 as |result|}}\\n Hello{{result}}\\n {{else}}\\n Goodbye\\n {{/my-if}}'], ['\\n {{#my-if predicate=activated someValue=42 as |result|}}\\n Hello{{result}}\\n {{else}}\\n Goodbye\\n {{/my-if}}']),\n _templateObject20 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n {{#if (hasBlock \"inverse\")}}\\n Yes\\n {{else}}\\n No\\n {{/if}}'], ['\\n {{#if (hasBlock \"inverse\")}}\\n Yes\\n {{else}}\\n No\\n {{/if}}']),\n _templateObject21 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n {{#check-inverse}}{{/check-inverse}}\\n {{#check-inverse}}{{else}}{{/check-inverse}}'], ['\\n {{#check-inverse}}{{/check-inverse}}\\n {{#check-inverse}}{{else}}{{/check-inverse}}']),\n _templateObject22 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n {{#if (hasBlock)}}\\n Yes\\n {{else}}\\n No\\n {{/if}}'], ['\\n {{#if (hasBlock)}}\\n Yes\\n {{else}}\\n No\\n {{/if}}']),\n _templateObject23 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n {{check-block}}\\n {{#check-block}}{{/check-block}}'], ['\\n {{check-block}}\\n {{#check-block}}{{/check-block}}']),\n _templateObject24 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n {{#if (hasBlockParams \"inverse\")}}\\n Yes\\n {{else}}\\n No\\n {{/if}}'], ['\\n {{#if (hasBlockParams \"inverse\")}}\\n Yes\\n {{else}}\\n No\\n {{/if}}']),\n _templateObject25 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n {{#check-inverse}}{{/check-inverse}}\\n {{#check-inverse as |something|}}{{/check-inverse}}'], ['\\n {{#check-inverse}}{{/check-inverse}}\\n {{#check-inverse as |something|}}{{/check-inverse}}']),\n _templateObject26 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n {{#if (hasBlockParams)}}\\n Yes\\n {{else}}\\n No\\n {{/if}}'], ['\\n {{#if (hasBlockParams)}}\\n Yes\\n {{else}}\\n No\\n {{/if}}']),\n _templateObject27 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n {{#check-block}}{{/check-block}}\\n {{#check-block as |something|}}{{/check-block}}'], ['\\n {{#check-block}}{{/check-block}}\\n {{#check-block as |something|}}{{/check-block}}']),\n _templateObject28 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n {{#if hasBlock}}\\n Yes\\n {{else}}\\n No\\n {{/if}}'], ['\\n {{#if hasBlock}}\\n Yes\\n {{else}}\\n No\\n {{/if}}']),\n _templateObject29 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n {{#check-params}}{{/check-params}}\\n {{#check-params as |foo|}}{{/check-params}}'], ['\\n {{#check-params}}{{/check-params}}\\n {{#check-params as |foo|}}{{/check-params}}']),\n _templateObject30 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n {{#if hasBlockParams}}\\n Yes\\n {{else}}\\n No\\n {{/if}}'], ['\\n {{#if hasBlockParams}}\\n Yes\\n {{else}}\\n No\\n {{/if}}']),\n _templateObject31 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n {{check-attr}}\\n {{#check-attr}}{{/check-attr}}'], ['\\n {{check-attr}}\\n {{#check-attr}}{{/check-attr}}']),\n _templateObject32 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n {{#check-attr}}{{/check-attr}}\\n {{#check-attr}}{{else}}{{/check-attr}}'], ['\\n {{#check-attr}}{{/check-attr}}\\n {{#check-attr}}{{else}}{{/check-attr}}']),\n _templateObject33 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n {{#check-attr}}{{/check-attr}}\\n {{#check-attr as |something|}}{{/check-attr}}'], ['\\n {{#check-attr}}{{/check-attr}}\\n {{#check-attr as |something|}}{{/check-attr}}']),\n _templateObject34 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n {{check-helper}}\\n {{#check-helper}}{{/check-helper}}'], ['\\n {{check-helper}}\\n {{#check-helper}}{{/check-helper}}']),\n _templateObject35 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n {{#check-helper}}{{/check-helper}}\\n {{#check-helper}}{{else}}{{/check-helper}}'], ['\\n {{#check-helper}}{{/check-helper}}\\n {{#check-helper}}{{else}}{{/check-helper}}']),\n _templateObject36 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n {{#check-helper}}{{/check-helper}}\\n {{#check-helper as |something|}}{{/check-helper}}'], ['\\n {{#check-helper}}{{/check-helper}}\\n {{#check-helper as |something|}}{{/check-helper}}']),\n _templateObject37 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n {{#x-outer}}\\n {{#if showInner}}\\n {{x-inner}}\\n {{/if}}\\n {{/x-outer}}'], ['\\n {{#x-outer}}\\n {{#if showInner}}\\n {{x-inner}}\\n {{/if}}\\n {{/x-outer}}']),\n _templateObject38 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n In layout. {{#each items as |item|}}\\n [{{child-non-block item=item}}]\\n {{/each}}'], ['\\n In layout. {{#each items as |item|}}\\n [{{child-non-block item=item}}]\\n {{/each}}']),\n _templateObject39 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n {{#some-clicky-thing classNames=\"baz\"}}\\n Click Me\\n {{/some-clicky-thing}}'], ['\\n {{#some-clicky-thing classNames=\"baz\"}}\\n Click Me\\n {{/some-clicky-thing}}']),\n _templateObject40 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n {{#each blahzz as |p|}}\\n {{p}}\\n {{/each}}\\n - {{yield}}'], ['\\n {{#each blahzz as |p|}}\\n {{p}}\\n {{/each}}\\n - {{yield}}']),\n _templateObject41 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n {{#some-clicky-thing blahzz=\"baz\"}}\\n Click Me\\n {{/some-clicky-thing}}'], ['\\n {{#some-clicky-thing blahzz=\"baz\"}}\\n Click Me\\n {{/some-clicky-thing}}']),\n _templateObject42 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n {{#x-select value=value as |select|}}\\n {{#x-option value=\"1\" select=select}}1{{/x-option}}\\n {{#x-option value=\"2\" select=select}}2{{/x-option}}\\n {{/x-select}}\\n '], ['\\n {{#x-select value=value as |select|}}\\n {{#x-option value=\"1\" select=select}}1{{/x-option}}\\n {{#x-option value=\"2\" select=select}}2{{/x-option}}\\n {{/x-select}}\\n ']),\n _templateObject43 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n {{#list-items items=items as |thing|}}\\n |{{thing}}|\\n\\n {{#if editMode}}\\n Remove {{thing}}\\n {{/if}}\\n {{/list-items}}\\n '], ['\\n {{#list-items items=items as |thing|}}\\n |{{thing}}|\\n\\n {{#if editMode}}\\n Remove {{thing}}\\n {{/if}}\\n {{/list-items}}\\n ']);\n\n (0, _testCase.moduleFor)('Components test: curly components', function (_RenderingTest) {\n (0, _emberBabel.inherits)(_class, _RenderingTest);\n\n function _class() {\n (0, _emberBabel.classCallCheck)(this, _class);\n return (0, _emberBabel.possibleConstructorReturn)(this, _RenderingTest.apply(this, arguments));\n }\n\n _class.prototype['@test it can render a basic component'] = function testItCanRenderABasicComponent() {\n var _this2 = this;\n\n this.registerComponent('foo-bar', { template: 'hello' });\n\n this.render('{{foo-bar}}');\n\n this.assertComponentElement(this.firstChild, { content: 'hello' });\n\n this.runTask(function () {\n return _this2.rerender();\n });\n\n this.assertComponentElement(this.firstChild, { content: 'hello' });\n };\n\n _class.prototype['@test it can render a template only component'] = function testItCanRenderATemplateOnlyComponent() {\n var _this3 = this;\n\n this.registerComponent('foo-bar', { template: 'hello' });\n\n this.render('{{foo-bar}}');\n\n this.assertComponentElement(this.firstChild, { content: 'hello' });\n\n this.runTask(function () {\n return _this3.rerender();\n });\n\n this.assertComponentElement(this.firstChild, { content: 'hello' });\n };\n\n _class.prototype['@test it can have a custom id and it is not bound'] = function testItCanHaveACustomIdAndItIsNotBound() {\n var _this4 = this;\n\n this.registerComponent('foo-bar', { template: '{{id}} {{elementId}}' });\n\n this.render('{{foo-bar id=customId}}', {\n customId: 'bizz'\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { id: 'bizz' }, content: 'bizz bizz' });\n\n this.runTask(function () {\n return _this4.rerender();\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { id: 'bizz' }, content: 'bizz bizz' });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this4.context, 'customId', 'bar');\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { id: 'bizz' }, content: 'bar bizz' });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this4.context, 'customId', 'bizz');\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { id: 'bizz' }, content: 'bizz bizz' });\n };\n\n _class.prototype['@test elementId cannot change'] = function testElementIdCannotChange(assert) {\n var component = void 0;\n var FooBarComponent = _helpers.Component.extend({\n elementId: 'blahzorz',\n init: function () {\n this._super.apply(this, arguments);\n component = this;\n }\n });\n\n this.registerComponent('foo-bar', { ComponentClass: FooBarComponent, template: '{{elementId}}' });\n\n this.render('{{foo-bar}}');\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { id: 'blahzorz' }, content: 'blahzorz' });\n\n if (EmberDev && !EmberDev.runningProdBuild) {\n var willThrow = function () {\n return (0, _emberMetal.run)(null, _emberMetal.set, component, 'elementId', 'herpyderpy');\n };\n\n assert.throws(willThrow, /Changing a view's elementId after creation is not allowed/);\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { id: 'blahzorz' }, content: 'blahzorz' });\n }\n };\n\n _class.prototype['@test can specify template with `layoutName` property'] = function testCanSpecifyTemplateWithLayoutNameProperty() {\n var FooBarComponent = _helpers.Component.extend({\n elementId: 'blahzorz',\n layoutName: 'fizz-bar',\n init: function () {\n this._super.apply(this, arguments);\n this.local = 'hey';\n }\n });\n\n this.registerTemplate('fizz-bar', 'FIZZ BAR {{local}}');\n\n this.registerComponent('foo-bar', { ComponentClass: FooBarComponent });\n\n this.render('{{foo-bar}}');\n\n this.assertText('FIZZ BAR hey');\n };\n\n _class.prototype['@test can specify template with `defaultLayout` property [DEPRECATED]'] = function testCanSpecifyTemplateWithDefaultLayoutPropertyDEPRECATED() {\n expectDeprecation(/Specifying `defaultLayout` to .* is deprecated. Please use `layout` instead/);\n var FooBarComponent = _helpers.Component.extend({\n elementId: 'blahzorz',\n defaultLayout: (0, _helpers.compile)('much wat {{lulz}}'),\n init: function () {\n this._super.apply(this, arguments);\n this.lulz = 'hey';\n }\n });\n\n this.registerComponent('foo-bar', { ComponentClass: FooBarComponent });\n\n this.render('{{foo-bar}}');\n\n this.assertText('much wat hey');\n };\n\n _class.prototype['@test layout takes precedence over defaultLayout'] = function testLayoutTakesPrecedenceOverDefaultLayout() {\n var FooBarComponent = _helpers.Component.extend({\n elementId: 'blahzorz',\n layout: (0, _helpers.compile)('so much layout wat {{lulz}}'),\n defaultLayout: (0, _helpers.compile)('much wat {{lulz}}'),\n init: function () {\n this._super.apply(this, arguments);\n this.lulz = 'hey';\n }\n });\n\n this.registerComponent('foo-bar', { ComponentClass: FooBarComponent });\n\n this.render('{{foo-bar}}');\n\n this.assertText('so much layout wat hey');\n };\n\n _class.prototype['@test layout supports computed property'] = function testLayoutSupportsComputedProperty() {\n var FooBarComponent = _helpers.Component.extend({\n elementId: 'blahzorz',\n layout: (0, _emberMetal.computed)(function () {\n return (0, _helpers.compile)('so much layout wat {{lulz}}');\n }),\n init: function () {\n this._super.apply(this, arguments);\n this.lulz = 'heyo';\n }\n });\n\n this.registerComponent('foo-bar', { ComponentClass: FooBarComponent });\n\n this.render('{{foo-bar}}');\n\n this.assertText('so much layout wat heyo');\n };\n\n _class.prototype['@test passing undefined elementId results in a default elementId'] = function testPassingUndefinedElementIdResultsInADefaultElementId(assert) {\n var _this5 = this;\n\n var FooBarComponent = _helpers.Component.extend({\n tagName: 'h1'\n });\n\n this.registerComponent('foo-bar', { ComponentClass: FooBarComponent, template: 'something' });\n\n this.render('{{foo-bar id=somethingUndefined}}');\n\n var foundId = this.$('h1').attr('id');\n assert.ok(/^ember/.test(foundId), 'Has a reasonable id attribute (found id=' + foundId + ').');\n\n this.runTask(function () {\n return _this5.rerender();\n });\n\n var newFoundId = this.$('h1').attr('id');\n assert.ok(/^ember/.test(newFoundId), 'Has a reasonable id attribute (found id=' + newFoundId + ').');\n\n assert.equal(foundId, newFoundId);\n };\n\n _class.prototype['@test id is an alias for elementId'] = function testIdIsAnAliasForElementId(assert) {\n var _this6 = this;\n\n var FooBarComponent = _helpers.Component.extend({\n tagName: 'h1'\n });\n\n this.registerComponent('foo-bar', { ComponentClass: FooBarComponent, template: 'something' });\n\n this.render('{{foo-bar id=\"custom-id\"}}');\n\n var foundId = this.$('h1').attr('id');\n assert.equal(foundId, 'custom-id');\n\n this.runTask(function () {\n return _this6.rerender();\n });\n\n var newFoundId = this.$('h1').attr('id');\n assert.equal(newFoundId, 'custom-id');\n\n assert.equal(foundId, newFoundId);\n };\n\n _class.prototype['@test cannot pass both id and elementId at the same time'] = function testCannotPassBothIdAndElementIdAtTheSameTime(assert) {\n var _this7 = this;\n\n this.registerComponent('foo-bar', { template: '' });\n\n expectAssertion(function () {\n _this7.render('{{foo-bar id=\"zomg\" elementId=\"lol\"}}');\n }, /You cannot invoke a component with both 'id' and 'elementId' at the same time./);\n };\n\n _class.prototype['@test it can have a custom tagName'] = function testItCanHaveACustomTagName() {\n var _this8 = this;\n\n var FooBarComponent = _helpers.Component.extend({\n tagName: 'foo-bar'\n });\n\n this.registerComponent('foo-bar', { ComponentClass: FooBarComponent, template: 'hello' });\n\n this.render('{{foo-bar}}');\n\n this.assertComponentElement(this.firstChild, { tagName: 'foo-bar', content: 'hello' });\n\n this.runTask(function () {\n return _this8.rerender();\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'foo-bar', content: 'hello' });\n };\n\n _class.prototype['@test it can have a custom tagName set in the constructor'] = function testItCanHaveACustomTagNameSetInTheConstructor() {\n var _this9 = this;\n\n var FooBarComponent = _helpers.Component.extend({\n init: function () {\n this._super();\n this.tagName = 'foo-bar';\n }\n });\n\n this.registerComponent('foo-bar', { ComponentClass: FooBarComponent, template: 'hello' });\n\n this.render('{{foo-bar}}');\n\n this.assertComponentElement(this.firstChild, { tagName: 'foo-bar', content: 'hello' });\n\n this.runTask(function () {\n return _this9.rerender();\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'foo-bar', content: 'hello' });\n };\n\n _class.prototype['@test it can have a custom tagName from the invocation'] = function testItCanHaveACustomTagNameFromTheInvocation() {\n var _this10 = this;\n\n this.registerComponent('foo-bar', { template: 'hello' });\n\n this.render('{{foo-bar tagName=\"foo-bar\"}}');\n\n this.assertComponentElement(this.firstChild, { tagName: 'foo-bar', content: 'hello' });\n\n this.runTask(function () {\n return _this10.rerender();\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'foo-bar', content: 'hello' });\n };\n\n _class.prototype['@test tagName can not be a computed property'] = function testTagNameCanNotBeAComputedProperty(assert) {\n var _this11 = this;\n\n var FooBarComponent = _helpers.Component.extend({\n tagName: (0, _emberMetal.computed)(function () {\n return 'foo-bar';\n })\n });\n\n this.registerComponent('foo-bar', { ComponentClass: FooBarComponent, template: 'hello' });\n\n expectAssertion(function () {\n _this11.render('{{foo-bar}}');\n }, /You cannot use a computed property for the component's `tagName` \\(<\\(.+>\\)\\./);\n };\n\n _class.prototype['@test class is applied before didInsertElement'] = function testClassIsAppliedBeforeDidInsertElement(assert) {\n var componentClass = void 0;\n var FooBarComponent = _helpers.Component.extend({\n didInsertElement: function () {\n componentClass = this.element.className;\n }\n });\n\n this.registerComponent('foo-bar', { ComponentClass: FooBarComponent, template: 'hello' });\n\n this.render('{{foo-bar class=\"foo-bar\"}}');\n\n assert.equal(componentClass, 'foo-bar ember-view');\n };\n\n _class.prototype['@test it can have custom classNames'] = function testItCanHaveCustomClassNames() {\n var _this12 = this;\n\n var FooBarComponent = _helpers.Component.extend({\n classNames: ['foo', 'bar']\n });\n\n this.registerComponent('foo-bar', { ComponentClass: FooBarComponent, template: 'hello' });\n\n this.render('{{foo-bar}}');\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { 'class': (0, _testHelpers.classes)('ember-view foo bar') }, content: 'hello' });\n\n this.runTask(function () {\n return _this12.rerender();\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { 'class': (0, _testHelpers.classes)('ember-view foo bar') }, content: 'hello' });\n };\n\n _class.prototype['@test should not apply falsy class name'] = function testShouldNotApplyFalsyClassName() {\n var _this13 = this;\n\n this.registerComponent('foo-bar', { template: 'hello' });\n\n this.render('{{foo-bar class=somethingFalsy}}', {\n somethingFalsy: false\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { class: 'ember-view' }, content: 'hello' });\n\n this.runTask(function () {\n return _this13.rerender();\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { class: 'ember-view' }, content: 'hello' });\n };\n\n _class.prototype['@test should apply classes of the dasherized property name when bound property specified is true'] = function testShouldApplyClassesOfTheDasherizedPropertyNameWhenBoundPropertySpecifiedIsTrue() {\n var _this14 = this;\n\n this.registerComponent('foo-bar', { template: 'hello' });\n\n this.render('{{foo-bar class=model.someTruth}}', {\n model: { someTruth: true }\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { class: (0, _testHelpers.classes)('ember-view some-truth') }, content: 'hello' });\n\n this.runTask(function () {\n return _this14.rerender();\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { class: (0, _testHelpers.classes)('ember-view some-truth') }, content: 'hello' });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this14.context, 'model.someTruth', false);\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { class: (0, _testHelpers.classes)('ember-view') }, content: 'hello' });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this14.context, 'model', { someTruth: true });\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { class: (0, _testHelpers.classes)('ember-view some-truth') }, content: 'hello' });\n };\n\n _class.prototype['@test class property on components can be dynamic'] = function testClassPropertyOnComponentsCanBeDynamic() {\n var _this15 = this;\n\n this.registerComponent('foo-bar', { template: 'hello' });\n\n this.render('{{foo-bar class=(if fooBar \"foo-bar\")}}', {\n fooBar: true\n });\n\n this.assertComponentElement(this.firstChild, { content: 'hello', attrs: { 'class': (0, _testHelpers.classes)('ember-view foo-bar') } });\n\n this.runTask(function () {\n return _this15.rerender();\n });\n\n this.assertComponentElement(this.firstChild, { content: 'hello', attrs: { 'class': (0, _testHelpers.classes)('ember-view foo-bar') } });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this15.context, 'fooBar', false);\n });\n\n this.assertComponentElement(this.firstChild, { content: 'hello', attrs: { 'class': (0, _testHelpers.classes)('ember-view') } });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this15.context, 'fooBar', true);\n });\n\n this.assertComponentElement(this.firstChild, { content: 'hello', attrs: { 'class': (0, _testHelpers.classes)('ember-view foo-bar') } });\n };\n\n _class.prototype['@test it can have custom classNames from constructor'] = function testItCanHaveCustomClassNamesFromConstructor() {\n var _this16 = this;\n\n var FooBarComponent = _helpers.Component.extend({\n init: function () {\n this._super();\n this.classNames = this.classNames.slice();\n this.classNames.push('foo', 'bar', 'outside-' + this.get('extraClass'));\n }\n });\n\n this.registerComponent('foo-bar', { ComponentClass: FooBarComponent, template: 'hello' });\n\n this.render('{{foo-bar extraClass=\"baz\"}}');\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { 'class': (0, _testHelpers.classes)('ember-view foo bar outside-baz') }, content: 'hello' });\n\n this.runTask(function () {\n return _this16.rerender();\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { 'class': (0, _testHelpers.classes)('ember-view foo bar outside-baz') }, content: 'hello' });\n };\n\n _class.prototype['@test it can set custom classNames from the invocation'] = function testItCanSetCustomClassNamesFromTheInvocation() {\n var _this17 = this;\n\n var FooBarComponent = _helpers.Component.extend({\n classNames: ['foo']\n });\n\n this.registerComponent('foo-bar', { ComponentClass: FooBarComponent, template: 'hello' });\n\n this.render((0, _abstractTestCase.strip)(_templateObject));\n\n this.assertComponentElement(this.nthChild(0), { tagName: 'div', attrs: { 'class': (0, _testHelpers.classes)('ember-view foo bar baz') }, content: 'hello' });\n this.assertComponentElement(this.nthChild(1), { tagName: 'div', attrs: { 'class': (0, _testHelpers.classes)('ember-view foo bar baz') }, content: 'hello' });\n this.assertComponentElement(this.nthChild(2), { tagName: 'div', attrs: { 'class': (0, _testHelpers.classes)('ember-view foo') }, content: 'hello' });\n\n this.runTask(function () {\n return _this17.rerender();\n });\n\n this.assertComponentElement(this.nthChild(0), { tagName: 'div', attrs: { 'class': (0, _testHelpers.classes)('ember-view foo bar baz') }, content: 'hello' });\n this.assertComponentElement(this.nthChild(1), { tagName: 'div', attrs: { 'class': (0, _testHelpers.classes)('ember-view foo bar baz') }, content: 'hello' });\n this.assertComponentElement(this.nthChild(2), { tagName: 'div', attrs: { 'class': (0, _testHelpers.classes)('ember-view foo') }, content: 'hello' });\n };\n\n _class.prototype['@test it has an element'] = function testItHasAnElement() {\n var _this18 = this;\n\n var instance = void 0;\n\n var FooBarComponent = _helpers.Component.extend({\n init: function () {\n this._super();\n instance = this;\n }\n });\n\n this.registerComponent('foo-bar', { ComponentClass: FooBarComponent, template: 'hello' });\n\n this.render('{{foo-bar}}');\n\n var element1 = instance.element;\n\n this.assertComponentElement(element1, { content: 'hello' });\n\n this.runTask(function () {\n return _this18.rerender();\n });\n\n var element2 = instance.element;\n\n this.assertComponentElement(element2, { content: 'hello' });\n\n this.assertSameNode(element2, element1);\n };\n\n _class.prototype['@test it has a jQuery proxy to the element'] = function testItHasAJQueryProxyToTheElement(assert) {\n var _this19 = this;\n\n var instance = void 0;\n\n var FooBarComponent = _helpers.Component.extend({\n init: function () {\n this._super();\n instance = this;\n }\n });\n\n this.registerComponent('foo-bar', { ComponentClass: FooBarComponent, template: 'hello' });\n\n this.render('{{foo-bar}}');\n\n var element1 = instance.$()[0];\n\n this.assertComponentElement(element1, { content: 'hello' });\n\n this.runTask(function () {\n return _this19.rerender();\n });\n\n var element2 = instance.$()[0];\n\n this.assertComponentElement(element2, { content: 'hello' });\n\n this.assertSameNode(element2, element1);\n };\n\n _class.prototype['@test it scopes the jQuery proxy to the component element'] = function testItScopesTheJQueryProxyToTheComponentElement(assert) {\n var _this20 = this;\n\n var instance = void 0;\n\n var FooBarComponent = _helpers.Component.extend({\n init: function () {\n this._super();\n instance = this;\n }\n });\n\n this.registerComponent('foo-bar', { ComponentClass: FooBarComponent, template: '<span class=\"inner\">inner</span>' });\n\n this.render('<span class=\"outer\">outer</span>{{foo-bar}}');\n\n var $span = instance.$('span');\n\n assert.equal($span.length, 1);\n assert.equal($span.attr('class'), 'inner');\n\n this.runTask(function () {\n return _this20.rerender();\n });\n\n $span = instance.$('span');\n\n assert.equal($span.length, 1);\n assert.equal($span.attr('class'), 'inner');\n };\n\n _class.prototype['@test an empty component does not have childNodes'] = function testAnEmptyComponentDoesNotHaveChildNodes(assert) {\n var _this21 = this;\n\n var fooBarInstance = void 0;\n var FooBarComponent = _helpers.Component.extend({\n tagName: 'input',\n init: function () {\n this._super();\n fooBarInstance = this;\n }\n });\n\n this.registerComponent('foo-bar', { ComponentClass: FooBarComponent, template: '' });\n\n this.render('{{foo-bar}}');\n\n this.assertComponentElement(this.firstChild, { tagName: 'input' });\n\n assert.strictEqual(fooBarInstance.element.childNodes.length, 0);\n\n this.runTask(function () {\n return _this21.rerender();\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'input' });\n\n assert.strictEqual(fooBarInstance.element.childNodes.length, 0);\n };\n\n _class.prototype['@test it has the right parentView and childViews'] = function testItHasTheRightParentViewAndChildViews(assert) {\n var _this22 = this;\n\n var fooBarInstance = void 0,\n fooBarBazInstance = void 0;\n\n var FooBarComponent = _helpers.Component.extend({\n init: function () {\n this._super();\n fooBarInstance = this;\n }\n });\n\n var FooBarBazComponent = _helpers.Component.extend({\n init: function () {\n this._super();\n fooBarBazInstance = this;\n }\n });\n\n this.registerComponent('foo-bar', { ComponentClass: FooBarComponent, template: 'foo-bar {{foo-bar-baz}}' });\n this.registerComponent('foo-bar-baz', { ComponentClass: FooBarBazComponent, template: 'foo-bar-baz' });\n\n this.render('{{foo-bar}}');\n this.assertText('foo-bar foo-bar-baz');\n\n assert.equal(fooBarInstance.parentView, this.component);\n assert.equal(fooBarBazInstance.parentView, fooBarInstance);\n\n assert.deepEqual(this.component.childViews, [fooBarInstance]);\n assert.deepEqual(fooBarInstance.childViews, [fooBarBazInstance]);\n\n this.runTask(function () {\n return _this22.rerender();\n });\n this.assertText('foo-bar foo-bar-baz');\n\n assert.equal(fooBarInstance.parentView, this.component);\n assert.equal(fooBarBazInstance.parentView, fooBarInstance);\n\n assert.deepEqual(this.component.childViews, [fooBarInstance]);\n assert.deepEqual(fooBarInstance.childViews, [fooBarBazInstance]);\n };\n\n _class.prototype['@test it renders passed named arguments'] = function testItRendersPassedNamedArguments() {\n var _this23 = this;\n\n this.registerComponent('foo-bar', {\n template: '{{foo}}'\n });\n\n this.render('{{foo-bar foo=model.bar}}', {\n model: {\n bar: 'Hola'\n }\n });\n\n this.assertText('Hola');\n\n this.runTask(function () {\n return _this23.rerender();\n });\n\n this.assertText('Hola');\n\n this.runTask(function () {\n return _this23.context.set('model.bar', 'Hello');\n });\n\n this.assertText('Hello');\n\n this.runTask(function () {\n return _this23.context.set('model', { bar: 'Hola' });\n });\n\n this.assertText('Hola');\n };\n\n _class.prototype['@test it can render a basic component with a block'] = function testItCanRenderABasicComponentWithABlock() {\n var _this24 = this;\n\n this.registerComponent('foo-bar', { template: '{{yield}} - In component' });\n\n this.render('{{#foo-bar}}hello{{/foo-bar}}');\n\n this.assertComponentElement(this.firstChild, { content: 'hello - In component' });\n\n this.runTask(function () {\n return _this24.rerender();\n });\n\n this.assertComponentElement(this.firstChild, { content: 'hello - In component' });\n };\n\n _class.prototype['@test it can render a basic component with a block when the yield is in a partial'] = function testItCanRenderABasicComponentWithABlockWhenTheYieldIsInAPartial() {\n var _this25 = this;\n\n this.registerPartial('_partialWithYield', 'yielded: [{{yield}}]');\n\n this.registerComponent('foo-bar', { template: '{{partial \"partialWithYield\"}} - In component' });\n\n this.render('{{#foo-bar}}hello{{/foo-bar}}');\n\n this.assertComponentElement(this.firstChild, { content: 'yielded: [hello] - In component' });\n\n this.runTask(function () {\n return _this25.rerender();\n });\n\n this.assertComponentElement(this.firstChild, { content: 'yielded: [hello] - In component' });\n };\n\n _class.prototype['@test it can render a basic component with a block param when the yield is in a partial'] = function testItCanRenderABasicComponentWithABlockParamWhenTheYieldIsInAPartial() {\n var _this26 = this;\n\n this.registerPartial('_partialWithYield', 'yielded: [{{yield \"hello\"}}]');\n\n this.registerComponent('foo-bar', { template: '{{partial \"partialWithYield\"}} - In component' });\n\n this.render('{{#foo-bar as |value|}}{{value}}{{/foo-bar}}');\n\n this.assertComponentElement(this.firstChild, { content: 'yielded: [hello] - In component' });\n\n this.runTask(function () {\n return _this26.rerender();\n });\n\n this.assertComponentElement(this.firstChild, { content: 'yielded: [hello] - In component' });\n };\n\n _class.prototype['@test it renders the layout with the component instance as the context'] = function testItRendersTheLayoutWithTheComponentInstanceAsTheContext() {\n var _this27 = this;\n\n var instance = void 0;\n\n var FooBarComponent = _helpers.Component.extend({\n init: function () {\n this._super();\n instance = this;\n this.set('message', 'hello');\n }\n });\n\n this.registerComponent('foo-bar', { ComponentClass: FooBarComponent, template: '{{message}}' });\n\n this.render('{{foo-bar}}');\n\n this.assertComponentElement(this.firstChild, { content: 'hello' });\n\n this.runTask(function () {\n return _this27.rerender();\n });\n\n this.assertComponentElement(this.firstChild, { content: 'hello' });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(instance, 'message', 'goodbye');\n });\n\n this.assertComponentElement(this.firstChild, { content: 'goodbye' });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(instance, 'message', 'hello');\n });\n\n this.assertComponentElement(this.firstChild, { content: 'hello' });\n };\n\n _class.prototype['@test it preserves the outer context when yielding'] = function testItPreservesTheOuterContextWhenYielding() {\n var _this28 = this;\n\n this.registerComponent('foo-bar', { template: '{{yield}}' });\n\n this.render('{{#foo-bar}}{{message}}{{/foo-bar}}', { message: 'hello' });\n\n this.assertComponentElement(this.firstChild, { content: 'hello' });\n\n this.runTask(function () {\n return _this28.rerender();\n });\n\n this.assertComponentElement(this.firstChild, { content: 'hello' });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this28.context, 'message', 'goodbye');\n });\n\n this.assertComponentElement(this.firstChild, { content: 'goodbye' });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this28.context, 'message', 'hello');\n });\n\n this.assertComponentElement(this.firstChild, { content: 'hello' });\n };\n\n _class.prototype['@test it can yield a block param named for reserved words [GH#14096]'] = function testItCanYieldABlockParamNamedForReservedWordsGH14096() {\n var instance = void 0;\n\n var FooBarComponent = _helpers.Component.extend({\n init: function () {\n this._super.apply(this, arguments);\n instance = this;\n },\n\n\n name: 'foo-bar'\n });\n\n this.registerComponent('foo-bar', { ComponentClass: FooBarComponent, template: '{{yield this}}' });\n\n this.render('{{#foo-bar as |component|}}{{component.name}}{{/foo-bar}}');\n\n this.assertComponentElement(this.firstChild, { content: 'foo-bar' });\n\n this.assertStableRerender();\n\n this.runTask(function () {\n return (0, _emberMetal.set)(instance, 'name', 'derp-qux');\n });\n\n this.assertComponentElement(this.firstChild, { content: 'derp-qux' });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(instance, 'name', 'foo-bar');\n });\n\n this.assertComponentElement(this.firstChild, { content: 'foo-bar' });\n };\n\n _class.prototype['@test it can yield internal and external properties positionally'] = function testItCanYieldInternalAndExternalPropertiesPositionally() {\n var _this29 = this;\n\n var instance = void 0;\n\n var FooBarComponent = _helpers.Component.extend({\n init: function () {\n this._super.apply(this, arguments);\n instance = this;\n },\n\n greeting: 'hello'\n });\n\n this.registerComponent('foo-bar', { ComponentClass: FooBarComponent, template: '{{yield greeting greetee.firstName}}' });\n\n this.render('{{#foo-bar greetee=person as |greeting name|}}{{name}} {{person.lastName}}, {{greeting}}{{/foo-bar}}', {\n person: {\n firstName: 'Joel',\n lastName: 'Kang'\n }\n });\n\n this.assertComponentElement(this.firstChild, { content: 'Joel Kang, hello' });\n\n this.runTask(function () {\n return _this29.rerender();\n });\n\n this.assertComponentElement(this.firstChild, { content: 'Joel Kang, hello' });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this29.context, 'person', { firstName: 'Dora', lastName: 'the Explorer' });\n });\n\n this.assertComponentElement(this.firstChild, { content: 'Dora the Explorer, hello' });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(instance, 'greeting', 'hola');\n });\n\n this.assertComponentElement(this.firstChild, { content: 'Dora the Explorer, hola' });\n\n this.runTask(function () {\n (0, _emberMetal.set)(instance, 'greeting', 'hello');\n (0, _emberMetal.set)(_this29.context, 'person', {\n firstName: 'Joel',\n lastName: 'Kang'\n });\n });\n\n this.assertComponentElement(this.firstChild, { content: 'Joel Kang, hello' });\n };\n\n _class.prototype['@test #11519 - block param infinite loop'] = function test11519BlockParamInfiniteLoop() {\n var _this30 = this;\n\n var instance = void 0;\n var FooBarComponent = _helpers.Component.extend({\n init: function () {\n this._super.apply(this, arguments);\n instance = this;\n },\n\n danger: 0\n });\n\n this.registerComponent('foo-bar', { ComponentClass: FooBarComponent, template: '{{danger}}{{yield danger}}' });\n\n // On initial render, create streams. The bug will not have manifested yet, but at this point\n // we have created streams that create a circular invalidation.\n this.render('{{#foo-bar as |dangerBlockParam|}}{{/foo-bar}}');\n\n this.assertText('0');\n\n // Trigger a non-revalidating re-render. The yielded block will not be dirtied\n // nor will block param streams, and thus no infinite loop will occur.\n this.runTask(function () {\n return _this30.rerender();\n });\n\n this.assertText('0');\n\n // Trigger a revalidation, which will cause an infinite loop without the fix\n // in place. Note that we do not see the infinite loop is in testing mode,\n // because a deprecation warning about re-renders is issued, which Ember\n // treats as an exception.\n this.runTask(function () {\n return (0, _emberMetal.set)(instance, 'danger', 1);\n });\n\n this.assertText('1');\n\n this.runTask(function () {\n return (0, _emberMetal.set)(instance, 'danger', 0);\n });\n\n this.assertText('0');\n };\n\n _class.prototype['@test the component and its child components are destroyed'] = function testTheComponentAndItsChildComponentsAreDestroyed(assert) {\n var _this31 = this;\n\n var destroyed = { 1: 0, 2: 0, 3: 0, 4: 0, 5: 0, 6: 0, 7: 0, 8: 0 };\n\n this.registerComponent('foo-bar', {\n template: '{{id}} {{yield}}',\n ComponentClass: _helpers.Component.extend({\n willDestroy: function () {\n this._super();\n destroyed[this.get('id')]++;\n }\n })\n });\n\n this.render((0, _abstractTestCase.strip)(_templateObject2), {\n cond1: true,\n cond2: true,\n cond3: true,\n cond4: true,\n cond5: true\n });\n\n this.assertText('1 2 3 4 5 6 7 8 ');\n\n this.runTask(function () {\n return _this31.rerender();\n });\n\n assert.deepEqual(destroyed, { 1: 0, 2: 0, 3: 0, 4: 0, 5: 0, 6: 0, 7: 0, 8: 0 });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this31.context, 'cond5', false);\n });\n\n this.assertText('1 2 3 4 8 ');\n\n assert.deepEqual(destroyed, { 1: 0, 2: 0, 3: 0, 4: 0, 5: 1, 6: 1, 7: 1, 8: 0 });\n\n this.runTask(function () {\n (0, _emberMetal.set)(_this31.context, 'cond3', false);\n (0, _emberMetal.set)(_this31.context, 'cond5', true);\n (0, _emberMetal.set)(_this31.context, 'cond4', false);\n });\n\n assert.deepEqual(destroyed, { 1: 0, 2: 0, 3: 1, 4: 1, 5: 1, 6: 1, 7: 1, 8: 1 });\n\n this.runTask(function () {\n (0, _emberMetal.set)(_this31.context, 'cond2', false);\n (0, _emberMetal.set)(_this31.context, 'cond1', false);\n });\n\n assert.deepEqual(destroyed, { 1: 1, 2: 1, 3: 1, 4: 1, 5: 1, 6: 1, 7: 1, 8: 1 });\n };\n\n _class.prototype['@test should escape HTML in normal mustaches'] = function testShouldEscapeHTMLInNormalMustaches() {\n var _this32 = this;\n\n var component = void 0;\n var FooBarComponent = _helpers.Component.extend({\n init: function () {\n this._super.apply(this, arguments);\n component = this;\n },\n\n output: 'you need to be more <b>bold</b>'\n });\n\n this.registerComponent('foo-bar', { ComponentClass: FooBarComponent, template: '{{output}}' });\n\n this.render('{{foo-bar}}');\n\n this.assertText('you need to be more <b>bold</b>');\n\n this.runTask(function () {\n return _this32.rerender();\n });\n\n this.assertText('you need to be more <b>bold</b>');\n\n this.runTask(function () {\n return (0, _emberMetal.set)(component, 'output', 'you are so <i>super</i>');\n });\n\n this.assertText('you are so <i>super</i>');\n\n this.runTask(function () {\n return (0, _emberMetal.set)(component, 'output', 'you need to be more <b>bold</b>');\n });\n };\n\n _class.prototype['@test should not escape HTML in triple mustaches'] = function testShouldNotEscapeHTMLInTripleMustaches(assert) {\n var _this33 = this;\n\n var expectedHtmlBold = 'you need to be more <b>bold</b>';\n var expectedHtmlItalic = 'you are so <i>super</i>';\n var component = void 0;\n var FooBarComponent = _helpers.Component.extend({\n init: function () {\n this._super.apply(this, arguments);\n component = this;\n },\n\n output: expectedHtmlBold\n });\n\n this.registerComponent('foo-bar', { ComponentClass: FooBarComponent, template: '{{{output}}}' });\n\n this.render('{{foo-bar}}');\n\n (0, _testHelpers.equalTokens)(this.firstChild, expectedHtmlBold);\n\n this.runTask(function () {\n return _this33.rerender();\n });\n\n (0, _testHelpers.equalTokens)(this.firstChild, expectedHtmlBold);\n\n this.runTask(function () {\n return (0, _emberMetal.set)(component, 'output', expectedHtmlItalic);\n });\n\n (0, _testHelpers.equalTokens)(this.firstChild, expectedHtmlItalic);\n\n this.runTask(function () {\n return (0, _emberMetal.set)(component, 'output', expectedHtmlBold);\n });\n\n (0, _testHelpers.equalTokens)(this.firstChild, expectedHtmlBold);\n };\n\n _class.prototype['@test should not escape HTML if string is a htmlSafe'] = function testShouldNotEscapeHTMLIfStringIsAHtmlSafe(assert) {\n var _this34 = this;\n\n var expectedHtmlBold = 'you need to be more <b>bold</b>';\n var expectedHtmlItalic = 'you are so <i>super</i>';\n var component = void 0;\n var FooBarComponent = _helpers.Component.extend({\n init: function () {\n this._super.apply(this, arguments);\n component = this;\n },\n\n output: (0, _helpers.htmlSafe)(expectedHtmlBold)\n });\n\n this.registerComponent('foo-bar', { ComponentClass: FooBarComponent, template: '{{output}}' });\n\n this.render('{{foo-bar}}');\n\n (0, _testHelpers.equalTokens)(this.firstChild, expectedHtmlBold);\n\n this.runTask(function () {\n return _this34.rerender();\n });\n\n (0, _testHelpers.equalTokens)(this.firstChild, expectedHtmlBold);\n\n this.runTask(function () {\n return (0, _emberMetal.set)(component, 'output', (0, _helpers.htmlSafe)(expectedHtmlItalic));\n });\n\n (0, _testHelpers.equalTokens)(this.firstChild, expectedHtmlItalic);\n\n this.runTask(function () {\n return (0, _emberMetal.set)(component, 'output', (0, _helpers.htmlSafe)(expectedHtmlBold));\n });\n\n (0, _testHelpers.equalTokens)(this.firstChild, expectedHtmlBold);\n };\n\n _class.prototype['@test late bound layouts return the same definition'] = function testLateBoundLayoutsReturnTheSameDefinition(assert) {\n var templateIds = [];\n\n // This is testing the scenario where you import a template and\n // set it to the layout property:\n //\n // import layout from './template';\n //\n // export default Ember.Component.extend({\n // layout\n // });\n var hello = (0, _helpers.compile)('Hello');\n var bye = (0, _helpers.compile)('Bye');\n\n var FooBarComponent = _helpers.Component.extend({\n init: function () {\n this._super.apply(this, arguments);\n this.layout = this.cond ? hello : bye;\n templateIds.push(this.layout.id);\n }\n });\n\n this.registerComponent('foo-bar', { ComponentClass: FooBarComponent });\n\n this.render('{{foo-bar cond=true}}{{foo-bar cond=false}}{{foo-bar cond=true}}{{foo-bar cond=false}}');\n\n var t1 = templateIds[0],\n t2 = templateIds[1],\n t3 = templateIds[2],\n t4 = templateIds[3];\n\n assert.equal(t1, t3);\n assert.equal(t2, t4);\n };\n\n _class.prototype['@test can use isStream property without conflict (#13271)'] = function testCanUseIsStreamPropertyWithoutConflict13271() {\n var _this35 = this;\n\n var component = void 0;\n var FooBarComponent = _helpers.Component.extend({\n isStream: true,\n\n init: function () {\n this._super.apply(this, arguments);\n component = this;\n }\n });\n\n this.registerComponent('foo-bar', {\n ComponentClass: FooBarComponent,\n\n template: (0, _abstractTestCase.strip)(_templateObject3)\n });\n\n this.render('{{foo-bar}}');\n\n this.assertComponentElement(this.firstChild, { content: 'true' });\n\n this.runTask(function () {\n return _this35.rerender();\n });\n\n this.assertComponentElement(this.firstChild, { content: 'true' });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(component, 'isStream', false);\n });\n\n this.assertComponentElement(this.firstChild, { content: 'false' });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(component, 'isStream', true);\n });\n\n this.assertComponentElement(this.firstChild, { content: 'true' });\n };\n\n _class.prototype['@test lookup of component takes priority over property'] = function testLookupOfComponentTakesPriorityOverProperty() {\n var _this36 = this;\n\n this.registerComponent('some-component', {\n template: 'some-component'\n });\n\n this.render('{{some-prop}} {{some-component}}', {\n 'some-component': 'not-some-component',\n 'some-prop': 'some-prop'\n });\n\n this.assertText('some-prop some-component');\n\n this.runTask(function () {\n return _this36.rerender();\n });\n\n this.assertText('some-prop some-component');\n };\n\n _class.prototype['@test component without dash is not looked up'] = function testComponentWithoutDashIsNotLookedUp() {\n var _this37 = this;\n\n this.registerComponent('somecomponent', {\n template: 'somecomponent'\n });\n\n this.render('{{somecomponent}}', {\n 'somecomponent': 'notsomecomponent'\n });\n\n this.assertText('notsomecomponent');\n\n this.runTask(function () {\n return _this37.rerender();\n });\n\n this.assertText('notsomecomponent');\n\n this.runTask(function () {\n return _this37.context.set('somecomponent', 'not not notsomecomponent');\n });\n\n this.assertText('not not notsomecomponent');\n\n this.runTask(function () {\n return _this37.context.set('somecomponent', 'notsomecomponent');\n });\n\n this.assertText('notsomecomponent');\n };\n\n _class.prototype['@test non-block with properties on attrs'] = function testNonBlockWithPropertiesOnAttrs() {\n var _this38 = this;\n\n this.registerComponent('non-block', {\n template: 'In layout - someProp: {{attrs.someProp}}'\n });\n\n this.render('{{non-block someProp=prop}}', {\n prop: 'something here'\n });\n\n this.assertText('In layout - someProp: something here');\n\n this.runTask(function () {\n return _this38.rerender();\n });\n\n this.assertText('In layout - someProp: something here');\n\n this.runTask(function () {\n return _this38.context.set('prop', 'other thing there');\n });\n\n this.assertText('In layout - someProp: other thing there');\n\n this.runTask(function () {\n return _this38.context.set('prop', 'something here');\n });\n\n this.assertText('In layout - someProp: something here');\n };\n\n _class.prototype['@test non-block with properties overridden in init'] = function testNonBlockWithPropertiesOverriddenInInit() {\n var _this39 = this;\n\n var instance = void 0;\n this.registerComponent('non-block', {\n ComponentClass: _helpers.Component.extend({\n init: function () {\n this._super.apply(this, arguments);\n instance = this;\n this.someProp = 'value set in instance';\n }\n }),\n template: 'In layout - someProp: {{someProp}}'\n });\n\n this.render('{{non-block someProp=prop}}', {\n prop: 'something passed when invoked'\n });\n\n this.assertText('In layout - someProp: value set in instance');\n\n this.runTask(function () {\n return _this39.rerender();\n });\n\n this.assertText('In layout - someProp: value set in instance');\n\n this.runTask(function () {\n return _this39.context.set('prop', 'updated something passed when invoked');\n });\n\n this.assertText('In layout - someProp: updated something passed when invoked');\n\n this.runTask(function () {\n return instance.set('someProp', 'update value set in instance');\n });\n\n this.assertText('In layout - someProp: update value set in instance');\n\n this.runTask(function () {\n return _this39.context.set('prop', 'something passed when invoked');\n });\n this.runTask(function () {\n return instance.set('someProp', 'value set in instance');\n });\n\n this.assertText('In layout - someProp: value set in instance');\n };\n\n _class.prototype['@test rerendering component with attrs from parent'] = function testRerenderingComponentWithAttrsFromParent(assert) {\n var _this40 = this;\n\n var willUpdateCount = 0;\n var didReceiveAttrsCount = 0;\n\n function expectHooks(_ref, callback) {\n var willUpdate = _ref.willUpdate,\n didReceiveAttrs = _ref.didReceiveAttrs;\n\n willUpdateCount = 0;\n didReceiveAttrsCount = 0;\n\n callback();\n\n if (willUpdate) {\n assert.strictEqual(willUpdateCount, 1, 'The willUpdate hook was fired');\n } else {\n assert.strictEqual(willUpdateCount, 0, 'The willUpdate hook was not fired');\n }\n\n if (didReceiveAttrs) {\n assert.strictEqual(didReceiveAttrsCount, 1, 'The didReceiveAttrs hook was fired');\n } else {\n assert.strictEqual(didReceiveAttrsCount, 0, 'The didReceiveAttrs hook was not fired');\n }\n }\n\n this.registerComponent('non-block', {\n ComponentClass: _helpers.Component.extend({\n didReceiveAttrs: function () {\n didReceiveAttrsCount++;\n },\n willUpdate: function () {\n willUpdateCount++;\n }\n }),\n template: 'In layout - someProp: {{someProp}}'\n });\n\n expectHooks({ willUpdate: false, didReceiveAttrs: true }, function () {\n _this40.render('{{non-block someProp=someProp}}', {\n someProp: 'wycats'\n });\n });\n\n this.assertText('In layout - someProp: wycats');\n\n // Note: Hooks are not fired in Glimmer for idempotent re-renders\n expectHooks({ willUpdate: false, didReceiveAttrs: false }, function () {\n _this40.runTask(function () {\n return _this40.rerender();\n });\n });\n\n this.assertText('In layout - someProp: wycats');\n\n expectHooks({ willUpdate: true, didReceiveAttrs: true }, function () {\n _this40.runTask(function () {\n return _this40.context.set('someProp', 'tomdale');\n });\n });\n\n this.assertText('In layout - someProp: tomdale');\n\n // Note: Hooks are not fired in Glimmer for idempotent re-renders\n expectHooks({ willUpdate: false, didReceiveAttrs: false }, function () {\n _this40.runTask(function () {\n return _this40.rerender();\n });\n });\n\n this.assertText('In layout - someProp: tomdale');\n\n expectHooks({ willUpdate: true, didReceiveAttrs: true }, function () {\n _this40.runTask(function () {\n return _this40.context.set('someProp', 'wycats');\n });\n });\n\n this.assertText('In layout - someProp: wycats');\n };\n\n _class.prototype['@test this.attrs.foo === attrs.foo === foo'] = function testThisAttrsFooAttrsFooFoo() {\n var _this41 = this;\n\n this.registerComponent('foo-bar', {\n template: (0, _abstractTestCase.strip)(_templateObject4)\n });\n\n this.render('{{foo-bar value=model.value items=model.items}}', {\n model: {\n value: 'wat',\n items: [1, 2, 3]\n }\n });\n\n this.assertStableRerender();\n\n this.runTask(function () {\n _this41.context.set('model.value', 'lul');\n _this41.context.set('model.items', [1]);\n });\n\n this.assertText((0, _abstractTestCase.strip)(_templateObject5));\n\n this.runTask(function () {\n return _this41.context.set('model', { value: 'wat', items: [1, 2, 3] });\n });\n\n this.assertText('Args: wat | wat | wat123123123');\n };\n\n _class.prototype['@test non-block with properties on self'] = function testNonBlockWithPropertiesOnSelf() {\n var _this42 = this;\n\n this.registerComponent('non-block', {\n template: 'In layout - someProp: {{someProp}}'\n });\n\n this.render('{{non-block someProp=prop}}', {\n prop: 'something here'\n });\n\n this.assertText('In layout - someProp: something here');\n\n this.runTask(function () {\n return _this42.rerender();\n });\n\n this.assertText('In layout - someProp: something here');\n\n this.runTask(function () {\n return _this42.context.set('prop', 'something else');\n });\n\n this.assertText('In layout - someProp: something else');\n\n this.runTask(function () {\n return _this42.context.set('prop', 'something here');\n });\n\n this.assertText('In layout - someProp: something here');\n };\n\n _class.prototype['@test block with properties on self'] = function testBlockWithPropertiesOnSelf() {\n var _this43 = this;\n\n this.registerComponent('with-block', {\n template: 'In layout - someProp: {{someProp}} - {{yield}}'\n });\n\n this.render((0, _abstractTestCase.strip)(_templateObject6), {\n prop: 'something here'\n });\n\n this.assertText('In layout - someProp: something here - In template');\n\n this.runTask(function () {\n return _this43.rerender();\n });\n\n this.assertText('In layout - someProp: something here - In template');\n\n this.runTask(function () {\n return _this43.context.set('prop', 'something else');\n });\n\n this.assertText('In layout - someProp: something else - In template');\n\n this.runTask(function () {\n return _this43.context.set('prop', 'something here');\n });\n\n this.assertText('In layout - someProp: something here - In template');\n };\n\n _class.prototype['@test block with properties on attrs'] = function testBlockWithPropertiesOnAttrs() {\n var _this44 = this;\n\n this.registerComponent('with-block', {\n template: 'In layout - someProp: {{attrs.someProp}} - {{yield}}'\n });\n\n this.render((0, _abstractTestCase.strip)(_templateObject6), {\n prop: 'something here'\n });\n\n this.assertText('In layout - someProp: something here - In template');\n\n this.runTask(function () {\n return _this44.rerender();\n });\n\n this.assertText('In layout - someProp: something here - In template');\n\n this.runTask(function () {\n return _this44.context.set('prop', 'something else');\n });\n\n this.assertText('In layout - someProp: something else - In template');\n\n this.runTask(function () {\n return _this44.context.set('prop', 'something here');\n });\n\n this.assertText('In layout - someProp: something here - In template');\n };\n\n _class.prototype['@test static arbitrary number of positional parameters'] = function testStaticArbitraryNumberOfPositionalParameters(assert) {\n var _this45 = this;\n\n this.registerComponent('sample-component', {\n ComponentClass: _helpers.Component.extend().reopenClass({\n positionalParams: 'names'\n }),\n template: (0, _abstractTestCase.strip)(_templateObject7)\n });\n\n this.render((0, _abstractTestCase.strip)(_templateObject8));\n\n assert.equal(this.$('#args-3').text(), 'Foo4Bar');\n assert.equal(this.$('#args-5').text(), 'Foo4Bar5Baz');\n\n this.runTask(function () {\n return _this45.rerender();\n });\n\n assert.equal(this.$('#args-3').text(), 'Foo4Bar');\n assert.equal(this.$('#args-5').text(), 'Foo4Bar5Baz');\n };\n\n _class.prototype['@test arbitrary positional parameter conflict with hash parameter is reported'] = function testArbitraryPositionalParameterConflictWithHashParameterIsReported() {\n var _this46 = this;\n\n this.registerComponent('sample-component', {\n ComponentClass: _helpers.Component.extend().reopenClass({\n positionalParams: 'names'\n }),\n template: (0, _abstractTestCase.strip)(_templateObject7)\n });\n\n expectAssertion(function () {\n _this46.render('{{sample-component \"Foo\" 4 \"Bar\" names=numbers id=\"args-3\"}}', {\n numbers: [1, 2, 3]\n });\n }, 'You cannot specify positional parameters and the hash argument `names`.');\n };\n\n _class.prototype['@test can use hash parameter instead of arbitrary positional param [GH #12444]'] = function testCanUseHashParameterInsteadOfArbitraryPositionalParamGH12444(assert) {\n var _this47 = this;\n\n this.registerComponent('sample-component', {\n ComponentClass: _helpers.Component.extend().reopenClass({\n positionalParams: 'names'\n }),\n template: (0, _abstractTestCase.strip)(_templateObject7)\n });\n\n this.render('{{sample-component names=things}}', {\n things: (0, _emberRuntime.A)(['Foo', 4, 'Bar'])\n });\n\n this.assertText('Foo4Bar');\n\n this.runTask(function () {\n return _this47.rerender();\n });\n\n this.assertText('Foo4Bar');\n\n this.runTask(function () {\n return _this47.context.get('things').pushObject(5);\n });\n\n this.assertText('Foo4Bar5');\n\n this.runTask(function () {\n return _this47.context.get('things').shiftObject();\n });\n\n this.assertText('4Bar5');\n\n this.runTask(function () {\n return _this47.context.get('things').clear();\n });\n\n this.assertText('');\n\n this.runTask(function () {\n return _this47.context.set('things', (0, _emberRuntime.A)(['Foo', 4, 'Bar']));\n });\n\n this.assertText('Foo4Bar');\n };\n\n _class.prototype['@test can use hash parameter instead of positional param'] = function testCanUseHashParameterInsteadOfPositionalParam(assert) {\n var _this48 = this;\n\n this.registerComponent('sample-component', {\n ComponentClass: _helpers.Component.extend().reopenClass({\n positionalParams: ['first', 'second']\n }),\n template: '{{first}} - {{second}}'\n });\n\n // TODO: Fix when id is implemented\n this.render((0, _abstractTestCase.strip)(_templateObject9));\n\n assert.equal(this.$('#two-positional').text(), 'one - two');\n assert.equal(this.$('#one-positional').text(), 'one - two');\n assert.equal(this.$('#no-positional').text(), 'one - two');\n\n this.runTask(function () {\n return _this48.rerender();\n });\n\n assert.equal(this.$('#two-positional').text(), 'one - two');\n assert.equal(this.$('#one-positional').text(), 'one - two');\n assert.equal(this.$('#no-positional').text(), 'one - two');\n };\n\n _class.prototype['@test dynamic arbitrary number of positional parameters'] = function testDynamicArbitraryNumberOfPositionalParameters(assert) {\n var _this49 = this;\n\n this.registerComponent('sample-component', {\n ComponentClass: _helpers.Component.extend().reopenClass({\n positionalParams: 'n'\n }),\n template: (0, _abstractTestCase.strip)(_templateObject10)\n });\n\n this.render('{{sample-component user1 user2}}', {\n user1: 'Foo',\n user2: 4\n });\n\n this.assertText('Foo4');\n\n this.runTask(function () {\n return _this49.rerender();\n });\n\n this.assertText('Foo4');\n\n this.runTask(function () {\n return _this49.context.set('user1', 'Bar');\n });\n\n this.assertText('Bar4');\n\n this.runTask(function () {\n return _this49.context.set('user2', '5');\n });\n\n this.assertText('Bar5');\n\n this.runTask(function () {\n _this49.context.set('user1', 'Foo');\n _this49.context.set('user2', 4);\n });\n\n this.assertText('Foo4');\n };\n\n _class.prototype['@test with ariaRole specified'] = function testWithAriaRoleSpecified() {\n var _this50 = this;\n\n this.registerComponent('aria-test', {\n template: 'Here!'\n });\n\n this.render('{{aria-test ariaRole=role}}', {\n role: 'main'\n });\n\n this.assertComponentElement(this.firstChild, { attrs: { role: 'main' } });\n\n this.runTask(function () {\n return _this50.rerender();\n });\n\n this.assertComponentElement(this.firstChild, { attrs: { role: 'main' } });\n\n this.runTask(function () {\n return _this50.context.set('role', 'input');\n });\n\n this.assertComponentElement(this.firstChild, { attrs: { role: 'input' } });\n\n this.runTask(function () {\n return _this50.context.set('role', 'main');\n });\n\n this.assertComponentElement(this.firstChild, { attrs: { role: 'main' } });\n };\n\n _class.prototype['@test `template` specified in component is overridden by block'] = function testTemplateSpecifiedInComponentIsOverriddenByBlock() {\n var _this51 = this;\n\n this.registerComponent('with-template', {\n ComponentClass: _helpers.Component.extend({\n template: (0, _helpers.compile)('Should not be used')\n }),\n template: '[In layout - {{name}}] {{yield}}'\n });\n\n this.render((0, _abstractTestCase.strip)(_templateObject11), {\n name: 'Whoop, whoop!'\n });\n\n this.assertText('[In layout - with-block] [In block - Whoop, whoop!][In layout - without-block] ');\n\n this.runTask(function () {\n return _this51.rerender();\n });\n\n this.assertText('[In layout - with-block] [In block - Whoop, whoop!][In layout - without-block] ');\n\n this.runTask(function () {\n return _this51.context.set('name', 'Ole, ole');\n });\n\n this.assertText('[In layout - with-block] [In block - Ole, ole][In layout - without-block] ');\n\n this.runTask(function () {\n return _this51.context.set('name', 'Whoop, whoop!');\n });\n\n this.assertText('[In layout - with-block] [In block - Whoop, whoop!][In layout - without-block] ');\n };\n\n _class.prototype['@test hasBlock is true when block supplied'] = function testHasBlockIsTrueWhenBlockSupplied() {\n var _this52 = this;\n\n this.registerComponent('with-block', {\n template: (0, _abstractTestCase.strip)(_templateObject12)\n });\n\n this.render((0, _abstractTestCase.strip)(_templateObject13));\n\n this.assertText('In template');\n\n this.runTask(function () {\n return _this52.rerender();\n });\n\n this.assertText('In template');\n };\n\n _class.prototype['@test hasBlock is false when no block supplied'] = function testHasBlockIsFalseWhenNoBlockSupplied() {\n var _this53 = this;\n\n this.registerComponent('with-block', {\n template: (0, _abstractTestCase.strip)(_templateObject12)\n });\n\n this.render('{{with-block}}');\n\n this.assertText('No Block!');\n\n this.runTask(function () {\n return _this53.rerender();\n });\n\n this.assertText('No Block!');\n };\n\n _class.prototype['@test hasBlockParams is true when block param supplied'] = function testHasBlockParamsIsTrueWhenBlockParamSupplied() {\n var _this54 = this;\n\n this.registerComponent('with-block', {\n template: (0, _abstractTestCase.strip)(_templateObject14)\n });\n\n this.render((0, _abstractTestCase.strip)(_templateObject15));\n\n this.assertText('In template - In Component');\n\n this.runTask(function () {\n return _this54.rerender();\n });\n\n this.assertText('In template - In Component');\n };\n\n _class.prototype['@test hasBlockParams is false when no block param supplied'] = function testHasBlockParamsIsFalseWhenNoBlockParamSupplied() {\n var _this55 = this;\n\n this.registerComponent('with-block', {\n template: (0, _abstractTestCase.strip)(_templateObject16)\n });\n\n this.render((0, _abstractTestCase.strip)(_templateObject17));\n\n this.assertText('In block No Block Param!');\n\n this.runTask(function () {\n return _this55.rerender();\n });\n\n this.assertText('In block No Block Param!');\n };\n\n _class.prototype['@test static named positional parameters'] = function testStaticNamedPositionalParameters() {\n var _this56 = this;\n\n this.registerComponent('sample-component', {\n ComponentClass: _helpers.Component.extend().reopenClass({\n positionalParams: ['name', 'age']\n }),\n template: '{{name}}{{age}}'\n });\n\n this.render('{{sample-component \"Quint\" 4}}');\n\n this.assertText('Quint4');\n\n this.runTask(function () {\n return _this56.rerender();\n });\n\n this.assertText('Quint4');\n };\n\n _class.prototype['@test dynamic named positional parameters'] = function testDynamicNamedPositionalParameters() {\n var _this57 = this;\n\n this.registerComponent('sample-component', {\n ComponentClass: _helpers.Component.extend().reopenClass({\n positionalParams: ['name', 'age']\n }),\n template: '{{name}}{{age}}'\n });\n\n this.render('{{sample-component myName myAge}}', {\n myName: 'Quint',\n myAge: 4\n });\n\n this.assertText('Quint4');\n\n this.runTask(function () {\n return _this57.rerender();\n });\n\n this.assertText('Quint4');\n\n this.runTask(function () {\n return _this57.context.set('myName', 'Sergio');\n });\n\n this.assertText('Sergio4');\n\n this.runTask(function () {\n return _this57.context.set('myAge', 2);\n });\n\n this.assertText('Sergio2');\n\n this.runTask(function () {\n _this57.context.set('myName', 'Quint');\n _this57.context.set('myAge', 4);\n });\n\n this.assertText('Quint4');\n };\n\n _class.prototype['@test if a value is passed as a non-positional parameter, it raises an assertion'] = function testIfAValueIsPassedAsANonPositionalParameterItRaisesAnAssertion() {\n var _this58 = this;\n\n this.registerComponent('sample-component', {\n ComponentClass: _helpers.Component.extend().reopenClass({\n positionalParams: ['name']\n }),\n template: '{{name}}'\n });\n\n expectAssertion(function () {\n _this58.render('{{sample-component notMyName name=myName}}', {\n myName: 'Quint',\n notMyName: 'Sergio'\n });\n }, 'You cannot specify both a positional param (at position 0) and the hash argument `name`.');\n };\n\n _class.prototype['@test yield to inverse'] = function testYieldToInverse() {\n var _this59 = this;\n\n this.registerComponent('my-if', {\n template: (0, _abstractTestCase.strip)(_templateObject18)\n });\n\n this.render((0, _abstractTestCase.strip)(_templateObject19), {\n activated: true\n });\n\n this.assertText('Yes:Hello42');\n\n this.runTask(function () {\n return _this59.rerender();\n });\n\n this.assertText('Yes:Hello42');\n\n this.runTask(function () {\n return _this59.context.set('activated', false);\n });\n\n this.assertText('No:Goodbye');\n\n this.runTask(function () {\n return _this59.context.set('activated', true);\n });\n\n this.assertText('Yes:Hello42');\n };\n\n _class.prototype['@test expression hasBlock inverse'] = function testExpressionHasBlockInverse(assert) {\n this.registerComponent('check-inverse', {\n template: (0, _abstractTestCase.strip)(_templateObject20)\n });\n\n this.render((0, _abstractTestCase.strip)(_templateObject21));\n\n this.assertComponentElement(this.firstChild, { content: 'No' });\n this.assertComponentElement(this.nthChild(1), { content: 'Yes' });\n\n this.assertStableRerender();\n };\n\n _class.prototype['@test expression hasBlock default'] = function testExpressionHasBlockDefault(assert) {\n this.registerComponent('check-block', {\n template: (0, _abstractTestCase.strip)(_templateObject22)\n });\n\n this.render((0, _abstractTestCase.strip)(_templateObject23));\n\n this.assertComponentElement(this.firstChild, { content: 'No' });\n this.assertComponentElement(this.nthChild(1), { content: 'Yes' });\n\n this.assertStableRerender();\n };\n\n _class.prototype['@test expression hasBlockParams inverse'] = function testExpressionHasBlockParamsInverse(assert) {\n this.registerComponent('check-inverse', {\n template: (0, _abstractTestCase.strip)(_templateObject24)\n });\n\n this.render((0, _abstractTestCase.strip)(_templateObject25));\n\n this.assertComponentElement(this.firstChild, { content: 'No' });\n this.assertComponentElement(this.nthChild(1), { content: 'No' });\n\n this.assertStableRerender();\n };\n\n _class.prototype['@test expression hasBlockParams default'] = function testExpressionHasBlockParamsDefault(assert) {\n this.registerComponent('check-block', {\n template: (0, _abstractTestCase.strip)(_templateObject26)\n });\n\n this.render((0, _abstractTestCase.strip)(_templateObject27));\n\n this.assertComponentElement(this.firstChild, { content: 'No' });\n this.assertComponentElement(this.nthChild(1), { content: 'Yes' });\n\n this.assertStableRerender();\n };\n\n _class.prototype['@test non-expression hasBlock'] = function testNonExpressionHasBlock(assert) {\n this.registerComponent('check-block', {\n template: (0, _abstractTestCase.strip)(_templateObject28)\n });\n\n this.render((0, _abstractTestCase.strip)(_templateObject23));\n\n this.assertComponentElement(this.firstChild, { content: 'No' });\n this.assertComponentElement(this.nthChild(1), { content: 'Yes' });\n\n this.assertStableRerender();\n };\n\n _class.prototype['@test expression hasBlockParams'] = function testExpressionHasBlockParams(assert) {\n this.registerComponent('check-params', {\n template: (0, _abstractTestCase.strip)(_templateObject26)\n });\n\n this.render((0, _abstractTestCase.strip)(_templateObject29));\n\n this.assertComponentElement(this.firstChild, { content: 'No' });\n this.assertComponentElement(this.nthChild(1), { content: 'Yes' });\n\n this.assertStableRerender();\n };\n\n _class.prototype['@test non-expression hasBlockParams'] = function testNonExpressionHasBlockParams(assert) {\n this.registerComponent('check-params', {\n template: (0, _abstractTestCase.strip)(_templateObject30)\n });\n\n this.render((0, _abstractTestCase.strip)(_templateObject29));\n\n this.assertComponentElement(this.firstChild, { content: 'No' });\n this.assertComponentElement(this.nthChild(1), { content: 'Yes' });\n\n this.assertStableRerender();\n };\n\n _class.prototype['@test hasBlock expression in an attribute'] = function testHasBlockExpressionInAnAttribute(assert) {\n this.registerComponent('check-attr', {\n template: '<button name={{hasBlock}}></button>'\n });\n\n this.render((0, _abstractTestCase.strip)(_templateObject31));\n\n (0, _testHelpers.equalsElement)(this.$('button')[0], 'button', { name: 'false' }, '');\n (0, _testHelpers.equalsElement)(this.$('button')[1], 'button', { name: 'true' }, '');\n\n this.assertStableRerender();\n };\n\n _class.prototype['@test hasBlock inverse expression in an attribute'] = function testHasBlockInverseExpressionInAnAttribute(assert) {\n this.registerComponent('check-attr', {\n template: '<button name={{hasBlock \"inverse\"}}></button>'\n }, '');\n\n this.render((0, _abstractTestCase.strip)(_templateObject32));\n\n (0, _testHelpers.equalsElement)(this.$('button')[0], 'button', { name: 'false' }, '');\n (0, _testHelpers.equalsElement)(this.$('button')[1], 'button', { name: 'true' }, '');\n\n this.assertStableRerender();\n };\n\n _class.prototype['@test hasBlockParams expression in an attribute'] = function testHasBlockParamsExpressionInAnAttribute(assert) {\n this.registerComponent('check-attr', {\n template: '<button name={{hasBlockParams}}></button>'\n });\n\n this.render((0, _abstractTestCase.strip)(_templateObject33));\n\n (0, _testHelpers.equalsElement)(this.$('button')[0], 'button', { name: 'false' }, '');\n (0, _testHelpers.equalsElement)(this.$('button')[1], 'button', { name: 'true' }, '');\n\n this.assertStableRerender();\n };\n\n _class.prototype['@test hasBlockParams inverse expression in an attribute'] = function testHasBlockParamsInverseExpressionInAnAttribute(assert) {\n this.registerComponent('check-attr', {\n template: '<button name={{hasBlockParams \"inverse\"}}></button>'\n }, '');\n\n this.render((0, _abstractTestCase.strip)(_templateObject33));\n\n (0, _testHelpers.equalsElement)(this.$('button')[0], 'button', { name: 'false' }, '');\n (0, _testHelpers.equalsElement)(this.$('button')[1], 'button', { name: 'false' }, '');\n\n this.assertStableRerender();\n };\n\n _class.prototype['@test hasBlock as a param to a helper'] = function testHasBlockAsAParamToAHelper(assert) {\n this.registerComponent('check-helper', {\n template: '{{if hasBlock \"true\" \"false\"}}'\n });\n\n this.render((0, _abstractTestCase.strip)(_templateObject34));\n\n this.assertComponentElement(this.firstChild, { content: 'false' });\n this.assertComponentElement(this.nthChild(1), { content: 'true' });\n\n this.assertStableRerender();\n };\n\n _class.prototype['@test hasBlock as an expression param to a helper'] = function testHasBlockAsAnExpressionParamToAHelper(assert) {\n this.registerComponent('check-helper', {\n template: '{{if (hasBlock) \"true\" \"false\"}}'\n });\n\n this.render((0, _abstractTestCase.strip)(_templateObject34));\n\n this.assertComponentElement(this.firstChild, { content: 'false' });\n this.assertComponentElement(this.nthChild(1), { content: 'true' });\n\n this.assertStableRerender();\n };\n\n _class.prototype['@test hasBlock inverse as a param to a helper'] = function testHasBlockInverseAsAParamToAHelper(assert) {\n this.registerComponent('check-helper', {\n template: '{{if (hasBlock \"inverse\") \"true\" \"false\"}}'\n });\n\n this.render((0, _abstractTestCase.strip)(_templateObject35));\n\n this.assertComponentElement(this.firstChild, { content: 'false' });\n this.assertComponentElement(this.nthChild(1), { content: 'true' });\n\n this.assertStableRerender();\n };\n\n _class.prototype['@test hasBlockParams as a param to a helper'] = function testHasBlockParamsAsAParamToAHelper(assert) {\n this.registerComponent('check-helper', {\n template: '{{if hasBlockParams \"true\" \"false\"}}'\n });\n\n this.render((0, _abstractTestCase.strip)(_templateObject36));\n\n this.assertComponentElement(this.firstChild, { content: 'false' });\n this.assertComponentElement(this.nthChild(1), { content: 'true' });\n\n this.assertStableRerender();\n };\n\n _class.prototype['@test hasBlockParams as an expression param to a helper'] = function testHasBlockParamsAsAnExpressionParamToAHelper(assert) {\n this.registerComponent('check-helper', {\n template: '{{if (hasBlockParams) \"true\" \"false\"}}'\n });\n\n this.render((0, _abstractTestCase.strip)(_templateObject36));\n\n this.assertComponentElement(this.firstChild, { content: 'false' });\n this.assertComponentElement(this.nthChild(1), { content: 'true' });\n\n this.assertStableRerender();\n };\n\n _class.prototype['@test hasBlockParams inverse as a param to a helper'] = function testHasBlockParamsInverseAsAParamToAHelper(assert) {\n this.registerComponent('check-helper', {\n template: '{{if (hasBlockParams \"inverse\") \"true\" \"false\"}}'\n });\n\n this.render((0, _abstractTestCase.strip)(_templateObject36));\n\n this.assertComponentElement(this.firstChild, { content: 'false' });\n this.assertComponentElement(this.nthChild(1), { content: 'false' });\n\n this.assertStableRerender();\n };\n\n _class.prototype['@test component in template of a yielding component should have the proper parentView'] = function testComponentInTemplateOfAYieldingComponentShouldHaveTheProperParentView(assert) {\n var _this60 = this;\n\n var outer = void 0,\n innerTemplate = void 0,\n innerLayout = void 0;\n\n this.registerComponent('x-outer', {\n ComponentClass: _helpers.Component.extend({\n init: function () {\n this._super.apply(this, arguments);\n outer = this;\n }\n }),\n template: '{{x-inner-in-layout}}{{yield}}'\n });\n\n this.registerComponent('x-inner-in-template', {\n ComponentClass: _helpers.Component.extend({\n init: function () {\n this._super.apply(this, arguments);\n innerTemplate = this;\n }\n })\n });\n\n this.registerComponent('x-inner-in-layout', {\n ComponentClass: _helpers.Component.extend({\n init: function () {\n this._super.apply(this, arguments);\n innerLayout = this;\n }\n })\n });\n\n this.render('{{#x-outer}}{{x-inner-in-template}}{{/x-outer}}');\n\n assert.equal(innerTemplate.parentView, outer, 'receives the wrapping component as its parentView in template blocks');\n assert.equal(innerLayout.parentView, outer, 'receives the wrapping component as its parentView in layout');\n assert.equal(outer.parentView, this.context, 'x-outer receives the ambient scope as its parentView');\n\n this.runTask(function () {\n return _this60.rerender();\n });\n\n assert.equal(innerTemplate.parentView, outer, 'receives the wrapping component as its parentView in template blocks');\n assert.equal(innerLayout.parentView, outer, 'receives the wrapping component as its parentView in layout');\n assert.equal(outer.parentView, this.context, 'x-outer receives the ambient scope as its parentView');\n };\n\n _class.prototype['@test newly-added sub-components get correct parentView'] = function testNewlyAddedSubComponentsGetCorrectParentView(assert) {\n var _this61 = this;\n\n var outer = void 0,\n inner = void 0;\n\n this.registerComponent('x-outer', {\n ComponentClass: _helpers.Component.extend({\n init: function () {\n this._super.apply(this, arguments);\n outer = this;\n }\n })\n });\n\n this.registerComponent('x-inner', {\n ComponentClass: _helpers.Component.extend({\n init: function () {\n this._super.apply(this, arguments);\n inner = this;\n }\n })\n });\n\n this.render((0, _abstractTestCase.strip)(_templateObject37), {\n showInner: false\n });\n\n assert.equal(outer.parentView, this.context, 'x-outer receives the ambient scope as its parentView');\n\n this.runTask(function () {\n return _this61.rerender();\n });\n\n assert.equal(outer.parentView, this.context, 'x-outer receives the ambient scope as its parentView (after rerender)');\n\n this.runTask(function () {\n return _this61.context.set('showInner', true);\n });\n\n assert.equal(outer.parentView, this.context, 'x-outer receives the ambient scope as its parentView');\n assert.equal(inner.parentView, outer, 'receives the wrapping component as its parentView in template blocks');\n\n this.runTask(function () {\n return _this61.context.set('showInner', false);\n });\n\n assert.equal(outer.parentView, this.context, 'x-outer receives the ambient scope as its parentView');\n };\n\n _class.prototype['@test when a property is changed during children\\'s rendering'] = function testWhenAPropertyIsChangedDuringChildrenSRendering(assert) {\n var _this62 = this;\n\n var outer = void 0,\n middle = void 0;\n\n this.registerComponent('x-outer', {\n ComponentClass: _helpers.Component.extend({\n init: function () {\n this._super.apply(this, arguments);\n outer = this;\n },\n\n value: 1\n }),\n template: '{{#x-middle}}{{x-inner value=value}}{{/x-middle}}'\n });\n\n this.registerComponent('x-middle', {\n ComponentClass: _helpers.Component.extend({\n init: function () {\n this._super.apply(this, arguments);\n middle = this;\n },\n\n value: null\n }),\n template: '<div id=\"middle-value\">{{value}}</div>{{yield}}'\n });\n\n this.registerComponent('x-inner', {\n ComponentClass: _helpers.Component.extend({\n value: null,\n pushDataUp: (0, _emberMetal.observer)('value', function () {\n middle.set('value', this.get('value'));\n })\n }),\n template: '<div id=\"inner-value\">{{value}}</div>'\n });\n\n this.render('{{x-outer}}');\n\n assert.equal(this.$('#inner-value').text(), '1', 'initial render of inner');\n assert.equal(this.$('#middle-value').text(), '', 'initial render of middle (observers do not run during init)');\n\n this.runTask(function () {\n return _this62.rerender();\n });\n\n assert.equal(this.$('#inner-value').text(), '1', 'initial render of inner');\n assert.equal(this.$('#middle-value').text(), '', 'initial render of middle (observers do not run during init)');\n\n var expectedBacktrackingMessage = /modified \"value\" twice on <\\(.+> in a single render\\. It was rendered in \"component:x-middle\" and modified in \"component:x-inner\"/;\n\n if (_features.EMBER_GLIMMER_ALLOW_BACKTRACKING_RERENDER) {\n expectDeprecation(expectedBacktrackingMessage);\n this.runTask(function () {\n return outer.set('value', 2);\n });\n } else {\n expectAssertion(function () {\n _this62.runTask(function () {\n return outer.set('value', 2);\n });\n }, expectedBacktrackingMessage);\n\n return;\n }\n\n assert.equal(this.$('#inner-value').text(), '2', 'second render of inner');\n assert.equal(this.$('#middle-value').text(), '2', 'second render of middle');\n\n this.runTask(function () {\n return outer.set('value', 3);\n });\n\n assert.equal(this.$('#inner-value').text(), '3', 'third render of inner');\n assert.equal(this.$('#middle-value').text(), '3', 'third render of middle');\n\n this.runTask(function () {\n return outer.set('value', 1);\n });\n\n assert.equal(this.$('#inner-value').text(), '1', 'reset render of inner');\n assert.equal(this.$('#middle-value').text(), '1', 'reset render of middle');\n };\n\n _class.prototype['@test when a shared dependency is changed during children\\'s rendering'] = function testWhenASharedDependencyIsChangedDuringChildrenSRendering(assert) {\n var _this63 = this;\n\n var outer = void 0;\n\n this.registerComponent('x-outer', {\n ComponentClass: _helpers.Component.extend({\n init: function () {\n this._super.apply(this, arguments);\n outer = this;\n },\n\n value: 1,\n wrapper: _emberRuntime.Object.create({ content: null })\n }),\n template: '<div id=\"outer-value\">{{wrapper.content}}</div> {{x-inner value=value wrapper=wrapper}}'\n });\n\n this.registerComponent('x-inner', {\n ComponentClass: _helpers.Component.extend({\n didReceiveAttrs: function () {\n this.get('wrapper').set('content', this.get('value'));\n },\n\n value: null\n }),\n template: '<div id=\"inner-value\">{{wrapper.content}}</div>'\n });\n\n var expectedBacktrackingMessage = /modified \"wrapper\\.content\" twice on <Ember\\.Object.+> in a single render\\. It was rendered in \"component:x-outer\" and modified in \"component:x-inner\"/;\n\n if (_features.EMBER_GLIMMER_ALLOW_BACKTRACKING_RERENDER) {\n expectDeprecation(expectedBacktrackingMessage);\n this.render('{{x-outer}}');\n } else {\n expectAssertion(function () {\n _this63.render('{{x-outer}}');\n }, expectedBacktrackingMessage);\n\n return;\n }\n\n assert.equal(this.$('#inner-value').text(), '1', 'initial render of inner');\n assert.equal(this.$('#outer-value').text(), '1', 'initial render of outer');\n\n this.runTask(function () {\n return _this63.rerender();\n });\n\n assert.equal(this.$('#inner-value').text(), '1', 're-render of inner');\n assert.equal(this.$('#outer-value').text(), '1', 're-render of outer');\n\n this.runTask(function () {\n return outer.set('value', 2);\n });\n\n assert.equal(this.$('#inner-value').text(), '2', 'second render of inner');\n assert.equal(this.$('#outer-value').text(), '2', 'second render of outer');\n\n this.runTask(function () {\n return outer.set('value', 3);\n });\n\n assert.equal(this.$('#inner-value').text(), '3', 'third render of inner');\n assert.equal(this.$('#outer-value').text(), '3', 'third render of outer');\n\n this.runTask(function () {\n return outer.set('value', 1);\n });\n\n assert.equal(this.$('#inner-value').text(), '1', 'reset render of inner');\n assert.equal(this.$('#outer-value').text(), '1', 'reset render of outer');\n };\n\n _class.prototype['@test non-block with each rendering child components'] = function testNonBlockWithEachRenderingChildComponents() {\n var _this64 = this;\n\n this.registerComponent('non-block', {\n template: (0, _abstractTestCase.strip)(_templateObject38)\n });\n\n this.registerComponent('child-non-block', {\n template: 'Child: {{item}}.'\n });\n\n var items = (0, _emberRuntime.A)(['Tom', 'Dick', 'Harry']);\n\n this.render('{{non-block items=items}}', { items: items });\n\n this.assertText('In layout. [Child: Tom.][Child: Dick.][Child: Harry.]');\n\n this.runTask(function () {\n return _this64.rerender();\n });\n\n this.assertText('In layout. [Child: Tom.][Child: Dick.][Child: Harry.]');\n\n this.runTask(function () {\n return _this64.context.get('items').pushObject('Sergio');\n });\n\n this.assertText('In layout. [Child: Tom.][Child: Dick.][Child: Harry.][Child: Sergio.]');\n\n this.runTask(function () {\n return _this64.context.get('items').shiftObject();\n });\n\n this.assertText('In layout. [Child: Dick.][Child: Harry.][Child: Sergio.]');\n\n this.runTask(function () {\n return _this64.context.set('items', (0, _emberRuntime.A)(['Tom', 'Dick', 'Harry']));\n });\n\n this.assertText('In layout. [Child: Tom.][Child: Dick.][Child: Harry.]');\n };\n\n _class.prototype['@test specifying classNames results in correct class'] = function testSpecifyingClassNamesResultsInCorrectClass(assert) {\n var _this65 = this;\n\n this.registerComponent('some-clicky-thing', {\n ComponentClass: _helpers.Component.extend({\n tagName: 'button',\n classNames: ['foo', 'bar']\n })\n });\n\n this.render((0, _abstractTestCase.strip)(_templateObject39));\n\n // TODO: ember-view is no longer viewable in the classNames array. Bug or\n // feature?\n var expectedClassNames = ['ember-view', 'foo', 'bar', 'baz'];\n\n assert.ok(this.$('button').is('.foo.bar.baz.ember-view'), 'the element has the correct classes: ' + this.$('button').attr('class'));\n // `ember-view` is no longer in classNames.\n // assert.deepEqual(clickyThing.get('classNames'), expectedClassNames, 'classNames are properly combined');\n this.assertComponentElement(this.firstChild, { tagName: 'button', attrs: { 'class': (0, _testHelpers.classes)(expectedClassNames.join(' ')) } });\n\n this.runTask(function () {\n return _this65.rerender();\n });\n\n assert.ok(this.$('button').is('.foo.bar.baz.ember-view'), 'the element has the correct classes: ' + this.$('button').attr('class') + ' (rerender)');\n // `ember-view` is no longer in classNames.\n // assert.deepEqual(clickyThing.get('classNames'), expectedClassNames, 'classNames are properly combined (rerender)');\n this.assertComponentElement(this.firstChild, { tagName: 'button', attrs: { 'class': (0, _testHelpers.classes)(expectedClassNames.join(' ')) } });\n };\n\n _class.prototype['@test specifying custom concatenatedProperties avoids clobbering'] = function testSpecifyingCustomConcatenatedPropertiesAvoidsClobbering(assert) {\n var _this66 = this;\n\n this.registerComponent('some-clicky-thing', {\n ComponentClass: _helpers.Component.extend({\n concatenatedProperties: ['blahzz'],\n blahzz: ['blark', 'pory']\n }),\n template: (0, _abstractTestCase.strip)(_templateObject40)\n });\n\n this.render((0, _abstractTestCase.strip)(_templateObject41));\n\n this.assertText('blarkporybaz- Click Me');\n\n this.runTask(function () {\n return _this66.rerender();\n });\n\n this.assertText('blarkporybaz- Click Me');\n };\n\n _class.prototype['@test a two way binding flows upstream when consumed in the template'] = function testATwoWayBindingFlowsUpstreamWhenConsumedInTheTemplate() {\n var _this67 = this;\n\n var component = void 0;\n var FooBarComponent = _helpers.Component.extend({\n init: function () {\n this._super.apply(this, arguments);\n component = this;\n }\n });\n\n this.registerComponent('foo-bar', {\n ComponentClass: FooBarComponent,\n\n template: '{{bar}}'\n });\n\n this.render('{{localBar}} - {{foo-bar bar=localBar}}', {\n localBar: 'initial value'\n });\n\n this.assertText('initial value - initial value');\n\n this.runTask(function () {\n return _this67.rerender();\n });\n\n this.assertText('initial value - initial value');\n\n if (_features.MANDATORY_SETTER) {\n expectAssertion(function () {\n component.bar = 'foo-bar';\n }, /You must use set\\(\\) to set the `bar` property \\(of .+\\) to `foo-bar`\\./);\n\n this.assertText('initial value - initial value');\n }\n\n this.runTask(function () {\n component.set('bar', 'updated value');\n });\n\n this.assertText('updated value - updated value');\n\n this.runTask(function () {\n component.set('bar', undefined);\n });\n\n this.assertText(' - ');\n\n this.runTask(function () {\n _this67.component.set('localBar', 'initial value');\n });\n\n this.assertText('initial value - initial value');\n };\n\n _class.prototype['@test a two way binding flows upstream through a CP when consumed in the template'] = function testATwoWayBindingFlowsUpstreamThroughACPWhenConsumedInTheTemplate() {\n var _this68 = this;\n\n var component = void 0;\n var FooBarComponent = _helpers.Component.extend({\n init: function () {\n this._super.apply(this, arguments);\n component = this;\n },\n\n\n bar: (0, _emberMetal.computed)({\n get: function () {\n return this._bar;\n },\n set: function (key, value) {\n this._bar = value;\n return this._bar;\n }\n })\n });\n\n this.registerComponent('foo-bar', {\n ComponentClass: FooBarComponent,\n\n template: '{{bar}}'\n });\n\n this.render('{{localBar}} - {{foo-bar bar=localBar}}', {\n localBar: 'initial value'\n });\n\n this.assertText('initial value - initial value');\n\n this.runTask(function () {\n return _this68.rerender();\n });\n\n this.assertText('initial value - initial value');\n\n this.runTask(function () {\n component.set('bar', 'updated value');\n });\n\n this.assertText('updated value - updated value');\n\n this.runTask(function () {\n _this68.component.set('localBar', 'initial value');\n });\n\n this.assertText('initial value - initial value');\n };\n\n _class.prototype['@test a two way binding flows upstream through a CP without template consumption'] = function testATwoWayBindingFlowsUpstreamThroughACPWithoutTemplateConsumption() {\n var _this69 = this;\n\n var component = void 0;\n var FooBarComponent = _helpers.Component.extend({\n init: function () {\n this._super.apply(this, arguments);\n component = this;\n },\n\n\n bar: (0, _emberMetal.computed)({\n get: function () {\n return this._bar;\n },\n set: function (key, value) {\n this._bar = value;\n return this._bar;\n }\n })\n });\n\n this.registerComponent('foo-bar', {\n ComponentClass: FooBarComponent,\n template: ''\n });\n\n this.render('{{localBar}}{{foo-bar bar=localBar}}', {\n localBar: 'initial value'\n });\n\n this.assertText('initial value');\n\n this.runTask(function () {\n return _this69.rerender();\n });\n\n this.assertText('initial value');\n\n this.runTask(function () {\n component.set('bar', 'updated value');\n });\n\n this.assertText('updated value');\n\n this.runTask(function () {\n _this69.component.set('localBar', 'initial value');\n });\n\n this.assertText('initial value');\n };\n\n _class.prototype['@test services can be injected into components'] = function testServicesCanBeInjectedIntoComponents() {\n var _this70 = this;\n\n var service = void 0;\n this.registerService('name', _emberRuntime.Service.extend({\n init: function () {\n this._super.apply(this, arguments);\n service = this;\n },\n\n last: 'Jackson'\n }));\n\n this.registerComponent('foo-bar', {\n ComponentClass: _helpers.Component.extend({\n name: _emberRuntime.inject.service()\n }),\n template: '{{name.last}}'\n });\n\n this.render('{{foo-bar}}');\n\n this.assertText('Jackson');\n\n this.runTask(function () {\n return _this70.rerender();\n });\n\n this.assertText('Jackson');\n\n this.runTask(function () {\n service.set('last', 'McGuffey');\n });\n\n this.assertText('McGuffey');\n\n this.runTask(function () {\n service.set('last', 'Jackson');\n });\n\n this.assertText('Jackson');\n };\n\n _class.prototype['@test injecting an unknown service raises an exception'] = function testInjectingAnUnknownServiceRaisesAnException(assert) {\n var _this71 = this;\n\n this.registerComponent('foo-bar', {\n ComponentClass: _helpers.Component.extend({\n missingService: _emberRuntime.inject.service()\n })\n });\n\n expectAssertion(function () {\n _this71.render('{{foo-bar}}');\n }, 'Attempting to inject an unknown injection: \\'service:missingService\\'');\n };\n\n _class.prototype['@test can access `actions` hash via `_actions` [DEPRECATED]'] = function testCanAccessActionsHashVia_actionsDEPRECATED() {\n var _this72 = this;\n\n var component = void 0;\n\n function derp() {}\n\n this.registerComponent('foo-bar', {\n ComponentClass: _helpers.Component.extend({\n init: function () {\n this._super.apply(this, arguments);\n component = this;\n },\n\n\n actions: {\n derp: derp\n }\n })\n });\n\n this.render('{{foo-bar}}');\n\n this.assert.strictEqual(component.actions.derp, derp);\n\n expectDeprecation(function () {\n _this72.assert.strictEqual(component._actions.derp, derp);\n }, 'Usage of `_actions` is deprecated, use `actions` instead.');\n };\n\n _class.prototype['@test throws if `this._super` is not called from `init`'] = function testThrowsIfThis_superIsNotCalledFromInit() {\n var _this73 = this;\n\n this.registerComponent('foo-bar', {\n ComponentClass: _helpers.Component.extend({\n init: function () {}\n })\n });\n\n expectAssertion(function () {\n _this73.render('{{foo-bar}}');\n }, /You must call `this._super\\(...arguments\\);` when overriding `init` on a framework object. Please update .* to call `this._super\\(...arguments\\);` from `init`./);\n };\n\n _class.prototype['@test should toggle visibility with isVisible'] = function testShouldToggleVisibilityWithIsVisible(assert) {\n var _this74 = this;\n\n var assertStyle = function (expected) {\n var matcher = (0, _testHelpers.styles)(expected);\n var actual = _this74.firstChild.getAttribute('style');\n\n assert.pushResult({\n result: matcher.match(actual),\n message: matcher.message(),\n actual: actual,\n expected: expected\n });\n };\n\n this.registerComponent('foo-bar', {\n template: '<p>foo</p>'\n });\n\n this.render('{{foo-bar id=\"foo-bar\" isVisible=visible}}', {\n visible: false\n });\n\n assertStyle('display: none;');\n\n this.assertStableRerender();\n\n this.runTask(function () {\n (0, _emberMetal.set)(_this74.context, 'visible', true);\n });\n assertStyle('');\n\n this.runTask(function () {\n (0, _emberMetal.set)(_this74.context, 'visible', false);\n });\n assertStyle('display: none;');\n };\n\n _class.prototype['@test isVisible does not overwrite component style'] = function testIsVisibleDoesNotOverwriteComponentStyle(assert) {\n var _this75 = this;\n\n this.registerComponent('foo-bar', {\n ComponentClass: _helpers.Component.extend({\n attributeBindings: ['style'],\n style: (0, _helpers.htmlSafe)('color: blue;')\n }),\n\n template: '<p>foo</p>'\n });\n\n this.render('{{foo-bar id=\"foo-bar\" isVisible=visible}}', {\n visible: false\n });\n\n this.assertComponentElement(this.firstChild, {\n tagName: 'div',\n attrs: { id: 'foo-bar', style: (0, _testHelpers.styles)('color: blue; display: none;') }\n });\n\n this.assertStableRerender();\n\n this.runTask(function () {\n (0, _emberMetal.set)(_this75.context, 'visible', true);\n });\n\n this.assertComponentElement(this.firstChild, {\n tagName: 'div',\n attrs: { id: 'foo-bar', style: (0, _testHelpers.styles)('color: blue;') }\n });\n\n this.runTask(function () {\n (0, _emberMetal.set)(_this75.context, 'visible', false);\n });\n\n this.assertComponentElement(this.firstChild, {\n tagName: 'div',\n attrs: { id: 'foo-bar', style: (0, _testHelpers.styles)('color: blue; display: none;') }\n });\n };\n\n _class.prototype['@test adds isVisible binding when style binding is missing and other bindings exist'] = function testAddsIsVisibleBindingWhenStyleBindingIsMissingAndOtherBindingsExist(assert) {\n var _this76 = this;\n\n var assertStyle = function (expected) {\n var matcher = (0, _testHelpers.styles)(expected);\n var actual = _this76.firstChild.getAttribute('style');\n\n assert.pushResult({\n result: matcher.match(actual),\n message: matcher.message(),\n actual: actual,\n expected: expected\n });\n };\n\n this.registerComponent('foo-bar', {\n ComponentClass: _helpers.Component.extend({\n attributeBindings: ['foo'],\n foo: 'bar'\n }),\n template: '<p>foo</p>'\n });\n\n this.render('{{foo-bar id=\"foo-bar\" foo=foo isVisible=visible}}', {\n visible: false,\n foo: 'baz'\n });\n\n assertStyle('display: none;');\n\n this.assertStableRerender();\n\n this.runTask(function () {\n (0, _emberMetal.set)(_this76.context, 'visible', true);\n });\n\n assertStyle('');\n\n this.runTask(function () {\n (0, _emberMetal.set)(_this76.context, 'visible', false);\n (0, _emberMetal.set)(_this76.context, 'foo', 'woo');\n });\n\n assertStyle('display: none;');\n assert.equal(this.firstChild.getAttribute('foo'), 'woo');\n };\n\n _class.prototype['@test it can use readDOMAttr to read input value'] = function testItCanUseReadDOMAttrToReadInputValue() {\n var _this77 = this;\n\n var component = void 0;\n var assertElement = function (expectedValue) {\n // value is a property, not an attribute\n _this77.assertHTML('<input class=\"ember-view\" id=\"' + component.elementId + '\">');\n _this77.assert.equal(_this77.firstChild.value, expectedValue, 'value property is correct');\n _this77.assert.equal((0, _emberMetal.get)(component, 'value'), expectedValue, 'component.get(\"value\") is correct');\n };\n\n this.registerComponent('one-way-input', {\n ComponentClass: _helpers.Component.extend({\n tagName: 'input',\n attributeBindings: ['value'],\n\n init: function () {\n this._super.apply(this, arguments);\n component = this;\n },\n change: function () {\n var value = this.readDOMAttr('value');\n this.set('value', value);\n }\n })\n });\n\n this.render('{{one-way-input value=value}}', {\n value: 'foo'\n });\n\n assertElement('foo');\n\n this.assertStableRerender();\n\n this.runTask(function () {\n _this77.firstChild.value = 'bar';\n _this77.$('input').trigger('change');\n });\n\n assertElement('bar');\n\n this.runTask(function () {\n _this77.firstChild.value = 'foo';\n _this77.$('input').trigger('change');\n });\n\n assertElement('foo');\n\n this.runTask(function () {\n (0, _emberMetal.set)(component, 'value', 'bar');\n });\n\n assertElement('bar');\n\n this.runTask(function () {\n _this77.firstChild.value = 'foo';\n _this77.$('input').trigger('change');\n });\n\n assertElement('foo');\n };\n\n _class.prototype['@test child triggers revalidate during parent destruction (GH#13846)'] = function testChildTriggersRevalidateDuringParentDestructionGH13846() {\n this.registerComponent('x-select', {\n ComponentClass: _helpers.Component.extend({\n tagName: 'select',\n\n init: function () {\n this._super();\n this.options = (0, _emberRuntime.A)([]);\n this.value = null;\n },\n updateValue: function () {\n var newValue = this.get('options.lastObject.value');\n\n this.set('value', newValue);\n },\n registerOption: function (option) {\n this.get('options').addObject(option);\n },\n unregisterOption: function (option) {\n this.get('options').removeObject(option);\n\n this.updateValue();\n }\n }),\n\n template: '{{yield this}}'\n });\n\n this.registerComponent('x-option', {\n ComponentClass: _helpers.Component.extend({\n tagName: 'option',\n attributeBindings: ['selected'],\n\n didInsertElement: function () {\n this._super.apply(this, arguments);\n\n this.get('select').registerOption(this);\n },\n\n\n selected: (0, _emberMetal.computed)('select.value', function () {\n return this.get('value') === this.get('select.value');\n }),\n\n willDestroyElement: function () {\n this._super.apply(this, arguments);\n this.get('select').unregisterOption(this);\n }\n })\n });\n\n this.render((0, _abstractTestCase.strip)(_templateObject42));\n\n this.teardown();\n\n this.assert.ok(true, 'no errors during teardown');\n };\n\n _class.prototype['@test setting a property in willDestroyElement does not assert (GH#14273)'] = function testSettingAPropertyInWillDestroyElementDoesNotAssertGH14273(assert) {\n assert.expect(2);\n\n this.registerComponent('foo-bar', {\n ComponentClass: _helpers.Component.extend({\n init: function () {\n this._super.apply(this, arguments);\n this.showFoo = true;\n },\n willDestroyElement: function () {\n this.set('showFoo', false);\n assert.ok(true, 'willDestroyElement was fired');\n this._super.apply(this, arguments);\n }\n }),\n\n template: '{{#if showFoo}}things{{/if}}'\n });\n\n this.render('{{foo-bar}}');\n\n this.assertText('things');\n };\n\n _class.prototype['@test using didInitAttrs as an event is deprecated'] = function testUsingDidInitAttrsAsAnEventIsDeprecated(assert) {\n var _this78 = this;\n\n this.registerComponent('foo-bar', {\n ComponentClass: _helpers.Component.extend({\n foo: (0, _emberMetal.on)('didInitAttrs', function () {\n assert.ok(true, 'should fire `didInitAttrs` event');\n })\n })\n });\n\n expectDeprecation(function () {\n _this78.render('{{foo-bar}}');\n }, /didInitAttrs called/);\n };\n\n _class.prototype['@test did{Init,Receive}Attrs fires even if component is not rendered'] = function testDidInitReceiveAttrsFiresEvenIfComponentIsNotRendered(assert) {\n var _this79 = this;\n\n expectDeprecation(/didInitAttrs called/);\n\n var didInitAttrsCount = 0;\n var didReceiveAttrsCount = 0;\n\n this.registerComponent('foo-bar', {\n ComponentClass: _helpers.Component.extend({\n init: function () {\n this._super.apply(this, arguments);\n this.didInit = true;\n },\n didInitAttrs: function () {\n assert.ok(this.didInit, 'expected init to have run before didInitAttrs');\n didInitAttrsCount++;\n },\n didReceiveAttrs: function () {\n assert.ok(this.didInit, 'expected init to have run before didReceiveAttrs');\n didReceiveAttrsCount++;\n },\n willRender: function () {\n throw new Error('Unexpected render!');\n }\n })\n });\n\n assert.strictEqual(didInitAttrsCount, 0, 'precond: didInitAttrs is not fired');\n assert.strictEqual(didReceiveAttrsCount, 0, 'precond: didReceiveAttrs is not fired');\n\n this.runTask(function () {\n return _this79.component = _this79.owner.lookup('component:foo-bar');\n });\n\n assert.strictEqual(didInitAttrsCount, 1, 'precond: didInitAttrs is fired');\n assert.strictEqual(didReceiveAttrsCount, 1, 'precond: didReceiveAttrs is fired');\n };\n\n _class.prototype['@test did{Init,Receive}Attrs fires after .init() but before observers become active'] = function testDidInitReceiveAttrsFiresAfterInitButBeforeObserversBecomeActive(assert) {\n var _this80 = this;\n\n expectDeprecation(/didInitAttrs called/);\n\n var fooCopyDidChangeCount = 0;\n var barCopyDidChangeCount = 0;\n\n this.registerComponent('foo-bar', {\n ComponentClass: _helpers.Component.extend({\n init: function () {\n this._super.apply(this, arguments);\n this.didInit = true;\n },\n didInitAttrs: function () {\n assert.ok(this.didInit, 'expected init to have run before didInitAttrs');\n this.set('fooCopy', this.attrs.foo.value + 1);\n },\n didReceiveAttrs: function () {\n assert.ok(this.didInit, 'expected init to have run before didReceiveAttrs');\n this.set('barCopy', this.attrs.bar.value + 1);\n },\n\n\n fooCopyDidChange: (0, _emberMetal.observer)('fooCopy', function () {\n fooCopyDidChangeCount++;\n }),\n barCopyDidChange: (0, _emberMetal.observer)('barCopy', function () {\n barCopyDidChangeCount++;\n })\n }),\n\n template: '{{foo}}-{{fooCopy}}-{{bar}}-{{barCopy}}'\n });\n\n this.render('{{foo-bar foo=foo bar=bar}}', { foo: 1, bar: 3 });\n\n this.assertText('1-2-3-4');\n\n assert.strictEqual(fooCopyDidChangeCount, 0, 'expected NO observer firing for: fooCopy');\n assert.strictEqual(barCopyDidChangeCount, 0, 'expected NO observer firing for: barCopy');\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this80.context, 'foo', 5);\n });\n\n this.assertText('5-2-3-4');\n\n assert.strictEqual(fooCopyDidChangeCount, 0, 'expected observer firing for: fooCopy');\n assert.strictEqual(barCopyDidChangeCount, 0, 'expected NO observer firing for: barCopy');\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this80.context, 'bar', 7);\n });\n\n this.assertText('5-2-7-8');\n\n assert.strictEqual(fooCopyDidChangeCount, 0, 'expected observer firing for: fooCopy');\n assert.strictEqual(barCopyDidChangeCount, 1, 'expected observer firing for: barCopy');\n };\n\n _class.prototype['@test overriding didReceiveAttrs does not trigger deprecation'] = function testOverridingDidReceiveAttrsDoesNotTriggerDeprecation(assert) {\n this.registerComponent('foo-bar', {\n ComponentClass: _helpers.Component.extend({\n didReceiveAttrs: function () {\n assert.equal(1, this.get('foo'), 'expected attrs to have correct value');\n }\n }),\n\n template: '{{foo}}-{{fooCopy}}-{{bar}}-{{barCopy}}'\n });\n\n this.render('{{foo-bar foo=foo bar=bar}}', { foo: 1, bar: 3 });\n };\n\n _class.prototype['@test overriding didUpdateAttrs does not trigger deprecation'] = function testOverridingDidUpdateAttrsDoesNotTriggerDeprecation(assert) {\n var _this81 = this;\n\n this.registerComponent('foo-bar', {\n ComponentClass: _helpers.Component.extend({\n didUpdateAttrs: function () {\n assert.equal(5, this.get('foo'), \"expected newAttrs to have new value\");\n }\n }),\n\n template: '{{foo}}-{{fooCopy}}-{{bar}}-{{barCopy}}'\n });\n\n this.render('{{foo-bar foo=foo bar=bar}}', { foo: 1, bar: 3 });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this81.context, 'foo', 5);\n });\n };\n\n _class.prototype['@test returning `true` from an action does not bubble if `target` is not specified (GH#14275)'] = function testReturningTrueFromAnActionDoesNotBubbleIfTargetIsNotSpecifiedGH14275(assert) {\n var _this82 = this;\n\n this.registerComponent('display-toggle', {\n ComponentClass: _helpers.Component.extend({\n actions: {\n show: function () {\n assert.ok(true, 'display-toggle show action was called');\n return true;\n }\n }\n }),\n\n template: '<button {{action \\'show\\'}}>Show</button>'\n });\n\n this.render('{{display-toggle}}', {\n send: function () {\n assert.notOk(true, 'send should not be called when action is not \"subscribed\" to');\n }\n });\n\n this.assertText('Show');\n\n this.runTask(function () {\n return _this82.$('button').click();\n });\n };\n\n _class.prototype['@test returning `true` from an action bubbles to the `target` if specified'] = function testReturningTrueFromAnActionBubblesToTheTargetIfSpecified(assert) {\n var _this83 = this;\n\n assert.expect(4);\n\n this.registerComponent('display-toggle', {\n ComponentClass: _helpers.Component.extend({\n actions: {\n show: function () {\n assert.ok(true, 'display-toggle show action was called');\n return true;\n }\n }\n }),\n\n template: '<button {{action \\'show\\'}}>Show</button>'\n });\n\n this.render('{{display-toggle target=this}}', {\n send: function (actionName) {\n assert.ok(true, 'send should be called when action is \"subscribed\" to');\n assert.equal(actionName, 'show');\n }\n });\n\n this.assertText('Show');\n\n this.runTask(function () {\n return _this83.$('button').click();\n });\n };\n\n _class.prototype['@test triggering an event only attempts to invoke an identically named method, if it actually is a function (GH#15228)'] = function testTriggeringAnEventOnlyAttemptsToInvokeAnIdenticallyNamedMethodIfItActuallyIsAFunctionGH15228(assert) {\n assert.expect(3);\n\n var payload = ['arbitrary', 'event', 'data'];\n\n this.registerComponent('evented-component', {\n ComponentClass: _helpers.Component.extend({\n someTruthyProperty: true,\n\n init: function () {\n this._super.apply(this, arguments);\n this.trigger.apply(this, ['someMethod'].concat(payload));\n this.trigger.apply(this, ['someTruthyProperty'].concat(payload));\n },\n someMethod: function () {\n for (var _len = arguments.length, data = Array(_len), _key = 0; _key < _len; _key++) {\n data[_key] = arguments[_key];\n }\n\n assert.deepEqual(data, payload, 'the method `someMethod` should be called, when `someMethod` is triggered');\n },\n\n\n listenerForSomeMethod: (0, _emberMetal.on)('someMethod', function () {\n for (var _len2 = arguments.length, data = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n data[_key2] = arguments[_key2];\n }\n\n assert.deepEqual(data, payload, 'the listener `listenerForSomeMethod` should be called, when `someMethod` is triggered');\n }),\n\n listenerForSomeTruthyProperty: (0, _emberMetal.on)('someTruthyProperty', function () {\n for (var _len3 = arguments.length, data = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n data[_key3] = arguments[_key3];\n }\n\n assert.deepEqual(data, payload, 'the listener `listenerForSomeTruthyProperty` should be called, when `someTruthyProperty` is triggered');\n })\n })\n });\n\n this.render('{{evented-component}}');\n };\n\n _class.prototype['@test component yielding in an {{#each}} has correct block values after rerendering (GH#14284)'] = function testComponentYieldingInAnEachHasCorrectBlockValuesAfterRerenderingGH14284() {\n var _this84 = this;\n\n this.registerComponent('list-items', {\n template: '{{#each items as |item|}}{{yield item}}{{/each}}'\n });\n\n this.render((0, _abstractTestCase.strip)(_templateObject43), {\n editMode: false,\n items: ['foo', 'bar', 'qux', 'baz']\n });\n\n this.assertText('|foo||bar||qux||baz|');\n\n this.assertStableRerender();\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this84.context, 'editMode', true);\n });\n\n this.assertText('|foo|Remove foo|bar|Remove bar|qux|Remove qux|baz|Remove baz');\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this84.context, 'editMode', false);\n });\n\n this.assertText('|foo||bar||qux||baz|');\n };\n\n _class.prototype['@test unimplimented positionalParams do not cause an error GH#14416'] = function testUnimplimentedPositionalParamsDoNotCauseAnErrorGH14416(assert) {\n this.registerComponent('foo-bar', {\n template: 'hello'\n });\n\n this.render('{{foo-bar wat}}');\n this.assertText('hello');\n };\n\n _class.prototype['@test using attrs for positional params'] = function testUsingAttrsForPositionalParams(assert) {\n var MyComponent = _helpers.Component.extend();\n\n this.registerComponent('foo-bar', {\n ComponentClass: MyComponent.reopenClass({\n positionalParams: ['myVar']\n }),\n template: 'MyVar1: {{attrs.myVar}} {{myVar}} MyVar2: {{myVar2}} {{attrs.myVar2}}'\n });\n\n this.render('{{foo-bar 1 myVar2=2}}');\n\n this.assertText('MyVar1: 1 1 MyVar2: 2 2');\n };\n\n _class.prototype['@test can use `{{this}}` to emit the component\\'s toString value [GH#14581]'] = function testCanUseThisToEmitTheComponentSToStringValueGH14581(assert) {\n this.registerComponent('foo-bar', {\n ComponentClass: _helpers.Component.extend({\n toString: function () {\n return 'special sauce goes here!';\n }\n }),\n template: '{{this}}'\n });\n\n this.render('{{foo-bar}}');\n\n this.assertText('special sauce goes here!');\n };\n\n _class.prototype['@test can use `{{this` to access paths on current context [GH#14581]'] = function testCanUseThisToAccessPathsOnCurrentContextGH14581(assert) {\n var instance = void 0;\n this.registerComponent('foo-bar', {\n ComponentClass: _helpers.Component.extend({\n init: function () {\n this._super.apply(this, arguments);\n\n instance = this;\n },\n\n\n foo: {\n bar: {\n baz: 'huzzah!'\n }\n }\n }),\n template: '{{this.foo.bar.baz}}'\n });\n\n this.render('{{foo-bar}}');\n\n this.assertText('huzzah!');\n\n this.assertStableRerender();\n\n this.runTask(function () {\n return (0, _emberMetal.set)(instance, 'foo.bar.baz', 'yippie!');\n });\n\n this.assertText('yippie!');\n\n this.runTask(function () {\n return (0, _emberMetal.set)(instance, 'foo.bar.baz', 'huzzah!');\n });\n\n this.assertText('huzzah!');\n };\n\n _class.prototype['@test can use custom element in component layout'] = function testCanUseCustomElementInComponentLayout(assert) {\n this.registerComponent('foo-bar', {\n template: '<blah-zorz>Hi!</blah-zorz>'\n });\n\n this.render('{{foo-bar}}');\n\n this.assertText('Hi!');\n };\n\n _class.prototype['@test can use nested custom element in component layout'] = function testCanUseNestedCustomElementInComponentLayout(assert) {\n this.registerComponent('foo-bar', {\n template: '<blah-zorz><hows-it-going>Hi!</hows-it-going></blah-zorz>'\n });\n\n this.render('{{foo-bar}}');\n\n this.assertText('Hi!');\n };\n\n _class.prototype['@test can access properties off of rest style positionalParams array'] = function testCanAccessPropertiesOffOfRestStylePositionalParamsArray(assert) {\n this.registerComponent('foo-bar', {\n ComponentClass: _helpers.Component.extend().reopenClass({ positionalParams: 'things' }),\n // using `attrs` here to simulate `@things.length`\n template: '{{attrs.things.length}}'\n });\n\n this.render('{{foo-bar \"foo\" \"bar\" \"baz\"}}');\n\n this.assertText('3');\n };\n\n return _class;\n }(_testCase.RenderingTest));\n});","QUnit.module('ESLint | ember-glimmer/tests/integration/components/curly-components-test.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-glimmer/tests/integration/components/curly-components-test.js should pass ESLint\\n\\n');\n});\n","enifed('ember-glimmer/tests/integration/components/destroy-test', ['ember-babel', 'ember-metal', 'ember-glimmer/tests/utils/helpers', 'ember-glimmer/tests/utils/test-case'], function (_emberBabel, _emberMetal, _helpers, _testCase) {\n 'use strict';\n\n (0, _testCase.moduleFor)('Component destroy', function (_RenderingTest) {\n (0, _emberBabel.inherits)(_class, _RenderingTest);\n\n function _class() {\n (0, _emberBabel.classCallCheck)(this, _class);\n return (0, _emberBabel.possibleConstructorReturn)(this, _RenderingTest.apply(this, arguments));\n }\n\n _class.prototype['@test it correctly releases the destroyed components'] = function testItCorrectlyReleasesTheDestroyedComponents(assert) {\n var _this2 = this;\n\n var FooBarComponent = _helpers.Component.extend({});\n\n this.registerComponent('foo-bar', { ComponentClass: FooBarComponent, template: 'hello' });\n\n this.render('{{#if switch}}{{#foo-bar}}{{foo-bar}}{{/foo-bar}}{{/if}}', { switch: true });\n\n this.assertComponentElement(this.firstChild, { content: 'hello' });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this2.context, 'switch', false);\n });\n\n this.assertText('');\n\n assert.equal(this.env.destroyedComponents.length, 0, 'environment.destroyedComponents should be empty');\n };\n\n return _class;\n }(_testCase.RenderingTest));\n});","QUnit.module('ESLint | ember-glimmer/tests/integration/components/destroy-test.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-glimmer/tests/integration/components/destroy-test.js should pass ESLint\\n\\n');\n});\n","enifed('ember-glimmer/tests/integration/components/dynamic-components-test', ['ember-babel', 'ember-metal', 'ember-glimmer/tests/utils/helpers', 'ember-glimmer/tests/utils/abstract-test-case', 'ember-glimmer/tests/utils/test-case', 'ember/features'], function (_emberBabel, _emberMetal, _helpers, _abstractTestCase, _testCase, _features) {\n 'use strict';\n\n var _templateObject = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n {{#if cond1}}\\n {{#component \"foo-bar\" id=1}}\\n {{#if cond2}}\\n {{#component \"foo-bar\" id=2}}{{/component}}\\n {{#if cond3}}\\n {{#component \"foo-bar\" id=3}}\\n {{#if cond4}}\\n {{#component \"foo-bar\" id=4}}\\n {{#if cond5}}\\n {{#component \"foo-bar\" id=5}}{{/component}}\\n {{#component \"foo-bar\" id=6}}{{/component}}\\n {{#component \"foo-bar\" id=7}}{{/component}}\\n {{/if}}\\n {{#component \"foo-bar\" id=8}}{{/component}}\\n {{/component}}\\n {{/if}}\\n {{/component}}\\n {{/if}}\\n {{/if}}\\n {{/component}}\\n {{/if}}'], ['\\n {{#if cond1}}\\n {{#component \"foo-bar\" id=1}}\\n {{#if cond2}}\\n {{#component \"foo-bar\" id=2}}{{/component}}\\n {{#if cond3}}\\n {{#component \"foo-bar\" id=3}}\\n {{#if cond4}}\\n {{#component \"foo-bar\" id=4}}\\n {{#if cond5}}\\n {{#component \"foo-bar\" id=5}}{{/component}}\\n {{#component \"foo-bar\" id=6}}{{/component}}\\n {{#component \"foo-bar\" id=7}}{{/component}}\\n {{/if}}\\n {{#component \"foo-bar\" id=8}}{{/component}}\\n {{/component}}\\n {{/if}}\\n {{/component}}\\n {{/if}}\\n {{/if}}\\n {{/component}}\\n {{/if}}']),\n _templateObject2 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n {{#each names as |name|}}\\n {{name}}\\n {{/each}}'], ['\\n {{#each names as |name|}}\\n {{name}}\\n {{/each}}']),\n _templateObject3 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n {{#each n as |name|}}\\n {{name}}\\n {{/each}}'], ['\\n {{#each n as |name|}}\\n {{name}}\\n {{/each}}']);\n\n (0, _testCase.moduleFor)('Components test: dynamic components', function (_RenderingTest) {\n (0, _emberBabel.inherits)(_class, _RenderingTest);\n\n function _class() {\n (0, _emberBabel.classCallCheck)(this, _class);\n return (0, _emberBabel.possibleConstructorReturn)(this, _RenderingTest.apply(this, arguments));\n }\n\n _class.prototype['@test it can render a basic component with a static component name argument'] = function testItCanRenderABasicComponentWithAStaticComponentNameArgument() {\n var _this2 = this;\n\n this.registerComponent('foo-bar', { template: 'hello {{name}}' });\n\n this.render('{{component \"foo-bar\" name=name}}', { name: 'Sarah' });\n\n this.assertComponentElement(this.firstChild, { content: 'hello Sarah' });\n\n this.runTask(function () {\n return _this2.rerender();\n });\n\n this.assertComponentElement(this.firstChild, { content: 'hello Sarah' });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this2.context, 'name', 'Gavin');\n });\n\n this.assertComponentElement(this.firstChild, { content: 'hello Gavin' });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this2.context, 'name', 'Sarah');\n });\n\n this.assertComponentElement(this.firstChild, { content: 'hello Sarah' });\n };\n\n _class.prototype['@test it can render a basic component with a dynamic component name argument'] = function testItCanRenderABasicComponentWithADynamicComponentNameArgument() {\n var _this3 = this;\n\n this.registerComponent('foo-bar', { template: 'hello {{name}} from foo-bar' });\n this.registerComponent('foo-bar-baz', { template: 'hello {{name}} from foo-bar-baz' });\n\n this.render('{{component componentName name=name}}', { componentName: 'foo-bar', name: 'Alex' });\n\n this.assertComponentElement(this.firstChild, { content: 'hello Alex from foo-bar' });\n\n this.runTask(function () {\n return _this3.rerender();\n });\n\n this.assertComponentElement(this.firstChild, { content: 'hello Alex from foo-bar' });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this3.context, 'name', 'Ben');\n });\n\n this.assertComponentElement(this.firstChild, { content: 'hello Ben from foo-bar' });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this3.context, 'componentName', 'foo-bar-baz');\n });\n\n this.assertComponentElement(this.firstChild, { content: 'hello Ben from foo-bar-baz' });\n\n this.runTask(function () {\n (0, _emberMetal.set)(_this3.context, 'componentName', 'foo-bar');\n (0, _emberMetal.set)(_this3.context, 'name', 'Alex');\n });\n\n this.assertComponentElement(this.firstChild, { content: 'hello Alex from foo-bar' });\n };\n\n _class.prototype['@test it has an element'] = function testItHasAnElement() {\n var _this4 = this;\n\n var instance = void 0;\n\n var FooBarComponent = _helpers.Component.extend({\n init: function () {\n this._super();\n instance = this;\n }\n });\n\n this.registerComponent('foo-bar', { ComponentClass: FooBarComponent, template: 'hello' });\n\n this.render('{{component \"foo-bar\"}}');\n\n var element1 = instance.element;\n\n this.assertComponentElement(element1, { content: 'hello' });\n\n this.runTask(function () {\n return _this4.rerender();\n });\n\n var element2 = instance.element;\n\n this.assertComponentElement(element2, { content: 'hello' });\n\n this.assertSameNode(element2, element1);\n };\n\n _class.prototype['@test it has a jQuery proxy to the element'] = function testItHasAJQueryProxyToTheElement(assert) {\n var _this5 = this;\n\n var instance = void 0;\n\n var FooBarComponent = _helpers.Component.extend({\n init: function () {\n this._super();\n instance = this;\n }\n });\n\n this.registerComponent('foo-bar', { ComponentClass: FooBarComponent, template: 'hello' });\n\n this.render('{{component \"foo-bar\"}}');\n\n var element1 = instance.$()[0];\n\n this.assertComponentElement(element1, { content: 'hello' });\n\n this.runTask(function () {\n return _this5.rerender();\n });\n\n var element2 = instance.$()[0];\n\n this.assertComponentElement(element2, { content: 'hello' });\n\n this.assertSameNode(element2, element1);\n };\n\n _class.prototype['@test it scopes the jQuery proxy to the component element'] = function testItScopesTheJQueryProxyToTheComponentElement(assert) {\n var _this6 = this;\n\n var instance = void 0;\n\n var FooBarComponent = _helpers.Component.extend({\n init: function () {\n this._super();\n instance = this;\n }\n });\n\n this.registerComponent('foo-bar', { ComponentClass: FooBarComponent, template: '<span class=\"inner\">inner</span>' });\n\n this.render('<span class=\"outer\">outer</span>{{component \"foo-bar\"}}');\n\n var $span = instance.$('span');\n\n assert.equal($span.length, 1);\n assert.equal($span.attr('class'), 'inner');\n\n this.runTask(function () {\n return _this6.rerender();\n });\n\n $span = instance.$('span');\n\n assert.equal($span.length, 1);\n assert.equal($span.attr('class'), 'inner');\n };\n\n _class.prototype['@test it has the right parentView and childViews'] = function testItHasTheRightParentViewAndChildViews(assert) {\n var _this7 = this;\n\n var fooBarInstance = void 0,\n fooBarBazInstance = void 0;\n\n var FooBarComponent = _helpers.Component.extend({\n init: function () {\n this._super();\n fooBarInstance = this;\n }\n });\n\n var FooBarBazComponent = _helpers.Component.extend({\n init: function () {\n this._super();\n fooBarBazInstance = this;\n }\n });\n\n this.registerComponent('foo-bar', { ComponentClass: FooBarComponent, template: 'foo-bar {{foo-bar-baz}}' });\n this.registerComponent('foo-bar-baz', { ComponentClass: FooBarBazComponent, template: 'foo-bar-baz' });\n\n this.render('{{component \"foo-bar\"}}');\n this.assertText('foo-bar foo-bar-baz');\n\n assert.equal(fooBarInstance.parentView, this.component);\n assert.equal(fooBarBazInstance.parentView, fooBarInstance);\n\n assert.deepEqual(this.component.childViews, [fooBarInstance]);\n assert.deepEqual(fooBarInstance.childViews, [fooBarBazInstance]);\n\n this.runTask(function () {\n return _this7.rerender();\n });\n this.assertText('foo-bar foo-bar-baz');\n\n assert.equal(fooBarInstance.parentView, this.component);\n assert.equal(fooBarBazInstance.parentView, fooBarInstance);\n\n assert.deepEqual(this.component.childViews, [fooBarInstance]);\n assert.deepEqual(fooBarInstance.childViews, [fooBarBazInstance]);\n };\n\n _class.prototype['@test it can render a basic component with a block'] = function testItCanRenderABasicComponentWithABlock() {\n var _this8 = this;\n\n this.registerComponent('foo-bar', { template: '{{yield}}' });\n\n this.render('{{#component \"foo-bar\"}}hello{{/component}}');\n\n this.assertComponentElement(this.firstChild, { content: 'hello' });\n\n this.runTask(function () {\n return _this8.rerender();\n });\n\n this.assertComponentElement(this.firstChild, { content: 'hello' });\n };\n\n _class.prototype['@test it renders the layout with the component instance as the context'] = function testItRendersTheLayoutWithTheComponentInstanceAsTheContext() {\n var _this9 = this;\n\n var instance = void 0;\n\n var FooBarComponent = _helpers.Component.extend({\n init: function () {\n this._super();\n instance = this;\n this.set('message', 'hello');\n }\n });\n\n this.registerComponent('foo-bar', { ComponentClass: FooBarComponent, template: '{{message}}' });\n\n this.render('{{component \"foo-bar\"}}');\n\n this.assertComponentElement(this.firstChild, { content: 'hello' });\n\n this.runTask(function () {\n return _this9.rerender();\n });\n\n this.assertComponentElement(this.firstChild, { content: 'hello' });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(instance, 'message', 'goodbye');\n });\n\n this.assertComponentElement(this.firstChild, { content: 'goodbye' });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(instance, 'message', 'hello');\n });\n\n this.assertComponentElement(this.firstChild, { content: 'hello' });\n };\n\n _class.prototype['@test it preserves the outer context when yielding'] = function testItPreservesTheOuterContextWhenYielding() {\n var _this10 = this;\n\n this.registerComponent('foo-bar', { template: '{{yield}}' });\n\n this.render('{{#component \"foo-bar\"}}{{message}}{{/component}}', { message: 'hello' });\n\n this.assertComponentElement(this.firstChild, { content: 'hello' });\n\n this.runTask(function () {\n return _this10.rerender();\n });\n\n this.assertComponentElement(this.firstChild, { content: 'hello' });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this10.context, 'message', 'goodbye');\n });\n\n this.assertComponentElement(this.firstChild, { content: 'goodbye' });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this10.context, 'message', 'hello');\n });\n\n this.assertComponentElement(this.firstChild, { content: 'hello' });\n };\n\n _class.prototype['@test the component and its child components are destroyed'] = function testTheComponentAndItsChildComponentsAreDestroyed(assert) {\n var _this11 = this;\n\n var destroyed = { 1: 0, 2: 0, 3: 0, 4: 0, 5: 0, 6: 0, 7: 0, 8: 0 };\n\n this.registerComponent('foo-bar', {\n template: '{{id}} {{yield}}',\n ComponentClass: _helpers.Component.extend({\n willDestroy: function () {\n this._super();\n destroyed[this.get('id')]++;\n }\n })\n });\n\n this.render((0, _abstractTestCase.strip)(_templateObject), {\n cond1: true,\n cond2: true,\n cond3: true,\n cond4: true,\n cond5: true\n });\n\n this.assertText('1 2 3 4 5 6 7 8 ');\n\n this.runTask(function () {\n return _this11.rerender();\n });\n\n assert.deepEqual(destroyed, { 1: 0, 2: 0, 3: 0, 4: 0, 5: 0, 6: 0, 7: 0, 8: 0 });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this11.context, 'cond5', false);\n });\n\n this.assertText('1 2 3 4 8 ');\n\n assert.deepEqual(destroyed, { 1: 0, 2: 0, 3: 0, 4: 0, 5: 1, 6: 1, 7: 1, 8: 0 });\n\n this.runTask(function () {\n (0, _emberMetal.set)(_this11.context, 'cond3', false);\n (0, _emberMetal.set)(_this11.context, 'cond5', true);\n (0, _emberMetal.set)(_this11.context, 'cond4', false);\n });\n\n assert.deepEqual(destroyed, { 1: 0, 2: 0, 3: 1, 4: 1, 5: 1, 6: 1, 7: 1, 8: 1 });\n\n this.runTask(function () {\n (0, _emberMetal.set)(_this11.context, 'cond2', false);\n (0, _emberMetal.set)(_this11.context, 'cond1', false);\n });\n\n assert.deepEqual(destroyed, { 1: 1, 2: 1, 3: 1, 4: 1, 5: 1, 6: 1, 7: 1, 8: 1 });\n };\n\n _class.prototype['@test component helper destroys underlying component when it is swapped out'] = function testComponentHelperDestroysUnderlyingComponentWhenItIsSwappedOut(assert) {\n var _this12 = this;\n\n var destroyed = { 'foo-bar': 0, 'foo-bar-baz': 0 };\n var testContext = this;\n\n this.registerComponent('foo-bar', {\n template: 'hello from foo-bar',\n ComponentClass: _helpers.Component.extend({\n willDestroyElement: function () {\n assert.equal(testContext.$('#' + this.elementId).length, 1, 'element is still attached to the document');\n },\n willDestroy: function () {\n this._super();\n destroyed['foo-bar']++;\n }\n })\n });\n\n this.registerComponent('foo-bar-baz', {\n template: 'hello from foo-bar-baz',\n ComponentClass: _helpers.Component.extend({\n willDestroy: function () {\n this._super();\n destroyed['foo-bar-baz']++;\n }\n })\n });\n\n this.render('{{component componentName name=name}}', { componentName: 'foo-bar' });\n\n assert.deepEqual(destroyed, { 'foo-bar': 0, 'foo-bar-baz': 0 });\n\n this.runTask(function () {\n return _this12.rerender();\n });\n\n assert.deepEqual(destroyed, { 'foo-bar': 0, 'foo-bar-baz': 0 });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this12.context, 'componentName', 'foo-bar-baz');\n });\n\n assert.deepEqual(destroyed, { 'foo-bar': 1, 'foo-bar-baz': 0 });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this12.context, 'componentName', 'foo-bar');\n });\n\n assert.deepEqual(destroyed, { 'foo-bar': 1, 'foo-bar-baz': 1 });\n };\n\n _class.prototype['@test component helper with bound properties are updating correctly in init of component'] = function testComponentHelperWithBoundPropertiesAreUpdatingCorrectlyInInitOfComponent(assert) {\n var _this13 = this;\n\n this.registerComponent('foo-bar', {\n template: 'foo-bar {{location}} {{locationCopy}} {{yield}}',\n ComponentClass: _helpers.Component.extend({\n init: function () {\n this._super.apply(this, arguments);\n this.set('locationCopy', this.get('location'));\n }\n })\n });\n\n this.registerComponent('foo-bar-baz', {\n template: 'foo-bar-baz {{location}} {{locationCopy}} {{yield}}',\n ComponentClass: _helpers.Component.extend({\n init: function () {\n this._super.apply(this, arguments);\n this.set('locationCopy', this.get('location'));\n }\n })\n });\n\n this.registerComponent('outer-component', {\n template: '{{#component componentName location=location}}arepas!{{/component}}',\n ComponentClass: _helpers.Component.extend({\n componentName: (0, _emberMetal.computed)('location', function () {\n if (this.get('location') === 'Caracas') {\n return 'foo-bar';\n } else {\n return 'foo-bar-baz';\n }\n })\n })\n });\n\n this.render('{{outer-component location=location}}', { location: 'Caracas' });\n\n this.assertText('foo-bar Caracas Caracas arepas!');\n\n this.runTask(function () {\n return _this13.rerender();\n });\n\n this.assertText('foo-bar Caracas Caracas arepas!');\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this13.context, 'location', 'Loisaida');\n });\n\n this.assertText('foo-bar-baz Loisaida Loisaida arepas!');\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this13.context, 'location', 'Caracas');\n });\n\n this.assertText('foo-bar Caracas Caracas arepas!');\n };\n\n _class.prototype['@test component helper with actions'] = function testComponentHelperWithActions(assert) {\n var _this15 = this;\n\n this.registerComponent('inner-component', {\n template: 'inner-component {{yield}}',\n ComponentClass: _helpers.Component.extend({\n classNames: 'inner-component',\n didInsertElement: function () {\n var _this14 = this;\n\n // trigger action on click in absence of app's EventDispatcher\n this.$().on('click', function () {\n _this14.sendAction('somethingClicked');\n });\n },\n willDestroyElement: function () {\n this.$().off('click');\n }\n })\n });\n\n var actionTriggered = 0;\n this.registerComponent('outer-component', {\n template: '{{#component componentName somethingClicked=\"mappedAction\"}}arepas!{{/component}}',\n ComponentClass: _helpers.Component.extend({\n classNames: 'outer-component',\n componentName: 'inner-component',\n actions: {\n mappedAction: function () {\n actionTriggered++;\n }\n }\n })\n });\n\n this.render('{{outer-component}}');\n\n assert.equal(actionTriggered, 0, 'action was not triggered');\n\n this.runTask(function () {\n _this15.$('.inner-component').trigger('click');\n });\n\n assert.equal(actionTriggered, 1, 'action was triggered');\n };\n\n _class.prototype['@test nested component helpers'] = function testNestedComponentHelpers(assert) {\n var _this16 = this;\n\n this.registerComponent('foo-bar', { template: 'yippie! {{attrs.location}} {{yield}}' });\n this.registerComponent('baz-qux', { template: 'yummy {{attrs.location}} {{yield}}' });\n this.registerComponent('corge-grault', { template: 'delicious {{attrs.location}} {{yield}}' });\n\n this.render('{{#component componentName1 location=location}}{{#component componentName2 location=location}}arepas!{{/component}}{{/component}}', {\n componentName1: 'foo-bar',\n componentName2: 'baz-qux',\n location: 'Caracas'\n });\n\n this.assertText('yippie! Caracas yummy Caracas arepas!');\n\n this.runTask(function () {\n return _this16.rerender();\n });\n\n this.assertText('yippie! Caracas yummy Caracas arepas!');\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this16.context, 'location', 'Loisaida');\n });\n\n this.assertText('yippie! Loisaida yummy Loisaida arepas!');\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this16.context, 'componentName1', 'corge-grault');\n });\n\n this.assertText('delicious Loisaida yummy Loisaida arepas!');\n\n this.runTask(function () {\n (0, _emberMetal.set)(_this16.context, 'componentName1', 'foo-bar');\n (0, _emberMetal.set)(_this16.context, 'location', 'Caracas');\n });\n\n this.assertText('yippie! Caracas yummy Caracas arepas!');\n };\n\n _class.prototype['@test component with dynamic name argument resolving to non-existent component'] = function testComponentWithDynamicNameArgumentResolvingToNonExistentComponent(assert) {\n var _this17 = this;\n\n expectAssertion(function () {\n _this17.render('{{component componentName}}', { componentName: 'does-not-exist' });\n }, /Could not find component named \"does-not-exist\"/);\n };\n\n _class.prototype['@test component with static name argument for non-existent component'] = function testComponentWithStaticNameArgumentForNonExistentComponent(assert) {\n var _this18 = this;\n\n expectAssertion(function () {\n _this18.render('{{component \"does-not-exist\"}}');\n }, /Could not find component named \"does-not-exist\"/);\n };\n\n _class.prototype['@test component with dynamic component name resolving to a component, then non-existent component'] = function testComponentWithDynamicComponentNameResolvingToAComponentThenNonExistentComponent(assert) {\n var _this19 = this;\n\n this.registerComponent('foo-bar', { template: 'hello {{name}}' });\n\n this.render('{{component componentName name=name}}', { componentName: 'foo-bar', name: 'Alex' });\n\n this.assertText('hello Alex');\n\n this.runTask(function () {\n return _this19.rerender();\n });\n\n this.assertText('hello Alex');\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this19.context, 'componentName', undefined);\n });\n\n this.assertText('');\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this19.context, 'componentName', 'foo-bar');\n });\n\n this.assertText('hello Alex');\n };\n\n _class.prototype['@test component helper properly invalidates hash params inside an {{each}} invocation #11044'] = function testComponentHelperProperlyInvalidatesHashParamsInsideAnEachInvocation11044(assert) {\n var _this20 = this;\n\n this.registerComponent('foo-bar', {\n template: '[{{internalName}} - {{name}}]',\n ComponentClass: _helpers.Component.extend({\n willRender: function () {\n // store internally available name to ensure that the name available in `this.attrs.name`\n // matches the template lookup name\n (0, _emberMetal.set)(this, 'internalName', this.get('name'));\n }\n })\n });\n\n this.render('{{#each items as |item|}}{{component \"foo-bar\" name=item.name}}{{/each}}', {\n items: [{ name: 'Robert' }, { name: 'Jacquie' }]\n });\n\n this.assertText('[Robert - Robert][Jacquie - Jacquie]');\n\n this.runTask(function () {\n return _this20.rerender();\n });\n\n this.assertText('[Robert - Robert][Jacquie - Jacquie]');\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this20.context, 'items', [{ name: 'Max' }, { name: 'James' }]);\n });\n\n this.assertText('[Max - Max][James - James]');\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this20.context, 'items', [{ name: 'Robert' }, { name: 'Jacquie' }]);\n });\n\n this.assertText('[Robert - Robert][Jacquie - Jacquie]');\n };\n\n _class.prototype['@test dashless components should not be found'] = function testDashlessComponentsShouldNotBeFound(assert) {\n var _this21 = this;\n\n this.registerComponent('dashless2', { template: 'Do not render me!' });\n\n expectAssertion(function () {\n _this21.render('{{component \"dashless\"}}');\n }, /You cannot use 'dashless' as a component name. Component names must contain a hyphen./);\n };\n\n _class.prototype['@test positional parameters does not clash when rendering different components'] = function testPositionalParametersDoesNotClashWhenRenderingDifferentComponents(assert) {\n var _this22 = this;\n\n this.registerComponent('foo-bar', {\n template: 'hello {{name}} ({{age}}) from foo-bar',\n ComponentClass: _helpers.Component.extend().reopenClass({\n positionalParams: ['name', 'age']\n })\n });\n\n this.registerComponent('foo-bar-baz', {\n template: 'hello {{name}} ({{age}}) from foo-bar-baz',\n ComponentClass: _helpers.Component.extend().reopenClass({\n positionalParams: ['name', 'age']\n })\n });\n\n this.render('{{component componentName name age}}', {\n componentName: 'foo-bar',\n name: 'Alex',\n age: 29\n });\n\n this.assertComponentElement(this.firstChild, { content: 'hello Alex (29) from foo-bar' });\n\n this.runTask(function () {\n return _this22.rerender();\n });\n\n this.assertComponentElement(this.firstChild, { content: 'hello Alex (29) from foo-bar' });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this22.context, 'name', 'Ben');\n });\n\n this.assertComponentElement(this.firstChild, { content: 'hello Ben (29) from foo-bar' });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this22.context, 'age', 22);\n });\n\n this.assertComponentElement(this.firstChild, { content: 'hello Ben (22) from foo-bar' });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this22.context, 'componentName', 'foo-bar-baz');\n });\n\n this.assertComponentElement(this.firstChild, { content: 'hello Ben (22) from foo-bar-baz' });\n\n this.runTask(function () {\n (0, _emberMetal.set)(_this22.context, 'componentName', 'foo-bar');\n (0, _emberMetal.set)(_this22.context, 'name', 'Alex');\n (0, _emberMetal.set)(_this22.context, 'age', 29);\n });\n\n this.assertComponentElement(this.firstChild, { content: 'hello Alex (29) from foo-bar' });\n };\n\n _class.prototype['@test positional parameters does not pollute the attributes when changing components'] = function testPositionalParametersDoesNotPolluteTheAttributesWhenChangingComponents(assert) {\n var _this23 = this;\n\n this.registerComponent('normal-message', {\n template: 'Normal: {{something}}!',\n ComponentClass: _helpers.Component.extend().reopenClass({\n positionalParams: ['something']\n })\n });\n\n this.registerComponent('alternative-message', {\n template: 'Alternative: {{something}} {{somethingElse}}!',\n ComponentClass: _helpers.Component.extend({\n something: 'Another'\n }).reopenClass({\n positionalParams: ['somethingElse']\n })\n });\n\n this.render('{{component componentName message}}', { componentName: 'normal-message', message: 'Hello' });\n\n this.assertComponentElement(this.firstChild, { content: 'Normal: Hello!' });\n\n this.runTask(function () {\n return _this23.rerender();\n });\n\n this.assertComponentElement(this.firstChild, { content: 'Normal: Hello!' });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this23.context, 'componentName', 'alternative-message');\n });\n\n this.assertComponentElement(this.firstChild, { content: 'Alternative: Another Hello!' });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this23.context, 'message', 'Hi');\n });\n\n this.assertComponentElement(this.firstChild, { content: 'Alternative: Another Hi!' });\n\n this.runTask(function () {\n (0, _emberMetal.set)(_this23.context, 'componentName', 'normal-message');\n (0, _emberMetal.set)(_this23.context, 'message', 'Hello');\n });\n\n this.assertComponentElement(this.firstChild, { content: 'Normal: Hello!' });\n };\n\n _class.prototype['@test static arbitrary number of positional parameters'] = function testStaticArbitraryNumberOfPositionalParameters(assert) {\n var _this24 = this;\n\n this.registerComponent('sample-component', {\n ComponentClass: _helpers.Component.extend().reopenClass({\n positionalParams: 'names'\n }),\n template: (0, _abstractTestCase.strip)(_templateObject2)\n });\n\n this.render('{{component \"sample-component\" \"Foo\" 4 \"Bar\" 5 \"Baz\" elementId=\"helper\"}}');\n\n this.assertText('Foo4Bar5Baz');\n\n this.runTask(function () {\n return _this24.rerender();\n });\n\n this.assertText('Foo4Bar5Baz');\n };\n\n _class.prototype['@test dynamic arbitrary number of positional parameters'] = function testDynamicArbitraryNumberOfPositionalParameters(assert) {\n var _this25 = this;\n\n this.registerComponent('sample-component', {\n ComponentClass: _helpers.Component.extend().reopenClass({\n positionalParams: 'n'\n }),\n template: (0, _abstractTestCase.strip)(_templateObject3)\n });\n\n this.render('{{component \"sample-component\" user1 user2}}', {\n user1: 'Foo',\n user2: 4\n });\n\n this.assertText('Foo4');\n\n this.runTask(function () {\n return _this25.rerender();\n });\n\n this.assertText('Foo4');\n\n this.runTask(function () {\n return _this25.context.set('user1', 'Bar');\n });\n\n this.assertText('Bar4');\n\n this.runTask(function () {\n return _this25.context.set('user2', '5');\n });\n\n this.assertText('Bar5');\n\n this.runTask(function () {\n _this25.context.set('user1', 'Foo');\n _this25.context.set('user2', 4);\n });\n\n this.assertText('Foo4');\n };\n\n _class.prototype['@test component helper emits useful backtracking re-render assertion message'] = function testComponentHelperEmitsUsefulBacktrackingReRenderAssertionMessage(assert) {\n var _this26 = this;\n\n this.registerComponent('outer-component', {\n ComponentClass: _helpers.Component.extend({\n init: function () {\n this._super.apply(this, arguments);\n this.set('person', { name: 'Alex' });\n }\n }),\n template: 'Hi {{person.name}}! {{component \"error-component\" person=person}}'\n });\n\n this.registerComponent('error-component', {\n ComponentClass: _helpers.Component.extend({\n init: function () {\n this._super.apply(this, arguments);\n this.set('person.name', { name: 'Ben' });\n }\n }),\n template: '{{person.name}}'\n });\n\n var expectedBacktrackingMessage = /modified \"person\\.name\" twice on \\[object Object\\] in a single render\\. It was rendered in \"component:outer-component\" and modified in \"component:error-component\"/;\n\n if (_features.EMBER_GLIMMER_ALLOW_BACKTRACKING_RERENDER) {\n expectDeprecation(expectedBacktrackingMessage);\n this.render('{{component componentName}}', { componentName: 'outer-component' });\n } else {\n expectAssertion(function () {\n _this26.render('{{component componentName}}', { componentName: 'outer-component' });\n }, expectedBacktrackingMessage);\n }\n };\n\n return _class;\n }(_testCase.RenderingTest));\n});","QUnit.module('ESLint | ember-glimmer/tests/integration/components/dynamic-components-test.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-glimmer/tests/integration/components/dynamic-components-test.js should pass ESLint\\n\\n');\n});\n","enifed('ember-glimmer/tests/integration/components/fragment-components-test', ['ember-babel', 'ember-glimmer/tests/utils/test-case', 'ember-glimmer/tests/utils/abstract-test-case', 'ember-glimmer/tests/utils/helpers', 'ember-metal'], function (_emberBabel, _testCase, _abstractTestCase, _helpers, _emberMetal) {\n 'use strict';\n\n var _templateObject = (0, _emberBabel.taggedTemplateLiteralLoose)(['<div>Hey</div>bar'], ['<div>Hey</div>bar']),\n _templateObject2 = (0, _emberBabel.taggedTemplateLiteralLoose)(['<!---->bar'], ['<!---->bar']),\n _templateObject3 = (0, _emberBabel.taggedTemplateLiteralLoose)(['<!---->bizz'], ['<!---->bizz']);\n\n (0, _testCase.moduleFor)('Components test: fragment components', function (_RenderingTest) {\n (0, _emberBabel.inherits)(_class, _RenderingTest);\n\n function _class() {\n (0, _emberBabel.classCallCheck)(this, _class);\n return (0, _emberBabel.possibleConstructorReturn)(this, _RenderingTest.apply(this, arguments));\n }\n\n _class.prototype.getCustomDispatcherEvents = function getCustomDispatcherEvents() {\n return {\n hitDem: 'folks'\n };\n };\n\n _class.prototype['@test fragments do not render an outer tag'] = function testFragmentsDoNotRenderAnOuterTag() {\n var instance = void 0;\n var FooBarComponent = _helpers.Component.extend({\n tagName: '',\n init: function () {\n this._super();\n instance = this;\n this.foo = true;\n this.bar = 'bar';\n }\n });\n\n var template = '{{#if foo}}<div>Hey</div>{{/if}}{{yield bar}}';\n\n this.registerComponent('foo-bar', { ComponentClass: FooBarComponent, template: template });\n\n this.render('{{#foo-bar as |bar|}}{{bar}}{{/foo-bar}}');\n\n this.assertHTML((0, _abstractTestCase.strip)(_templateObject));\n\n this.assertStableRerender();\n\n this.runTask(function () {\n return (0, _emberMetal.set)(instance, 'foo', false);\n });\n\n this.assertHTML((0, _abstractTestCase.strip)(_templateObject2));\n\n this.runTask(function () {\n return (0, _emberMetal.set)(instance, 'bar', 'bizz');\n });\n\n this.assertHTML((0, _abstractTestCase.strip)(_templateObject3));\n\n this.runTask(function () {\n (0, _emberMetal.set)(instance, 'bar', 'bar');\n (0, _emberMetal.set)(instance, 'foo', true);\n });\n };\n\n _class.prototype['@test throws an error if an event function is defined in a tagless component'] = function testThrowsAnErrorIfAnEventFunctionIsDefinedInATaglessComponent() {\n var _this2 = this;\n\n var template = 'hit dem folks';\n var FooBarComponent = _helpers.Component.extend({\n tagName: '',\n click: function () {}\n });\n\n this.registerComponent('foo-bar', { ComponentClass: FooBarComponent, template: template });\n\n expectAssertion(function () {\n _this2.render('{{#foo-bar}}{{/foo-bar}}');\n }, /You can not define a function that handles DOM events in the .* tagless component since it doesn't have any DOM element./);\n };\n\n _class.prototype['@test throws an error if a custom defined event function is defined in a tagless component'] = function testThrowsAnErrorIfACustomDefinedEventFunctionIsDefinedInATaglessComponent() {\n var _this3 = this;\n\n var template = 'hit dem folks';\n var FooBarComponent = _helpers.Component.extend({\n tagName: '',\n folks: function () {}\n });\n\n this.registerComponent('foo-bar', { ComponentClass: FooBarComponent, template: template });\n\n expectAssertion(function () {\n _this3.render('{{#foo-bar}}{{/foo-bar}}');\n }, /You can not define a function that handles DOM events in the .* tagless component since it doesn't have any DOM element./);\n };\n\n _class.prototype['@test throws an error if `tagName` is an empty string and `classNameBindings` are specified'] = function testThrowsAnErrorIfTagNameIsAnEmptyStringAndClassNameBindingsAreSpecified() {\n var _this4 = this;\n\n var template = 'hit dem folks';\n var FooBarComponent = _helpers.Component.extend({\n tagName: '',\n foo: true,\n classNameBindings: ['foo:is-foo:is-bar']\n });\n\n this.registerComponent('foo-bar', { ComponentClass: FooBarComponent, template: template });\n\n expectAssertion(function () {\n _this4.render('{{#foo-bar}}{{/foo-bar}}');\n }, /You cannot use `classNameBindings` on a tag-less component/);\n };\n\n _class.prototype['@test throws an error if `tagName` is an empty string and `attributeBindings` are specified'] = function testThrowsAnErrorIfTagNameIsAnEmptyStringAndAttributeBindingsAreSpecified() {\n var _this5 = this;\n\n var template = 'hit dem folks';\n var FooBarComponent = _helpers.Component.extend({\n tagName: '',\n attributeBindings: ['href']\n });\n\n this.registerComponent('foo-bar', { ComponentClass: FooBarComponent, template: template });\n expectAssertion(function () {\n _this5.render('{{#foo-bar}}{{/foo-bar}}');\n }, /You cannot use `attributeBindings` on a tag-less component/);\n };\n\n _class.prototype['@test throws an error if `tagName` is an empty string and `elementId` is specified via JS'] = function testThrowsAnErrorIfTagNameIsAnEmptyStringAndElementIdIsSpecifiedViaJS() {\n var _this6 = this;\n\n var template = 'hit dem folks';\n var FooBarComponent = _helpers.Component.extend({\n tagName: '',\n elementId: 'turntUp'\n });\n\n this.registerComponent('foo-bar', { ComponentClass: FooBarComponent, template: template });\n expectAssertion(function () {\n _this6.render('{{#foo-bar}}{{/foo-bar}}');\n }, /You cannot use `elementId` on a tag-less component/);\n };\n\n _class.prototype['@test throws an error if `tagName` is an empty string and `elementId` is specified via template'] = function testThrowsAnErrorIfTagNameIsAnEmptyStringAndElementIdIsSpecifiedViaTemplate() {\n var _this7 = this;\n\n var template = 'hit dem folks';\n var FooBarComponent = _helpers.Component.extend({\n tagName: ''\n });\n\n this.registerComponent('foo-bar', { ComponentClass: FooBarComponent, template: template });\n expectAssertion(function () {\n _this7.render('{{#foo-bar elementId=\\'turntUp\\'}}{{/foo-bar}}');\n }, /You cannot use `elementId` on a tag-less component/);\n };\n\n _class.prototype['@test does not throw an error if `tagName` is an empty string and `id` is specified via JS'] = function testDoesNotThrowAnErrorIfTagNameIsAnEmptyStringAndIdIsSpecifiedViaJS() {\n var template = '{{id}}';\n var FooBarComponent = _helpers.Component.extend({\n tagName: '',\n id: 'baz'\n });\n\n this.registerComponent('foo-bar', { ComponentClass: FooBarComponent, template: template });\n this.render('{{#foo-bar}}{{/foo-bar}}');\n this.assertText('baz');\n };\n\n _class.prototype['@test does not throw an error if `tagName` is an empty string and `id` is specified via template'] = function testDoesNotThrowAnErrorIfTagNameIsAnEmptyStringAndIdIsSpecifiedViaTemplate() {\n var template = '{{id}}';\n var FooBarComponent = _helpers.Component.extend({\n tagName: ''\n });\n\n this.registerComponent('foo-bar', { ComponentClass: FooBarComponent, template: template });\n this.render('{{#foo-bar id=\\'baz\\'}}{{/foo-bar}}');\n this.assertText('baz');\n };\n\n _class.prototype['@test does not throw an error if `tagName` is an empty string and `id` is bound property specified via template'] = function testDoesNotThrowAnErrorIfTagNameIsAnEmptyStringAndIdIsBoundPropertySpecifiedViaTemplate() {\n var _this8 = this;\n\n var template = '{{id}}';\n var FooBarComponent = _helpers.Component.extend({\n tagName: ''\n });\n\n this.registerComponent('foo-bar', { ComponentClass: FooBarComponent, template: template });\n\n this.render('{{#foo-bar id=fooBarId}}{{/foo-bar}}', { fooBarId: 'baz' });\n\n this.assertText('baz');\n\n this.assertStableRerender();\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this8.context, 'fooBarId', 'qux');\n });\n\n this.assertText('qux');\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this8.context, 'fooBarId', 'baz');\n });\n\n this.assertText('baz');\n };\n\n _class.prototype['@test does not throw an error if `tagName` is an empty string and `id` is specified via template and passed to child component'] = function testDoesNotThrowAnErrorIfTagNameIsAnEmptyStringAndIdIsSpecifiedViaTemplateAndPassedToChildComponent() {\n var fooBarTemplate = '{{#baz-child id=id}}{{/baz-child}}';\n var FooBarComponent = _helpers.Component.extend({\n tagName: ''\n });\n var BazChildComponent = _helpers.Component.extend();\n var bazChildTemplate = '{{id}}';\n\n this.registerComponent('foo-bar', { ComponentClass: FooBarComponent, template: fooBarTemplate });\n this.registerComponent('baz-child', { ComponentClass: BazChildComponent, template: bazChildTemplate });\n this.render('{{#foo-bar id=\\'baz\\'}}{{/foo-bar}}');\n this.assertText('baz');\n };\n\n _class.prototype['@test throws an error if when $() is accessed on component where `tagName` is an empty string'] = function testThrowsAnErrorIfWhen$IsAccessedOnComponentWhereTagNameIsAnEmptyString() {\n var _this9 = this;\n\n var template = 'hit dem folks';\n var FooBarComponent = _helpers.Component.extend({\n tagName: '',\n init: function () {\n this._super();\n this.$();\n }\n });\n\n this.registerComponent('foo-bar', { ComponentClass: FooBarComponent, template: template });\n\n expectAssertion(function () {\n _this9.render('{{#foo-bar}}{{/foo-bar}}');\n }, /You cannot access this.\\$\\(\\) on a component with `tagName: \\'\\'` specified/);\n };\n\n _class.prototype['@test renders a contained view with omitted start tag and tagless parent view context'] = function testRendersAContainedViewWithOmittedStartTagAndTaglessParentViewContext() {\n var _this10 = this;\n\n this.registerComponent('root-component', {\n ComponentClass: _helpers.Component.extend({\n tagName: 'section'\n }),\n template: '{{frag-ment}}'\n });\n\n this.registerComponent('frag-ment', {\n ComponentClass: _helpers.Component.extend({\n tagName: ''\n }),\n template: '{{my-span}}'\n });\n\n this.registerComponent('my-span', {\n ComponentClass: _helpers.Component.extend({\n tagName: 'span'\n }),\n template: 'dab'\n });\n\n this.render('{{root-component}}');\n\n this.assertElement(this.firstChild, { tagName: 'section' });\n this.assertElement(this.firstChild.firstElementChild, { tagName: 'span' });\n\n this.runTask(function () {\n return _this10.rerender();\n });\n\n this.assertElement(this.firstChild, { tagName: 'section' });\n this.assertElement(this.firstChild.firstElementChild, { tagName: 'span' });\n };\n\n return _class;\n }(_testCase.RenderingTest));\n});","QUnit.module('ESLint | ember-glimmer/tests/integration/components/fragment-components-test.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-glimmer/tests/integration/components/fragment-components-test.js should pass ESLint\\n\\n');\n});\n","enifed('ember-glimmer/tests/integration/components/instrumentation-compile-test', ['ember-babel', 'ember-glimmer/tests/utils/test-case', 'ember-glimmer/tests/utils/helpers', 'ember-metal'], function (_emberBabel, _testCase, _helpers, _emberMetal) {\n 'use strict';\n\n (0, _testCase.moduleFor)('Components compile instrumentation', function (_RenderingTest) {\n (0, _emberBabel.inherits)(_class, _RenderingTest);\n\n function _class() {\n (0, _emberBabel.classCallCheck)(this, _class);\n\n var _this = (0, _emberBabel.possibleConstructorReturn)(this, _RenderingTest.call(this));\n\n _this.resetEvents();\n\n (0, _emberMetal.instrumentationSubscribe)('render.getComponentDefinition', {\n before: function (name, timestamp, payload) {\n if (payload.view !== _this.component) {\n _this.actual.before.push(payload);\n }\n },\n after: function (name, timestamp, payload) {\n if (payload.view !== _this.component) {\n _this.actual.after.push(payload);\n }\n }\n });\n return _this;\n }\n\n _class.prototype.resetEvents = function resetEvents() {\n this.expected = {\n before: [],\n after: []\n };\n\n this.actual = {\n before: [],\n after: []\n };\n };\n\n _class.prototype.teardown = function teardown() {\n this.assert.deepEqual(this.actual.before, [], 'No unexpected events (before)');\n this.assert.deepEqual(this.actual.after, [], 'No unexpected events (after)');\n _RenderingTest.prototype.teardown.call(this);\n (0, _emberMetal.instrumentationReset)();\n };\n\n _class.prototype['@test it should only receive an instrumentation event for initial render'] = function testItShouldOnlyReceiveAnInstrumentationEventForInitialRender(assert) {\n var _this2 = this;\n\n var testCase = this;\n\n var BaseClass = _helpers.Component.extend({\n tagName: '',\n\n willRender: function () {\n testCase.expected.before.push(this);\n testCase.expected.after.unshift(this);\n }\n });\n\n this.registerComponent('x-bar', {\n template: '[x-bar: {{bar}}]',\n ComponentClass: BaseClass.extend()\n });\n\n this.render('[-top-level: {{foo}}] {{x-bar bar=bar}}', {\n foo: 'foo', bar: 'bar'\n });\n\n this.assertText('[-top-level: foo] [x-bar: bar]');\n\n this.assertEvents('after initial render');\n\n this.runTask(function () {\n return _this2.rerender();\n });\n\n this.assertEvents('after no-op rerender');\n };\n\n _class.prototype.assertEvents = function assertEvents(label) {\n var actual = this.actual,\n expected = this.expected;\n\n this.assert.strictEqual(actual.before.length, actual.after.length, label + ': before and after callbacks should be balanced');\n\n this._assertEvents(label + ' (before):', actual.before, expected.before);\n this._assertEvents(label + ' (after):', actual.before, expected.before);\n\n this.resetEvents();\n };\n\n _class.prototype._assertEvents = function _assertEvents(label, actual, expected) {\n var _this3 = this;\n\n this.assert.equal(actual.length, expected.length, label + ': expected ' + expected.length + ' and got ' + actual.length);\n\n actual.forEach(function (payload, i) {\n return _this3.assertPayload(payload, expected[i]);\n });\n };\n\n _class.prototype.assertPayload = function assertPayload(payload, component) {\n this.assert.equal(payload.object, component._debugContainerKey, 'payload.object');\n };\n\n return _class;\n }(_testCase.RenderingTest));\n});","QUnit.module('ESLint | ember-glimmer/tests/integration/components/instrumentation-compile-test.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-glimmer/tests/integration/components/instrumentation-compile-test.js should pass ESLint\\n\\n');\n});\n","enifed('ember-glimmer/tests/integration/components/instrumentation-test', ['ember-babel', 'ember-glimmer/tests/utils/test-case', 'ember-glimmer/tests/utils/helpers', 'ember-metal'], function (_emberBabel, _testCase, _helpers, _emberMetal) {\n 'use strict';\n\n (0, _testCase.moduleFor)('Components instrumentation', function (_RenderingTest) {\n (0, _emberBabel.inherits)(_class, _RenderingTest);\n\n function _class() {\n (0, _emberBabel.classCallCheck)(this, _class);\n\n var _this = (0, _emberBabel.possibleConstructorReturn)(this, _RenderingTest.call(this));\n\n _this.resetEvents();\n\n (0, _emberMetal.instrumentationSubscribe)('render.component', {\n before: function (name, timestamp, payload) {\n if (payload.view !== _this.component) {\n _this.actual.before.push(payload);\n }\n },\n after: function (name, timestamp, payload) {\n if (payload.view !== _this.component) {\n _this.actual.after.push(payload);\n }\n }\n });\n return _this;\n }\n\n _class.prototype.resetEvents = function resetEvents() {\n this.expected = {\n before: [],\n after: []\n };\n\n this.actual = {\n before: [],\n after: []\n };\n };\n\n _class.prototype.teardown = function teardown() {\n this.assert.deepEqual(this.actual.before, [], 'No unexpected events (before)');\n this.assert.deepEqual(this.actual.after, [], 'No unexpected events (after)');\n _RenderingTest.prototype.teardown.call(this);\n (0, _emberMetal.instrumentationReset)();\n };\n\n _class.prototype['@test zomg'] = function testZomg(assert) {\n assert.ok(true);\n };\n\n _class.prototype['@test it should receive an instrumentation event for both initial render and updates'] = function testItShouldReceiveAnInstrumentationEventForBothInitialRenderAndUpdates(assert) {\n var _this2 = this;\n\n var testCase = this;\n\n var BaseClass = _helpers.Component.extend({\n tagName: '',\n\n willRender: function () {\n testCase.expected.before.push(this);\n testCase.expected.after.unshift(this);\n }\n });\n\n this.registerComponent('x-bar', {\n template: '[x-bar: {{bar}}] {{yield}}',\n ComponentClass: BaseClass.extend()\n });\n\n this.registerComponent('x-baz', {\n template: '[x-baz: {{baz}}]',\n ComponentClass: BaseClass.extend()\n });\n\n this.registerComponent('x-bat', {\n template: '[x-bat: {{bat}}]',\n ComponentClass: BaseClass.extend()\n });\n\n this.render('[-top-level: {{foo}}] {{#x-bar bar=bar}}{{x-baz baz=baz}}{{/x-bar}} {{x-bat bat=bat}}', {\n foo: 'foo', bar: 'bar', baz: 'baz', bat: 'bat'\n });\n\n this.assertText('[-top-level: foo] [x-bar: bar] [x-baz: baz] [x-bat: bat]');\n\n this.assertEvents('after initial render', true);\n\n this.runTask(function () {\n return _this2.rerender();\n });\n\n this.assertEvents('after no-op rerender');\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this2.context, 'foo', 'FOO');\n });\n\n this.assertEvents('after updating top-level');\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this2.context, 'baz', 'BAZ');\n });\n\n this.assertEvents('after updating inner-most');\n\n this.runTask(function () {\n (0, _emberMetal.set)(_this2.context, 'bar', 'BAR');\n (0, _emberMetal.set)(_this2.context, 'bat', 'BAT');\n });\n\n this.assertEvents('after updating the rest');\n\n this.runTask(function () {\n (0, _emberMetal.set)(_this2.context, 'foo', 'FOO');\n (0, _emberMetal.set)(_this2.context, 'bar', 'BAR');\n (0, _emberMetal.set)(_this2.context, 'baz', 'BAZ');\n (0, _emberMetal.set)(_this2.context, 'bat', 'BAT');\n });\n\n this.assertEvents('after reset');\n };\n\n _class.prototype.assertEvents = function assertEvents(label) {\n var initialRender = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var actual = this.actual,\n expected = this.expected;\n\n\n this.assert.strictEqual(actual.before.length, actual.after.length, label + ': before and after callbacks should be balanced');\n\n this._assertEvents(label + ' (before):', actual.before, expected.before, initialRender);\n this._assertEvents(label + ' (after):', actual.before, expected.before, initialRender);\n\n this.resetEvents();\n };\n\n _class.prototype._assertEvents = function _assertEvents(label, actual, expected, initialRender) {\n var _this3 = this;\n\n this.assert.equal(actual.length, expected.length, label + ': expected ' + expected.length + ' and got ' + actual.length);\n\n actual.forEach(function (payload, i) {\n return _this3.assertPayload(payload, expected[i], initialRender);\n });\n };\n\n _class.prototype.assertPayload = function assertPayload(payload, component, initialRender) {\n this.assert.equal(payload.object, component.toString(), 'payload.object');\n this.assert.ok(payload.containerKey, 'the container key should be present');\n this.assert.equal(payload.containerKey, component._debugContainerKey, 'payload.containerKey');\n this.assert.equal(payload.view, component, 'payload.view');\n this.assert.strictEqual(payload.initialRender, initialRender, 'payload.initialRender');\n };\n\n return _class;\n }(_testCase.RenderingTest));\n});","QUnit.module('ESLint | ember-glimmer/tests/integration/components/instrumentation-test.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-glimmer/tests/integration/components/instrumentation-test.js should pass ESLint\\n\\n');\n});\n","enifed('ember-glimmer/tests/integration/components/life-cycle-test', ['ember-babel', 'ember-metal', 'ember-runtime', 'ember-glimmer/tests/utils/helpers', 'ember-glimmer/tests/utils/abstract-test-case', 'ember-glimmer/tests/utils/test-case', 'ember-views', 'ember-glimmer/tests/utils/test-helpers', 'ember-utils', 'internal-test-helpers'], function (_emberBabel, _emberMetal, _emberRuntime, _helpers, _abstractTestCase, _testCase, _emberViews, _testHelpers, _emberUtils, _internalTestHelpers) {\n 'use strict';\n\n var _templateObject = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n <div>\\n Twitter: {{', '}}|\\n ', '\\n </div>'], ['\\n <div>\\n Twitter: {{', '}}|\\n ', '\\n </div>']),\n _templateObject2 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n <div>\\n Name: {{', '}}|\\n ', '\\n </div>'], ['\\n <div>\\n Name: {{', '}}|\\n ', '\\n </div>']),\n _templateObject3 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n <div>\\n Website: {{', '}}\\n </div>'], ['\\n <div>\\n Website: {{', '}}\\n </div>']),\n _templateObject4 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n <div>\\n ', '|\\n ', '|\\n ', '\\n </div>'], ['\\n <div>\\n ', '|\\n ', '|\\n ', '\\n </div>']),\n _templateObject5 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n <div>\\n Top: ', '\\n </div>'], ['\\n <div>\\n Top: ', '\\n </div>']),\n _templateObject6 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n <div>\\n Middle: ', '\\n </div>'], ['\\n <div>\\n Middle: ', '\\n </div>']),\n _templateObject7 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n <div>\\n Bottom: {{', '}}\\n </div>'], ['\\n <div>\\n Bottom: {{', '}}\\n </div>']),\n _templateObject8 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n {{#nested-item}}Item: {{count}}{{/nested-item}}\\n '], ['\\n {{#nested-item}}Item: {{count}}{{/nested-item}}\\n ']),\n _templateObject9 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n {{#nested-item}}Nothing to see here{{/nested-item}}\\n '], ['\\n {{#nested-item}}Nothing to see here{{/nested-item}}\\n ']),\n _templateObject10 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n {{#each items as |item|}}\\n ', '\\n {{else}}\\n ', '\\n {{/each}}\\n '], ['\\n {{#each items as |item|}}\\n ', '\\n {{else}}\\n ', '\\n {{/each}}\\n ']),\n _templateObject11 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n {{yield}}\\n <ul>\\n {{#nested-component nestedId=(concat itemId \\'-A\\')}}A{{/nested-component}}\\n {{#nested-component nestedId=(concat itemId \\'-B\\')}}B{{/nested-component}}\\n </ul>\\n '], ['\\n {{yield}}\\n <ul>\\n {{#nested-component nestedId=(concat itemId \\'-A\\')}}A{{/nested-component}}\\n {{#nested-component nestedId=(concat itemId \\'-B\\')}}B{{/nested-component}}\\n </ul>\\n ']),\n _templateObject12 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n {{#each items as |item|}}\\n {{#parent-component itemId=item.id}}{{item.id}}{{/parent-component}}\\n {{/each}}\\n {{#if model.shouldShow}}\\n {{#parent-component itemId=6}}6{{/parent-component}}\\n {{/if}}\\n {{#if model.shouldShow}}\\n {{#parent-component itemId=7}}7{{/parent-component}}\\n {{/if}}\\n '], ['\\n {{#each items as |item|}}\\n {{#parent-component itemId=item.id}}{{item.id}}{{/parent-component}}\\n {{/each}}\\n {{#if model.shouldShow}}\\n {{#parent-component itemId=6}}6{{/parent-component}}\\n {{/if}}\\n {{#if model.shouldShow}}\\n {{#parent-component itemId=7}}7{{/parent-component}}\\n {{/if}}\\n ']);\n\n var LifeCycleHooksTest = function (_RenderingTest) {\n (0, _emberBabel.inherits)(LifeCycleHooksTest, _RenderingTest);\n\n function LifeCycleHooksTest() {\n (0, _emberBabel.classCallCheck)(this, LifeCycleHooksTest);\n\n var _this = (0, _emberBabel.possibleConstructorReturn)(this, _RenderingTest.call(this));\n\n _this.hooks = [];\n _this.components = {};\n _this.componentRegistry = [];\n _this.teardownAssertions = [];\n return _this;\n }\n\n LifeCycleHooksTest.prototype.teardown = function teardown() {\n _RenderingTest.prototype.teardown.call(this);\n\n for (var i = 0; i < this.teardownAssertions.length; i++) {\n this.teardownAssertions[i]();\n }\n };\n\n LifeCycleHooksTest.prototype.getBootOptions = function getBootOptions() {\n return {\n isInteractive: this.isInteractive\n };\n };\n\n LifeCycleHooksTest.prototype.invocationFor = function invocationFor(name) {\n var namedArgs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n throw new Error('Not implemented: `invocationFor`');\n };\n\n LifeCycleHooksTest.prototype.attrFor = function attrFor(name) {\n throw new Error('Not implemented: `attrFor`');\n };\n\n LifeCycleHooksTest.prototype.assertRegisteredViews = function assertRegisteredViews(label) {\n var viewRegistry = this.owner.lookup('-view-registry:main');\n var topLevelId = (0, _emberViews.getViewId)(this.component);\n var actual = Object.keys(viewRegistry).sort().filter(function (id) {\n return id !== topLevelId;\n });\n\n if (this.isInteractive) {\n var expected = this.componentRegistry.sort();\n\n this.assert.deepEqual(actual, expected, 'registered views - ' + label);\n } else {\n this.assert.deepEqual(actual, [], 'no views should be registered for non-interactive mode');\n }\n };\n\n LifeCycleHooksTest.prototype.registerComponent = function registerComponent(name, _ref) {\n var _this2 = this;\n\n var _ref$template = _ref.template,\n template = _ref$template === undefined ? null : _ref$template;\n\n var pushComponent = function (instance) {\n _this2.components[name] = instance;\n _this2.componentRegistry.push((0, _emberViews.getViewId)(instance));\n };\n\n var removeComponent = function (instance) {\n var index = _this2.componentRegistry.indexOf(instance);\n _this2.componentRegistry.splice(index, 1);\n\n delete _this2.components[name];\n };\n\n var pushHook = function (hookName, args) {\n _this2.hooks.push(hook(name, hookName, args));\n };\n\n var assertParentView = function (hookName, instance) {\n _this2.assert.ok(instance.parentView, 'parentView should be present in ' + hookName);\n\n if (hookName === 'willDestroyElement') {\n _this2.assert.ok(instance.parentView.childViews.indexOf(instance) !== -1, 'view is still connected to parentView in ' + hookName);\n }\n };\n\n var assertElement = function (hookName, instance) {\n var inDOM = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n\n if (instance.tagName === '') {\n return;\n }\n\n _this2.assert.ok((0, _emberViews.getViewElement)(instance), 'element should be present on ' + instance + ' during ' + hookName);\n\n if (_this2.isInteractive) {\n _this2.assert.ok(instance.element, 'this.element should be present on ' + instance + ' during ' + hookName);\n _this2.assert.equal(document.body.contains(instance.element), inDOM, 'element for ' + instance + ' ' + (inDOM ? 'should' : 'should not') + ' be in the DOM during ' + hookName);\n } else {\n _this2.assert.throws(function () {\n return instance.element;\n }, /Accessing `this.element` is not allowed in non-interactive environments/);\n }\n };\n\n var assertNoElement = function (hookName, instance) {\n _this2.assert.strictEqual((0, _emberViews.getViewElement)(instance), null, 'element should not be present in ' + hookName);\n\n if (_this2.isInteractive) {\n _this2.assert.strictEqual(instance.element, null, 'this.element should not be present in ' + hookName);\n } else {\n _this2.assert.throws(function () {\n return instance.element;\n }, /Accessing `this.element` is not allowed in non-interactive environments/);\n }\n };\n\n var assertState = function (hookName, expectedState, instance) {\n _this2.assert.equal(instance._state, expectedState, 'within ' + hookName + ' the expected _state is ' + expectedState);\n };\n\n var isInteractive = this.isInteractive;\n\n\n var ComponentClass = this.ComponentClass.extend({\n init: function () {\n var _this3 = this,\n _arguments = arguments;\n\n expectDeprecation(function () {\n _this3._super.apply(_this3, _arguments);\n }, /didInitAttrs called/);\n\n this.isInitialRender = true;\n this.componentName = name;\n pushHook('init');\n pushComponent(this);\n assertParentView('init', this);\n assertNoElement('init', this);\n assertState('init', 'preRender', this);\n\n this.on('init', function () {\n return pushHook('on(init)');\n });\n\n _emberMetal.run.schedule('afterRender', function () {\n _this3.isInitialRender = false;\n });\n },\n didInitAttrs: function (options) {\n pushHook('didInitAttrs', options);\n assertParentView('didInitAttrs', this);\n assertNoElement('didInitAttrs', this);\n assertState('didInitAttrs', 'preRender', this);\n },\n didReceiveAttrs: function (options) {\n pushHook('didReceiveAttrs', options);\n assertParentView('didReceiveAttrs', this);\n\n if (this.isInitialRender) {\n assertNoElement('didReceiveAttrs', this);\n assertState('didReceiveAttrs', 'preRender', this);\n } else {\n assertElement('didReceiveAttrs', this);\n\n if (isInteractive) {\n assertState('didReceiveAttrs', 'inDOM', this);\n } else {\n assertState('didReceiveAttrs', 'hasElement', this);\n }\n }\n },\n willInsertElement: function () {\n pushHook('willInsertElement');\n assertParentView('willInsertElement', this);\n assertElement('willInsertElement', this, false);\n assertState('willInsertElement', 'hasElement', this);\n },\n willRender: function () {\n pushHook('willRender');\n assertParentView('willRender', this);\n\n if (this.isInitialRender) {\n assertNoElement('willRender', this, false);\n assertState('willRender', 'preRender', this);\n } else {\n assertElement('willRender', this);\n assertState('willRender', 'inDOM', this);\n }\n },\n didInsertElement: function () {\n pushHook('didInsertElement');\n assertParentView('didInsertElement', this);\n assertElement('didInsertElement', this);\n assertState('didInsertElement', 'inDOM', this);\n },\n didRender: function () {\n pushHook('didRender');\n assertParentView('didRender', this);\n assertElement('didRender', this);\n assertState('didRender', 'inDOM', this);\n },\n didUpdateAttrs: function (options) {\n pushHook('didUpdateAttrs', options);\n assertParentView('didUpdateAttrs', this);\n\n if (isInteractive) {\n assertState('didUpdateAttrs', 'inDOM', this);\n } else {\n assertState('didUpdateAttrs', 'hasElement', this);\n }\n },\n willUpdate: function (options) {\n pushHook('willUpdate', options);\n assertParentView('willUpdate', this);\n assertElement('willUpdate', this);\n assertState('willUpdate', 'inDOM', this);\n },\n didUpdate: function (options) {\n pushHook('didUpdate', options);\n assertParentView('didUpdate', this);\n assertElement('didUpdate', this);\n assertState('didUpdate', 'inDOM', this);\n },\n willDestroyElement: function () {\n pushHook('willDestroyElement');\n assertParentView('willDestroyElement', this);\n assertElement('willDestroyElement', this);\n assertState('willDestroyElement', 'inDOM', this);\n },\n willClearRender: function () {\n pushHook('willClearRender');\n assertParentView('willClearRender', this);\n assertElement('willClearRender', this);\n assertState('willClearRender', 'inDOM', this);\n },\n didDestroyElement: function () {\n pushHook('didDestroyElement');\n assertNoElement('didDestroyElement', this);\n assertState('didDestroyElement', 'destroying', this);\n },\n willDestroy: function () {\n pushHook('willDestroy');\n removeComponent(this);\n\n this._super.apply(this, arguments);\n }\n });\n\n _RenderingTest.prototype.registerComponent.call(this, name, { ComponentClass: ComponentClass, template: template });\n };\n\n LifeCycleHooksTest.prototype.assertHooks = function assertHooks(_ref2) {\n var label = _ref2.label,\n interactive = _ref2.interactive,\n nonInteractive = _ref2.nonInteractive;\n\n var rawHooks = this.isInteractive ? interactive : nonInteractive;\n var hooks = rawHooks.map(function (raw) {\n return hook.apply(undefined, raw);\n });\n this.assert.deepEqual(json(this.hooks), json(hooks), label);\n this.hooks = [];\n };\n\n LifeCycleHooksTest.prototype['@test lifecycle hooks are invoked in a predictable order'] = function testLifecycleHooksAreInvokedInAPredictableOrder() {\n var _this4 = this;\n\n var _boundHelpers = this.boundHelpers,\n attr = _boundHelpers.attr,\n invoke = _boundHelpers.invoke;\n\n\n this.registerComponent('the-top', { template: (0, _abstractTestCase.strip)(_templateObject, attr('twitter'), invoke('the-middle', { name: string('Tom Dale') }))\n });\n\n this.registerComponent('the-middle', { template: (0, _abstractTestCase.strip)(_templateObject2, attr('name'), invoke('the-bottom', { website: string('tomdale.net') }))\n });\n\n this.registerComponent('the-bottom', { template: (0, _abstractTestCase.strip)(_templateObject3, attr('website'))\n });\n\n this.render(invoke('the-top', { twitter: expr('twitter') }), { twitter: '@tomdale' });\n\n this.assertText('Twitter: @tomdale|Name: Tom Dale|Website: tomdale.net');\n this.assertRegisteredViews('intial render');\n\n var topAttrs = { twitter: '@tomdale' };\n var middleAttrs = { name: 'Tom Dale' };\n var bottomAttrs = { website: 'tomdale.net' };\n\n this.assertHooks({\n label: 'after initial render',\n\n interactive: [\n // Sync hooks\n\n ['the-top', 'init'], ['the-top', 'didInitAttrs'], ['the-top', 'didReceiveAttrs'], ['the-top', 'on(init)'], ['the-top', 'willRender'], ['the-top', 'willInsertElement'], ['the-middle', 'init'], ['the-middle', 'didInitAttrs'], ['the-middle', 'didReceiveAttrs'], ['the-middle', 'on(init)'], ['the-middle', 'willRender'], ['the-middle', 'willInsertElement'], ['the-bottom', 'init'], ['the-bottom', 'didInitAttrs'], ['the-bottom', 'didReceiveAttrs'], ['the-bottom', 'on(init)'], ['the-bottom', 'willRender'], ['the-bottom', 'willInsertElement'],\n\n // Async hooks\n\n ['the-bottom', 'didInsertElement'], ['the-bottom', 'didRender'], ['the-middle', 'didInsertElement'], ['the-middle', 'didRender'], ['the-top', 'didInsertElement'], ['the-top', 'didRender']],\n\n nonInteractive: [\n // Sync hooks\n ['the-top', 'init'], ['the-top', 'didInitAttrs'], ['the-top', 'didReceiveAttrs'], ['the-top', 'on(init)'], ['the-middle', 'init'], ['the-middle', 'didInitAttrs'], ['the-middle', 'didReceiveAttrs'], ['the-middle', 'on(init)'], ['the-bottom', 'init'], ['the-bottom', 'didInitAttrs'], ['the-bottom', 'didReceiveAttrs'], ['the-bottom', 'on(init)']]\n });\n\n this.runTask(function () {\n return _this4.components['the-bottom'].rerender();\n });\n\n this.assertText('Twitter: @tomdale|Name: Tom Dale|Website: tomdale.net');\n\n this.assertHooks({\n label: 'after no-op rerender (bottom)',\n\n interactive: [\n // Sync hooks\n ['the-top', 'willUpdate'], ['the-top', 'willRender'], ['the-middle', 'willUpdate'], ['the-middle', 'willRender'], ['the-bottom', 'willUpdate'], ['the-bottom', 'willRender'],\n\n // Async hooks\n\n ['the-bottom', 'didUpdate'], ['the-bottom', 'didRender'], ['the-middle', 'didUpdate'], ['the-middle', 'didRender'], ['the-top', 'didUpdate'], ['the-top', 'didRender']],\n\n nonInteractive: []\n });\n\n this.runTask(function () {\n return _this4.components['the-middle'].rerender();\n });\n\n this.assertText('Twitter: @tomdale|Name: Tom Dale|Website: tomdale.net');\n\n this.assertHooks({\n label: 'after no-op rerender (middle)',\n\n interactive: [\n // Sync hooks\n\n ['the-top', 'willUpdate'], ['the-top', 'willRender'], ['the-middle', 'willUpdate'], ['the-middle', 'willRender'],\n\n // Async hooks\n\n ['the-middle', 'didUpdate'], ['the-middle', 'didRender'], ['the-top', 'didUpdate'], ['the-top', 'didRender']],\n\n nonInteractive: []\n });\n\n this.runTask(function () {\n return _this4.components['the-top'].rerender();\n });\n\n this.assertText('Twitter: @tomdale|Name: Tom Dale|Website: tomdale.net');\n\n this.assertHooks({\n label: 'after no-op rerender (top)',\n\n interactive: [\n // Sync hooks\n\n ['the-top', 'willUpdate'], ['the-top', 'willRender'],\n\n // Async hooks\n\n ['the-top', 'didUpdate'], ['the-top', 'didRender']],\n\n nonInteractive: []\n });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this4.context, 'twitter', '@horsetomdale');\n });\n\n this.assertText('Twitter: @horsetomdale|Name: Tom Dale|Website: tomdale.net');\n\n // Because the `twitter` attr is only used by the topmost component,\n // and not passed down, we do not expect to see lifecycle hooks\n // called for child components. If the `didReceiveAttrs` hook used\n // the new attribute to rerender itself imperatively, that would result\n // in lifecycle hooks being invoked for the child.\n\n this.assertHooks({\n label: 'after update',\n\n interactive: [\n // Sync hooks\n\n ['the-top', 'didUpdateAttrs'], ['the-top', 'didReceiveAttrs'], ['the-top', 'willUpdate'], ['the-top', 'willRender'],\n\n // Async hooks\n\n ['the-top', 'didUpdate'], ['the-top', 'didRender']],\n\n nonInteractive: [\n // Sync hooks\n ['the-top', 'didUpdateAttrs'], ['the-top', 'didReceiveAttrs']]\n });\n\n this.teardownAssertions.push(function () {\n _this4.assertHooks({\n label: 'destroy',\n\n interactive: [['the-top', 'willDestroyElement'], ['the-top', 'willClearRender'], ['the-middle', 'willDestroyElement'], ['the-middle', 'willClearRender'], ['the-bottom', 'willDestroyElement'], ['the-bottom', 'willClearRender'], ['the-top', 'didDestroyElement'], ['the-middle', 'didDestroyElement'], ['the-bottom', 'didDestroyElement'], ['the-top', 'willDestroy'], ['the-middle', 'willDestroy'], ['the-bottom', 'willDestroy']],\n\n nonInteractive: [['the-top', 'willDestroy'], ['the-middle', 'willDestroy'], ['the-bottom', 'willDestroy']]\n });\n\n _this4.assertRegisteredViews('after destroy');\n });\n };\n\n LifeCycleHooksTest.prototype['@test lifecycle hooks are invoked in a correct sibling order'] = function testLifecycleHooksAreInvokedInACorrectSiblingOrder() {\n var _this5 = this;\n\n var _boundHelpers2 = this.boundHelpers,\n attr = _boundHelpers2.attr,\n invoke = _boundHelpers2.invoke;\n\n\n this.registerComponent('the-parent', { template: (0, _abstractTestCase.strip)(_templateObject4, invoke('the-first-child', { twitter: expr(attr('twitter')) }), invoke('the-second-child', { name: expr(attr('name')) }), invoke('the-last-child', { website: expr(attr('website')) }))\n });\n\n this.registerComponent('the-first-child', { template: 'Twitter: {{' + attr('twitter') + '}}' });\n\n this.registerComponent('the-second-child', { template: 'Name: {{' + attr('name') + '}}' });\n\n this.registerComponent('the-last-child', { template: 'Website: {{' + attr('website') + '}}' });\n\n this.render(invoke('the-parent', {\n twitter: expr('twitter'),\n name: expr('name'),\n website: expr('website')\n }), {\n twitter: '@tomdale',\n name: 'Tom Dale',\n website: 'tomdale.net'\n });\n\n this.assertText('Twitter: @tomdale|Name: Tom Dale|Website: tomdale.net');\n this.assertRegisteredViews('intial render');\n\n this.assertHooks({\n label: 'after initial render',\n\n interactive: [\n // Sync hooks\n\n ['the-parent', 'init'], ['the-parent', 'didInitAttrs'], ['the-parent', 'didReceiveAttrs'], ['the-parent', 'on(init)'], ['the-parent', 'willRender'], ['the-parent', 'willInsertElement'], ['the-first-child', 'init'], ['the-first-child', 'didInitAttrs'], ['the-first-child', 'didReceiveAttrs'], ['the-first-child', 'on(init)'], ['the-first-child', 'willRender'], ['the-first-child', 'willInsertElement'], ['the-second-child', 'init'], ['the-second-child', 'didInitAttrs'], ['the-second-child', 'didReceiveAttrs'], ['the-second-child', 'on(init)'], ['the-second-child', 'willRender'], ['the-second-child', 'willInsertElement'], ['the-last-child', 'init'], ['the-last-child', 'didInitAttrs'], ['the-last-child', 'didReceiveAttrs'], ['the-last-child', 'on(init)'], ['the-last-child', 'willRender'], ['the-last-child', 'willInsertElement'],\n\n // Async hooks\n\n ['the-first-child', 'didInsertElement'], ['the-first-child', 'didRender'], ['the-second-child', 'didInsertElement'], ['the-second-child', 'didRender'], ['the-last-child', 'didInsertElement'], ['the-last-child', 'didRender'], ['the-parent', 'didInsertElement'], ['the-parent', 'didRender']],\n\n nonInteractive: [\n // Sync hooks\n\n ['the-parent', 'init'], ['the-parent', 'didInitAttrs'], ['the-parent', 'didReceiveAttrs'], ['the-parent', 'on(init)'], ['the-first-child', 'init'], ['the-first-child', 'didInitAttrs'], ['the-first-child', 'didReceiveAttrs'], ['the-first-child', 'on(init)'], ['the-second-child', 'init'], ['the-second-child', 'didInitAttrs'], ['the-second-child', 'didReceiveAttrs'], ['the-second-child', 'on(init)'], ['the-last-child', 'init'], ['the-last-child', 'didInitAttrs'], ['the-last-child', 'didReceiveAttrs'], ['the-last-child', 'on(init)']]\n });\n\n this.runTask(function () {\n return _this5.components['the-first-child'].rerender();\n });\n\n this.assertText('Twitter: @tomdale|Name: Tom Dale|Website: tomdale.net');\n\n this.assertHooks({\n label: 'after no-op rerender (first child)',\n\n interactive: [\n // Sync hooks\n\n ['the-parent', 'willUpdate'], ['the-parent', 'willRender'], ['the-first-child', 'willUpdate'], ['the-first-child', 'willRender'],\n\n // Async hooks\n\n ['the-first-child', 'didUpdate'], ['the-first-child', 'didRender'], ['the-parent', 'didUpdate'], ['the-parent', 'didRender']],\n\n nonInteractive: []\n });\n\n this.runTask(function () {\n return _this5.components['the-second-child'].rerender();\n });\n\n this.assertText('Twitter: @tomdale|Name: Tom Dale|Website: tomdale.net');\n\n this.assertHooks({\n label: 'after no-op rerender (second child)',\n\n interactive: [\n // Sync hooks\n\n ['the-parent', 'willUpdate'], ['the-parent', 'willRender'], ['the-second-child', 'willUpdate'], ['the-second-child', 'willRender'],\n\n // Async hooks\n\n ['the-second-child', 'didUpdate'], ['the-second-child', 'didRender'], ['the-parent', 'didUpdate'], ['the-parent', 'didRender']],\n\n nonInteractive: []\n });\n\n this.runTask(function () {\n return _this5.components['the-last-child'].rerender();\n });\n\n this.assertText('Twitter: @tomdale|Name: Tom Dale|Website: tomdale.net');\n\n this.assertHooks({\n label: 'after no-op rerender (last child)',\n\n interactive: [\n // Sync hooks\n\n ['the-parent', 'willUpdate'], ['the-parent', 'willRender'], ['the-last-child', 'willUpdate'], ['the-last-child', 'willRender'],\n\n // Async hooks\n\n ['the-last-child', 'didUpdate'], ['the-last-child', 'didRender'], ['the-parent', 'didUpdate'], ['the-parent', 'didRender']],\n\n nonInteractive: []\n });\n\n this.runTask(function () {\n return _this5.components['the-parent'].rerender();\n });\n\n this.assertText('Twitter: @tomdale|Name: Tom Dale|Website: tomdale.net');\n\n this.assertHooks({\n label: 'after no-op rerender (parent)',\n\n interactive: [\n // Sync hooks\n\n ['the-parent', 'willUpdate'], ['the-parent', 'willRender'],\n\n // Async hooks\n\n ['the-parent', 'didUpdate'], ['the-parent', 'didRender']],\n\n nonInteractive: []\n });\n\n this.runTask(function () {\n return (0, _emberMetal.setProperties)(_this5.context, {\n twitter: '@horsetomdale',\n name: 'Horse Tom Dale',\n website: 'horsetomdale.net'\n });\n });\n\n this.assertText('Twitter: @horsetomdale|Name: Horse Tom Dale|Website: horsetomdale.net');\n\n this.assertHooks({\n label: 'after update',\n\n interactive: [\n // Sync hooks\n\n ['the-parent', 'didUpdateAttrs'], ['the-parent', 'didReceiveAttrs'], ['the-parent', 'willUpdate'], ['the-parent', 'willRender'], ['the-first-child', 'didUpdateAttrs'], ['the-first-child', 'didReceiveAttrs'], ['the-first-child', 'willUpdate'], ['the-first-child', 'willRender'], ['the-second-child', 'didUpdateAttrs'], ['the-second-child', 'didReceiveAttrs'], ['the-second-child', 'willUpdate'], ['the-second-child', 'willRender'], ['the-last-child', 'didUpdateAttrs'], ['the-last-child', 'didReceiveAttrs'], ['the-last-child', 'willUpdate'], ['the-last-child', 'willRender'],\n\n // Async hooks\n\n ['the-first-child', 'didUpdate'], ['the-first-child', 'didRender'], ['the-second-child', 'didUpdate'], ['the-second-child', 'didRender'], ['the-last-child', 'didUpdate'], ['the-last-child', 'didRender'], ['the-parent', 'didUpdate'], ['the-parent', 'didRender']],\n\n nonInteractive: [\n // Sync hooks\n\n ['the-parent', 'didUpdateAttrs'], ['the-parent', 'didReceiveAttrs'], ['the-first-child', 'didUpdateAttrs'], ['the-first-child', 'didReceiveAttrs'], ['the-second-child', 'didUpdateAttrs'], ['the-second-child', 'didReceiveAttrs'], ['the-last-child', 'didUpdateAttrs'], ['the-last-child', 'didReceiveAttrs']]\n });\n\n this.teardownAssertions.push(function () {\n _this5.assertHooks({\n label: 'destroy',\n\n interactive: [['the-parent', 'willDestroyElement'], ['the-parent', 'willClearRender'], ['the-first-child', 'willDestroyElement'], ['the-first-child', 'willClearRender'], ['the-second-child', 'willDestroyElement'], ['the-second-child', 'willClearRender'], ['the-last-child', 'willDestroyElement'], ['the-last-child', 'willClearRender'], ['the-parent', 'didDestroyElement'], ['the-first-child', 'didDestroyElement'], ['the-second-child', 'didDestroyElement'], ['the-last-child', 'didDestroyElement'], ['the-parent', 'willDestroy'], ['the-first-child', 'willDestroy'], ['the-second-child', 'willDestroy'], ['the-last-child', 'willDestroy']],\n\n nonInteractive: [['the-parent', 'willDestroy'], ['the-first-child', 'willDestroy'], ['the-second-child', 'willDestroy'], ['the-last-child', 'willDestroy']]\n });\n\n _this5.assertRegisteredViews('after destroy');\n });\n };\n\n LifeCycleHooksTest.prototype['@test passing values through attrs causes lifecycle hooks to fire if the attribute values have changed'] = function testPassingValuesThroughAttrsCausesLifecycleHooksToFireIfTheAttributeValuesHaveChanged() {\n var _this6 = this;\n\n var _boundHelpers3 = this.boundHelpers,\n attr = _boundHelpers3.attr,\n invoke = _boundHelpers3.invoke;\n\n\n this.registerComponent('the-top', { template: (0, _abstractTestCase.strip)(_templateObject5, invoke('the-middle', { twitterTop: expr(attr('twitter')) }))\n });\n\n this.registerComponent('the-middle', { template: (0, _abstractTestCase.strip)(_templateObject6, invoke('the-bottom', { twitterMiddle: expr(attr('twitterTop')) }))\n });\n\n this.registerComponent('the-bottom', { template: (0, _abstractTestCase.strip)(_templateObject7, attr('twitterMiddle'))\n });\n\n this.render(invoke('the-top', { twitter: expr('twitter') }), { twitter: '@tomdale' });\n\n this.assertText('Top: Middle: Bottom: @tomdale');\n this.assertRegisteredViews('intial render');\n\n this.assertHooks({\n label: 'after initial render',\n\n interactive: [\n // Sync hooks\n\n ['the-top', 'init'], ['the-top', 'didInitAttrs'], ['the-top', 'didReceiveAttrs'], ['the-top', 'on(init)'], ['the-top', 'willRender'], ['the-top', 'willInsertElement'], ['the-middle', 'init'], ['the-middle', 'didInitAttrs'], ['the-middle', 'didReceiveAttrs'], ['the-middle', 'on(init)'], ['the-middle', 'willRender'], ['the-middle', 'willInsertElement'], ['the-bottom', 'init'], ['the-bottom', 'didInitAttrs'], ['the-bottom', 'didReceiveAttrs'], ['the-bottom', 'on(init)'], ['the-bottom', 'willRender'], ['the-bottom', 'willInsertElement'],\n\n // Async hooks\n\n ['the-bottom', 'didInsertElement'], ['the-bottom', 'didRender'], ['the-middle', 'didInsertElement'], ['the-middle', 'didRender'], ['the-top', 'didInsertElement'], ['the-top', 'didRender']],\n\n nonInteractive: [\n // Sync hooks\n\n ['the-top', 'init'], ['the-top', 'didInitAttrs'], ['the-top', 'didReceiveAttrs'], ['the-top', 'on(init)'], ['the-middle', 'init'], ['the-middle', 'didInitAttrs'], ['the-middle', 'didReceiveAttrs'], ['the-middle', 'on(init)'], ['the-bottom', 'init'], ['the-bottom', 'didInitAttrs'], ['the-bottom', 'didReceiveAttrs'], ['the-bottom', 'on(init)']]\n });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this6.context, 'twitter', '@horsetomdale');\n });\n\n this.assertText('Top: Middle: Bottom: @horsetomdale');\n\n // Because the `twitter` attr is used by the all of the components,\n // the lifecycle hooks are invoked for all components.\n\n this.assertHooks({\n label: 'after updating (root)',\n\n interactive: [\n // Sync hooks\n\n ['the-top', 'didUpdateAttrs'], ['the-top', 'didReceiveAttrs'], ['the-top', 'willUpdate'], ['the-top', 'willRender'], ['the-middle', 'didUpdateAttrs'], ['the-middle', 'didReceiveAttrs'], ['the-middle', 'willUpdate'], ['the-middle', 'willRender'], ['the-bottom', 'didUpdateAttrs'], ['the-bottom', 'didReceiveAttrs'], ['the-bottom', 'willUpdate'], ['the-bottom', 'willRender'],\n\n // Async hooks\n\n ['the-bottom', 'didUpdate'], ['the-bottom', 'didRender'], ['the-middle', 'didUpdate'], ['the-middle', 'didRender'], ['the-top', 'didUpdate'], ['the-top', 'didRender']],\n\n nonInteractive: [\n // Sync hooks\n\n ['the-top', 'didUpdateAttrs'], ['the-top', 'didReceiveAttrs'], ['the-middle', 'didUpdateAttrs'], ['the-middle', 'didReceiveAttrs'], ['the-bottom', 'didUpdateAttrs'], ['the-bottom', 'didReceiveAttrs']]\n });\n\n this.runTask(function () {\n return _this6.rerender();\n });\n\n this.assertText('Top: Middle: Bottom: @horsetomdale');\n\n // In this case, because the attrs are passed down, all child components are invoked.\n\n this.assertHooks({\n label: 'after no-op rernder (root)',\n interactive: [],\n nonInteractive: []\n });\n\n this.teardownAssertions.push(function () {\n _this6.assertHooks({\n label: 'destroy',\n\n interactive: [['the-top', 'willDestroyElement'], ['the-top', 'willClearRender'], ['the-middle', 'willDestroyElement'], ['the-middle', 'willClearRender'], ['the-bottom', 'willDestroyElement'], ['the-bottom', 'willClearRender'], ['the-top', 'didDestroyElement'], ['the-middle', 'didDestroyElement'], ['the-bottom', 'didDestroyElement'], ['the-top', 'willDestroy'], ['the-middle', 'willDestroy'], ['the-bottom', 'willDestroy']],\n\n nonInteractive: [['the-top', 'willDestroy'], ['the-middle', 'willDestroy'], ['the-bottom', 'willDestroy']]\n });\n\n _this6.assertRegisteredViews('after destroy');\n });\n };\n\n LifeCycleHooksTest.prototype['@test components rendered from `{{each}}` have correct life-cycle hooks to be called'] = function testComponentsRenderedFromEachHaveCorrectLifeCycleHooksToBeCalled() {\n var _this7 = this;\n\n var invoke = this.boundHelpers.invoke;\n\n\n this.registerComponent('nested-item', { template: '{{yield}}' });\n\n this.registerComponent('an-item', { template: (0, _abstractTestCase.strip)(_templateObject8) });\n\n this.registerComponent('no-items', { template: (0, _abstractTestCase.strip)(_templateObject9) });\n\n this.render((0, _abstractTestCase.strip)(_templateObject10, invoke('an-item', { count: expr('item') }), invoke('no-items')), {\n items: [1, 2, 3, 4, 5]\n });\n\n this.assertText('Item: 1Item: 2Item: 3Item: 4Item: 5');\n this.assertRegisteredViews('intial render');\n\n var initialHooks = function (count) {\n var ret = [['an-item', 'init'], ['an-item', 'didInitAttrs'], ['an-item', 'didReceiveAttrs'], ['an-item', 'on(init)']];\n if (_this7.isInteractive) {\n ret.push(['an-item', 'willRender'], ['an-item', 'willInsertElement']);\n }\n ret.push(['nested-item', 'init'], ['nested-item', 'didInitAttrs'], ['nested-item', 'didReceiveAttrs'], ['nested-item', 'on(init)']);\n if (_this7.isInteractive) {\n ret.push(['nested-item', 'willRender'], ['nested-item', 'willInsertElement']);\n }\n return ret;\n };\n\n var initialAfterRenderHooks = function (count) {\n if (_this7.isInteractive) {\n return [['nested-item', 'didInsertElement'], ['nested-item', 'didRender'], ['an-item', 'didInsertElement'], ['an-item', 'didRender']];\n } else {\n return [];\n }\n };\n\n this.assertHooks({\n label: 'after initial render',\n\n interactive: [].concat(initialHooks(1), initialHooks(2), initialHooks(3), initialHooks(4), initialHooks(5), initialAfterRenderHooks(5), initialAfterRenderHooks(4), initialAfterRenderHooks(3), initialAfterRenderHooks(2), initialAfterRenderHooks(1)),\n\n nonInteractive: [].concat(initialHooks(1), initialHooks(2), initialHooks(3), initialHooks(4), initialHooks(5), initialAfterRenderHooks(5), initialAfterRenderHooks(4), initialAfterRenderHooks(3), initialAfterRenderHooks(2), initialAfterRenderHooks(1))\n });\n\n // TODO: Is this correct? Should childViews be populated in non-interactive mode?\n if (this.isInteractive) {\n this.assert.equal(this.component.childViews.length, 5, 'childViews precond');\n }\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this7.context, 'items', []);\n });\n\n // TODO: Is this correct? Should childViews be populated in non-interactive mode?\n if (this.isInteractive) {\n this.assert.equal(this.component.childViews.length, 1, 'childViews updated');\n }\n\n this.assertText('Nothing to see here');\n\n this.assertHooks({\n label: 'reset to empty array',\n\n interactive: [['an-item', 'willDestroyElement'], ['an-item', 'willClearRender'], ['nested-item', 'willDestroyElement'], ['nested-item', 'willClearRender'], ['an-item', 'willDestroyElement'], ['an-item', 'willClearRender'], ['nested-item', 'willDestroyElement'], ['nested-item', 'willClearRender'], ['an-item', 'willDestroyElement'], ['an-item', 'willClearRender'], ['nested-item', 'willDestroyElement'], ['nested-item', 'willClearRender'], ['an-item', 'willDestroyElement'], ['an-item', 'willClearRender'], ['nested-item', 'willDestroyElement'], ['nested-item', 'willClearRender'], ['an-item', 'willDestroyElement'], ['an-item', 'willClearRender'], ['nested-item', 'willDestroyElement'], ['nested-item', 'willClearRender'], ['no-items', 'init'], ['no-items', 'didInitAttrs'], ['no-items', 'didReceiveAttrs'], ['no-items', 'on(init)'], ['no-items', 'willRender'], ['no-items', 'willInsertElement'], ['nested-item', 'init'], ['nested-item', 'didInitAttrs'], ['nested-item', 'didReceiveAttrs'], ['nested-item', 'on(init)'], ['nested-item', 'willRender'], ['nested-item', 'willInsertElement'], ['an-item', 'didDestroyElement'], ['nested-item', 'didDestroyElement'], ['an-item', 'didDestroyElement'], ['nested-item', 'didDestroyElement'], ['an-item', 'didDestroyElement'], ['nested-item', 'didDestroyElement'], ['an-item', 'didDestroyElement'], ['nested-item', 'didDestroyElement'], ['an-item', 'didDestroyElement'], ['nested-item', 'didDestroyElement'], ['nested-item', 'didInsertElement'], ['nested-item', 'didRender'], ['no-items', 'didInsertElement'], ['no-items', 'didRender'], ['an-item', 'willDestroy'], ['nested-item', 'willDestroy'], ['an-item', 'willDestroy'], ['nested-item', 'willDestroy'], ['an-item', 'willDestroy'], ['nested-item', 'willDestroy'], ['an-item', 'willDestroy'], ['nested-item', 'willDestroy'], ['an-item', 'willDestroy'], ['nested-item', 'willDestroy']],\n\n nonInteractive: [['no-items', 'init'], ['no-items', 'didInitAttrs'], ['no-items', 'didReceiveAttrs'], ['no-items', 'on(init)'], ['nested-item', 'init'], ['nested-item', 'didInitAttrs'], ['nested-item', 'didReceiveAttrs'], ['nested-item', 'on(init)'], ['an-item', 'willDestroy'], ['nested-item', 'willDestroy'], ['an-item', 'willDestroy'], ['nested-item', 'willDestroy'], ['an-item', 'willDestroy'], ['nested-item', 'willDestroy'], ['an-item', 'willDestroy'], ['nested-item', 'willDestroy'], ['an-item', 'willDestroy'], ['nested-item', 'willDestroy']]\n });\n\n this.teardownAssertions.push(function () {\n _this7.assertHooks({\n label: 'destroy',\n\n interactive: [['no-items', 'willDestroyElement'], ['no-items', 'willClearRender'], ['nested-item', 'willDestroyElement'], ['nested-item', 'willClearRender'], ['no-items', 'didDestroyElement'], ['nested-item', 'didDestroyElement'], ['no-items', 'willDestroy'], ['nested-item', 'willDestroy']],\n\n nonInteractive: [['no-items', 'willDestroy'], ['nested-item', 'willDestroy']]\n });\n\n _this7.assertRegisteredViews('after destroy');\n });\n };\n\n (0, _emberBabel.createClass)(LifeCycleHooksTest, [{\n key: 'isInteractive',\n get: function () {\n return true;\n }\n }, {\n key: 'ComponentClass',\n get: function () {\n throw new Error('Not implemented: `ComponentClass`');\n }\n }, {\n key: 'boundHelpers',\n get: function () {\n return {\n invoke: bind(this.invocationFor, this),\n attr: bind(this.attrFor, this)\n };\n }\n }]);\n return LifeCycleHooksTest;\n }(_testCase.RenderingTest);\n\n var CurlyComponentsTest = function (_LifeCycleHooksTest) {\n (0, _emberBabel.inherits)(CurlyComponentsTest, _LifeCycleHooksTest);\n\n function CurlyComponentsTest() {\n (0, _emberBabel.classCallCheck)(this, CurlyComponentsTest);\n return (0, _emberBabel.possibleConstructorReturn)(this, _LifeCycleHooksTest.apply(this, arguments));\n }\n\n CurlyComponentsTest.prototype.invocationFor = function invocationFor(name) {\n var _this9 = this;\n\n var namedArgs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var attrs = Object.keys(namedArgs).map(function (k) {\n return k + '=' + _this9.val(namedArgs[k]);\n }).join(' ');\n return '{{' + name + ' ' + attrs + '}}';\n };\n\n CurlyComponentsTest.prototype.attrFor = function attrFor(name) {\n return '' + name;\n };\n\n CurlyComponentsTest.prototype.val = function val(value) {\n if (value.isString) {\n return JSON.stringify(value.value);\n } else if (value.isExpr) {\n return '(readonly ' + value.value + ')';\n } else {\n throw new Error('Unknown value: ' + value);\n }\n };\n\n (0, _emberBabel.createClass)(CurlyComponentsTest, [{\n key: 'ComponentClass',\n get: function () {\n return _helpers.Component;\n }\n }]);\n return CurlyComponentsTest;\n }(LifeCycleHooksTest);\n\n (0, _testCase.moduleFor)('Components test: interactive lifecycle hooks (curly components)', function (_CurlyComponentsTest) {\n (0, _emberBabel.inherits)(_class, _CurlyComponentsTest);\n\n function _class() {\n (0, _emberBabel.classCallCheck)(this, _class);\n return (0, _emberBabel.possibleConstructorReturn)(this, _CurlyComponentsTest.apply(this, arguments));\n }\n\n (0, _emberBabel.createClass)(_class, [{\n key: 'isInteractive',\n get: function () {\n return true;\n }\n }]);\n return _class;\n }(CurlyComponentsTest));\n\n (0, _testCase.moduleFor)('Components test: non-interactive lifecycle hooks (curly components)', function (_CurlyComponentsTest2) {\n (0, _emberBabel.inherits)(_class2, _CurlyComponentsTest2);\n\n function _class2() {\n (0, _emberBabel.classCallCheck)(this, _class2);\n return (0, _emberBabel.possibleConstructorReturn)(this, _CurlyComponentsTest2.apply(this, arguments));\n }\n\n (0, _emberBabel.createClass)(_class2, [{\n key: 'isInteractive',\n get: function () {\n return false;\n }\n }]);\n return _class2;\n }(CurlyComponentsTest));\n\n (0, _testCase.moduleFor)('Components test: interactive lifecycle hooks (tagless curly components)', function (_CurlyComponentsTest3) {\n (0, _emberBabel.inherits)(_class3, _CurlyComponentsTest3);\n\n function _class3() {\n (0, _emberBabel.classCallCheck)(this, _class3);\n return (0, _emberBabel.possibleConstructorReturn)(this, _CurlyComponentsTest3.apply(this, arguments));\n }\n\n (0, _emberBabel.createClass)(_class3, [{\n key: 'ComponentClass',\n get: function () {\n return _helpers.Component.extend({ tagName: '' });\n }\n }, {\n key: 'isInteractive',\n get: function () {\n return true;\n }\n }]);\n return _class3;\n }(CurlyComponentsTest));\n\n (0, _testCase.moduleFor)('Components test: non-interactive lifecycle hooks (tagless curly components)', function (_CurlyComponentsTest4) {\n (0, _emberBabel.inherits)(_class4, _CurlyComponentsTest4);\n\n function _class4() {\n (0, _emberBabel.classCallCheck)(this, _class4);\n return (0, _emberBabel.possibleConstructorReturn)(this, _CurlyComponentsTest4.apply(this, arguments));\n }\n\n (0, _emberBabel.createClass)(_class4, [{\n key: 'ComponentClass',\n get: function () {\n return _helpers.Component.extend({ tagName: '' });\n }\n }, {\n key: 'isInteractive',\n get: function () {\n return false;\n }\n }]);\n return _class4;\n }(CurlyComponentsTest));\n\n (0, _testCase.moduleFor)('Run loop and lifecycle hooks', function (_RenderingTest2) {\n (0, _emberBabel.inherits)(_class5, _RenderingTest2);\n\n function _class5() {\n (0, _emberBabel.classCallCheck)(this, _class5);\n return (0, _emberBabel.possibleConstructorReturn)(this, _RenderingTest2.apply(this, arguments));\n }\n\n _class5.prototype['@test afterRender set'] = function testAfterRenderSet() {\n var _this16 = this;\n\n var ComponentClass = _helpers.Component.extend({\n width: '5',\n didInsertElement: function () {\n var _this15 = this;\n\n _emberMetal.run.schedule('afterRender', function () {\n _this15.set('width', '10');\n });\n }\n });\n\n var template = '{{width}}';\n this.registerComponent('foo-bar', { ComponentClass: ComponentClass, template: template });\n\n this.render('{{foo-bar}}');\n\n this.assertText('10');\n\n this.runTask(function () {\n return _this16.rerender();\n });\n\n this.assertText('10');\n };\n\n _class5.prototype['@test afterRender set on parent'] = function testAfterRenderSetOnParent() {\n var _this18 = this;\n\n var ComponentClass = _helpers.Component.extend({\n didInsertElement: function () {\n var _this17 = this;\n\n _emberMetal.run.schedule('afterRender', function () {\n var parent = _this17.get('parent');\n parent.set('foo', 'wat');\n });\n }\n });\n\n var template = '{{foo}}';\n\n this.registerComponent('foo-bar', { ComponentClass: ComponentClass, template: template });\n\n this.render('{{foo-bar parent=this foo=foo}}');\n\n this.assertText('wat');\n\n this.runTask(function () {\n return _this18.rerender();\n });\n\n this.assertText('wat');\n };\n\n _class5.prototype['@test `willRender` can set before render (GH#14458)'] = function testWillRenderCanSetBeforeRenderGH14458(assert) {\n var ComponentClass = _helpers.Component.extend({\n tagName: 'a',\n customHref: 'http://google.com',\n attributeBindings: ['customHref:href'],\n willRender: function () {\n this.set('customHref', 'http://willRender.com');\n }\n });\n\n var template = 'Hello World';\n\n this.registerComponent('foo-bar', { ComponentClass: ComponentClass, template: template });\n\n this.render('{{foo-bar id=\"foo\"}}');\n\n this.assertElement(this.firstChild, {\n tagName: 'a',\n attrs: {\n id: 'foo',\n href: 'http://willRender.com',\n class: (0, _testHelpers.classes)('ember-view')\n }\n });\n };\n\n _class5.prototype['@test that thing about destroying'] = function testThatThingAboutDestroying(assert) {\n var _this19 = this;\n\n var ParentDestroyedElements = [];\n var ChildDestroyedElements = [];\n\n var ParentComponent = _helpers.Component.extend({\n willDestroyElement: function () {\n ParentDestroyedElements.push({\n id: this.itemId,\n name: 'parent-component',\n hasParent: !!this.element.parentNode,\n nextSibling: !!this.element.nextSibling,\n previousSibling: !!this.element.previousSibling\n });\n }\n });\n\n var PartentTemplate = (0, _abstractTestCase.strip)(_templateObject11);\n\n var NestedComponent = _helpers.Component.extend({\n willDestroyElement: function () {\n ChildDestroyedElements.push({\n id: this.nestedId,\n name: 'nested-component',\n hasParent: !!this.element.parentNode,\n nextSibling: !!this.element.nextSibling,\n previousSibling: !!this.element.previousSibling\n });\n }\n });\n\n var NestedTemplate = '{{yield}}';\n\n this.registerComponent('parent-component', {\n ComponentClass: ParentComponent,\n template: PartentTemplate\n });\n\n this.registerComponent('nested-component', {\n ComponentClass: NestedComponent,\n template: NestedTemplate\n });\n\n var array = (0, _emberRuntime.A)([{ id: 1 }, { id: 2 }, { id: 3 }, { id: 4 }, { id: 5 }]);\n\n this.render((0, _abstractTestCase.strip)(_templateObject12), {\n items: array,\n model: { shouldShow: true }\n });\n\n this.assertText('1AB2AB3AB4AB5AB6AB7AB');\n\n this.runTask(function () {\n array.removeAt(2);\n array.removeAt(2);\n (0, _emberMetal.set)(_this19.context, 'model.shouldShow', false);\n });\n\n this.assertText('1AB2AB5AB');\n\n assertDestroyHooks(assert, [].concat(ParentDestroyedElements), [{\n id: 3,\n hasParent: true,\n nextSibling: true,\n previousSibling: true\n }, {\n id: 4,\n hasParent: true,\n nextSibling: true,\n previousSibling: true\n }, {\n id: 6,\n hasParent: true,\n nextSibling: true,\n previousSibling: true\n }, {\n id: 7,\n hasParent: true,\n nextSibling: false,\n previousSibling: true\n }]);\n\n assertDestroyHooks(assert, [].concat(ChildDestroyedElements), [{\n id: '3-A',\n hasParent: true,\n nextSibling: true,\n previousSibling: false\n }, {\n id: '3-B',\n hasParent: true,\n nextSibling: false,\n previousSibling: true\n }, {\n id: '4-A',\n hasParent: true,\n nextSibling: true,\n previousSibling: false\n }, {\n id: '4-B',\n hasParent: true,\n nextSibling: false,\n previousSibling: true\n }, {\n id: '6-A',\n hasParent: true,\n nextSibling: true,\n previousSibling: false\n }, {\n id: '6-B',\n hasParent: true,\n nextSibling: false,\n previousSibling: true\n }, {\n id: '7-A',\n hasParent: true,\n nextSibling: true,\n previousSibling: false\n }, {\n id: '7-B',\n hasParent: true,\n nextSibling: false,\n previousSibling: true\n }]);\n };\n\n _class5.prototype['@test lifecycle hooks have proper access to this.$()'] = function testLifecycleHooksHaveProperAccessToThis$(assert) {\n assert.expect(6);\n var component = void 0;\n var FooBarComponent = _helpers.Component.extend({\n tagName: 'div',\n init: function () {\n assert.notOk(this.$(), 'no access to element via this.$() on init() enter');\n this._super.apply(this, arguments);\n assert.notOk(this.$(), 'no access to element via this.$() after init() finished');\n },\n willInsertElement: function () {\n component = this;\n assert.ok(this.$(), 'willInsertElement has access to element via this.$()');\n },\n didInsertElement: function () {\n assert.ok(this.$(), 'didInsertElement has access to element via this.$()');\n },\n willDestroyElement: function () {\n assert.ok(this.$(), 'willDestroyElement has access to element via this.$()');\n },\n didDestroyElement: function () {\n assert.notOk(this.$(), 'didDestroyElement does not have access to element via this.$()');\n }\n });\n this.registerComponent('foo-bar', { ComponentClass: FooBarComponent, template: 'hello' });\n var owner = this.owner;\n\n var comp = owner.lookup('component:foo-bar');\n (0, _internalTestHelpers.runAppend)(comp);\n this.runTask(function () {\n return (0, _emberUtils.tryInvoke)(component, 'destroy');\n });\n };\n\n return _class5;\n }(_testCase.RenderingTest));\n\n function assertDestroyHooks(assert, _actual, _expected) {\n _expected.forEach(function (expected, i) {\n var name = expected.name;\n assert.equal(expected.id, _actual[i].id, name + ' id is the same');\n assert.equal(expected.hasParent, _actual[i].hasParent, name + ' has parent node');\n assert.equal(expected.nextSibling, _actual[i].nextSibling, name + ' has next sibling node');\n assert.equal(expected.previousSibling, _actual[i].previousSibling, name + ' has previous sibling node');\n });\n }\n\n function bind(func, thisArg) {\n return function () {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return func.apply(thisArg, args);\n };\n }\n\n function string(value) {\n return { isString: true, value: value };\n }\n\n function expr(value) {\n return { isExpr: true, value: value };\n }\n\n function hook(name, hook) {\n var _ref3 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n attrs = _ref3.attrs,\n oldAttrs = _ref3.oldAttrs,\n newAttrs = _ref3.newAttrs;\n\n return { name: name, hook: hook, args: { attrs: attrs, oldAttrs: oldAttrs, newAttrs: newAttrs } };\n }\n\n function json(serializable) {\n return JSON.parse(JSON.stringify(serializable));\n }\n});","QUnit.module('ESLint | ember-glimmer/tests/integration/components/life-cycle-test.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-glimmer/tests/integration/components/life-cycle-test.js should pass ESLint\\n\\n');\n});\n","enifed('ember-glimmer/tests/integration/components/link-to-test', ['ember-babel', 'ember-glimmer/tests/utils/test-case', 'ember-runtime', 'ember-metal', 'ember-glimmer/tests/utils/helpers', 'ember-glimmer/tests/utils/test-helpers'], function (_emberBabel, _testCase, _emberRuntime, _emberMetal, _helpers, _testHelpers) {\n 'use strict';\n\n (0, _testCase.moduleFor)('Link-to component', function (_ApplicationTest) {\n (0, _emberBabel.inherits)(_class, _ApplicationTest);\n\n function _class() {\n (0, _emberBabel.classCallCheck)(this, _class);\n return (0, _emberBabel.possibleConstructorReturn)(this, _ApplicationTest.apply(this, arguments));\n }\n\n _class.prototype.visitWithDeprecation = function visitWithDeprecation(path, deprecation) {\n var _this2 = this;\n\n var p = void 0;\n\n expectDeprecation(function () {\n p = _this2.visit(path);\n }, deprecation);\n\n return p;\n };\n\n _class.prototype['@test accessing `currentWhen` triggers a deprecation'] = function testAccessingCurrentWhenTriggersADeprecation(assert) {\n var component = void 0;\n this.addComponent('link-to', {\n ComponentClass: _helpers.LinkComponent.extend({\n init: function () {\n this._super.apply(this, arguments);\n component = this;\n }\n })\n });\n\n this.addTemplate('application', '{{link-to \\'Index\\' \\'index\\'}}');\n\n return this.visit('/').then(function () {\n expectDeprecation(function () {\n component.get('currentWhen');\n }, /Usage of `currentWhen` is deprecated, use `current-when` instead/);\n });\n };\n\n _class.prototype['@test should be able to be inserted in DOM when the router is not present'] = function testShouldBeAbleToBeInsertedInDOMWhenTheRouterIsNotPresent() {\n var _this3 = this;\n\n this.addTemplate('application', '{{#link-to \\'index\\'}}Go to Index{{/link-to}}');\n\n return this.visit('/').then(function () {\n _this3.assertText('Go to Index');\n });\n };\n\n _class.prototype['@test re-renders when title changes'] = function testReRendersWhenTitleChanges() {\n var _this4 = this;\n\n var controller = void 0;\n\n this.addTemplate('application', '{{link-to title routeName}}');\n this.add('controller:application', _emberRuntime.Controller.extend({\n init: function () {\n this._super.apply(this, arguments);\n controller = this;\n },\n\n title: 'foo',\n routeName: 'index'\n }));\n\n return this.visit('/').then(function () {\n _this4.assertText('foo');\n _this4.runTask(function () {\n return (0, _emberMetal.set)(controller, 'title', 'bar');\n });\n _this4.assertText('bar');\n });\n };\n\n _class.prototype['@test escaped inline form (double curlies) escapes link title'] = function testEscapedInlineFormDoubleCurliesEscapesLinkTitle() {\n var _this5 = this;\n\n this.addTemplate('application', '{{link-to title \\'index\\'}}');\n this.add('controller:application', _emberRuntime.Controller.extend({\n title: '<b>blah</b>'\n }));\n\n return this.visit('/').then(function () {\n _this5.assertText('<b>blah</b>');\n });\n };\n\n _class.prototype['@test escaped inline form with (-html-safe) does not escape link title'] = function testEscapedInlineFormWithHtmlSafeDoesNotEscapeLinkTitle(assert) {\n var _this6 = this;\n\n this.addTemplate('application', '{{link-to (-html-safe title) \\'index\\'}}');\n this.add('controller:application', _emberRuntime.Controller.extend({\n title: '<b>blah</b>'\n }));\n\n return this.visit('/').then(function () {\n _this6.assertText('blah');\n assert.equal(_this6.$('b').length, 1);\n });\n };\n\n _class.prototype['@test unescaped inline form (triple curlies) does not escape link title'] = function testUnescapedInlineFormTripleCurliesDoesNotEscapeLinkTitle(assert) {\n var _this7 = this;\n\n this.addTemplate('application', '{{{link-to title \\'index\\'}}}');\n this.add('controller:application', _emberRuntime.Controller.extend({\n title: '<b>blah</b>'\n }));\n\n return this.visit('/').then(function () {\n _this7.assertText('blah');\n assert.equal(_this7.$('b').length, 1);\n });\n };\n\n _class.prototype['@test unwraps controllers'] = function testUnwrapsControllers() {\n var _this8 = this;\n\n this.router.map(function () {\n this.route('profile', { path: '/profile/:id' });\n });\n this.addTemplate('application', '{{#link-to \\'profile\\' otherController}}Text{{/link-to}}');\n this.add('controller:application', _emberRuntime.Controller.extend({\n otherController: _emberRuntime.Controller.create({\n model: 'foo'\n })\n }));\n\n var deprecation = /Providing `{{link-to}}` with a param that is wrapped in a controller is deprecated./;\n\n return this.visitWithDeprecation('/', deprecation).then(function () {\n _this8.assertText('Text');\n });\n };\n\n _class.prototype['@test able to safely extend the built-in component and use the normal path'] = function testAbleToSafelyExtendTheBuiltInComponentAndUseTheNormalPath() {\n var _this9 = this;\n\n this.addComponent('custom-link-to', { ComponentClass: _helpers.LinkComponent.extend() });\n this.addTemplate('application', '{{#custom-link-to \\'index\\'}}{{title}}{{/custom-link-to}}');\n this.add('controller:application', _emberRuntime.Controller.extend({\n title: 'Hello'\n }));\n\n return this.visit('/').then(function () {\n _this9.assertText('Hello');\n });\n };\n\n _class.prototype['@test [GH#13432] able to safely extend the built-in component and invoke it inline'] = function testGH13432AbleToSafelyExtendTheBuiltInComponentAndInvokeItInline() {\n var _this10 = this;\n\n this.addComponent('custom-link-to', { ComponentClass: _helpers.LinkComponent.extend() });\n this.addTemplate('application', '{{custom-link-to title \\'index\\'}}');\n this.add('controller:application', _emberRuntime.Controller.extend({\n title: 'Hello'\n }));\n\n return this.visit('/').then(function () {\n _this10.assertText('Hello');\n });\n };\n\n return _class;\n }(_testCase.ApplicationTest));\n\n (0, _testCase.moduleFor)('Link-to component with query-params', function (_ApplicationTest2) {\n (0, _emberBabel.inherits)(_class2, _ApplicationTest2);\n\n function _class2() {\n (0, _emberBabel.classCallCheck)(this, _class2);\n\n var _this11 = (0, _emberBabel.possibleConstructorReturn)(this, _ApplicationTest2.apply(this, arguments));\n\n _this11.add('controller:index', _emberRuntime.Controller.extend({\n queryParams: ['foo'],\n foo: '123',\n bar: 'yes'\n }));\n return _this11;\n }\n\n _class2.prototype['@test populates href with fully supplied query param values'] = function testPopulatesHrefWithFullySuppliedQueryParamValues(assert) {\n var _this12 = this;\n\n this.addTemplate('index', '{{#link-to \\'index\\' (query-params foo=\\'456\\' bar=\\'NAW\\')}}Index{{/link-to}}');\n\n return this.visit('/').then(function () {\n _this12.assertComponentElement(_this12.firstChild.firstElementChild, {\n tagName: 'a',\n attrs: { href: '/?bar=NAW&foo=456' },\n content: 'Index'\n });\n });\n };\n\n _class2.prototype['@test populates href with partially supplied query param values, but omits if value is default value'] = function testPopulatesHrefWithPartiallySuppliedQueryParamValuesButOmitsIfValueIsDefaultValue() {\n var _this13 = this;\n\n this.addTemplate('index', '{{#link-to \\'index\\' (query-params foo=\\'123\\')}}Index{{/link-to}}');\n\n return this.visit('/').then(function () {\n _this13.assertComponentElement(_this13.firstChild.firstElementChild, {\n tagName: 'a',\n attrs: { href: '/', class: (0, _testHelpers.classes)('ember-view active') },\n content: 'Index'\n });\n });\n };\n\n return _class2;\n }(_testCase.ApplicationTest));\n\n (0, _testCase.moduleFor)('Link-to component', function (_RenderingTest) {\n (0, _emberBabel.inherits)(_class3, _RenderingTest);\n\n function _class3() {\n (0, _emberBabel.classCallCheck)(this, _class3);\n return (0, _emberBabel.possibleConstructorReturn)(this, _RenderingTest.apply(this, arguments));\n }\n\n _class3.prototype['@test should be able to be inserted in DOM when the router is not present - block'] = function testShouldBeAbleToBeInsertedInDOMWhenTheRouterIsNotPresentBlock() {\n this.render('{{#link-to \\'index\\'}}Go to Index{{/link-to}}');\n\n this.assertText('Go to Index');\n };\n\n _class3.prototype['@test should be able to be inserted in DOM when the router is not present - inline'] = function testShouldBeAbleToBeInsertedInDOMWhenTheRouterIsNotPresentInline() {\n this.render('{{link-to \\'Go to Index\\' \\'index\\'}}');\n\n this.assertText('Go to Index');\n };\n\n return _class3;\n }(_testCase.RenderingTest));\n});","QUnit.module('ESLint | ember-glimmer/tests/integration/components/link-to-test.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-glimmer/tests/integration/components/link-to-test.js should pass ESLint\\n\\n');\n});\n","enifed('ember-glimmer/tests/integration/components/local-lookup-test', ['ember-babel', 'ember-glimmer/tests/utils/test-case', 'internal-test-helpers', 'ember-glimmer/tests/utils/helpers', 'ember/features', 'ember-glimmer'], function (_emberBabel, _testCase, _internalTestHelpers, _helpers, _features, _emberGlimmer) {\n 'use strict';\n\n var LocalLookupTest = function (_RenderingTest) {\n (0, _emberBabel.inherits)(LocalLookupTest, _RenderingTest);\n\n function LocalLookupTest() {\n (0, _emberBabel.classCallCheck)(this, LocalLookupTest);\n return (0, _emberBabel.possibleConstructorReturn)(this, _RenderingTest.apply(this, arguments));\n }\n\n LocalLookupTest.prototype['@test it can lookup a local template'] = function testItCanLookupALocalTemplate() {\n var _this2 = this;\n\n this.registerComponent('x-outer/x-inner', { template: 'Nested template says: {{yield}}' });\n this.registerComponent('x-outer', { template: '{{#x-inner}}Hi!{{/x-inner}}' });\n\n this.render('{{x-outer}}');\n\n this.assertText('Nested template says: Hi!', 'Initial render works');\n\n this.runTask(function () {\n return _this2.rerender();\n });\n\n this.assertText('Nested template says: Hi!', 'Re-render works');\n };\n\n LocalLookupTest.prototype['@test tagless blockless component can lookup local template'] = function testTaglessBlocklessComponentCanLookupLocalTemplate() {\n var _this3 = this;\n\n this.registerComponent('x-outer/x-inner', { template: 'Nested template says: {{yield}}' });\n this.registerTemplate('components/x-outer', '{{#x-inner}}Hi!{{/x-inner}}');\n this.registerComponent('x-outer', {\n ComponentClass: _helpers.Component.extend({ tagName: '' })\n });\n\n this.render('{{x-outer}}');\n\n this.assertText('Nested template says: Hi!', 'Re-render works');\n\n this.runTask(function () {\n return _this3.rerender();\n });\n\n this.assertText('Nested template says: Hi!', 'Re-render works');\n };\n\n LocalLookupTest.prototype['@test it can lookup a local component template'] = function testItCanLookupALocalComponentTemplate() {\n var _this4 = this;\n\n this.registerTemplate('components/x-outer/x-inner', 'Nested template says: {{yield}}');\n this.registerTemplate('components/x-outer', '{{#x-inner}}Hi!{{/x-inner}}');\n\n this.render('{{x-outer}}');\n\n this.assertText('Nested template says: Hi!', 'Initial render works');\n\n this.runTask(function () {\n return _this4.rerender();\n });\n\n this.assertText('Nested template says: Hi!', 'Re-render works');\n };\n\n LocalLookupTest.prototype['@test it can local lookup a dynamic component'] = function testItCanLocalLookupADynamicComponent() {\n var _this5 = this;\n\n this.registerComponent('foo-bar', { template: 'yall finished {{component child}}' });\n this.registerComponent('foo-bar/biz-baz', { template: 'or yall done?' });\n\n this.render('{{foo-bar child=child}}', { child: 'biz-baz' });\n\n this.assertText('yall finished or yall done?');\n\n this.runTask(function () {\n return _this5.rerender();\n });\n\n this.assertText('yall finished or yall done?');\n };\n\n LocalLookupTest.prototype['@test it can local lookup a dynamic component from a dynamic component'] = function testItCanLocalLookupADynamicComponentFromADynamicComponent() {\n var _this6 = this;\n\n this.registerComponent('foo-bar', { template: 'yall finished {{component child}}' });\n this.registerComponent('foo-bar/biz-baz', { template: 'or yall done?' });\n\n this.render('{{component componentName child=child}}', { componentName: 'foo-bar', child: 'biz-baz' });\n\n this.assertText('yall finished or yall done?');\n\n this.runTask(function () {\n return _this6.rerender();\n });\n\n this.assertText('yall finished or yall done?');\n };\n\n LocalLookupTest.prototype['@test it can local lookup a dynamic component from a passed named argument'] = function testItCanLocalLookupADynamicComponentFromAPassedNamedArgument() {\n var _this7 = this;\n\n this.registerComponent('parent-foo', { template: 'yall finished {{global-biz baz=(component \\'local-bar\\')}}' });\n this.registerComponent('global-biz', { template: 'or {{component baz}}' });\n this.registerComponent('parent-foo/local-bar', { template: 'yall done?' });\n\n this.render('{{parent-foo}}');\n\n this.assertText('yall finished or yall done?');\n\n this.runTask(function () {\n return _this7.rerender();\n });\n\n this.assertText('yall finished or yall done?');\n };\n\n LocalLookupTest.prototype['@test it can local lookup a re-wrapped dynamic component from a passed named argument'] = function testItCanLocalLookupAReWrappedDynamicComponentFromAPassedNamedArgument() {\n var _this8 = this;\n\n this.registerComponent('parent-foo', { template: 'yall finished {{global-x comp=(component \\'local-bar\\')}}' });\n this.registerComponent('global-x', { template: 'or {{global-y comp=(component comp phrase=\\'done\\')}}' });\n this.registerComponent('global-y', { template: '{{component comp}}?' });\n this.registerComponent('parent-foo/local-bar', { template: 'yall {{phrase}}' });\n\n this.render('{{parent-foo}}');\n\n this.assertText('yall finished or yall done?');\n\n this.runTask(function () {\n return _this8.rerender();\n });\n\n this.assertText('yall finished or yall done?');\n };\n\n LocalLookupTest.prototype['@test it can nest local lookups of dynamic components from a passed named argument'] = function testItCanNestLocalLookupsOfDynamicComponentsFromAPassedNamedArgument() {\n var _this9 = this;\n\n this.registerComponent('parent-foo', { template: 'yall finished {{global-x comp=(component \\'local-bar\\')}}' });\n this.registerComponent('global-x', { template: 'or {{global-y comp=(component comp phrase=\\'done\\')}}' });\n this.registerComponent('global-y', { template: '{{component comp}}{{component \\'local-bar\\'}}' });\n this.registerComponent('parent-foo/local-bar', { template: 'yall {{phrase}}' });\n this.registerComponent('global-y/local-bar', { template: '?' });\n\n this.render('{{parent-foo}}');\n\n this.assertText('yall finished or yall done?');\n\n this.runTask(function () {\n return _this9.rerender();\n });\n\n this.assertText('yall finished or yall done?');\n };\n\n LocalLookupTest.prototype['@test it can switch from local to global lookups of dynamic components from a passed named argument'] = function testItCanSwitchFromLocalToGlobalLookupsOfDynamicComponentsFromAPassedNamedArgument() {\n var _this10 = this;\n\n this.registerComponent('parent-foo', { template: 'yall finished {{global-x comp=(component bar)}}' });\n this.registerComponent('global-x', { template: 'or yall {{component comp}}' });\n this.registerComponent('parent-foo/local-bar', { template: 'done?' });\n this.registerComponent('global-bar', { template: 'ready?' });\n\n this.render('{{parent-foo bar=bar}}', { bar: 'local-bar' });\n\n this.assertText('yall finished or yall done?');\n\n this.runTask(function () {\n return _this10.context.set('bar', 'global-bar');\n });\n\n this.runTask(function () {\n return _this10.rerender();\n });\n\n this.assertText('yall finished or yall ready?');\n };\n\n LocalLookupTest.prototype['@test it can lookup a local helper'] = function testItCanLookupALocalHelper() {\n var _this11 = this;\n\n this.registerHelper('x-outer/x-helper', function () {\n return 'Who dis?';\n });\n this.registerComponent('x-outer', { template: 'Who dat? {{x-helper}}' });\n\n this.render('{{x-outer}}');\n\n this.assertText('Who dat? Who dis?', 'Initial render works');\n\n this.runTask(function () {\n return _this11.rerender();\n });\n\n this.assertText('Who dat? Who dis?', 'Re-render works');\n };\n\n LocalLookupTest.prototype['@test it overrides global helper lookup'] = function testItOverridesGlobalHelperLookup() {\n var _this12 = this;\n\n this.registerHelper('x-outer/x-helper', function () {\n return 'Who dis?';\n });\n\n this.registerHelper('x-helper', function () {\n return 'I dunno';\n });\n\n this.registerComponent('x-outer', { template: 'Who dat? {{x-helper}}' });\n\n this.render('{{x-outer}} {{x-helper}}');\n\n this.assertText('Who dat? Who dis? I dunno', 'Initial render works');\n\n this.runTask(function () {\n return _this12.rerender();\n });\n\n this.assertText('Who dat? Who dis? I dunno', 'Re-render works');\n };\n\n LocalLookupTest.prototype['@test lookup without match issues standard assertion (with local helper name)'] = function testLookupWithoutMatchIssuesStandardAssertionWithLocalHelperName() {\n var _this13 = this;\n\n this.registerComponent('x-outer', { template: '{{#x-inner}}Hi!{{/x-inner}}' });\n\n expectAssertion(function () {\n _this13.render('{{x-outer}}');\n }, /A component or helper named \"x-inner\" could not be found/);\n };\n\n LocalLookupTest.prototype['@test overrides global lookup'] = function testOverridesGlobalLookup() {\n var _this14 = this;\n\n this.registerComponent('x-outer', { template: '{{#x-inner}}Hi!{{/x-inner}}' });\n this.registerComponent('x-outer/x-inner', { template: 'Nested template says (from local): {{yield}}' });\n this.registerComponent('x-inner', { template: 'Nested template says (from global): {{yield}}' });\n\n this.render('{{#x-inner}}Hi!{{/x-inner}} {{x-outer}} {{#x-outer/x-inner}}Hi!{{/x-outer/x-inner}}');\n\n this.assertText('Nested template says (from global): Hi! Nested template says (from local): Hi! Nested template says (from local): Hi!');\n\n this.runTask(function () {\n return _this14.rerender();\n });\n\n this.assertText('Nested template says (from global): Hi! Nested template says (from local): Hi! Nested template says (from local): Hi!');\n };\n\n return LocalLookupTest;\n }(_testCase.RenderingTest);\n\n // first run these tests with expandLocalLookup\n\n function buildResolver() {\n var resolver = {\n resolve: function () {},\n expandLocalLookup: function (fullName, sourceFullName) {\n var _sourceFullName$split = sourceFullName.split(':'),\n sourceType = _sourceFullName$split[0],\n sourceName = _sourceFullName$split[1];\n\n var _fullName$split = fullName.split(':'),\n type = _fullName$split[0],\n name = _fullName$split[1];\n\n if (type !== 'template' && sourceType === 'template' && sourceName.slice(0, 11) === 'components/') {\n sourceName = sourceName.slice(11);\n }\n\n if (type === 'template' && sourceType === 'template' && name.slice(0, 11) === 'components/') {\n name = name.slice(11);\n }\n\n var result = type + ':' + sourceName + '/' + name;\n\n return result;\n }\n };\n\n return resolver;\n }\n\n (0, _testCase.moduleFor)('Components test: local lookup with expandLocalLookup feature', function (_LocalLookupTest) {\n (0, _emberBabel.inherits)(_class, _LocalLookupTest);\n\n function _class() {\n (0, _emberBabel.classCallCheck)(this, _class);\n return (0, _emberBabel.possibleConstructorReturn)(this, _LocalLookupTest.apply(this, arguments));\n }\n\n _class.prototype.getResolver = function getResolver() {\n return buildResolver();\n };\n\n return _class;\n }(LocalLookupTest));\n\n if (_features.EMBER_MODULE_UNIFICATION) {\n var LocalLookupTestResolver = function (_ModuleBasedTestResol) {\n (0, _emberBabel.inherits)(LocalLookupTestResolver, _ModuleBasedTestResol);\n\n function LocalLookupTestResolver() {\n (0, _emberBabel.classCallCheck)(this, LocalLookupTestResolver);\n return (0, _emberBabel.possibleConstructorReturn)(this, _ModuleBasedTestResol.apply(this, arguments));\n }\n\n LocalLookupTestResolver.prototype.resolve = function resolve(specifier, referrer) {\n var fullSpecifier = specifier;\n\n if (referrer) {\n var namespace = referrer.split('template:components/')[1];\n if (specifier.indexOf('template:components/') !== -1) {\n var name = specifier.split('template:components/')[1];\n fullSpecifier = 'template:components/' + namespace + '/' + name;\n } else if (specifier.indexOf(':') !== -1) {\n var _specifier$split = specifier.split(':'),\n type = _specifier$split[0],\n _name = _specifier$split[1];\n\n fullSpecifier = type + ':' + namespace + '/' + _name;\n }\n }\n\n return _ModuleBasedTestResol.prototype.resolve.call(this, fullSpecifier);\n };\n\n return LocalLookupTestResolver;\n }(_internalTestHelpers.ModuleBasedTestResolver);\n\n /*\n * This sub-classing changes `registerXXX` methods to use the resolver.\n * Required for testing the module unification-friendly `resolve` call\n * with a `referrer` argument.\n *\n * In theory all these tests can be ported to use the resolver instead of\n * the registry.\n */\n (0, _testCase.moduleFor)('Components test: local lookup with resolution referrer', function (_LocalLookupTest2) {\n (0, _emberBabel.inherits)(_class2, _LocalLookupTest2);\n\n function _class2() {\n (0, _emberBabel.classCallCheck)(this, _class2);\n return (0, _emberBabel.possibleConstructorReturn)(this, _LocalLookupTest2.apply(this, arguments));\n }\n\n _class2.prototype.getResolver = function getResolver() {\n return new LocalLookupTestResolver();\n };\n\n _class2.prototype.registerComponent = function registerComponent(name, _ref) {\n var _ref$ComponentClass = _ref.ComponentClass,\n ComponentClass = _ref$ComponentClass === undefined ? null : _ref$ComponentClass,\n _ref$template = _ref.template,\n template = _ref$template === undefined ? null : _ref$template;\n var resolver = this.resolver;\n\n\n if (ComponentClass) {\n resolver.add('component:' + name, ComponentClass);\n }\n\n if (typeof template === 'string') {\n resolver.add('template:components/' + name, this.compile(template, {\n moduleName: 'components/' + name\n }));\n }\n };\n\n _class2.prototype.registerTemplate = function registerTemplate(name, template) {\n var resolver = this.resolver;\n\n if (typeof template === 'string') {\n resolver.add('template:' + name, this.compile(template, {\n moduleName: name\n }));\n } else {\n throw new Error('Registered template \"' + name + '\" must be a string');\n }\n };\n\n _class2.prototype.registerHelper = function registerHelper(name, funcOrClassBody) {\n var resolver = this.resolver;\n\n var type = typeof funcOrClassBody;\n\n if (type === 'function') {\n resolver.add('helper:' + name, (0, _emberGlimmer.helper)(funcOrClassBody));\n } else if (type === 'object' && type !== null) {\n resolver.add('helper:' + name, _emberGlimmer.Helper.extend(funcOrClassBody));\n } else {\n throw new Error('Cannot register ' + funcOrClassBody + ' as a helper');\n }\n };\n\n (0, _emberBabel.createClass)(_class2, [{\n key: 'resolver',\n get: function () {\n return this.owner.__registry__.fallback.resolver;\n }\n }]);\n return _class2;\n }(LocalLookupTest));\n }\n});","QUnit.module('ESLint | ember-glimmer/tests/integration/components/local-lookup-test.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-glimmer/tests/integration/components/local-lookup-test.js should pass ESLint\\n\\n');\n});\n","enifed(\"ember-glimmer/tests/integration/components/render-to-element-test\", [], function () {\n \"use strict\";\n});","QUnit.module('ESLint | ember-glimmer/tests/integration/components/render-to-element-test.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-glimmer/tests/integration/components/render-to-element-test.js should pass ESLint\\n\\n');\n});\n","enifed('ember-glimmer/tests/integration/components/target-action-test', ['ember-babel', 'ember-utils', 'ember-glimmer/tests/utils/test-case', 'ember-glimmer/tests/utils/abstract-test-case', 'ember-metal', 'ember-glimmer/tests/utils/helpers', 'ember-runtime', 'ember-routing'], function (_emberBabel, _emberUtils, _testCase, _abstractTestCase, _emberMetal, _helpers, _emberRuntime, _emberRouting) {\n 'use strict';\n\n var _templateObject = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n {{#component-a}}\\n {{component-b bar=\"derp\"}}\\n {{/component-a}}\\n '], ['\\n {{#component-a}}\\n {{component-b bar=\"derp\"}}\\n {{/component-a}}\\n ']);\n\n (0, _testCase.moduleFor)('Components test: sendAction', function (_RenderingTest) {\n (0, _emberBabel.inherits)(_class, _RenderingTest);\n\n function _class() {\n (0, _emberBabel.classCallCheck)(this, _class);\n\n var _this = (0, _emberBabel.possibleConstructorReturn)(this, _RenderingTest.call(this));\n\n _this.actionCounts = {};\n _this.sendCount = 0;\n _this.actionArguments = null;\n\n var self = _this;\n\n _this.registerComponent('action-delegate', {\n ComponentClass: _helpers.Component.extend({\n init: function () {\n this._super();\n self.delegate = this;\n this.name = 'action-delegate';\n }\n })\n });\n return _this;\n }\n\n _class.prototype.renderDelegate = function renderDelegate() {\n var template = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '{{action-delegate}}';\n var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var root = this;\n context = (0, _emberUtils.assign)(context, {\n send: function (actionName) {\n root.sendCount++;\n root.actionCounts[actionName] = root.actionCounts[actionName] || 0;\n root.actionCounts[actionName]++;\n\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n root.actionArguments = args;\n }\n });\n this.render(template, context);\n };\n\n _class.prototype.assertSendCount = function assertSendCount(count) {\n this.assert.equal(this.sendCount, count, 'Send was called ' + count + ' time(s)');\n };\n\n _class.prototype.assertNamedSendCount = function assertNamedSendCount(actionName, count) {\n this.assert.equal(this.actionCounts[actionName], count, 'An action named \\'' + actionName + '\\' was sent ' + count + ' times');\n };\n\n _class.prototype.assertSentWithArgs = function assertSentWithArgs(expected) {\n var message = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'arguments were sent with the action';\n\n this.assert.deepEqual(this.actionArguments, expected, message);\n };\n\n _class.prototype['@test Calling sendAction on a component without an action defined does nothing'] = function testCallingSendActionOnAComponentWithoutAnActionDefinedDoesNothing() {\n var _this2 = this;\n\n this.renderDelegate();\n\n this.runTask(function () {\n return _this2.delegate.sendAction();\n });\n\n this.assertSendCount(0);\n };\n\n _class.prototype['@test Calling sendAction on a component with an action defined calls send on the controller'] = function testCallingSendActionOnAComponentWithAnActionDefinedCallsSendOnTheController() {\n var _this3 = this;\n\n this.renderDelegate();\n\n this.runTask(function () {\n (0, _emberMetal.set)(_this3.delegate, 'action', 'addItem');\n _this3.delegate.sendAction();\n });\n\n this.assertSendCount(1);\n this.assertNamedSendCount('addItem', 1);\n };\n\n _class.prototype['@test Calling sendAction on a component with a function calls the function'] = function testCallingSendActionOnAComponentWithAFunctionCallsTheFunction() {\n var _this4 = this;\n\n this.assert.expect(1);\n\n this.renderDelegate();\n\n this.runTask(function () {\n (0, _emberMetal.set)(_this4.delegate, 'action', function () {\n return _this4.assert.ok(true, 'function is called');\n });\n _this4.delegate.sendAction();\n });\n };\n\n _class.prototype['@test Calling sendAction on a component with a function calls the function with arguments'] = function testCallingSendActionOnAComponentWithAFunctionCallsTheFunctionWithArguments() {\n var _this5 = this;\n\n this.assert.expect(1);\n var argument = {};\n\n this.renderDelegate();\n\n this.runTask(function () {\n (0, _emberMetal.set)(_this5.delegate, 'action', function (actualArgument) {\n _this5.assert.deepEqual(argument, actualArgument, 'argument is passed');\n });\n _this5.delegate.sendAction('action', argument);\n });\n };\n\n _class.prototype['@test Calling sendAction on a component with a reference attr calls the function with arguments'] = function testCallingSendActionOnAComponentWithAReferenceAttrCallsTheFunctionWithArguments() {\n var _this6 = this;\n\n this.renderDelegate('{{action-delegate playing=playing}}', {\n playing: null\n });\n\n this.runTask(function () {\n return _this6.delegate.sendAction();\n });\n\n this.assertSendCount(0);\n\n this.runTask(function () {\n (0, _emberMetal.set)(_this6.context, 'playing', 'didStartPlaying');\n });\n\n this.runTask(function () {\n _this6.delegate.sendAction('playing');\n });\n\n this.assertSendCount(1);\n this.assertNamedSendCount('didStartPlaying', 1);\n };\n\n _class.prototype['@test Calling sendAction on a component with a {{mut}} attr calls the function with arguments'] = function testCallingSendActionOnAComponentWithAMutAttrCallsTheFunctionWithArguments() {\n var _this7 = this;\n\n this.renderDelegate('{{action-delegate playing=(mut playing)}}', {\n playing: null\n });\n\n this.runTask(function () {\n return _this7.delegate.sendAction('playing');\n });\n\n this.assertSendCount(0);\n\n this.runTask(function () {\n return _this7.delegate.attrs.playing.update('didStartPlaying');\n });\n this.runTask(function () {\n return _this7.delegate.sendAction('playing');\n });\n\n this.assertSendCount(1);\n this.assertNamedSendCount('didStartPlaying', 1);\n };\n\n _class.prototype['@test Calling sendAction with a named action uses the component\\'s property as the action name'] = function testCallingSendActionWithANamedActionUsesTheComponentSPropertyAsTheActionName() {\n var _this8 = this;\n\n this.renderDelegate();\n\n var component = this.delegate;\n\n this.runTask(function () {\n (0, _emberMetal.set)(_this8.delegate, 'playing', 'didStartPlaying');\n component.sendAction('playing');\n });\n\n this.assertSendCount(1);\n this.assertNamedSendCount('didStartPlaying', 1);\n\n this.runTask(function () {\n return component.sendAction('playing');\n });\n\n this.assertSendCount(2);\n this.assertNamedSendCount('didStartPlaying', 2);\n\n this.runTask(function () {\n (0, _emberMetal.set)(component, 'action', 'didDoSomeBusiness');\n component.sendAction();\n });\n\n this.assertSendCount(3);\n this.assertNamedSendCount('didDoSomeBusiness', 1);\n };\n\n _class.prototype['@test Calling sendAction when the action name is not a string raises an exception'] = function testCallingSendActionWhenTheActionNameIsNotAStringRaisesAnException() {\n var _this9 = this;\n\n this.renderDelegate();\n\n this.runTask(function () {\n (0, _emberMetal.set)(_this9.delegate, 'action', {});\n (0, _emberMetal.set)(_this9.delegate, 'playing', {});\n });\n\n expectAssertion(function () {\n return _this9.delegate.sendAction();\n });\n expectAssertion(function () {\n return _this9.delegate.sendAction('playing');\n });\n };\n\n _class.prototype['@test Calling sendAction on a component with contexts'] = function testCallingSendActionOnAComponentWithContexts() {\n var _this10 = this;\n\n this.renderDelegate();\n\n var testContext = { song: 'She Broke My Ember' };\n var firstContext = { song: 'She Broke My Ember' };\n var secondContext = { song: 'My Achey Breaky Ember' };\n\n this.runTask(function () {\n (0, _emberMetal.set)(_this10.delegate, 'playing', 'didStartPlaying');\n _this10.delegate.sendAction('playing', testContext);\n });\n\n this.assertSendCount(1);\n this.assertNamedSendCount('didStartPlaying', 1);\n this.assertSentWithArgs([testContext], 'context was sent with the action');\n\n this.runTask(function () {\n _this10.delegate.sendAction('playing', firstContext, secondContext);\n });\n\n this.assertSendCount(2);\n this.assertNamedSendCount('didStartPlaying', 2);\n this.assertSentWithArgs([firstContext, secondContext], 'multiple contexts were sent to the action');\n };\n\n _class.prototype['@test calling sendAction on a component within a block sends to the outer scope GH#14216'] = function testCallingSendActionOnAComponentWithinABlockSendsToTheOuterScopeGH14216(assert) {\n var testContext = this;\n // overrides default action-delegate so actions can be added\n this.registerComponent('action-delegate', {\n ComponentClass: _helpers.Component.extend({\n init: function () {\n this._super();\n testContext.delegate = this;\n this.name = 'action-delegate';\n },\n\n\n actions: {\n derp: function (arg1) {\n assert.ok(true, 'action called on action-delgate');\n assert.equal(arg1, 'something special', 'argument passed through properly');\n }\n }\n }),\n\n template: (0, _abstractTestCase.strip)(_templateObject)\n });\n\n this.registerComponent('component-a', {\n ComponentClass: _helpers.Component.extend({\n init: function () {\n this._super.apply(this, arguments);\n this.name = 'component-a';\n },\n\n actions: {\n derp: function () {\n assert.ok(false, 'no! bad scoping!');\n }\n }\n })\n });\n\n var innerChild = void 0;\n this.registerComponent('component-b', {\n ComponentClass: _helpers.Component.extend({\n init: function () {\n this._super.apply(this, arguments);\n innerChild = this;\n this.name = 'component-b';\n }\n })\n });\n\n this.renderDelegate();\n\n this.runTask(function () {\n return innerChild.sendAction('bar', 'something special');\n });\n };\n\n return _class;\n }(_testCase.RenderingTest));\n\n (0, _testCase.moduleFor)('Components test: sendAction to a controller', function (_ApplicationTest) {\n (0, _emberBabel.inherits)(_class2, _ApplicationTest);\n\n function _class2() {\n (0, _emberBabel.classCallCheck)(this, _class2);\n return (0, _emberBabel.possibleConstructorReturn)(this, _ApplicationTest.apply(this, arguments));\n }\n\n _class2.prototype['@test sendAction should trigger an action on the parent component\\'s controller if it exists'] = function testSendActionShouldTriggerAnActionOnTheParentComponentSControllerIfItExists(assert) {\n var _this12 = this;\n\n assert.expect(15);\n\n var component = void 0;\n\n this.router.map(function () {\n this.route('a');\n this.route('b');\n this.route('c', function () {\n this.route('d');\n this.route('e');\n });\n });\n\n this.addComponent('foo-bar', {\n ComponentClass: _helpers.Component.extend({\n init: function () {\n this._super.apply(this, arguments);\n component = this;\n }\n }),\n template: '{{val}}'\n });\n\n this.add('controller:a', _emberRuntime.Controller.extend({\n send: function (actionName, actionContext) {\n assert.equal(actionName, 'poke', 'send() method was invoked from a top level controller');\n assert.equal(actionContext, 'top', 'action arguments were passed into the top level controller');\n }\n }));\n this.addTemplate('a', '{{foo-bar val=\"a\" poke=\"poke\"}}');\n\n this.add('route:b', _emberRouting.Route.extend({\n actions: {\n poke: function (actionContext) {\n assert.ok(true, 'Unhandled action sent to route');\n assert.equal(actionContext, 'top no controller');\n }\n }\n }));\n this.addTemplate('b', '{{foo-bar val=\"b\" poke=\"poke\"}}');\n\n this.add('route:c', _emberRouting.Route.extend({\n actions: {\n poke: function (actionContext) {\n assert.ok(true, 'Unhandled action sent to route');\n assert.equal(actionContext, 'top with nested no controller');\n }\n }\n }));\n this.addTemplate('c', '{{foo-bar val=\"c\" poke=\"poke\"}}{{outlet}}');\n\n this.add('route:c.d', _emberRouting.Route.extend({}));\n\n this.add('controller:c.d', _emberRuntime.Controller.extend({\n send: function (actionName, actionContext) {\n assert.equal(actionName, 'poke', 'send() method was invoked from a nested controller');\n assert.equal(actionContext, 'nested', 'action arguments were passed into the nested controller');\n }\n }));\n this.addTemplate('c.d', '{{foo-bar val=\".d\" poke=\"poke\"}}');\n\n this.add('route:c.e', _emberRouting.Route.extend({\n actions: {\n poke: function (actionContext) {\n assert.ok(true, 'Unhandled action sent to route');\n assert.equal(actionContext, 'nested no controller');\n }\n }\n }));\n this.addTemplate('c.e', '{{foo-bar val=\".e\" poke=\"poke\"}}');\n\n return this.visit('/a').then(function () {\n return component.sendAction('poke', 'top');\n }).then(function () {\n _this12.assertText('a');\n return _this12.visit('/b');\n }).then(function () {\n return component.sendAction('poke', 'top no controller');\n }).then(function () {\n _this12.assertText('b');\n return _this12.visit('/c');\n }).then(function () {\n return component.sendAction('poke', 'top with nested no controller');\n }).then(function () {\n _this12.assertText('c');\n return _this12.visit('/c/d');\n }).then(function () {\n return component.sendAction('poke', 'nested');\n }).then(function () {\n _this12.assertText('c.d');\n return _this12.visit('/c/e');\n }).then(function () {\n return component.sendAction('poke', 'nested no controller');\n }).then(function () {\n return _this12.assertText('c.e');\n });\n };\n\n _class2.prototype['@test sendAction should not trigger an action in an outlet\\'s controller if a parent component handles it'] = function testSendActionShouldNotTriggerAnActionInAnOutletSControllerIfAParentComponentHandlesIt(assert) {\n assert.expect(1);\n\n var component = void 0;\n\n this.addComponent('x-parent', {\n ComponentClass: _helpers.Component.extend({\n actions: {\n poke: function () {\n assert.ok(true, 'parent component handled the aciton');\n }\n }\n }),\n template: '{{x-child poke=\"poke\"}}'\n });\n\n this.addComponent('x-child', {\n ComponentClass: _helpers.Component.extend({\n init: function () {\n this._super.apply(this, arguments);\n component = this;\n }\n })\n });\n\n this.addTemplate('application', '{{x-parent}}');\n this.add('controller:application', _emberRuntime.Controller.extend({\n send: function (actionName) {\n throw new Error('controller action should not be called');\n }\n }));\n\n return this.visit('/').then(function () {\n return component.sendAction('poke');\n });\n };\n\n return _class2;\n }(_testCase.ApplicationTest));\n\n (0, _testCase.moduleFor)('Components test: sendAction of a closure action', function (_RenderingTest2) {\n (0, _emberBabel.inherits)(_class3, _RenderingTest2);\n\n function _class3() {\n (0, _emberBabel.classCallCheck)(this, _class3);\n return (0, _emberBabel.possibleConstructorReturn)(this, _RenderingTest2.apply(this, arguments));\n }\n\n _class3.prototype['@test action should be called'] = function testActionShouldBeCalled(assert) {\n assert.expect(1);\n var component = void 0;\n\n this.registerComponent('inner-component', {\n ComponentClass: _helpers.Component.extend({\n init: function () {\n this._super.apply(this, arguments);\n component = this;\n }\n }),\n template: 'inner'\n });\n\n this.registerComponent('outer-component', {\n ComponentClass: _helpers.Component.extend({\n outerSubmit: function () {\n assert.ok(true, 'outerSubmit called');\n }\n }),\n template: '{{inner-component submitAction=(action outerSubmit)}}'\n });\n\n this.render('{{outer-component}}');\n\n this.runTask(function () {\n return component.sendAction('submitAction');\n });\n };\n\n _class3.prototype['@test contexts passed to sendAction are appended to the bound arguments on a closure action'] = function testContextsPassedToSendActionAreAppendedToTheBoundArgumentsOnAClosureAction() {\n var first = 'mitch';\n var second = 'martin';\n var third = 'matt';\n var fourth = 'wacky wycats';\n\n var innerComponent = void 0;\n var actualArgs = void 0;\n\n this.registerComponent('inner-component', {\n ComponentClass: _helpers.Component.extend({\n init: function () {\n this._super.apply(this, arguments);\n innerComponent = this;\n }\n }),\n template: 'inner'\n });\n\n this.registerComponent('outer-component', {\n ComponentClass: _helpers.Component.extend({\n third: third,\n actions: {\n outerSubmit: function () {\n actualArgs = [].concat(Array.prototype.slice.call(arguments));\n }\n }\n }),\n template: '{{inner-component innerSubmit=(action (action \"outerSubmit\" \"' + first + '\") \"' + second + '\" third)}}'\n });\n\n this.render('{{outer-component}}');\n\n this.runTask(function () {\n return innerComponent.sendAction('innerSubmit', fourth);\n });\n\n this.assert.deepEqual(actualArgs, [first, second, third, fourth], 'action has the correct args');\n };\n\n return _class3;\n }(_testCase.RenderingTest));\n\n (0, _testCase.moduleFor)('Components test: send', function (_RenderingTest3) {\n (0, _emberBabel.inherits)(_class4, _RenderingTest3);\n\n function _class4() {\n (0, _emberBabel.classCallCheck)(this, _class4);\n return (0, _emberBabel.possibleConstructorReturn)(this, _RenderingTest3.apply(this, arguments));\n }\n\n _class4.prototype['@test sending to undefined actions triggers an error'] = function testSendingToUndefinedActionsTriggersAnError(assert) {\n assert.expect(2);\n\n var component = void 0;\n\n this.registerComponent('foo-bar', {\n ComponentClass: _helpers.Component.extend({\n init: function () {\n this._super();\n component = this;\n },\n\n actions: {\n foo: function (message) {\n assert.equal('bar', message);\n }\n }\n })\n });\n\n this.render('{{foo-bar}}');\n\n this.runTask(function () {\n return component.send('foo', 'bar');\n });\n\n expectAssertion(function () {\n return component.send('baz', 'bar');\n }, /had no action handler for: baz/);\n };\n\n _class4.prototype['@test `send` will call send from a target if it is defined'] = function testSendWillCallSendFromATargetIfItIsDefined() {\n var _this15 = this;\n\n var component = void 0;\n var target = {\n send: function (message, payload) {\n _this15.assert.equal('foo', message);\n _this15.assert.equal('baz', payload);\n }\n };\n\n this.registerComponent('foo-bar', {\n ComponentClass: _helpers.Component.extend({\n init: function () {\n this._super();\n component = this;\n },\n\n target: target\n })\n });\n\n this.render('{{foo-bar}}');\n\n this.runTask(function () {\n return component.send('foo', 'baz');\n });\n };\n\n _class4.prototype['@test a handled action can be bubbled to the target for continued processing'] = function testAHandledActionCanBeBubbledToTheTargetForContinuedProcessing() {\n var _this16 = this;\n\n this.assert.expect(2);\n\n var component = void 0;\n\n this.registerComponent('foo-bar', {\n ComponentClass: _helpers.Component.extend({\n init: function () {\n this._super.apply(this, arguments);\n component = this;\n },\n\n actions: {\n poke: function () {\n _this16.assert.ok(true, 'component action called');\n return true;\n }\n },\n target: _emberRuntime.Controller.extend({\n actions: {\n poke: function () {\n _this16.assert.ok(true, 'action bubbled to controller');\n }\n }\n }).create()\n })\n });\n\n this.render('{{foo-bar poke=\"poke\"}}');\n\n this.runTask(function () {\n return component.send('poke');\n });\n };\n\n _class4.prototype['@test action can be handled by a superclass\\' actions object'] = function testActionCanBeHandledByASuperclassActionsObject(assert) {\n this.assert.expect(4);\n\n var component = void 0;\n\n var SuperComponent = _helpers.Component.extend({\n actions: {\n foo: function () {\n assert.ok(true, 'foo');\n },\n bar: function (msg) {\n assert.equal(msg, 'HELLO');\n }\n }\n });\n\n var BarViewMixin = _emberMetal.Mixin.create({\n actions: {\n bar: function (msg) {\n assert.equal(msg, 'HELLO');\n this._super(msg);\n }\n }\n });\n\n this.registerComponent('x-index', {\n ComponentClass: SuperComponent.extend(BarViewMixin, {\n init: function () {\n this._super.apply(this, arguments);\n component = this;\n },\n\n actions: {\n baz: function () {\n assert.ok(true, 'baz');\n }\n }\n })\n });\n\n this.render('{{x-index}}');\n\n this.runTask(function () {\n component.send('foo');\n component.send('bar', 'HELLO');\n component.send('baz');\n });\n };\n\n _class4.prototype['@test actions cannot be provided at create time'] = function testActionsCannotBeProvidedAtCreateTime(assert) {\n expectAssertion(function () {\n return _helpers.Component.create({\n actions: {\n foo: function () {\n assert.ok(true, 'foo');\n }\n }\n });\n });\n // but should be OK on an object that doesn't mix in Ember.ActionHandler\n _emberRuntime.Object.create({\n actions: ['foo']\n });\n };\n\n return _class4;\n }(_testCase.RenderingTest));\n});","QUnit.module('ESLint | ember-glimmer/tests/integration/components/target-action-test.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-glimmer/tests/integration/components/target-action-test.js should pass ESLint\\n\\n');\n});\n","enifed('ember-glimmer/tests/integration/components/utils-test', ['ember-babel', 'ember-runtime', 'ember-views', 'ember-glimmer/tests/utils/test-case', 'ember-glimmer/tests/utils/helpers'], function (_emberBabel, _emberRuntime, _emberViews, _testCase, _helpers) {\n 'use strict';\n\n (0, _testCase.moduleFor)('View tree tests', function (_ApplicationTest) {\n (0, _emberBabel.inherits)(_class, _ApplicationTest);\n\n function _class() {\n (0, _emberBabel.classCallCheck)(this, _class);\n\n var _this = (0, _emberBabel.possibleConstructorReturn)(this, _ApplicationTest.call(this));\n\n _this.addComponent('x-tagless', {\n ComponentClass: _helpers.Component.extend({\n tagName: ''\n }),\n\n template: '<div id=\"{{id}}\">[{{id}}] {{#if isShowing}}{{yield}}{{/if}}</div>'\n });\n\n _this.addComponent('x-toggle', {\n ComponentClass: _helpers.Component.extend({\n isExpanded: true,\n\n click: function () {\n this.toggleProperty('isExpanded');\n return false;\n }\n }),\n\n template: '[{{id}}] {{#if isExpanded}}{{yield}}{{/if}}'\n });\n\n var ToggleController = _emberRuntime.Controller.extend({\n isExpanded: true,\n\n actions: {\n toggle: function () {\n this.toggleProperty('isExpanded');\n }\n }\n });\n\n _this.add('controller:application', ToggleController);\n\n _this.addTemplate('application', '\\n {{x-tagless id=\"root-1\"}}\\n\\n {{#x-toggle id=\"root-2\"}}\\n {{x-toggle id=\"inner-1\"}}\\n\\n {{#x-toggle id=\"inner-2\"}}\\n {{x-toggle id=\"inner-3\"}}\\n {{/x-toggle}}\\n {{/x-toggle}}\\n\\n <button id=\"toggle-application\" {{action \"toggle\"}}>Toggle</button>\\n\\n {{#if isExpanded}}\\n {{x-toggle id=\"root-3\"}}\\n {{/if}}\\n\\n {{outlet}}\\n ');\n\n _this.add('controller:index', ToggleController.extend({\n isExpanded: false\n }));\n\n _this.addTemplate('index', '\\n {{x-tagless id=\"root-4\"}}\\n\\n {{#x-toggle id=\"root-5\" isExpanded=false}}\\n {{x-toggle id=\"inner-4\"}}\\n\\n {{#x-toggle id=\"inner-5\"}}\\n {{x-toggle id=\"inner-6\"}}\\n {{/x-toggle}}\\n {{/x-toggle}}\\n\\n <button id=\"toggle-index\" {{action \"toggle\"}}>Toggle</button>\\n\\n {{#if isExpanded}}\\n {{x-toggle id=\"root-6\"}}\\n {{/if}}\\n ');\n\n _this.addTemplate('zomg', '\\n {{x-tagless id=\"root-7\"}}\\n\\n {{#x-toggle id=\"root-8\"}}\\n {{x-toggle id=\"inner-7\"}}\\n\\n {{#x-toggle id=\"inner-8\"}}\\n {{x-toggle id=\"inner-9\"}}\\n {{/x-toggle}}\\n {{/x-toggle}}\\n\\n {{#x-toggle id=\"root-9\"}}\\n {{outlet}}\\n {{/x-toggle}}\\n ');\n\n _this.addTemplate('zomg.lol', '\\n {{x-toggle id=\"inner-10\"}}\\n ');\n\n _this.router.map(function () {\n this.route('zomg', function () {\n this.route('lol');\n });\n });\n return _this;\n }\n\n _class.prototype['@test getRootViews'] = function testGetRootViews(assert) {\n var _this2 = this;\n\n return this.visit('/').then(function () {\n _this2.assertRootViews(['root-1', 'root-2', 'root-3', 'root-4', 'root-5']);\n\n _this2.runTask(function () {\n return (0, _emberViews.jQuery)('#toggle-application').click();\n });\n\n _this2.assertRootViews(['root-1', 'root-2', 'root-4', 'root-5']);\n\n _this2.runTask(function () {\n (0, _emberViews.jQuery)('#toggle-application').click();\n (0, _emberViews.jQuery)('#toggle-index').click();\n });\n\n _this2.assertRootViews(['root-1', 'root-2', 'root-3', 'root-4', 'root-5', 'root-6']);\n\n return _this2.visit('/zomg/lol');\n }).then(function () {\n _this2.assertRootViews(['root-1', 'root-2', 'root-3', 'root-7', 'root-8', 'root-9']);\n\n return _this2.visit('/');\n }).then(function () {\n _this2.assertRootViews(['root-1', 'root-2', 'root-3', 'root-4', 'root-5', 'root-6']);\n });\n };\n\n _class.prototype.assertRootViews = function assertRootViews(ids) {\n var owner = this.applicationInstance;\n\n var actual = (0, _emberViews.getRootViews)(owner).map(function (view) {\n return view.id;\n }).sort();\n var expected = ids.sort();\n\n this.assert.deepEqual(actual, expected, 'root views');\n };\n\n _class.prototype['@test getChildViews'] = function testGetChildViews(assert) {\n var _this3 = this;\n\n return this.visit('/').then(function () {\n _this3.assertChildViews('root-2', ['inner-1', 'inner-2']);\n _this3.assertChildViews('root-5', []);\n _this3.assertChildViews('inner-2', ['inner-3']);\n\n _this3.runTask(function () {\n return (0, _emberViews.jQuery)('#root-2').click();\n });\n\n _this3.assertChildViews('root-2', []);\n\n _this3.runTask(function () {\n return (0, _emberViews.jQuery)('#root-5').click();\n });\n\n _this3.assertChildViews('root-5', ['inner-4', 'inner-5']);\n _this3.assertChildViews('inner-5', ['inner-6']);\n\n return _this3.visit('/zomg');\n }).then(function () {\n _this3.assertChildViews('root-2', []);\n _this3.assertChildViews('root-8', ['inner-7', 'inner-8']);\n _this3.assertChildViews('inner-8', ['inner-9']);\n _this3.assertChildViews('root-9', []);\n\n _this3.runTask(function () {\n return (0, _emberViews.jQuery)('#root-8').click();\n });\n\n _this3.assertChildViews('root-8', []);\n\n return _this3.visit('/zomg/lol');\n }).then(function () {\n _this3.assertChildViews('root-2', []);\n _this3.assertChildViews('root-8', []);\n _this3.assertChildViews('root-9', ['inner-10']);\n\n return _this3.visit('/');\n }).then(function () {\n _this3.assertChildViews('root-2', []);\n _this3.assertChildViews('root-5', []);\n\n _this3.runTask(function () {\n return (0, _emberViews.jQuery)('#root-2').click();\n });\n _this3.runTask(function () {\n return (0, _emberViews.jQuery)('#inner-2').click();\n });\n\n _this3.assertChildViews('root-2', ['inner-1', 'inner-2']);\n _this3.assertChildViews('inner-2', []);\n });\n };\n\n _class.prototype['@test getChildViews does not return duplicates'] = function testGetChildViewsDoesNotReturnDuplicates(assert) {\n var _this4 = this;\n\n return this.visit('/').then(function () {\n _this4.assertChildViews('root-2', ['inner-1', 'inner-2']);\n\n _this4.runTask(function () {\n return (0, _emberViews.jQuery)('#root-2').click();\n });\n _this4.runTask(function () {\n return (0, _emberViews.jQuery)('#root-2').click();\n });\n _this4.runTask(function () {\n return (0, _emberViews.jQuery)('#root-2').click();\n });\n _this4.runTask(function () {\n return (0, _emberViews.jQuery)('#root-2').click();\n });\n _this4.runTask(function () {\n return (0, _emberViews.jQuery)('#root-2').click();\n });\n _this4.runTask(function () {\n return (0, _emberViews.jQuery)('#root-2').click();\n });\n _this4.runTask(function () {\n return (0, _emberViews.jQuery)('#root-2').click();\n });\n _this4.runTask(function () {\n return (0, _emberViews.jQuery)('#root-2').click();\n });\n _this4.runTask(function () {\n return (0, _emberViews.jQuery)('#root-2').click();\n });\n _this4.runTask(function () {\n return (0, _emberViews.jQuery)('#root-2').click();\n });\n\n _this4.assertChildViews('root-2', ['inner-1', 'inner-2']);\n });\n };\n\n _class.prototype.assertChildViews = function assertChildViews(parentId, childIds) {\n var parentView = this.viewFor(parentId);\n var childViews = (0, _emberViews.getChildViews)(parentView);\n\n var actual = childViews.map(function (view) {\n return view.id;\n }).sort();\n var expected = childIds.sort();\n\n this.assert.deepEqual(actual, expected, 'child views for #' + parentId);\n };\n\n _class.prototype.viewFor = function viewFor(id) {\n var owner = this.applicationInstance;\n var registry = owner.lookup('-view-registry:main');\n return registry[id];\n };\n\n return _class;\n }(_testCase.ApplicationTest));\n\n var hasGetClientRects = void 0,\n hasGetBoundingClientRect = void 0;\n var ClientRectListCtor = void 0,\n ClientRectCtor = void 0;\n\n (function () {\n if (document.createRange) {\n var range = document.createRange();\n\n if (range.getClientRects) {\n var clientRectsList = range.getClientRects();\n hasGetClientRects = true;\n ClientRectListCtor = clientRectsList && clientRectsList.constructor;\n }\n\n if (range.getBoundingClientRect) {\n var clientRect = range.getBoundingClientRect();\n hasGetBoundingClientRect = true;\n ClientRectCtor = clientRect && clientRect.constructor;\n }\n }\n })();\n\n (0, _testCase.moduleFor)('Bounds tests', function (_RenderingTest) {\n (0, _emberBabel.inherits)(_class2, _RenderingTest);\n\n function _class2() {\n (0, _emberBabel.classCallCheck)(this, _class2);\n return (0, _emberBabel.possibleConstructorReturn)(this, _RenderingTest.apply(this, arguments));\n }\n\n _class2.prototype['@test getViewBounds on a regular component'] = function testGetViewBoundsOnARegularComponent(assert) {\n var component = void 0;\n this.registerComponent('hi-mom', {\n ComponentClass: _helpers.Component.extend({\n init: function () {\n this._super.apply(this, arguments);\n component = this;\n }\n }),\n template: '<p>Hi, mom!</p>'\n });\n\n this.render('{{hi-mom}}');\n\n var _getViewBounds = (0, _emberViews.getViewBounds)(component),\n parentElement = _getViewBounds.parentElement,\n firstNode = _getViewBounds.firstNode,\n lastNode = _getViewBounds.lastNode;\n\n assert.equal(parentElement, this.element, 'a regular component should have the right parentElement');\n assert.equal(firstNode, component.element, 'a regular component should have a single node that is its element');\n assert.equal(lastNode, component.element, 'a regular component should have a single node that is its element');\n };\n\n _class2.prototype['@test getViewBounds on a tagless component'] = function testGetViewBoundsOnATaglessComponent(assert) {\n var component = void 0;\n this.registerComponent('hi-mom', {\n ComponentClass: _helpers.Component.extend({\n tagName: '',\n init: function () {\n this._super.apply(this, arguments);\n component = this;\n }\n }),\n template: '<span id=\"start-node\">Hi,</span> <em id=\"before-end-node\">mom</em>!'\n });\n\n this.render('{{hi-mom}}');\n\n var _getViewBounds2 = (0, _emberViews.getViewBounds)(component),\n parentElement = _getViewBounds2.parentElement,\n firstNode = _getViewBounds2.firstNode,\n lastNode = _getViewBounds2.lastNode;\n\n assert.equal(parentElement, this.element, 'a tagless component should have the right parentElement');\n assert.equal(firstNode, this.$('#start-node')[0], 'a tagless component should have a range enclosing all of its nodes');\n assert.equal(lastNode, this.$('#before-end-node')[0].nextSibling, 'a tagless component should have a range enclosing all of its nodes');\n };\n\n _class2.prototype['@test getViewClientRects'] = function testGetViewClientRects(assert) {\n if (!hasGetClientRects || !ClientRectListCtor) {\n assert.ok(true, 'The test environment does not support the DOM API required to run this test.');\n return;\n }\n\n var component = void 0;\n this.registerComponent('hi-mom', {\n ComponentClass: _helpers.Component.extend({\n init: function () {\n this._super.apply(this, arguments);\n component = this;\n }\n }),\n template: '<p>Hi, mom!</p>'\n });\n\n this.render('{{hi-mom}}');\n\n assert.ok((0, _emberViews.getViewClientRects)(component) instanceof ClientRectListCtor);\n };\n\n _class2.prototype['@test getViewBoundingClientRect'] = function testGetViewBoundingClientRect(assert) {\n if (!hasGetBoundingClientRect || !ClientRectCtor) {\n assert.ok(true, 'The test environment does not support the DOM API required to run this test.');\n return;\n }\n\n var component = void 0;\n this.registerComponent('hi-mom', {\n ComponentClass: _helpers.Component.extend({\n init: function () {\n this._super.apply(this, arguments);\n component = this;\n }\n }),\n template: '<p>Hi, mom!</p>'\n });\n\n this.render('{{hi-mom}}');\n\n assert.ok((0, _emberViews.getViewBoundingClientRect)(component) instanceof ClientRectCtor);\n };\n\n return _class2;\n }(_testCase.RenderingTest));\n});","QUnit.module('ESLint | ember-glimmer/tests/integration/components/utils-test.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-glimmer/tests/integration/components/utils-test.js should pass ESLint\\n\\n');\n});\n","enifed('ember-glimmer/tests/integration/components/web-component-fallback-test', ['ember-babel', 'ember-glimmer/tests/utils/test-case', 'ember-metal'], function (_emberBabel, _testCase, _emberMetal) {\n 'use strict';\n\n (0, _testCase.moduleFor)('Components test: web component fallback', function (_RenderingTest) {\n (0, _emberBabel.inherits)(_class, _RenderingTest);\n\n function _class() {\n (0, _emberBabel.classCallCheck)(this, _class);\n return (0, _emberBabel.possibleConstructorReturn)(this, _RenderingTest.apply(this, arguments));\n }\n\n _class.prototype['@test custom elements are rendered'] = function testCustomElementsAreRendered() {\n var template = '<foo-bar some-attr=\"123\">hello</foo-bar>';\n\n this.render(template);\n\n this.assertHTML(template);\n\n this.assertStableRerender();\n };\n\n _class.prototype['@test custom elements can have bound attributes'] = function testCustomElementsCanHaveBoundAttributes() {\n var _this2 = this;\n\n var template = '<foo-bar some-attr=\"{{name}}\">hello</foo-bar>';\n\n this.render(template, { name: 'Robert' });\n\n this.assertHTML('<foo-bar some-attr=\"Robert\">hello</foo-bar>');\n\n this.assertStableRerender();\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this2.context, 'name', 'Kris');\n });\n\n this.assertHTML('<foo-bar some-attr=\"Kris\">hello</foo-bar>');\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this2.context, 'name', 'Robert');\n });\n\n this.assertHTML('<foo-bar some-attr=\"Robert\">hello</foo-bar>');\n };\n\n return _class;\n }(_testCase.RenderingTest));\n});","QUnit.module('ESLint | ember-glimmer/tests/integration/components/web-component-fallback-test.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-glimmer/tests/integration/components/web-component-fallback-test.js should pass ESLint\\n\\n');\n});\n","enifed('ember-glimmer/tests/integration/components/will-destroy-element-hook-test', ['ember-babel', 'ember-metal', 'ember-glimmer/tests/utils/helpers', 'ember-glimmer/tests/utils/test-case'], function (_emberBabel, _emberMetal, _helpers, _testCase) {\n 'use strict';\n\n (0, _testCase.moduleFor)('Component willDestroyElement hook', function (_RenderingTest) {\n (0, _emberBabel.inherits)(_class, _RenderingTest);\n\n function _class() {\n (0, _emberBabel.classCallCheck)(this, _class);\n return (0, _emberBabel.possibleConstructorReturn)(this, _RenderingTest.apply(this, arguments));\n }\n\n _class.prototype['@test it calls willDestroyElement when removed by if'] = function testItCallsWillDestroyElementWhenRemovedByIf(assert) {\n var _this2 = this;\n\n var didInsertElementCount = 0;\n var willDestroyElementCount = 0;\n var FooBarComponent = _helpers.Component.extend({\n didInsertElement: function () {\n didInsertElementCount++;\n assert.notEqual(this.element.parentNode, null, 'precond component is in DOM');\n },\n willDestroyElement: function () {\n willDestroyElementCount++;\n assert.notEqual(this.element.parentNode, null, 'has not been removed from DOM yet');\n }\n });\n\n this.registerComponent('foo-bar', { ComponentClass: FooBarComponent, template: 'hello' });\n\n this.render('{{#if switch}}{{foo-bar}}{{/if}}', { switch: true });\n\n assert.equal(didInsertElementCount, 1, 'didInsertElement was called once');\n\n this.assertComponentElement(this.firstChild, { content: 'hello' });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this2.context, 'switch', false);\n });\n\n assert.equal(willDestroyElementCount, 1, 'willDestroyElement was called once');\n\n this.assertText('');\n };\n\n return _class;\n }(_testCase.RenderingTest));\n});","QUnit.module('ESLint | ember-glimmer/tests/integration/components/will-destroy-element-hook-test.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-glimmer/tests/integration/components/will-destroy-element-hook-test.js should pass ESLint\\n\\n');\n});\n","enifed('ember-glimmer/tests/integration/content-test', ['ember-babel', 'ember-glimmer/tests/utils/test-case', 'ember-glimmer/tests/utils/abstract-test-case', 'ember-metal', 'ember-debug', 'ember-runtime', 'ember-glimmer/tests/utils/test-helpers', 'ember-views', 'ember-glimmer/tests/utils/helpers'], function (_emberBabel, _testCase, _abstractTestCase, _emberMetal, _emberDebug, _emberRuntime, _testHelpers, _emberViews, _helpers) {\n 'use strict';\n\n /* globals EmberDev */\n (0, _testCase.moduleFor)('Static content tests', function (_RenderingTest) {\n (0, _emberBabel.inherits)(_class, _RenderingTest);\n\n function _class() {\n (0, _emberBabel.classCallCheck)(this, _class);\n return (0, _emberBabel.possibleConstructorReturn)(this, _RenderingTest.apply(this, arguments));\n }\n\n _class.prototype['@test it can render a static text node'] = function testItCanRenderAStaticTextNode() {\n var _this2 = this;\n\n this.render('hello');\n var text1 = this.assertTextNode(this.firstChild, 'hello');\n\n this.runTask(function () {\n return _this2.rerender();\n });\n\n var text2 = this.assertTextNode(this.firstChild, 'hello');\n\n this.assertSameNode(text1, text2);\n };\n\n _class.prototype['@test it can render a static element'] = function testItCanRenderAStaticElement() {\n var _this3 = this;\n\n this.render('<p>hello</p>');\n var p1 = this.assertElement(this.firstChild, { tagName: 'p' });\n var text1 = this.assertTextNode(this.firstChild.firstChild, 'hello');\n\n this.runTask(function () {\n return _this3.rerender();\n });\n\n var p2 = this.assertElement(this.firstChild, { tagName: 'p' });\n var text2 = this.assertTextNode(this.firstChild.firstChild, 'hello');\n\n this.assertSameNode(p1, p2);\n this.assertSameNode(text1, text2);\n };\n\n _class.prototype['@test it can render a static template'] = function testItCanRenderAStaticTemplate() {\n var _this4 = this;\n\n var template = '\\n <div class=\"header\">\\n <h1>Welcome to Ember.js</h1>\\n </div>\\n <div class=\"body\">\\n <h2>Why you should use Ember.js?</h2>\\n <ol>\\n <li>It\\'s great</li>\\n <li>It\\'s awesome</li>\\n <li>It\\'s Ember.js</li>\\n </ol>\\n </div>\\n <div class=\"footer\">\\n Ember.js is free, open source and always will be.\\n </div>\\n ';\n\n this.render(template);\n this.assertHTML(template);\n\n this.runTask(function () {\n return _this4.rerender();\n });\n\n this.assertHTML(template);\n };\n\n return _class;\n }(_testCase.RenderingTest));\n\n var DynamicContentTest = function (_RenderingTest2) {\n (0, _emberBabel.inherits)(DynamicContentTest, _RenderingTest2);\n\n function DynamicContentTest() {\n (0, _emberBabel.classCallCheck)(this, DynamicContentTest);\n return (0, _emberBabel.possibleConstructorReturn)(this, _RenderingTest2.apply(this, arguments));\n }\n\n DynamicContentTest.prototype.renderPath = function renderPath(path) {\n var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n throw new Error('Not implemented: `renderValues`');\n };\n\n DynamicContentTest.prototype.assertIsEmpty = function assertIsEmpty() {\n this.assert.strictEqual(this.firstChild, null);\n };\n\n DynamicContentTest.prototype.assertContent = function assertContent(content) {\n throw new Error('Not implemented: `assertContent`');\n };\n\n DynamicContentTest.prototype['@test it can render a dynamic path'] = function testItCanRenderADynamicPath() {\n var _this6 = this;\n\n this.renderPath('message', { message: 'hello' });\n\n this.assertContent('hello');\n\n this.assertStableRerender();\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this6.context, 'message', 'goodbye');\n });\n\n this.assertContent('goodbye');\n this.assertInvariants();\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this6.context, 'message', 'hello');\n });\n\n this.assertContent('hello');\n this.assertInvariants();\n };\n\n DynamicContentTest.prototype['@test resolves the string length properly'] = function testResolvesTheStringLengthProperly() {\n var _this7 = this;\n\n this.render('<p>{{foo.length}}</p>', { foo: undefined });\n\n this.assertHTML('<p></p>');\n\n this.assertStableRerender();\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this7.context, 'foo', 'foo');\n });\n\n this.assertHTML('<p>3</p>');\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this7.context, 'foo', '');\n });\n\n this.assertHTML('<p>0</p>');\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this7.context, 'foo', undefined);\n });\n\n this.assertHTML('<p></p>');\n };\n\n DynamicContentTest.prototype['@test resolves the array length properly'] = function testResolvesTheArrayLengthProperly() {\n var _this8 = this;\n\n this.render('<p>{{foo.length}}</p>', { foo: undefined });\n\n this.assertHTML('<p></p>');\n\n this.assertStableRerender();\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this8.context, 'foo', [1, 2, 3]);\n });\n\n this.assertHTML('<p>3</p>');\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this8.context, 'foo', []);\n });\n\n this.assertHTML('<p>0</p>');\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this8.context, 'foo', undefined);\n });\n\n this.assertHTML('<p></p>');\n };\n\n DynamicContentTest.prototype['@test it can render a capitalized path with no deprecation'] = function testItCanRenderACapitalizedPathWithNoDeprecation() {\n var _this9 = this;\n\n expectNoDeprecation();\n\n this.renderPath('CaptializedPath', { CaptializedPath: 'no deprecation' });\n\n this.assertContent('no deprecation');\n\n this.assertStableRerender();\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this9.context, 'CaptializedPath', 'still no deprecation');\n });\n\n this.assertContent('still no deprecation');\n this.assertInvariants();\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this9.context, 'CaptializedPath', 'no deprecation');\n });\n\n this.assertContent('no deprecation');\n this.assertInvariants();\n };\n\n DynamicContentTest.prototype['@test it can render undefined dynamic paths'] = function testItCanRenderUndefinedDynamicPaths() {\n var _this10 = this;\n\n this.renderPath('name', {});\n\n this.assertIsEmpty();\n\n this.assertStableRerender();\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this10.context, 'name', 'foo-bar');\n });\n\n this.assertContent('foo-bar');\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this10.context, 'name', undefined);\n });\n\n this.assertIsEmpty();\n };\n\n DynamicContentTest.prototype['@test it can render a deeply nested dynamic path'] = function testItCanRenderADeeplyNestedDynamicPath() {\n var _this11 = this;\n\n this.renderPath('a.b.c.d.e.f', {\n a: { b: { c: { d: { e: { f: 'hello' } } } } }\n });\n\n this.assertContent('hello');\n\n this.assertStableRerender();\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this11.context, 'a.b.c.d.e.f', 'goodbye');\n });\n\n this.assertContent('goodbye');\n this.assertInvariants();\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this11.context, 'a.b.c.d', { e: { f: 'aloha' } });\n });\n\n this.assertContent('aloha');\n this.assertInvariants();\n\n this.runTask(function () {\n (0, _emberMetal.set)(_this11.context, 'a', { b: { c: { d: { e: { f: 'hello' } } } } });\n });\n\n this.assertContent('hello');\n this.assertInvariants();\n };\n\n DynamicContentTest.prototype['@test it can render a computed property'] = function testItCanRenderAComputedProperty() {\n var _this12 = this;\n\n var Formatter = _emberRuntime.Object.extend({\n formattedMessage: (0, _emberMetal.computed)('message', function () {\n return this.get('message').toUpperCase();\n })\n });\n\n var m = Formatter.create({ message: 'hello' });\n\n this.renderPath('m.formattedMessage', { m: m });\n\n this.assertContent('HELLO');\n\n this.assertStableRerender();\n\n this.runTask(function () {\n return (0, _emberMetal.set)(m, 'message', 'goodbye');\n });\n\n this.assertContent('GOODBYE');\n this.assertInvariants();\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this12.context, 'm', Formatter.create({ message: 'hello' }));\n });\n\n this.assertContent('HELLO');\n this.assertInvariants();\n };\n\n DynamicContentTest.prototype['@test it can render a computed property with nested dependency'] = function testItCanRenderAComputedPropertyWithNestedDependency() {\n var _this13 = this;\n\n var Formatter = _emberRuntime.Object.extend({\n formattedMessage: (0, _emberMetal.computed)('messenger.message', function () {\n return this.get('messenger.message').toUpperCase();\n })\n });\n\n var m = Formatter.create({ messenger: { message: 'hello' } });\n\n this.renderPath('m.formattedMessage', { m: m });\n\n this.assertContent('HELLO');\n\n this.assertStableRerender();\n\n this.runTask(function () {\n return (0, _emberMetal.set)(m, 'messenger.message', 'goodbye');\n });\n\n this.assertContent('GOODBYE');\n this.assertInvariants();\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this13.context, 'm', Formatter.create({ messenger: { message: 'hello' } }));\n });\n\n this.assertContent('HELLO');\n this.assertInvariants();\n };\n\n DynamicContentTest.prototype['@test it can read from a proxy object'] = function testItCanReadFromAProxyObject() {\n var _this14 = this;\n\n this.renderPath('proxy.name', { proxy: _emberRuntime.ObjectProxy.create({ content: { name: 'Tom Dale' } }) });\n\n this.assertContent('Tom Dale');\n\n this.assertStableRerender();\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this14.context, 'proxy.content.name', 'Yehuda Katz');\n });\n\n this.assertContent('Yehuda Katz');\n this.assertInvariants();\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this14.context, 'proxy.content', { name: 'Godfrey Chan' });\n });\n\n this.assertContent('Godfrey Chan');\n this.assertInvariants();\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this14.context, 'proxy.name', 'Stefan Penner');\n });\n\n this.assertContent('Stefan Penner');\n this.assertInvariants();\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this14.context, 'proxy.content', null);\n });\n\n this.assertIsEmpty();\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this14.context, 'proxy', _emberRuntime.ObjectProxy.create({ content: { name: 'Tom Dale' } }));\n });\n\n this.assertContent('Tom Dale');\n this.assertInvariants();\n };\n\n DynamicContentTest.prototype['@test it can read from a nested path in a proxy object'] = function testItCanReadFromANestedPathInAProxyObject() {\n var _this15 = this;\n\n this.renderPath('proxy.name.last', { proxy: _emberRuntime.ObjectProxy.create({ content: { name: { first: 'Tom', last: 'Dale' } } }) });\n\n this.assertContent('Dale');\n\n this.assertStableRerender();\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this15.context, 'proxy.content.name.last', 'Cruise');\n });\n\n this.assertContent('Cruise');\n this.assertInvariants();\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this15.context, 'proxy.content.name.first', 'Suri');\n });\n\n this.assertStableRerender();\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this15.context, 'proxy.content.name', { first: 'Yehuda', last: 'Katz' });\n });\n\n this.assertContent('Katz');\n this.assertInvariants();\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this15.context, 'proxy.content', { name: { first: 'Godfrey', last: 'Chan' } });\n });\n\n this.assertContent('Chan');\n this.assertInvariants();\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this15.context, 'proxy.name', { first: 'Stefan', last: 'Penner' });\n });\n\n this.assertContent('Penner');\n this.assertInvariants();\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this15.context, 'proxy', null);\n });\n\n this.assertIsEmpty();\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this15.context, 'proxy', _emberRuntime.ObjectProxy.create({ content: { name: { first: 'Tom', last: 'Dale' } } }));\n });\n\n this.assertContent('Dale');\n this.assertInvariants();\n };\n\n DynamicContentTest.prototype['@test it can read from a path flipping between a proxy and a real object'] = function testItCanReadFromAPathFlippingBetweenAProxyAndARealObject() {\n var _this16 = this;\n\n this.renderPath('proxyOrObject.name.last', { proxyOrObject: _emberRuntime.ObjectProxy.create({ content: { name: { first: 'Tom', last: 'Dale' } } }) });\n\n this.assertContent('Dale');\n\n this.assertStableRerender();\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this16.context, 'proxyOrObject', { name: { first: 'Tom', last: 'Dale' } });\n });\n\n this.assertStableRerender();\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this16.context, 'proxyOrObject.name.last', 'Cruise');\n });\n\n this.assertContent('Cruise');\n this.assertInvariants();\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this16.context, 'proxyOrObject.name.first', 'Suri');\n });\n\n this.assertStableRerender();\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this16.context, 'proxyOrObject', { name: { first: 'Yehuda', last: 'Katz' } });\n });\n\n this.assertContent('Katz');\n this.assertInvariants();\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this16.context, 'proxyOrObject', _emberRuntime.ObjectProxy.create({ content: { name: { first: 'Godfrey', last: 'Chan' } } }));\n });\n\n this.assertContent('Chan');\n this.assertInvariants();\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this16.context, 'proxyOrObject.content.name', { first: 'Stefan', last: 'Penner' });\n });\n\n this.assertContent('Penner');\n this.assertInvariants();\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this16.context, 'proxyOrObject', null);\n });\n\n this.assertIsEmpty();\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this16.context, 'proxyOrObject', _emberRuntime.ObjectProxy.create({ content: { name: { first: 'Tom', last: 'Dale' } } }));\n });\n\n this.assertContent('Dale');\n this.assertInvariants();\n };\n\n DynamicContentTest.prototype['@test it can read from a path flipping between a real object and a proxy'] = function testItCanReadFromAPathFlippingBetweenARealObjectAndAProxy() {\n var _this17 = this;\n\n this.renderPath('objectOrProxy.name.last', { objectOrProxy: { name: { first: 'Tom', last: 'Dale' } } });\n\n this.assertContent('Dale');\n\n this.assertStableRerender();\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this17.context, 'objectOrProxy', _emberRuntime.ObjectProxy.create({ content: { name: { first: 'Tom', last: 'Dale' } } }));\n });\n\n this.assertStableRerender();\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this17.context, 'objectOrProxy.content.name.last', 'Cruise');\n });\n\n this.assertContent('Cruise');\n this.assertInvariants();\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this17.context, 'objectOrProxy.content.name.first', 'Suri');\n });\n\n this.assertStableRerender();\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this17.context, 'objectOrProxy.content', { name: { first: 'Yehuda', last: 'Katz' } });\n });\n\n this.assertContent('Katz');\n this.assertInvariants();\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this17.context, 'objectOrProxy', { name: { first: 'Godfrey', last: 'Chan' } });\n });\n\n this.assertContent('Chan');\n this.assertInvariants();\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this17.context, 'objectOrProxy.name', { first: 'Stefan', last: 'Penner' });\n });\n\n this.assertContent('Penner');\n this.assertInvariants();\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this17.context, 'objectOrProxy', null);\n });\n\n this.assertIsEmpty();\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this17.context, 'objectOrProxy', { name: { first: 'Tom', last: 'Dale' } });\n });\n\n this.assertContent('Dale');\n this.assertInvariants();\n };\n\n DynamicContentTest.prototype['@test it can read from a null object'] = function testItCanReadFromANullObject() {\n var _this18 = this;\n\n var nullObject = Object.create(null);\n nullObject['message'] = 'hello';\n\n this.renderPath('nullObject.message', { nullObject: nullObject });\n\n this.assertContent('hello');\n\n this.assertStableRerender();\n\n this.runTask(function () {\n return (0, _emberMetal.set)(nullObject, 'message', 'goodbye');\n });\n\n this.assertContent('goodbye');\n this.assertInvariants();\n\n nullObject = Object.create(null);\n nullObject['message'] = 'hello';\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this18.context, 'nullObject', nullObject);\n });\n\n this.assertContent('hello');\n this.assertInvariants();\n };\n\n DynamicContentTest.prototype['@test it can render a readOnly property of a path'] = function testItCanRenderAReadOnlyPropertyOfAPath() {\n var _this19 = this;\n\n var Messenger = _emberRuntime.Object.extend({\n message: _emberMetal.computed.readOnly('a.b.c')\n });\n\n var messenger = Messenger.create({\n a: {\n b: {\n c: 'hello'\n }\n }\n });\n\n this.renderPath('messenger.message', { messenger: messenger });\n\n this.assertContent('hello');\n\n this.assertStableRerender();\n\n this.runTask(function () {\n return (0, _emberMetal.set)(messenger, 'a.b.c', 'hi');\n });\n\n this.assertContent('hi');\n this.assertInvariants();\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this19.context, 'messenger.a.b', {\n c: 'goodbye'\n });\n });\n\n this.assertContent('goodbye');\n this.assertInvariants();\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this19.context, 'messenger', {\n message: 'hello'\n });\n });\n\n this.assertContent('hello');\n this.assertInvariants();\n };\n\n DynamicContentTest.prototype['@test it can render a property on a function'] = function testItCanRenderAPropertyOnAFunction() {\n var func = function () {};\n func.aProp = 'this is a property on a function';\n\n this.renderPath('func.aProp', { func: func });\n\n this.assertContent('this is a property on a function');\n\n this.assertStableRerender();\n\n // this.runTask(() => set(func, 'aProp', 'still a property on a function'));\n // this.assertContent('still a property on a function');\n // this.assertInvariants();\n\n // func = () => {};\n // func.aProp = 'a prop on a new function';\n\n // this.runTask(() => set(this.context, 'func', func));\n\n // this.assertContent('a prop on a new function');\n // this.assertInvariants();\n };\n\n return DynamicContentTest;\n }(_testCase.RenderingTest);\n\n var EMPTY = {};\n\n var ContentTestGenerator = function () {\n function ContentTestGenerator(cases) {\n var tag = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '@test';\n (0, _emberBabel.classCallCheck)(this, ContentTestGenerator);\n\n this.cases = cases;\n this.tag = tag;\n }\n\n ContentTestGenerator.prototype.generate = function generate(_ref) {\n var value = _ref[0],\n expected = _ref[1],\n label = _ref[2];\n\n var tag = this.tag;\n label = label || value;\n\n if (expected === EMPTY) {\n var _ref2;\n\n return _ref2 = {}, _ref2[tag + ' rendering ' + label] = function () {\n var _this20 = this;\n\n this.renderPath('value', { value: value });\n\n this.assertIsEmpty();\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this20.context, 'value', 'hello');\n });\n\n this.assertContent('hello');\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this20.context, 'value', value);\n });\n\n this.assertIsEmpty();\n }, _ref2;\n } else {\n var _ref3;\n\n return _ref3 = {}, _ref3[tag + ' rendering ' + label] = function () {\n var _this21 = this;\n\n this.renderPath('value', { value: value });\n\n this.assertContent(expected);\n\n this.assertStableRerender();\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this21.context, 'value', 'hello');\n });\n\n this.assertContent('hello');\n this.assertInvariants();\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this21.context, 'value', value);\n });\n\n this.assertContent(expected);\n this.assertInvariants();\n }, _ref3;\n }\n };\n\n return ContentTestGenerator;\n }();\n\n var SharedContentTestCases = new ContentTestGenerator([['foo', 'foo'], [0, '0'], [-0, '0', '-0'], [1, '1'], [-1, '-1'], [0.0, '0', '0.0'], [0.5, '0.5'], [undefined, EMPTY], [null, EMPTY], [true, 'true'], [false, 'false'], [NaN, 'NaN'], [new Date(2000, 0, 1), String(new Date(2000, 0, 1)), 'a Date object'], [Infinity, 'Infinity'], [1 / -0, '-Infinity'], [{ foo: 'bar' }, '[object Object]', '{ foo: \\'bar\\' }'], [{\n toString: function () {\n return 'foo';\n }\n }, 'foo', 'an object with a custom toString function'], [{\n valueOf: function () {\n return 1;\n }\n }, '[object Object]', 'an object with a custom valueOf function'],\n\n // Escaping tests\n ['<b>Max</b><b>James</b>', '<b>Max</b><b>James</b>']]);\n\n var GlimmerContentTestCases = new ContentTestGenerator([[Object.create(null), EMPTY, 'an object with no toString']]);\n\n if (typeof Symbol !== 'undefined') {\n GlimmerContentTestCases.cases.push([Symbol('debug'), 'Symbol(debug)', 'a symbol']);\n }\n\n (0, _abstractTestCase.applyMixins)(DynamicContentTest, SharedContentTestCases, GlimmerContentTestCases);\n\n (0, _testCase.moduleFor)('Dynamic content tests (content position)', function (_DynamicContentTest) {\n (0, _emberBabel.inherits)(_class2, _DynamicContentTest);\n\n function _class2() {\n (0, _emberBabel.classCallCheck)(this, _class2);\n return (0, _emberBabel.possibleConstructorReturn)(this, _DynamicContentTest.apply(this, arguments));\n }\n\n _class2.prototype.renderPath = function renderPath(path) {\n var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n this.render('{{' + path + '}}', context);\n };\n\n _class2.prototype.assertContent = function assertContent(content) {\n this.assert.strictEqual(this.nodesCount, 1, 'It should render exactly one text node');\n this.assertTextNode(this.firstChild, content);\n };\n\n return _class2;\n }(DynamicContentTest));\n\n (0, _testCase.moduleFor)('Dynamic content tests (content concat)', function (_DynamicContentTest2) {\n (0, _emberBabel.inherits)(_class3, _DynamicContentTest2);\n\n function _class3() {\n (0, _emberBabel.classCallCheck)(this, _class3);\n return (0, _emberBabel.possibleConstructorReturn)(this, _DynamicContentTest2.apply(this, arguments));\n }\n\n _class3.prototype.renderPath = function renderPath(path) {\n var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n this.render('{{concat \"\" ' + path + ' \"\"}}', context);\n };\n\n _class3.prototype.assertContent = function assertContent(content) {\n this.assert.strictEqual(this.nodesCount, 1, 'It should render exactly one text node');\n this.assertTextNode(this.firstChild, content);\n };\n\n return _class3;\n }(DynamicContentTest));\n\n (0, _testCase.moduleFor)('Dynamic content tests (inside an element)', function (_DynamicContentTest3) {\n (0, _emberBabel.inherits)(_class4, _DynamicContentTest3);\n\n function _class4() {\n (0, _emberBabel.classCallCheck)(this, _class4);\n return (0, _emberBabel.possibleConstructorReturn)(this, _DynamicContentTest3.apply(this, arguments));\n }\n\n _class4.prototype.renderPath = function renderPath(path) {\n var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n this.render('<p>{{' + path + '}}</p>', context);\n };\n\n _class4.prototype.assertIsEmpty = function assertIsEmpty() {\n this.assert.strictEqual(this.nodesCount, 1, 'It should render exactly one <p> tag');\n this.assertElement(this.firstChild, { tagName: 'p' });\n this.assertText('');\n };\n\n _class4.prototype.assertContent = function assertContent(content) {\n this.assert.strictEqual(this.nodesCount, 1, 'It should render exactly one <p> tag');\n this.assertElement(this.firstChild, { tagName: 'p' });\n this.assertText(content);\n };\n\n return _class4;\n }(DynamicContentTest));\n\n (0, _testCase.moduleFor)('Dynamic content tests (attribute position)', function (_DynamicContentTest4) {\n (0, _emberBabel.inherits)(_class5, _DynamicContentTest4);\n\n function _class5() {\n (0, _emberBabel.classCallCheck)(this, _class5);\n return (0, _emberBabel.possibleConstructorReturn)(this, _DynamicContentTest4.apply(this, arguments));\n }\n\n _class5.prototype.renderPath = function renderPath(path) {\n var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n this.render('<div data-foo=\"{{' + path + '}}\"></div>', context);\n };\n\n _class5.prototype.assertIsEmpty = function assertIsEmpty() {\n this.assert.strictEqual(this.nodesCount, 1, 'It should render exactly one <div> tag');\n this.assertElement(this.firstChild, { tagName: 'div', content: '' });\n };\n\n _class5.prototype.assertContent = function assertContent(content) {\n this.assert.strictEqual(this.nodesCount, 1, 'It should render exactly one <div> tag');\n this.assertElement(this.firstChild, { tagName: 'div', attrs: { 'data-foo': content }, content: '' });\n };\n\n return _class5;\n }(DynamicContentTest));\n\n var TrustedContentTest = function (_DynamicContentTest5) {\n (0, _emberBabel.inherits)(TrustedContentTest, _DynamicContentTest5);\n\n function TrustedContentTest() {\n (0, _emberBabel.classCallCheck)(this, TrustedContentTest);\n return (0, _emberBabel.possibleConstructorReturn)(this, _DynamicContentTest5.apply(this, arguments));\n }\n\n TrustedContentTest.prototype.assertIsEmpty = function assertIsEmpty() {\n this.assert.strictEqual(this.firstChild, null);\n };\n\n TrustedContentTest.prototype.assertContent = function assertContent(content) {\n this.assertHTML(content);\n };\n\n TrustedContentTest.prototype.assertStableRerender = function assertStableRerender() {\n var _this27 = this;\n\n this.takeSnapshot();\n this.runTask(function () {\n return _this27.rerender();\n });\n _DynamicContentTest5.prototype.assertInvariants.call(this);\n };\n\n TrustedContentTest.prototype.assertInvariants = function assertInvariants() {\n // If it's not stable, we will wipe out all the content and replace them,\n // so there are no invariants\n };\n\n return TrustedContentTest;\n }(DynamicContentTest);\n\n (0, _testCase.moduleFor)('Dynamic content tests (trusted)', function (_TrustedContentTest) {\n (0, _emberBabel.inherits)(_class6, _TrustedContentTest);\n\n function _class6() {\n (0, _emberBabel.classCallCheck)(this, _class6);\n return (0, _emberBabel.possibleConstructorReturn)(this, _TrustedContentTest.apply(this, arguments));\n }\n\n _class6.prototype.renderPath = function renderPath(path) {\n var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n this.render('{{{' + path + '}}}', context);\n };\n\n _class6.prototype['@test updating trusted curlies'] = function testUpdatingTrustedCurlies() {\n var _this29 = this;\n\n this.render('{{{htmlContent}}}{{{nested.htmlContent}}}', {\n htmlContent: '<b>Max</b>',\n nested: { htmlContent: '<b>James</b>' }\n });\n\n this.assertContent('<b>Max</b><b>James</b>');\n\n this.runTask(function () {\n return _this29.rerender();\n });\n\n this.assertStableRerender();\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this29.context, 'htmlContent', '<i>M</i><u>a</u><s>x</s>');\n });\n\n this.assertContent('<i>M</i><u>a</u><s>x</s><b>James</b>');\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this29.context, 'nested.htmlContent', 'Jammie');\n });\n\n this.assertContent('<i>M</i><u>a</u><s>x</s>Jammie');\n\n this.runTask(function () {\n (0, _emberMetal.set)(_this29.context, 'htmlContent', '<b>Max</b>');\n (0, _emberMetal.set)(_this29.context, 'nested', { htmlContent: '<i>James</i>' });\n });\n\n this.assertContent('<b>Max</b><i>James</i>');\n };\n\n return _class6;\n }(TrustedContentTest));\n\n (0, _testCase.moduleFor)('Dynamic content tests (integration)', function (_RenderingTest3) {\n (0, _emberBabel.inherits)(_class7, _RenderingTest3);\n\n function _class7() {\n (0, _emberBabel.classCallCheck)(this, _class7);\n return (0, _emberBabel.possibleConstructorReturn)(this, _RenderingTest3.apply(this, arguments));\n }\n\n _class7.prototype['@test it can render a dynamic template'] = function testItCanRenderADynamicTemplate() {\n var _this31 = this;\n\n var template = '\\n <div class=\"header\">\\n <h1>Welcome to {{framework}}</h1>\\n </div>\\n <div class=\"body\">\\n <h2>Why you should use {{framework}}?</h2>\\n <ol>\\n <li>It\\'s great</li>\\n <li>It\\'s awesome</li>\\n <li>It\\'s {{framework}}</li>\\n </ol>\\n </div>\\n <div class=\"footer\">\\n {{framework}} is free, open source and always will be.\\n </div>\\n ';\n\n var ember = '\\n <div class=\"header\">\\n <h1>Welcome to Ember.js</h1>\\n </div>\\n <div class=\"body\">\\n <h2>Why you should use Ember.js?</h2>\\n <ol>\\n <li>It\\'s great</li>\\n <li>It\\'s awesome</li>\\n <li>It\\'s Ember.js</li>\\n </ol>\\n </div>\\n <div class=\"footer\">\\n Ember.js is free, open source and always will be.\\n </div>\\n ';\n\n var react = '\\n <div class=\"header\">\\n <h1>Welcome to React</h1>\\n </div>\\n <div class=\"body\">\\n <h2>Why you should use React?</h2>\\n <ol>\\n <li>It\\'s great</li>\\n <li>It\\'s awesome</li>\\n <li>It\\'s React</li>\\n </ol>\\n </div>\\n <div class=\"footer\">\\n React is free, open source and always will be.\\n </div>\\n ';\n\n this.render(template, {\n framework: 'Ember.js'\n });\n this.assertHTML(ember);\n\n this.runTask(function () {\n return _this31.rerender();\n });\n\n this.assertHTML(ember);\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this31.context, 'framework', 'React');\n });\n\n this.assertHTML(react);\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this31.context, 'framework', 'Ember.js');\n });\n\n this.assertHTML(ember);\n };\n\n _class7.prototype['@test it should evaluate to nothing if part of the path is `undefined`'] = function testItShouldEvaluateToNothingIfPartOfThePathIsUndefined() {\n var _this32 = this;\n\n this.render('{{foo.bar.baz.bizz}}', {\n foo: {}\n });\n\n this.assertText('');\n\n this.runTask(function () {\n return _this32.rerender();\n });\n\n this.assertText('');\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this32.context, 'foo', {\n bar: { baz: { bizz: 'Hey!' } }\n });\n });\n\n this.assertText('Hey!');\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this32.context, 'foo', {});\n });\n\n this.assertText('');\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this32.context, 'foo', {\n bar: { baz: { bizz: 'Hello!' } }\n });\n });\n\n this.assertText('Hello!');\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this32.context, 'foo', {});\n });\n\n this.assertText('');\n };\n\n _class7.prototype['@test it should evaluate to nothing if part of the path is a primative'] = function testItShouldEvaluateToNothingIfPartOfThePathIsAPrimative() {\n var _this33 = this;\n\n this.render('{{foo.bar.baz.bizz}}', {\n foo: { bar: true }\n });\n\n this.assertText('');\n\n this.runTask(function () {\n return _this33.rerender();\n });\n\n this.assertText('');\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this33.context, 'foo', {\n bar: false\n });\n });\n\n this.assertText('');\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this33.context, 'foo', {\n bar: 'Haha'\n });\n });\n\n this.assertText('');\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this33.context, 'foo', {\n bar: null\n });\n });\n\n this.assertText('');\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this33.context, 'foo', {\n bar: undefined\n });\n });\n\n this.assertText('');\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this33.context, 'foo', {\n bar: 1\n });\n });\n\n this.assertText('');\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this33.context, 'foo', {\n bar: { baz: { bizz: 'Hello!' } }\n });\n });\n\n this.assertText('Hello!');\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this33.context, 'foo', {\n bar: true\n });\n });\n\n this.assertText('');\n };\n\n _class7.prototype['@test can set dynamic href'] = function testCanSetDynamicHref() {\n var _this34 = this;\n\n this.render('<a href={{model.url}}>Example</a>', {\n model: {\n url: 'http://example.com'\n }\n });\n\n this.assertElement(this.firstChild, { tagName: 'a', content: 'Example', attrs: { 'href': 'http://example.com' } });\n\n this.runTask(function () {\n return _this34.rerender();\n });\n\n this.assertElement(this.firstChild, { tagName: 'a', content: 'Example', attrs: { 'href': 'http://example.com' } });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this34.context, 'model.url', 'http://linkedin.com');\n });\n\n this.assertElement(this.firstChild, { tagName: 'a', content: 'Example', attrs: { 'href': 'http://linkedin.com' } });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this34.context, 'model', { url: 'http://example.com' });\n });\n\n this.assertElement(this.firstChild, { tagName: 'a', content: 'Example', attrs: { 'href': 'http://example.com' } });\n };\n\n _class7.prototype['@test quoteless class attributes update correctly'] = function testQuotelessClassAttributesUpdateCorrectly() {\n var _this35 = this;\n\n this.render('<div class={{if fooBar \"foo-bar\"}}>hello</div>', {\n fooBar: true\n });\n\n this.assertElement(this.firstChild, { tagName: 'div', content: 'hello', attrs: { 'class': (0, _testHelpers.classes)('foo-bar') } });\n\n this.runTask(function () {\n return _this35.rerender();\n });\n\n this.assertElement(this.firstChild, { tagName: 'div', content: 'hello', attrs: { 'class': (0, _testHelpers.classes)('foo-bar') } });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this35.context, 'fooBar', false);\n });\n\n this.assertElement(this.firstChild, { tagName: 'div', content: 'hello' });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this35.context, 'fooBar', true);\n });\n\n this.assertElement(this.firstChild, { tagName: 'div', content: 'hello', attrs: { 'class': (0, _testHelpers.classes)('foo-bar') } });\n };\n\n _class7.prototype['@test quoted class attributes update correctly'] = function testQuotedClassAttributesUpdateCorrectly(assert) {\n var _this36 = this;\n\n this.render('<div class=\"{{if fooBar \"foo-bar\"}}\">hello</div>', {\n fooBar: true\n });\n\n this.assertElement(this.firstChild, { tagName: 'div', content: 'hello', attrs: { 'class': (0, _testHelpers.classes)('foo-bar') } });\n\n this.runTask(function () {\n return _this36.rerender();\n });\n\n this.assertElement(this.firstChild, { tagName: 'div', content: 'hello', attrs: { 'class': (0, _testHelpers.classes)('foo-bar') } });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this36.context, 'fooBar', false);\n });\n\n assert.equal(this.firstChild.className, '');\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this36.context, 'fooBar', true);\n });\n\n this.assertElement(this.firstChild, { tagName: 'div', content: 'hello', attrs: { 'class': (0, _testHelpers.classes)('foo-bar') } });\n };\n\n _class7.prototype['@test unquoted class attribute can contain multiple classes'] = function testUnquotedClassAttributeCanContainMultipleClasses() {\n var _this37 = this;\n\n this.render('<div class={{model.classes}}>hello</div>', {\n model: {\n classes: 'foo bar baz'\n }\n });\n\n this.assertElement(this.firstChild, { tagName: 'div', content: 'hello', attrs: { 'class': (0, _testHelpers.classes)('foo bar baz') } });\n\n this.runTask(function () {\n return _this37.rerender();\n });\n\n this.assertElement(this.firstChild, { tagName: 'div', content: 'hello', attrs: { 'class': (0, _testHelpers.classes)('foo bar baz') } });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this37.context, 'model.classes', 'fizz bizz');\n });\n\n this.assertElement(this.firstChild, { tagName: 'div', content: 'hello', attrs: { 'class': (0, _testHelpers.classes)('fizz bizz') } });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this37.context, 'model', { classes: 'foo bar baz' });\n });\n\n this.assertElement(this.firstChild, { tagName: 'div', content: 'hello', attrs: { 'class': (0, _testHelpers.classes)('foo bar baz') } });\n };\n\n _class7.prototype['@test unquoted class attribute'] = function testUnquotedClassAttribute() {\n var _this38 = this;\n\n this.render('<div class={{model.foo}}>hello</div>', {\n model: {\n foo: 'foo'\n }\n });\n\n this.assertElement(this.firstChild, { tagName: 'div', content: 'hello', attrs: { 'class': (0, _testHelpers.classes)('foo') } });\n\n this.runTask(function () {\n return _this38.rerender();\n });\n\n this.assertElement(this.firstChild, { tagName: 'div', content: 'hello', attrs: { 'class': (0, _testHelpers.classes)('foo') } });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this38.context, 'model.foo', 'fizz');\n });\n\n this.assertElement(this.firstChild, { tagName: 'div', content: 'hello', attrs: { 'class': (0, _testHelpers.classes)('fizz') } });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this38.context, 'model', { foo: 'foo' });\n });\n\n this.assertElement(this.firstChild, { tagName: 'div', content: 'hello', attrs: { 'class': (0, _testHelpers.classes)('foo') } });\n };\n\n _class7.prototype['@test quoted class attribute'] = function testQuotedClassAttribute() {\n var _this39 = this;\n\n this.render('<div class=\"{{model.foo}}\">hello</div>', {\n model: {\n foo: 'foo'\n }\n });\n\n this.assertElement(this.firstChild, { tagName: 'div', content: 'hello', attrs: { 'class': (0, _testHelpers.classes)('foo') } });\n\n this.runTask(function () {\n return _this39.rerender();\n });\n\n this.assertElement(this.firstChild, { tagName: 'div', content: 'hello', attrs: { 'class': (0, _testHelpers.classes)('foo') } });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this39.context, 'model.foo', 'fizz');\n });\n\n this.assertElement(this.firstChild, { tagName: 'div', content: 'hello', attrs: { 'class': (0, _testHelpers.classes)('fizz') } });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this39.context, 'model', { foo: 'foo' });\n });\n\n this.assertElement(this.firstChild, { tagName: 'div', content: 'hello', attrs: { 'class': (0, _testHelpers.classes)('foo') } });\n };\n\n _class7.prototype['@test quoted class attribute can contain multiple classes'] = function testQuotedClassAttributeCanContainMultipleClasses() {\n var _this40 = this;\n\n this.render('<div class=\"{{model.classes}}\">hello</div>', {\n model: {\n classes: 'foo bar baz'\n }\n });\n\n this.assertElement(this.firstChild, { tagName: 'div', content: 'hello', attrs: { 'class': (0, _testHelpers.classes)('foo bar baz') } });\n\n this.runTask(function () {\n return _this40.rerender();\n });\n\n this.assertElement(this.firstChild, { tagName: 'div', content: 'hello', attrs: { 'class': (0, _testHelpers.classes)('foo bar baz') } });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this40.context, 'model.classes', 'fizz bizz');\n });\n\n this.assertElement(this.firstChild, { tagName: 'div', content: 'hello', attrs: { 'class': (0, _testHelpers.classes)('fizz bizz') } });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this40.context, 'model', { classes: 'foo bar baz' });\n });\n\n this.assertElement(this.firstChild, { tagName: 'div', content: 'hello', attrs: { 'class': (0, _testHelpers.classes)('foo bar baz') } });\n };\n\n _class7.prototype['@test class attribute concats bound values'] = function testClassAttributeConcatsBoundValues() {\n var _this41 = this;\n\n this.render('<div class=\"{{model.foo}} {{model.bar}} {{model.bizz}}\">hello</div>', {\n model: {\n foo: 'foo',\n bar: 'bar',\n bizz: 'bizz'\n }\n });\n\n this.assertElement(this.firstChild, { tagName: 'div', content: 'hello', attrs: { 'class': (0, _testHelpers.classes)('foo bar bizz') } });\n\n this.runTask(function () {\n return _this41.rerender();\n });\n\n this.assertElement(this.firstChild, { tagName: 'div', content: 'hello', attrs: { 'class': (0, _testHelpers.classes)('foo bar bizz') } });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this41.context, 'model.foo', 'fizz');\n });\n\n this.assertElement(this.firstChild, { tagName: 'div', content: 'hello', attrs: { 'class': (0, _testHelpers.classes)('fizz bar bizz') } });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this41.context, 'model.bar', null);\n });\n\n this.assertElement(this.firstChild, { tagName: 'div', content: 'hello', attrs: { 'class': (0, _testHelpers.classes)('fizz bizz') } });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this41.context, 'model', {\n foo: 'foo',\n bar: 'bar',\n bizz: 'bizz'\n });\n });\n\n this.assertElement(this.firstChild, { tagName: 'div', content: 'hello', attrs: { 'class': (0, _testHelpers.classes)('foo bar bizz') } });\n };\n\n _class7.prototype['@test class attribute accepts nested helpers, and updates'] = function testClassAttributeAcceptsNestedHelpersAndUpdates() {\n var _this42 = this;\n\n this.render('<div class=\"{{if model.hasSize model.size}} {{if model.hasShape model.shape}}\">hello</div>', {\n model: {\n size: 'large',\n hasSize: true,\n hasShape: false,\n shape: 'round'\n }\n });\n\n this.assertElement(this.firstChild, { tagName: 'div', content: 'hello', attrs: { 'class': (0, _testHelpers.classes)('large') } });\n\n this.runTask(function () {\n return _this42.rerender();\n });\n\n this.assertElement(this.firstChild, { tagName: 'div', content: 'hello', attrs: { 'class': (0, _testHelpers.classes)('large') } });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this42.context, 'model.hasShape', true);\n });\n\n this.assertElement(this.firstChild, { tagName: 'div', content: 'hello', attrs: { 'class': (0, _testHelpers.classes)('large round') } });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this42.context, 'model.hasSize', false);\n });\n\n this.assertElement(this.firstChild, { tagName: 'div', content: 'hello', attrs: { 'class': (0, _testHelpers.classes)('round') } });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this42.context, 'model', {\n size: 'large',\n hasSize: true,\n hasShape: false,\n shape: 'round'\n });\n });\n\n this.assertElement(this.firstChild, { tagName: 'div', content: 'hello', attrs: { 'class': (0, _testHelpers.classes)('large') } });\n };\n\n _class7.prototype['@test Multiple dynamic classes'] = function testMultipleDynamicClasses() {\n var _this43 = this;\n\n this.render('<div class=\"{{model.foo}} {{model.bar}} {{model.fizz}} {{model.baz}}\">hello</div>', {\n model: {\n foo: 'foo',\n bar: 'bar',\n fizz: 'fizz',\n baz: 'baz'\n }\n });\n\n this.assertElement(this.firstChild, { tagName: 'div', content: 'hello', attrs: { 'class': (0, _testHelpers.classes)('foo bar fizz baz') } });\n\n this.runTask(function () {\n return _this43.rerender();\n });\n\n this.assertElement(this.firstChild, { tagName: 'div', content: 'hello', attrs: { 'class': (0, _testHelpers.classes)('foo bar fizz baz') } });\n\n this.runTask(function () {\n (0, _emberMetal.set)(_this43.context, 'model.foo', null);\n (0, _emberMetal.set)(_this43.context, 'model.fizz', null);\n });\n\n this.assertElement(this.firstChild, { tagName: 'div', content: 'hello', attrs: { 'class': (0, _testHelpers.classes)('bar baz') } });\n\n this.runTask(function () {\n (0, _emberMetal.set)(_this43.context, 'model', {\n foo: 'foo',\n bar: 'bar',\n fizz: 'fizz',\n baz: 'baz'\n });\n });\n\n this.assertElement(this.firstChild, { tagName: 'div', content: 'hello', attrs: { 'class': (0, _testHelpers.classes)('foo bar fizz baz') } });\n };\n\n _class7.prototype['@test classes are ordered: See issue #9912'] = function testClassesAreOrderedSeeIssue9912() {\n var _this44 = this;\n\n this.render('<div class=\"{{model.foo}} static {{model.bar}}\">hello</div>', {\n model: {\n foo: 'foo',\n bar: 'bar'\n }\n });\n\n this.assertElement(this.firstChild, { tagName: 'div', content: 'hello', attrs: { 'class': 'foo static bar' } });\n\n this.runTask(function () {\n return _this44.rerender();\n });\n\n this.assertElement(this.firstChild, { tagName: 'div', content: 'hello', attrs: { 'class': 'foo static bar' } });\n\n this.runTask(function () {\n (0, _emberMetal.set)(_this44.context, 'model.bar', null);\n });\n\n this.assertElement(this.firstChild, { tagName: 'div', content: 'hello', attrs: { 'class': 'foo static ' } });\n\n this.runTask(function () {\n (0, _emberMetal.set)(_this44.context, 'model', {\n foo: 'foo',\n bar: 'bar'\n });\n });\n\n this.assertElement(this.firstChild, { tagName: 'div', content: 'hello', attrs: { 'class': 'foo static bar' } });\n };\n\n return _class7;\n }(_testCase.RenderingTest));\n\n var warnings = void 0,\n originalWarn = void 0;\n\n var StyleTest = function (_RenderingTest4) {\n (0, _emberBabel.inherits)(StyleTest, _RenderingTest4);\n\n function StyleTest() {\n (0, _emberBabel.classCallCheck)(this, StyleTest);\n\n var _this45 = (0, _emberBabel.possibleConstructorReturn)(this, _RenderingTest4.apply(this, arguments));\n\n warnings = [];\n originalWarn = (0, _emberDebug.getDebugFunction)('warn');\n (0, _emberDebug.setDebugFunction)('warn', function (message, test) {\n if (!test) {\n warnings.push(message);\n }\n });\n return _this45;\n }\n\n StyleTest.prototype.teardown = function teardown() {\n var _RenderingTest4$proto;\n\n (_RenderingTest4$proto = _RenderingTest4.prototype.teardown).call.apply(_RenderingTest4$proto, [this].concat(Array.prototype.slice.call(arguments)));\n (0, _emberDebug.setDebugFunction)('warn', originalWarn);\n };\n\n StyleTest.prototype.assertStyleWarning = function assertStyleWarning(style) {\n this.assert.deepEqual(warnings, [(0, _emberViews.constructStyleDeprecationMessage)(style)]);\n };\n\n StyleTest.prototype.assertNoWarning = function assertNoWarning() {\n this.assert.deepEqual(warnings, []);\n };\n\n return StyleTest;\n }(_testCase.RenderingTest);\n\n (0, _testCase.moduleFor)('Inline style tests', function (_StyleTest) {\n (0, _emberBabel.inherits)(_class8, _StyleTest);\n\n function _class8() {\n (0, _emberBabel.classCallCheck)(this, _class8);\n return (0, _emberBabel.possibleConstructorReturn)(this, _StyleTest.apply(this, arguments));\n }\n\n _class8.prototype['@test can set dynamic style'] = function testCanSetDynamicStyle() {\n var _this47 = this;\n\n this.render('<div style={{model.style}}></div>', {\n model: {\n style: 'width: 60px;'\n }\n });\n\n this.assertElement(this.firstChild, { tagName: 'div', content: '', attrs: { 'style': 'width: 60px;' } });\n\n this.runTask(function () {\n return _this47.rerender();\n });\n\n this.assertElement(this.firstChild, { tagName: 'div', content: '', attrs: { 'style': 'width: 60px;' } });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this47.context, 'model.style', 'height: 60px;');\n });\n\n this.assertElement(this.firstChild, { tagName: 'div', content: '', attrs: { 'style': 'height: 60px;' } });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this47.context, 'model.style', null);\n });\n\n this.assertElement(this.firstChild, { tagName: 'div', content: '', attrs: {} });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this47.context, 'model', { style: 'width: 60px;' });\n });\n\n this.assertElement(this.firstChild, { tagName: 'div', content: '', attrs: { 'style': 'width: 60px;' } });\n };\n\n _class8.prototype['@test can set dynamic style with -html-safe'] = function testCanSetDynamicStyleWithHtmlSafe() {\n var _this48 = this;\n\n this.render('<div style={{-html-safe model.style}}></div>', {\n model: {\n style: 'width: 60px;'\n }\n });\n\n this.assertElement(this.firstChild, { tagName: 'div', content: '', attrs: { 'style': 'width: 60px;' } });\n\n this.runTask(function () {\n return _this48.rerender();\n });\n\n this.assertElement(this.firstChild, { tagName: 'div', content: '', attrs: { 'style': 'width: 60px;' } });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this48.context, 'model.style', 'height: 60px;');\n });\n\n this.assertElement(this.firstChild, { tagName: 'div', content: '', attrs: { 'style': 'height: 60px;' } });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this48.context, 'model', { style: 'width: 60px;' });\n });\n\n this.assertElement(this.firstChild, { tagName: 'div', content: '', attrs: { 'style': 'width: 60px;' } });\n };\n\n return _class8;\n }(StyleTest));\n\n if (!EmberDev.runningProdBuild) {\n (0, _testCase.moduleFor)('Inline style tests - warnings', function (_StyleTest2) {\n (0, _emberBabel.inherits)(_class9, _StyleTest2);\n\n function _class9() {\n (0, _emberBabel.classCallCheck)(this, _class9);\n return (0, _emberBabel.possibleConstructorReturn)(this, _StyleTest2.apply(this, arguments));\n }\n\n _class9.prototype['@test specifying <div style={{userValue}}></div> generates a warning'] = function testSpecifyingDivStyleUserValueDivGeneratesAWarning(assert) {\n var userValue = 'width: 42px';\n this.render('<div style={{userValue}}></div>', {\n userValue: userValue\n });\n\n this.assertStyleWarning(userValue);\n };\n\n _class9.prototype['@test specifying `attributeBindings: [\"style\"]` generates a warning'] = function testSpecifyingAttributeBindingsStyleGeneratesAWarning(assert) {\n var FooBarComponent = _helpers.Component.extend({\n attributeBindings: ['style']\n });\n\n this.registerComponent('foo-bar', { ComponentClass: FooBarComponent, template: 'hello' });\n var userValue = 'width: 42px';\n this.render('{{foo-bar style=userValue}}', {\n userValue: userValue\n });\n\n this.assertStyleWarning(userValue);\n };\n\n _class9.prototype['@test specifying `<div style={{{userValue}}}></div>` works properly without a warning'] = function testSpecifyingDivStyleUserValueDivWorksProperlyWithoutAWarning(assert) {\n this.render('<div style={{{userValue}}}></div>', {\n userValue: 'width: 42px'\n });\n\n this.assertNoWarning();\n };\n\n _class9.prototype['@test specifying `<div style={{userValue}}></div>` works properly with a SafeString'] = function testSpecifyingDivStyleUserValueDivWorksProperlyWithASafeString(assert) {\n this.render('<div style={{userValue}}></div>', {\n userValue: new _helpers.SafeString('width: 42px')\n });\n\n this.assertNoWarning();\n };\n\n _class9.prototype['@test null value do not generate htmlsafe warning'] = function testNullValueDoNotGenerateHtmlsafeWarning(assert) {\n this.render('<div style={{userValue}}></div>', {\n userValue: null\n });\n\n this.assertNoWarning();\n };\n\n _class9.prototype['@test undefined value do not generate htmlsafe warning'] = function testUndefinedValueDoNotGenerateHtmlsafeWarning(assert) {\n this.render('<div style={{userValue}}></div>');\n\n this.assertNoWarning();\n };\n\n _class9.prototype['@test no warnings are triggered when using `-html-safe`'] = function testNoWarningsAreTriggeredWhenUsingHtmlSafe(assert) {\n this.render('<div style={{-html-safe userValue}}></div>', {\n userValue: 'width: 42px'\n });\n\n this.assertNoWarning();\n };\n\n _class9.prototype['@test no warnings are triggered when a safe string is quoted'] = function testNoWarningsAreTriggeredWhenASafeStringIsQuoted(assert) {\n this.render('<div style=\"{{userValue}}\"></div>', {\n userValue: new _helpers.SafeString('width: 42px')\n });\n\n this.assertNoWarning();\n };\n\n _class9.prototype['@test binding warning is triggered when an unsafe string is quoted'] = function testBindingWarningIsTriggeredWhenAnUnsafeStringIsQuoted(assert) {\n var userValue = 'width: 42px';\n this.render('<div style=\"{{userValue}}\"></div>', {\n userValue: userValue\n });\n\n this.assertStyleWarning(userValue);\n };\n\n _class9.prototype['@test binding warning is triggered when a safe string for a complete property is concatenated in place'] = function testBindingWarningIsTriggeredWhenASafeStringForACompletePropertyIsConcatenatedInPlace(assert) {\n var userValue = 'width: 42px';\n this.render('<div style=\"color: green; {{userValue}}\"></div>', {\n userValue: new _helpers.SafeString('width: 42px')\n });\n\n this.assertStyleWarning('color: green; ' + userValue);\n };\n\n _class9.prototype['@test binding warning is triggered when a safe string for a value is concatenated in place'] = function testBindingWarningIsTriggeredWhenASafeStringForAValueIsConcatenatedInPlace(assert) {\n var userValue = '42px';\n this.render('<div style=\"color: green; width: {{userValue}}\"></div>', {\n userValue: new _helpers.SafeString(userValue)\n });\n\n this.assertStyleWarning('color: green; width: ' + userValue);\n };\n\n _class9.prototype['@test binding warning is triggered when a safe string for a property name is concatenated in place'] = function testBindingWarningIsTriggeredWhenASafeStringForAPropertyNameIsConcatenatedInPlace(assert) {\n var userValue = 'width';\n this.render('<div style=\"color: green; {{userProperty}}: 42px\"></div>', {\n userProperty: new _helpers.SafeString(userValue)\n });\n\n this.assertStyleWarning('color: green; ' + userValue + ': 42px');\n };\n\n return _class9;\n }(StyleTest));\n }\n});","QUnit.module('ESLint | ember-glimmer/tests/integration/content-test.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-glimmer/tests/integration/content-test.js should pass ESLint\\n\\n');\n});\n","enifed('ember-glimmer/tests/integration/custom-component-manager-test', ['ember-babel', '@glimmer/runtime', 'ember-glimmer/tests/utils/test-case', 'ember/features', 'ember-glimmer'], function (_emberBabel, _runtime, _testCase, _features, _emberGlimmer) {\n 'use strict';\n\n if (_features.GLIMMER_CUSTOM_COMPONENT_MANAGER) {\n var TestLayoutCompiler = function () {\n function TestLayoutCompiler(template) {\n (0, _emberBabel.classCallCheck)(this, TestLayoutCompiler);\n\n this.template = template;\n }\n\n TestLayoutCompiler.prototype.compile = function compile(builder) {\n builder.wrapLayout(this.template);\n builder.tag.dynamic(function () {\n return _runtime.PrimitiveReference.create('p');\n });\n builder.attrs.static('class', 'hey-oh-lets-go');\n builder.attrs.static('manager-id', 'test');\n };\n\n return TestLayoutCompiler;\n }();\n\n var TestComponentManager = function (_AbstractComponentMan) {\n (0, _emberBabel.inherits)(TestComponentManager, _AbstractComponentMan);\n\n function TestComponentManager() {\n (0, _emberBabel.classCallCheck)(this, TestComponentManager);\n return (0, _emberBabel.possibleConstructorReturn)(this, _AbstractComponentMan.apply(this, arguments));\n }\n\n TestComponentManager.prototype.create = function create(env, definition, args, dynamicScope, caller, hasBlock) {\n return definition.ComponentClass.create();\n };\n\n TestComponentManager.prototype.layoutFor = function layoutFor(definition, bucket, env) {\n return env.getCompiledBlock(TestLayoutCompiler, definition.template);\n };\n\n TestComponentManager.prototype.getDestructor = function getDestructor(component) {\n return component;\n };\n\n TestComponentManager.prototype.getSelf = function getSelf() {\n return null;\n };\n\n return TestComponentManager;\n }(_emberGlimmer.AbstractComponentManager);\n\n (0, _testCase.moduleFor)('Components test: curly components with custom manager', function (_RenderingTest) {\n (0, _emberBabel.inherits)(_class, _RenderingTest);\n\n function _class() {\n (0, _emberBabel.classCallCheck)(this, _class);\n return (0, _emberBabel.possibleConstructorReturn)(this, _RenderingTest.apply(this, arguments));\n }\n\n _class.prototype['@test it can render a basic component with custom component manager'] = function testItCanRenderABasicComponentWithCustomComponentManager(assert) {\n var managerId = 'test';\n this.owner.register('component-manager:' + managerId, new TestComponentManager());\n this.registerComponent('foo-bar', {\n template: '{{use-component-manager \"' + managerId + '\"}}hello',\n managerId: managerId\n });\n\n this.render('{{foo-bar}}');\n\n assert.equal(this.firstChild.className, 'hey-oh-lets-go', 'class name was set correctly');\n assert.equal(this.firstChild.tagName, 'P', 'tag name was set correctly');\n assert.equal(this.firstChild.getAttribute('manager-id'), managerId, 'custom attribute was set correctly');\n };\n\n return _class;\n }(_testCase.RenderingTest));\n }\n});","QUnit.module('ESLint | ember-glimmer/tests/integration/custom-component-manager-test.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-glimmer/tests/integration/custom-component-manager-test.js should pass ESLint\\n\\n');\n});\n","enifed('ember-glimmer/tests/integration/event-dispatcher-test', ['ember-babel', 'ember-glimmer/tests/utils/test-case', 'ember-glimmer/tests/utils/helpers', 'ember-metal', 'ember/features', 'ember-views'], function (_emberBabel, _testCase, _helpers, _emberMetal, _features, _emberViews) {\n 'use strict';\n\n var canDataTransfer = !!document.createEvent('HTMLEvents').dataTransfer;\n\n function fireNativeWithDataTransfer(node, type, dataTransfer) {\n var event = document.createEvent('HTMLEvents');\n event.initEvent(type, true, true);\n event.dataTransfer = dataTransfer;\n node.dispatchEvent(event);\n }\n\n (0, _testCase.moduleFor)('EventDispatcher', function (_RenderingTest) {\n (0, _emberBabel.inherits)(_class, _RenderingTest);\n\n function _class() {\n (0, _emberBabel.classCallCheck)(this, _class);\n return (0, _emberBabel.possibleConstructorReturn)(this, _RenderingTest.apply(this, arguments));\n }\n\n _class.prototype['@test events bubble view hierarchy for form elements'] = function testEventsBubbleViewHierarchyForFormElements(assert) {\n var _this2 = this;\n\n var receivedEvent = void 0;\n\n this.registerComponent('x-foo', {\n ComponentClass: _helpers.Component.extend({\n change: function (event) {\n receivedEvent = event;\n }\n }),\n template: '<input id=\"is-done\" type=\"checkbox\">'\n });\n\n this.render('{{x-foo}}');\n\n this.runTask(function () {\n return _this2.$('#is-done').trigger('change');\n });\n assert.ok(receivedEvent, 'change event was triggered');\n assert.strictEqual(receivedEvent.target, this.$('#is-done')[0]);\n };\n\n _class.prototype['@test events bubble to parent view'] = function testEventsBubbleToParentView(assert) {\n var _this3 = this;\n\n var receivedEvent = void 0;\n\n this.registerComponent('x-foo', {\n ComponentClass: _helpers.Component.extend({\n change: function (event) {\n receivedEvent = event;\n }\n }),\n template: '{{yield}}'\n });\n\n this.registerComponent('x-bar', {\n ComponentClass: _helpers.Component.extend({\n change: function () {}\n }),\n template: '<input id=\"is-done\" type=\"checkbox\">'\n });\n\n this.render('{{#x-foo}}{{x-bar}}{{/x-foo}}');\n\n this.runTask(function () {\n return _this3.$('#is-done').trigger('change');\n });\n assert.ok(receivedEvent, 'change event was triggered');\n assert.strictEqual(receivedEvent.target, this.$('#is-done')[0]);\n };\n\n _class.prototype['@test events bubbling up can be prevented'] = function testEventsBubblingUpCanBePrevented(assert) {\n var _this4 = this;\n\n var hasReceivedEvent = void 0;\n\n this.registerComponent('x-foo', {\n ComponentClass: _helpers.Component.extend({\n change: function () {\n hasReceivedEvent = true;\n }\n }),\n template: '{{yield}}'\n });\n\n this.registerComponent('x-bar', {\n ComponentClass: _helpers.Component.extend({\n change: function () {\n return false;\n }\n }),\n template: '<input id=\"is-done\" type=\"checkbox\">'\n });\n\n this.render('{{#x-foo}}{{x-bar}}{{/x-foo}}');\n\n this.runTask(function () {\n return _this4.$('#is-done').trigger('change');\n });\n assert.notOk(hasReceivedEvent, 'change event has not been received');\n };\n\n _class.prototype['@test dispatches to the nearest event manager'] = function testDispatchesToTheNearestEventManager(assert) {\n var _this5 = this;\n\n var receivedEvent = void 0;\n\n this.registerComponent('x-foo', {\n ComponentClass: _helpers.Component.extend({\n click: function (event) {\n assert.notOk(true, 'should not trigger `click` on component');\n },\n\n\n eventManager: {\n click: function (event) {\n receivedEvent = event;\n }\n }\n }),\n\n template: '<input id=\"is-done\" type=\"checkbox\">'\n });\n\n expectDeprecation(/`eventManager` has been deprecated/);\n this.render('{{x-foo}}');\n\n this.runTask(function () {\n return _this5.$('#is-done').trigger('click');\n });\n assert.strictEqual(receivedEvent.target, this.$('#is-done')[0]);\n };\n\n _class.prototype['@test event manager can re-dispatch to the component'] = function testEventManagerCanReDispatchToTheComponent(assert) {\n var _this6 = this;\n\n var handlers = [];\n\n this.registerComponent('x-foo', {\n ComponentClass: _helpers.Component.extend({\n click: function () {\n handlers.push('component');\n },\n\n\n eventManager: {\n click: function (event, component) {\n handlers.push('eventManager');\n // Re-dispatch event when you get it.\n //\n // The second parameter tells the dispatcher\n // that this event has been handled. This\n // API will clearly need to be reworked since\n // multiple eventManagers in a single view\n // hierarchy would break, but it shows that\n // re-dispatching works\n component.$().trigger('click', this);\n }\n }\n }),\n\n template: '<input id=\"is-done\" type=\"checkbox\">'\n });\n\n expectDeprecation(/`eventManager` has been deprecated/);\n this.render('{{x-foo}}');\n\n this.runTask(function () {\n return _this6.$('#is-done').trigger('click');\n });\n assert.deepEqual(handlers, ['eventManager', 'component']);\n };\n\n _class.prototype['@test event handlers are wrapped in a run loop'] = function testEventHandlersAreWrappedInARunLoop(assert) {\n this.registerComponent('x-foo', {\n ComponentClass: _helpers.Component.extend({\n change: function () {\n assert.ok(_emberMetal.run.currentRunLoop, 'a run loop should have started');\n }\n }),\n template: '<input id=\"is-done\" type=\"checkbox\">'\n });\n\n this.render('{{x-foo}}');\n\n this.$('#is-done').trigger('click');\n };\n\n return _class;\n }(_testCase.RenderingTest));\n\n (0, _testCase.moduleFor)('EventDispatcher#setup', function (_RenderingTest2) {\n (0, _emberBabel.inherits)(_class2, _RenderingTest2);\n\n function _class2() {\n (0, _emberBabel.classCallCheck)(this, _class2);\n\n var _this7 = (0, _emberBabel.possibleConstructorReturn)(this, _RenderingTest2.call(this));\n\n var dispatcher = _this7.owner.lookup('event_dispatcher:main');\n (0, _emberMetal.run)(dispatcher, 'destroy');\n _this7.owner.__container__.reset('event_dispatcher:main');\n _this7.dispatcher = _this7.owner.lookup('event_dispatcher:main');\n return _this7;\n }\n\n _class2.prototype['@test additional events can be specified'] = function testAdditionalEventsCanBeSpecified(assert) {\n this.dispatcher.setup({ myevent: 'myEvent' });\n\n this.registerComponent('x-foo', {\n ComponentClass: _helpers.Component.extend({\n myEvent: function () {\n assert.ok(true, 'custom event was triggered');\n }\n }),\n template: '<p>Hello!</p>'\n });\n\n this.render('{{x-foo}}');\n\n this.$('div').trigger('myevent');\n };\n\n _class2.prototype['@test eventManager is deprecated'] = function testEventManagerIsDeprecated(assert) {\n this.registerComponent('x-foo', {\n ComponentClass: _helpers.Component.extend({\n eventManager: {\n myEvent: function () {}\n }\n }),\n template: '<p>Hello!</p>'\n });\n\n expectDeprecation(/`eventManager` has been deprecated/);\n this.render('{{x-foo}}');\n };\n\n _class2.prototype['@test a rootElement can be specified'] = function testARootElementCanBeSpecified(assert) {\n this.$().append('<div id=\"app\"></div>');\n this.dispatcher.setup({ myevent: 'myEvent' }, '#app');\n\n assert.ok(this.$('#app').hasClass('ember-application'), 'custom rootElement was used');\n assert.equal(this.dispatcher.rootElement, '#app', 'the dispatchers rootElement was updated');\n };\n\n _class2.prototype['@test default events can be disabled via `customEvents`'] = function testDefaultEventsCanBeDisabledViaCustomEvents(assert) {\n this.dispatcher.setup({ click: null });\n\n this.registerComponent('x-foo', {\n ComponentClass: _helpers.Component.extend({\n click: function () {\n assert.ok(false, 'click method was called');\n },\n null: function () {\n assert.ok(false, 'null method was called');\n },\n doubleClick: function () {\n assert.ok(true, 'a non-disabled event is still handled properly');\n }\n }),\n\n template: '<p>Hello!</p>'\n });\n\n this.render('{{x-foo}}');\n\n this.$('div').trigger('click');\n this.$('div').trigger('dblclick');\n };\n\n _class2.prototype['@test throws if specified rootElement does not exist'] = function testThrowsIfSpecifiedRootElementDoesNotExist(assert) {\n var _this8 = this;\n\n assert.throws(function () {\n _this8.dispatcher.setup({ myevent: 'myEvent' }, '#app');\n });\n };\n\n return _class2;\n }(_testCase.RenderingTest));\n\n (0, _testCase.moduleFor)('custom EventDispatcher subclass with #setup', function (_RenderingTest3) {\n (0, _emberBabel.inherits)(_class3, _RenderingTest3);\n\n function _class3() {\n (0, _emberBabel.classCallCheck)(this, _class3);\n\n var _this9 = (0, _emberBabel.possibleConstructorReturn)(this, _RenderingTest3.call(this));\n\n var dispatcher = _this9.owner.lookup('event_dispatcher:main');\n (0, _emberMetal.run)(dispatcher, 'destroy');\n _this9.owner.__container__.reset('event_dispatcher:main');\n _this9.owner.unregister('event_dispatcher:main');\n return _this9;\n }\n\n _class3.prototype['@test canDispatchToEventManager is deprecated in EventDispatcher'] = function testCanDispatchToEventManagerIsDeprecatedInEventDispatcher(assert) {\n var MyDispatcher = _emberViews.EventDispatcher.extend({\n canDispatchToEventManager: null\n });\n this.owner.register('event_dispatcher:main', MyDispatcher);\n\n expectDeprecation(/`canDispatchToEventManager` has been deprecated/);\n this.owner.lookup('event_dispatcher:main');\n };\n\n return _class3;\n }(_testCase.RenderingTest));\n\n if (_features.EMBER_IMPROVED_INSTRUMENTATION) {\n (0, _testCase.moduleFor)('EventDispatcher - Instrumentation', function (_RenderingTest4) {\n (0, _emberBabel.inherits)(_class4, _RenderingTest4);\n\n function _class4() {\n (0, _emberBabel.classCallCheck)(this, _class4);\n return (0, _emberBabel.possibleConstructorReturn)(this, _RenderingTest4.apply(this, arguments));\n }\n\n _class4.prototype.teardown = function teardown() {\n _RenderingTest4.prototype.teardown.call(this);\n (0, _emberMetal.instrumentationReset)();\n };\n\n _class4.prototype['@test instruments triggered events'] = function testInstrumentsTriggeredEvents(assert) {\n var clicked = 0;\n\n this.registerComponent('x-foo', {\n ComponentClass: _helpers.Component.extend({\n click: function (evt) {\n clicked++;\n }\n }),\n template: '<p>hello</p>'\n });\n\n this.render('{{x-foo}}');\n\n this.$('div').trigger('click');\n\n assert.equal(clicked, 1, 'precond - the click handler was invoked');\n\n var clickInstrumented = 0;\n (0, _emberMetal.instrumentationSubscribe)('interaction.click', {\n before: function () {\n clickInstrumented++;\n assert.equal(clicked, 1, 'invoked before event is handled');\n },\n after: function () {\n clickInstrumented++;\n assert.equal(clicked, 2, 'invoked after event is handled');\n }\n });\n\n var keypressInstrumented = 0;\n (0, _emberMetal.instrumentationSubscribe)('interaction.keypress', {\n before: function () {\n keypressInstrumented++;\n },\n after: function () {\n keypressInstrumented++;\n }\n });\n\n this.$('div').trigger('click');\n this.$('div').trigger('change');\n assert.equal(clicked, 2, 'precond - The click handler was invoked');\n assert.equal(clickInstrumented, 2, 'The click was instrumented');\n assert.strictEqual(keypressInstrumented, 0, 'The keypress was not instrumented');\n };\n\n return _class4;\n }(_testCase.RenderingTest));\n }\n\n if (canDataTransfer) {\n (0, _testCase.moduleFor)('EventDispatcher - Event Properties', function (_RenderingTest5) {\n (0, _emberBabel.inherits)(_class5, _RenderingTest5);\n\n function _class5() {\n (0, _emberBabel.classCallCheck)(this, _class5);\n return (0, _emberBabel.possibleConstructorReturn)(this, _RenderingTest5.apply(this, arguments));\n }\n\n _class5.prototype['@test dataTransfer property is added to drop event'] = function testDataTransferPropertyIsAddedToDropEvent(assert) {\n var receivedEvent = void 0;\n this.registerComponent('x-foo', {\n ComponentClass: _helpers.Component.extend({\n drop: function (event) {\n receivedEvent = event;\n }\n })\n });\n\n this.render('{{x-foo}}');\n\n fireNativeWithDataTransfer(this.$('div')[0], 'drop', 'success');\n assert.equal(receivedEvent.dataTransfer, 'success');\n };\n\n return _class5;\n }(_testCase.RenderingTest));\n }\n});","QUnit.module('ESLint | ember-glimmer/tests/integration/event-dispatcher-test.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-glimmer/tests/integration/event-dispatcher-test.js should pass ESLint\\n\\n');\n});\n","enifed('ember-glimmer/tests/integration/helpers/-class-test', ['ember-babel', 'ember-glimmer/tests/utils/test-case', 'ember-glimmer/tests/utils/test-helpers', 'ember-metal'], function (_emberBabel, _testCase, _testHelpers, _emberMetal) {\n 'use strict';\n\n (0, _testCase.moduleFor)('Helpers test: {{-class}}', function (_RenderingTest) {\n (0, _emberBabel.inherits)(_class, _RenderingTest);\n\n function _class() {\n (0, _emberBabel.classCallCheck)(this, _class);\n return (0, _emberBabel.possibleConstructorReturn)(this, _RenderingTest.apply(this, arguments));\n }\n\n _class.prototype['@test casts binding to dasherized class'] = function testCastsBindingToDasherizedClass() {\n var _this2 = this;\n\n this.registerComponent('foo-bar', { template: '' });\n this.render('{{foo-bar class=(-class someTruth \"someTruth\")}}', {\n someTruth: true\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { class: (0, _testHelpers.classes)('some-truth ember-view') } });\n\n this.runTask(function () {\n return _this2.rerender();\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { class: (0, _testHelpers.classes)('some-truth ember-view') } });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this2.context, 'someTruth', false);\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { class: (0, _testHelpers.classes)('ember-view') } });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this2.context, 'someTruth', true);\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { class: (0, _testHelpers.classes)('some-truth ember-view') } });\n };\n\n _class.prototype['@tests casts leaf path of binding to dasherized class'] = function testsCastsLeafPathOfBindingToDasherizedClass() {\n var _this3 = this;\n\n this.registerComponent('foo-bar', { template: '' });\n this.render('{{foo-bar class=(-class model.someTruth \"someTruth\")}}', {\n model: {\n someTruth: true\n }\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { class: (0, _testHelpers.classes)('some-truth ember-view') } });\n\n this.runTask(function () {\n return _this3.rerender();\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { class: (0, _testHelpers.classes)('some-truth ember-view') } });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this3.context, 'model.someTruth', false);\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { class: (0, _testHelpers.classes)('ember-view') } });\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this3.context, 'model', { someTruth: true });\n });\n\n this.assertComponentElement(this.firstChild, { tagName: 'div', attrs: { class: (0, _testHelpers.classes)('some-truth ember-view') } });\n };\n\n return _class;\n }(_testCase.RenderingTest));\n});","QUnit.module('ESLint | ember-glimmer/tests/integration/helpers/-class-test.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-glimmer/tests/integration/helpers/-class-test.js should pass ESLint\\n\\n');\n});\n","enifed('ember-glimmer/tests/integration/helpers/closure-action-test', ['ember-babel', 'ember-metal', 'ember/features', 'ember-glimmer/tests/utils/test-case', 'ember-glimmer/tests/utils/abstract-test-case', 'ember-glimmer/tests/utils/helpers'], function (_emberBabel, _emberMetal, _features, _testCase, _abstractTestCase, _helpers) {\n 'use strict';\n\n var _templateObject = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n <div id=\"counter\">clicked: {{clicked}}; foo: {{foo}}</div>\\n\\n {{click-me id=\"string-action\" onClick=(action \"on-click\")}}\\n {{click-me id=\"function-action\" onClick=(action onClick)}}\\n {{click-me id=\"mut-action\" onClick=(action (mut clicked))}}\\n '], ['\\n <div id=\"counter\">clicked: {{clicked}}; foo: {{foo}}</div>\\n\\n {{click-me id=\"string-action\" onClick=(action \"on-click\")}}\\n {{click-me id=\"function-action\" onClick=(action onClick)}}\\n {{click-me id=\"mut-action\" onClick=(action (mut clicked))}}\\n ']);\n\n if (_features.EMBER_IMPROVED_INSTRUMENTATION) {\n (0, _testCase.moduleFor)('Helpers test: closure {{action}} improved instrumentation', function (_RenderingTest) {\n (0, _emberBabel.inherits)(_class, _RenderingTest);\n\n function _class() {\n (0, _emberBabel.classCallCheck)(this, _class);\n return (0, _emberBabel.possibleConstructorReturn)(this, _RenderingTest.apply(this, arguments));\n }\n\n _class.prototype.subscribe = function subscribe(eventName, options) {\n this.subscriber = (0, _emberMetal.instrumentationSubscribe)(eventName, options);\n };\n\n _class.prototype.teardown = function teardown() {\n if (this.subscriber) {\n (0, _emberMetal.instrumentationUnsubscribe)(this.subscriber);\n }\n\n _RenderingTest.prototype.teardown.call(this);\n };\n\n _class.prototype['@test interaction event subscriber should be passed parameters'] = function testInteractionEventSubscriberShouldBePassedParameters() {\n var _this2 = this;\n\n var actionParam = 'So krispy';\n var beforeParameters = [];\n var afterParameters = [];\n\n var InnerComponent = _helpers.Component.extend({\n actions: {\n fireAction: function () {\n this.attrs.submit(actionParam);\n }\n }\n });\n\n var OuterComponent = _helpers.Component.extend({\n outerSubmit: function () {}\n });\n\n this.registerComponent('inner-component', {\n ComponentClass: InnerComponent,\n template: '<button id=\"instrument-button\" {{action \"fireAction\"}}>What it do</button>'\n });\n\n this.registerComponent('outer-component', {\n ComponentClass: OuterComponent,\n template: '{{inner-component submit=(action outerSubmit)}}'\n });\n\n this.subscribe('interaction.ember-action', {\n before: function (name, timestamp, payload) {\n beforeParameters.push(payload.args);\n },\n after: function (name, timestamp, payload) {\n afterParameters.push(payload.args);\n }\n });\n\n this.render('{{outer-component}}');\n\n this.runTask(function () {\n _this2.$('#instrument-button').trigger('click');\n });\n\n this.assert.deepEqual(beforeParameters, [[], [actionParam]], 'instrumentation subscriber before function was passed closure action parameters');\n this.assert.deepEqual(afterParameters, [[actionParam], []], 'instrumentation subscriber after function was passed closure action parameters');\n };\n\n _class.prototype['@test interaction event subscriber should be passed target'] = function testInteractionEventSubscriberShouldBePassedTarget() {\n var _this3 = this;\n\n var beforeParameters = [];\n var afterParameters = [];\n\n var InnerComponent = _helpers.Component.extend({\n myProperty: 'inner-thing',\n actions: {\n fireAction: function () {\n this.attrs.submit();\n }\n }\n });\n\n var OuterComponent = _helpers.Component.extend({\n myProperty: 'outer-thing',\n outerSubmit: function () {}\n });\n\n this.registerComponent('inner-component', {\n ComponentClass: InnerComponent,\n template: '<button id=\"instrument-button\" {{action \"fireAction\"}}>What it do</button>'\n });\n\n this.registerComponent('outer-component', {\n ComponentClass: OuterComponent,\n template: '{{inner-component submit=(action outerSubmit)}}'\n });\n\n this.subscribe('interaction.ember-action', {\n before: function (name, timestamp, payload) {\n beforeParameters.push(payload.target.get('myProperty'));\n },\n after: function (name, timestamp, payload) {\n afterParameters.push(payload.target.get('myProperty'));\n }\n });\n\n this.render('{{outer-component}}');\n\n this.runTask(function () {\n _this3.$('#instrument-button').trigger('click');\n });\n\n this.assert.deepEqual(beforeParameters, ['inner-thing', 'outer-thing'], 'instrumentation subscriber before function was passed target');\n this.assert.deepEqual(afterParameters, ['outer-thing', 'inner-thing'], 'instrumentation subscriber after function was passed target');\n };\n\n _class.prototype['@test instrumented action should return value'] = function testInstrumentedActionShouldReturnValue() {\n var _this4 = this;\n\n var returnedValue = 'Chris P is so krispy';\n var actualReturnedValue = void 0;\n\n var InnerComponent = _helpers.Component.extend({\n actions: {\n fireAction: function () {\n actualReturnedValue = this.attrs.submit();\n }\n }\n });\n\n var OuterComponent = _helpers.Component.extend({\n outerSubmit: function () {\n return returnedValue;\n }\n });\n\n this.registerComponent('inner-component', {\n ComponentClass: InnerComponent,\n template: '<button id=\"instrument-button\" {{action \"fireAction\"}}>What it do</button>'\n });\n\n this.registerComponent('outer-component', {\n ComponentClass: OuterComponent,\n template: '{{inner-component submit=(action outerSubmit)}}'\n });\n\n this.subscribe('interaction.ember-action', {\n before: function (name, timestamp, payload) {},\n after: function (name, timestamp, payload) {}\n });\n\n this.render('{{outer-component}}');\n\n this.runTask(function () {\n _this4.$('#instrument-button').trigger('click');\n });\n\n this.assert.equal(actualReturnedValue, returnedValue, 'action can return to caller');\n };\n\n return _class;\n }(_testCase.RenderingTest));\n }\n\n (0, _testCase.moduleFor)('Helpers test: closure {{action}}', function (_RenderingTest2) {\n (0, _emberBabel.inherits)(_class2, _RenderingTest2);\n\n function _class2() {\n (0, _emberBabel.classCallCheck)(this, _class2);\n return (0, _emberBabel.possibleConstructorReturn)(this, _RenderingTest2.apply(this, arguments));\n }\n\n _class2.prototype['@test action should be called'] = function testActionShouldBeCalled() {\n var outerActionCalled = false;\n var component = void 0;\n\n var InnerComponent = _helpers.Component.extend({\n init: function () {\n this._super.apply(this, arguments);\n component = this;\n },\n fireAction: function () {\n this.attrs.submit();\n }\n });\n\n var OuterComponent = _helpers.Component.extend({\n outerSubmit: function () {\n outerActionCalled = true;\n }\n });\n\n this.registerComponent('inner-component', { ComponentClass: InnerComponent, template: 'inner' });\n this.registerComponent('outer-component', {\n ComponentClass: OuterComponent,\n template: '{{inner-component submit=(action outerSubmit)}}'\n });\n\n this.render('{{outer-component}}');\n\n this.runTask(function () {\n component.fireAction();\n });\n\n this.assert.ok(outerActionCalled, 'the action was called');\n };\n\n _class2.prototype['@test an error is triggered when bound action function is undefined'] = function testAnErrorIsTriggeredWhenBoundActionFunctionIsUndefined() {\n var _this6 = this;\n\n this.registerComponent('inner-component', {\n template: 'inner'\n });\n this.registerComponent('outer-component', {\n template: '{{inner-component submit=(action somethingThatIsUndefined)}}'\n });\n\n expectAssertion(function () {\n _this6.render('{{outer-component}}');\n }, /Action passed is null or undefined in \\(action[^)]*\\) from .*\\./);\n };\n\n _class2.prototype['@test an error is triggered when bound action being passed in is a non-function'] = function testAnErrorIsTriggeredWhenBoundActionBeingPassedInIsANonFunction() {\n var _this7 = this;\n\n this.registerComponent('inner-component', {\n template: 'inner'\n });\n this.registerComponent('outer-component', {\n ComponentClass: _helpers.Component.extend({\n nonFunctionThing: {}\n }),\n template: '{{inner-component submit=(action nonFunctionThing)}}'\n });\n\n expectAssertion(function () {\n _this7.render('{{outer-component}}');\n }, /An action could not be made for `.*` in .*\\. Please confirm that you are using either a quoted action name \\(i\\.e\\. `\\(action '.*'\\)`\\) or a function available in .*\\./);\n };\n\n _class2.prototype['@test [#12718] a nice error is shown when a bound action function is undefined and it is passed as attrs.foo'] = function test12718ANiceErrorIsShownWhenABoundActionFunctionIsUndefinedAndItIsPassedAsAttrsFoo() {\n var _this8 = this;\n\n this.registerComponent('inner-component', {\n template: '<button id=\"inner-button\" {{action (action attrs.external-action)}}>Click me</button>'\n });\n\n this.registerComponent('outer-component', {\n template: '{{inner-component}}'\n });\n\n expectAssertion(function () {\n _this8.render('{{outer-component}}');\n }, /Action passed is null or undefined in \\(action[^)]*\\) from .*\\./);\n };\n\n _class2.prototype['@test action value is returned'] = function testActionValueIsReturned() {\n var expectedValue = 'terrible tom';\n var returnedValue = void 0;\n var innerComponent = void 0;\n\n var InnerComponent = _helpers.Component.extend({\n init: function () {\n this._super.apply(this, arguments);\n innerComponent = this;\n },\n fireAction: function () {\n returnedValue = this.attrs.submit();\n }\n });\n\n var OuterComponent = _helpers.Component.extend({\n outerSubmit: function () {\n return expectedValue;\n }\n });\n\n this.registerComponent('inner-component', {\n ComponentClass: InnerComponent,\n template: 'inner'\n });\n\n this.registerComponent('outer-component', {\n ComponentClass: OuterComponent,\n template: '{{inner-component submit=(action outerSubmit)}}'\n });\n\n this.render('{{outer-component}}');\n\n this.runTask(function () {\n innerComponent.fireAction();\n });\n\n this.assert.equal(returnedValue, expectedValue, 'action can return to caller');\n };\n\n _class2.prototype['@test action should be called on the correct scope'] = function testActionShouldBeCalledOnTheCorrectScope() {\n var innerComponent = void 0;\n var outerComponent = void 0;\n var actualComponent = void 0;\n\n var InnerComponent = _helpers.Component.extend({\n init: function () {\n this._super.apply(this, arguments);\n innerComponent = this;\n },\n fireAction: function () {\n this.attrs.submit();\n }\n });\n\n var OuterComponent = _helpers.Component.extend({\n init: function () {\n this._super.apply(this, arguments);\n outerComponent = this;\n },\n\n isOuterComponent: true,\n outerSubmit: function () {\n actualComponent = this;\n }\n });\n\n this.registerComponent('inner-component', {\n ComponentClass: InnerComponent,\n template: 'inner'\n });\n\n this.registerComponent('outer-component', {\n ComponentClass: OuterComponent,\n template: '{{inner-component submit=(action outerSubmit)}}'\n });\n\n this.render('{{outer-component}}');\n\n this.runTask(function () {\n innerComponent.fireAction();\n });\n\n this.assert.equal(actualComponent, outerComponent, 'action has the correct context');\n this.assert.ok(actualComponent.isOuterComponent, 'action has the correct context');\n };\n\n _class2.prototype['@test arguments to action are passed, curry'] = function testArgumentsToActionArePassedCurry() {\n var first = 'mitch';\n var second = 'martin';\n var third = 'matt';\n var fourth = 'wacky wycats';\n\n var innerComponent = void 0;\n var actualArgs = void 0;\n\n var InnerComponent = _helpers.Component.extend({\n init: function () {\n this._super.apply(this, arguments);\n innerComponent = this;\n },\n fireAction: function () {\n this.attrs.submit(fourth);\n }\n });\n\n var OuterComponent = _helpers.Component.extend({\n third: third,\n outerSubmit: function (actualFirst, actualSecond, actualThird, actualFourth) {\n actualArgs = [].concat(Array.prototype.slice.call(arguments));\n }\n });\n\n this.registerComponent('inner-component', {\n ComponentClass: InnerComponent,\n template: 'inner'\n });\n\n this.registerComponent('outer-component', {\n ComponentClass: OuterComponent,\n template: '{{inner-component submit=(action (action outerSubmit \"' + first + '\") \"' + second + '\" third)}}'\n });\n\n this.render('{{outer-component}}');\n\n this.runTask(function () {\n innerComponent.fireAction();\n });\n\n this.assert.deepEqual(actualArgs, [first, second, third, fourth], 'action has the correct args');\n };\n\n _class2.prototype['@test `this` can be passed as an argument'] = function testThisCanBePassedAsAnArgument() {\n var value = {};\n var component = void 0;\n var innerComponent = void 0;\n\n var InnerComponent = _helpers.Component.extend({\n init: function () {\n this._super.apply(this, arguments);\n innerComponent = this;\n },\n fireAction: function () {\n this.attrs.submit();\n }\n });\n\n var OuterComponent = _helpers.Component.extend({\n init: function () {\n this._super.apply(this, arguments);\n component = this;\n },\n\n actions: {\n outerAction: function (incomingValue) {\n value = incomingValue;\n }\n }\n });\n\n this.registerComponent('inner-component', { ComponentClass: InnerComponent, template: 'inner' });\n this.registerComponent('outer-component', {\n ComponentClass: OuterComponent,\n template: '{{inner-component submit=(action \"outerAction\" this)}}'\n });\n\n this.render('{{outer-component}}');\n\n this.runTask(function () {\n innerComponent.fireAction();\n });\n\n this.assert.strictEqual(value, component, 'the component is passed at `this`');\n };\n\n _class2.prototype['@test arguments to action are bound'] = function testArgumentsToActionAreBound() {\n var value = 'lazy leah';\n\n var innerComponent = void 0;\n var outerComponent = void 0;\n var actualArg = void 0;\n\n var InnerComponent = _helpers.Component.extend({\n init: function () {\n this._super.apply(this, arguments);\n innerComponent = this;\n },\n fireAction: function () {\n this.attrs.submit();\n }\n });\n\n var OuterComponent = _helpers.Component.extend({\n init: function () {\n this._super.apply(this, arguments);\n outerComponent = this;\n },\n\n value: '',\n outerSubmit: function (incomingValue) {\n actualArg = incomingValue;\n }\n });\n\n this.registerComponent('inner-component', {\n ComponentClass: InnerComponent,\n template: 'inner'\n });\n\n this.registerComponent('outer-component', {\n ComponentClass: OuterComponent,\n template: '{{inner-component submit=(action outerSubmit value)}}'\n });\n\n this.render('{{outer-component}}');\n\n this.runTask(function () {\n innerComponent.fireAction();\n });\n\n this.assert.strictEqual(actualArg, '', 'action has the correct first arg');\n\n this.runTask(function () {\n outerComponent.set('value', value);\n });\n\n this.runTask(function () {\n innerComponent.fireAction();\n });\n\n this.assert.strictEqual(actualArg, value, 'action has the correct first arg');\n };\n\n _class2.prototype['@test array arguments are passed correctly to action'] = function testArrayArgumentsArePassedCorrectlyToAction() {\n var first = 'foo';\n var second = [3, 5];\n var third = [4, 9];\n\n var actualFirst = void 0;\n var actualSecond = void 0;\n var actualThird = void 0;\n\n var innerComponent = void 0;\n var outerComponent = void 0;\n\n var InnerComponent = _helpers.Component.extend({\n init: function () {\n this._super.apply(this, arguments);\n innerComponent = this;\n },\n fireAction: function () {\n this.attrs.submit(second, third);\n }\n });\n\n var OuterComponent = _helpers.Component.extend({\n init: function () {\n this._super.apply(this, arguments);\n outerComponent = this;\n },\n outerSubmit: function (incomingFirst, incomingSecond, incomingThird) {\n actualFirst = incomingFirst;\n actualSecond = incomingSecond;\n actualThird = incomingThird;\n }\n });\n\n this.registerComponent('inner-component', {\n ComponentClass: InnerComponent,\n template: 'inner'\n });\n\n this.registerComponent('outer-component', {\n ComponentClass: OuterComponent,\n template: '{{inner-component submit=(action outerSubmit first)}}'\n });\n\n this.render('{{outer-component}}');\n\n this.runTask(function () {\n outerComponent.set('first', first);\n outerComponent.set('second', second);\n });\n\n this.runTask(function () {\n innerComponent.fireAction();\n });\n\n this.assert.equal(actualFirst, first, 'action has the correct first arg');\n this.assert.equal(actualSecond, second, 'action has the correct second arg');\n this.assert.equal(actualThird, third, 'action has the correct third arg');\n };\n\n _class2.prototype['@test mut values can be wrapped in actions, are settable'] = function testMutValuesCanBeWrappedInActionsAreSettable() {\n var newValue = 'trollin trek';\n\n var innerComponent = void 0;\n var outerComponent = void 0;\n\n var InnerComponent = _helpers.Component.extend({\n init: function () {\n this._super.apply(this, arguments);\n innerComponent = this;\n },\n fireAction: function () {\n this.attrs.submit(newValue);\n }\n });\n\n var OuterComponent = _helpers.Component.extend({\n init: function () {\n this._super.apply(this, arguments);\n outerComponent = this;\n },\n\n outerMut: 'patient peter'\n });\n\n this.registerComponent('inner-component', {\n ComponentClass: InnerComponent,\n template: 'inner'\n });\n\n this.registerComponent('outer-component', {\n ComponentClass: OuterComponent,\n template: '{{inner-component submit=(action (mut outerMut))}}'\n });\n\n this.render('{{outer-component}}');\n\n this.runTask(function () {\n innerComponent.fireAction();\n });\n\n this.assert.equal(outerComponent.get('outerMut'), newValue, 'mut value is set');\n };\n\n _class2.prototype['@test mut values can be wrapped in actions, are settable with a curry'] = function testMutValuesCanBeWrappedInActionsAreSettableWithACurry() {\n var newValue = 'trollin trek';\n\n var innerComponent = void 0;\n var outerComponent = void 0;\n\n var InnerComponent = _helpers.Component.extend({\n init: function () {\n this._super.apply(this, arguments);\n innerComponent = this;\n },\n fireAction: function () {\n this.attrs.submit();\n }\n });\n\n var OuterComponent = _helpers.Component.extend({\n init: function () {\n this._super.apply(this, arguments);\n outerComponent = this;\n },\n\n outerMut: 'patient peter'\n });\n\n this.registerComponent('inner-component', {\n ComponentClass: InnerComponent,\n template: 'inner'\n });\n\n this.registerComponent('outer-component', {\n ComponentClass: OuterComponent,\n template: '{{inner-component submit=(action (mut outerMut) \\'' + newValue + '\\')}}'\n });\n\n this.render('{{outer-component}}');\n\n this.runTask(function () {\n innerComponent.fireAction();\n });\n\n this.assert.equal(outerComponent.get('outerMut'), newValue, 'mut value is set');\n };\n\n _class2.prototype['@test action can create closures over actions'] = function testActionCanCreateClosuresOverActions() {\n var first = 'raging robert';\n var second = 'mild machty';\n var returnValue = 'butch brian';\n\n var actualFirst = void 0;\n var actualSecond = void 0;\n var actualReturnedValue = void 0;\n\n var innerComponent = void 0;\n\n var InnerComponent = _helpers.Component.extend({\n init: function () {\n this._super.apply(this, arguments);\n innerComponent = this;\n },\n fireAction: function () {\n actualReturnedValue = this.attrs.submit(second);\n }\n });\n\n var OuterComponent = _helpers.Component.extend({\n actions: {\n outerAction: function (incomingFirst, incomingSecond) {\n actualFirst = incomingFirst;\n actualSecond = incomingSecond;\n return returnValue;\n }\n }\n });\n\n this.registerComponent('inner-component', {\n ComponentClass: InnerComponent,\n template: 'inner'\n });\n\n this.registerComponent('outer-component', {\n ComponentClass: OuterComponent,\n template: '{{inner-component submit=(action \\'outerAction\\' \\'' + first + '\\')}}'\n });\n\n this.render('{{outer-component}}');\n\n this.runTask(function () {\n innerComponent.fireAction();\n });\n\n this.assert.equal(actualReturnedValue, returnValue, 'return value is present');\n this.assert.equal(actualFirst, first, 'first argument is correct');\n this.assert.equal(actualSecond, second, 'second argument is correct');\n };\n\n _class2.prototype['@test provides a helpful error if an action is not present'] = function testProvidesAHelpfulErrorIfAnActionIsNotPresent() {\n var _this9 = this;\n\n var InnerComponent = _helpers.Component.extend({});\n\n var OuterComponent = _helpers.Component.extend({\n actions: {\n something: function () {\n // this is present to ensure `actions` hash is present\n // a different error is triggered if `actions` is missing\n // completely\n }\n }\n });\n\n this.registerComponent('inner-component', {\n ComponentClass: InnerComponent,\n template: 'inner'\n });\n\n this.registerComponent('outer-component', {\n ComponentClass: OuterComponent,\n template: '{{inner-component submit=(action \\'doesNotExist\\')}}'\n });\n\n expectAssertion(function () {\n _this9.render('{{outer-component}}');\n }, /An action named 'doesNotExist' was not found in /);\n };\n\n _class2.prototype['@test provides a helpful error if actions hash is not present'] = function testProvidesAHelpfulErrorIfActionsHashIsNotPresent() {\n var _this10 = this;\n\n var InnerComponent = _helpers.Component.extend({});\n\n var OuterComponent = _helpers.Component.extend({});\n\n this.registerComponent('inner-component', {\n ComponentClass: InnerComponent,\n template: 'inner'\n });\n\n this.registerComponent('outer-component', {\n ComponentClass: OuterComponent,\n template: '{{inner-component submit=(action \\'doesNotExist\\')}}'\n });\n\n expectAssertion(function () {\n _this10.render('{{outer-component}}');\n }, /An action named 'doesNotExist' was not found in /);\n };\n\n _class2.prototype['@test action can create closures over actions with target'] = function testActionCanCreateClosuresOverActionsWithTarget() {\n var innerComponent = void 0;\n var actionCalled = false;\n\n var InnerComponent = _helpers.Component.extend({\n init: function () {\n this._super.apply(this, arguments);\n innerComponent = this;\n },\n fireAction: function () {\n this.attrs.submit();\n }\n });\n\n var OuterComponent = _helpers.Component.extend({\n otherComponent: (0, _emberMetal.computed)(function () {\n return {\n actions: {\n outerAction: function () {\n actionCalled = true;\n }\n }\n };\n })\n });\n\n this.registerComponent('inner-component', {\n ComponentClass: InnerComponent,\n template: 'inner'\n });\n\n this.registerComponent('outer-component', {\n ComponentClass: OuterComponent,\n template: '{{inner-component submit=(action \\'outerAction\\' target=otherComponent)}}'\n });\n\n this.render('{{outer-component}}');\n\n this.runTask(function () {\n innerComponent.fireAction();\n });\n\n this.assert.ok(actionCalled, 'action called on otherComponent');\n };\n\n _class2.prototype['@test value can be used with action over actions'] = function testValueCanBeUsedWithActionOverActions() {\n var newValue = 'yelping yehuda';\n\n var innerComponent = void 0;\n var actualValue = void 0;\n\n var InnerComponent = _helpers.Component.extend({\n init: function () {\n this._super.apply(this, arguments);\n innerComponent = this;\n },\n fireAction: function () {\n this.attrs.submit({\n readProp: newValue\n });\n }\n });\n\n var OuterComponent = _helpers.Component.extend({\n outerContent: {\n readProp: newValue\n },\n actions: {\n outerAction: function (incomingValue) {\n actualValue = incomingValue;\n }\n }\n });\n\n this.registerComponent('inner-component', {\n ComponentClass: InnerComponent,\n template: 'inner'\n });\n\n this.registerComponent('outer-component', {\n ComponentClass: OuterComponent,\n template: '{{inner-component submit=(action \\'outerAction\\' value=\"readProp\")}}'\n });\n\n this.render('{{outer-component}}');\n\n this.runTask(function () {\n innerComponent.fireAction();\n });\n\n this.assert.equal(actualValue, newValue, 'value is read');\n };\n\n _class2.prototype['@test action will read the value of a first property'] = function testActionWillReadTheValueOfAFirstProperty() {\n var newValue = 'irate igor';\n\n var innerComponent = void 0;\n var actualValue = void 0;\n\n var InnerComponent = _helpers.Component.extend({\n init: function () {\n this._super.apply(this, arguments);\n innerComponent = this;\n },\n fireAction: function () {\n this.attrs.submit({\n readProp: newValue\n });\n }\n });\n\n var OuterComponent = _helpers.Component.extend({\n outerAction: function (incomingValue) {\n actualValue = incomingValue;\n }\n });\n\n this.registerComponent('inner-component', {\n ComponentClass: InnerComponent,\n template: 'inner'\n });\n\n this.registerComponent('outer-component', {\n ComponentClass: OuterComponent,\n template: '{{inner-component submit=(action outerAction value=\"readProp\")}}'\n });\n\n this.render('{{outer-component}}');\n\n this.runTask(function () {\n innerComponent.fireAction();\n });\n\n this.assert.equal(actualValue, newValue, 'property is read');\n };\n\n _class2.prototype['@test action will read the value of a curried first argument property'] = function testActionWillReadTheValueOfACurriedFirstArgumentProperty() {\n var newValue = 'kissing kris';\n\n var innerComponent = void 0;\n var actualValue = void 0;\n\n var InnerComponent = _helpers.Component.extend({\n init: function () {\n this._super.apply(this, arguments);\n innerComponent = this;\n },\n fireAction: function () {\n this.attrs.submit();\n }\n });\n\n var OuterComponent = _helpers.Component.extend({\n objectArgument: {\n readProp: newValue\n },\n outerAction: function (incomingValue) {\n actualValue = incomingValue;\n }\n });\n\n this.registerComponent('inner-component', {\n ComponentClass: InnerComponent,\n template: 'inner'\n });\n\n this.registerComponent('outer-component', {\n ComponentClass: OuterComponent,\n template: '{{inner-component submit=(action outerAction objectArgument value=\"readProp\")}}'\n });\n\n this.render('{{outer-component}}');\n\n this.runTask(function () {\n innerComponent.fireAction();\n });\n\n this.assert.equal(actualValue, newValue, 'property is read');\n };\n\n _class2.prototype['@test action closure does not get auto-mut wrapped'] = function testActionClosureDoesNotGetAutoMutWrapped(assert) {\n var first = 'raging robert';\n var second = 'mild machty';\n var returnValue = 'butch brian';\n\n var innerComponent = void 0;\n var actualFirst = void 0;\n var actualSecond = void 0;\n var actualReturnedValue = void 0;\n\n var InnerComponent = _helpers.Component.extend({\n init: function () {\n this._super.apply(this, arguments);\n innerComponent = this;\n },\n fireAction: function () {\n this.get('submit')(second);\n this.get('attrs-submit')(second);\n var attrsSubmitReturnValue = this.attrs['attrs-submit'](second);\n var submitReturnValue = this.attrs.submit(second);\n\n assert.equal(attrsSubmitReturnValue, submitReturnValue, 'both attrs.foo and foo should behave the same');\n\n return submitReturnValue;\n }\n });\n\n var MiddleComponent = _helpers.Component.extend({});\n\n var OuterComponent = _helpers.Component.extend({\n actions: {\n outerAction: function (incomingFirst, incomingSecond) {\n actualFirst = incomingFirst;\n actualSecond = incomingSecond;\n return returnValue;\n }\n }\n });\n\n this.registerComponent('inner-component', {\n ComponentClass: InnerComponent,\n template: 'inner'\n });\n\n this.registerComponent('middle-component', {\n ComponentClass: MiddleComponent,\n template: '{{inner-component attrs-submit=attrs.submit submit=submit}}'\n });\n\n this.registerComponent('outer-component', {\n ComponentClass: OuterComponent,\n template: '{{middle-component submit=(action \\'outerAction\\' \\'' + first + '\\')}}'\n });\n\n this.render('{{outer-component}}');\n\n this.runTask(function () {\n actualReturnedValue = innerComponent.fireAction();\n });\n\n this.assert.equal(actualFirst, first, 'first argument is correct');\n this.assert.equal(actualSecond, second, 'second argument is correct');\n this.assert.equal(actualReturnedValue, returnValue, 'return value is present');\n };\n\n _class2.prototype['@test action should be called within a run loop'] = function testActionShouldBeCalledWithinARunLoop() {\n var innerComponent = void 0;\n var capturedRunLoop = void 0;\n\n var InnerComponent = _helpers.Component.extend({\n init: function () {\n this._super.apply(this, arguments);\n innerComponent = this;\n },\n fireAction: function () {\n this.attrs.submit();\n }\n });\n\n var OuterComponent = _helpers.Component.extend({\n actions: {\n submit: function () {\n capturedRunLoop = _emberMetal.run.currentRunLoop;\n }\n }\n });\n\n this.registerComponent('inner-component', {\n ComponentClass: InnerComponent,\n template: 'inner'\n });\n\n this.registerComponent('outer-component', {\n ComponentClass: OuterComponent,\n template: '{{inner-component submit=(action \\'submit\\')}}'\n });\n\n this.render('{{outer-component}}');\n\n this.runTask(function () {\n innerComponent.fireAction();\n });\n\n this.assert.ok(capturedRunLoop, 'action is called within a run loop');\n };\n\n _class2.prototype['@test objects that define INVOKE can be casted to actions'] = function testObjectsThatDefineINVOKECanBeCastedToActions() {\n var innerComponent = void 0;\n var actionArgs = void 0;\n var invokableArgs = void 0;\n\n var InnerComponent = _helpers.Component.extend({\n init: function () {\n this._super.apply(this, arguments);\n innerComponent = this;\n },\n fireAction: function () {\n actionArgs = this.attrs.submit(4, 5, 6);\n }\n });\n\n var OuterComponent = _helpers.Component.extend({\n foo: 123,\n submitTask: (0, _emberMetal.computed)(function () {\n var _this11 = this,\n _ref;\n\n return _ref = {}, _ref[_helpers.INVOKE] = function () {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n invokableArgs = args;\n return _this11.foo;\n }, _ref;\n })\n });\n\n this.registerComponent('inner-component', {\n ComponentClass: InnerComponent,\n template: 'inner'\n });\n\n this.registerComponent('outer-component', {\n ComponentClass: OuterComponent,\n template: '{{inner-component submit=(action submitTask 1 2 3)}}'\n });\n\n this.render('{{outer-component}}');\n\n this.runTask(function () {\n innerComponent.fireAction();\n });\n\n this.assert.equal(actionArgs, 123);\n this.assert.deepEqual(invokableArgs, [1, 2, 3, 4, 5, 6]);\n };\n\n _class2.prototype['@test closure action with `(mut undefinedThing)` works properly [GH#13959]'] = function testClosureActionWithMutUndefinedThingWorksProperlyGH13959() {\n var _this12 = this;\n\n var component = void 0;\n\n var ExampleComponent = _helpers.Component.extend({\n label: undefined,\n init: function () {\n this._super.apply(this, arguments);\n component = this;\n }\n });\n\n this.registerComponent('example-component', {\n ComponentClass: ExampleComponent,\n template: '<button onclick={{action (mut label) \"Clicked!\"}}>{{if label label \"Click me\"}}</button>'\n });\n\n this.render('{{example-component}}');\n\n this.assertText('Click me');\n\n this.assertStableRerender();\n\n this.runTask(function () {\n _this12.$('button').click();\n });\n\n this.assertText('Clicked!');\n\n this.runTask(function () {\n component.set('label', 'Dun clicked');\n });\n\n this.assertText('Dun clicked');\n\n this.runTask(function () {\n _this12.$('button').click();\n });\n\n this.assertText('Clicked!');\n\n this.runTask(function () {\n component.set('label', undefined);\n });\n\n this.assertText('Click me');\n };\n\n _class2.prototype['@test closure actions does not cause component hooks to fire unnecessarily [GH#14305] [GH#14654]'] = function testClosureActionsDoesNotCauseComponentHooksToFireUnnecessarilyGH14305GH14654(assert) {\n var _this14 = this;\n\n var clicked = 0;\n var didReceiveAttrsFired = 0;\n\n var ClickMeComponent = _helpers.Component.extend({\n tagName: 'button',\n\n click: function () {\n this.get('onClick').call(undefined, ++clicked);\n },\n didReceiveAttrs: function () {\n didReceiveAttrsFired++;\n }\n });\n\n this.registerComponent('click-me', {\n ComponentClass: ClickMeComponent\n });\n\n var outer = void 0;\n\n var OuterComponent = _helpers.Component.extend({\n clicked: 0,\n\n actions: {\n 'on-click': function () {\n this.incrementProperty('clicked');\n }\n },\n\n init: function () {\n var _this13 = this;\n\n this._super();\n outer = this;\n this.set('onClick', function () {\n return _this13.incrementProperty('clicked');\n });\n }\n });\n\n this.registerComponent('outer-component', {\n ComponentClass: OuterComponent,\n template: (0, _abstractTestCase.strip)(_templateObject)\n });\n\n this.render('{{outer-component foo=foo}}', { foo: 1 });\n\n this.assertText('clicked: 0; foo: 1');\n\n assert.equal(didReceiveAttrsFired, 3);\n\n this.runTask(function () {\n return _this14.rerender();\n });\n\n this.assertText('clicked: 0; foo: 1');\n\n assert.equal(didReceiveAttrsFired, 3);\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this14.context, 'foo', 2);\n });\n\n this.assertText('clicked: 0; foo: 2');\n\n assert.equal(didReceiveAttrsFired, 3);\n\n this.runTask(function () {\n return _this14.$('#string-action').click();\n });\n\n this.assertText('clicked: 1; foo: 2');\n\n assert.equal(didReceiveAttrsFired, 3);\n\n this.runTask(function () {\n return _this14.$('#function-action').click();\n });\n\n this.assertText('clicked: 2; foo: 2');\n\n assert.equal(didReceiveAttrsFired, 3);\n\n this.runTask(function () {\n return (0, _emberMetal.set)(outer, 'onClick', function () {\n outer.incrementProperty('clicked');\n });\n });\n\n this.assertText('clicked: 2; foo: 2');\n\n assert.equal(didReceiveAttrsFired, 3);\n\n this.runTask(function () {\n return _this14.$('#function-action').click();\n });\n\n this.assertText('clicked: 3; foo: 2');\n\n assert.equal(didReceiveAttrsFired, 3);\n\n this.runTask(function () {\n return _this14.$('#mut-action').click();\n });\n\n this.assertText('clicked: 4; foo: 2');\n\n assert.equal(didReceiveAttrsFired, 3);\n };\n\n return _class2;\n }(_testCase.RenderingTest));\n});","QUnit.module('ESLint | ember-glimmer/tests/integration/helpers/closure-action-test.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-glimmer/tests/integration/helpers/closure-action-test.js should pass ESLint\\n\\n');\n});\n","enifed('ember-glimmer/tests/integration/helpers/concat-test', ['ember-babel', 'ember-glimmer/tests/utils/test-case', 'ember-metal'], function (_emberBabel, _testCase, _emberMetal) {\n 'use strict';\n\n (0, _testCase.moduleFor)('Helpers test: {{concat}}', function (_RenderingTest) {\n (0, _emberBabel.inherits)(_class, _RenderingTest);\n\n function _class() {\n (0, _emberBabel.classCallCheck)(this, _class);\n return (0, _emberBabel.possibleConstructorReturn)(this, _RenderingTest.apply(this, arguments));\n }\n\n _class.prototype['@test it concats static arguments'] = function testItConcatsStaticArguments() {\n this.render('{{concat \"foo\" \" \" \"bar\" \" \" \"baz\"}}');\n this.assertText('foo bar baz');\n };\n\n _class.prototype['@test it updates for bound arguments'] = function testItUpdatesForBoundArguments() {\n var _this2 = this;\n\n this.render('{{concat model.first model.second}}', {\n model: { first: 'one', second: 'two' }\n });\n\n this.assertText('onetwo');\n\n this.runTask(function () {\n return _this2.rerender();\n });\n\n this.assertText('onetwo');\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this2.context, 'model.first', 'three');\n });\n\n this.assertText('threetwo');\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this2.context, 'model.second', 'four');\n });\n\n this.assertText('threefour');\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this2.context, 'model', { first: 'one', second: 'two' });\n });\n\n this.assertText('onetwo');\n };\n\n _class.prototype['@test it can be used as a sub-expression'] = function testItCanBeUsedAsASubExpression() {\n var _this3 = this;\n\n this.render('{{concat (concat model.first model.second) (concat model.third model.fourth)}}', {\n model: {\n first: 'one',\n second: 'two',\n third: 'three',\n fourth: 'four'\n }\n });\n\n this.assertText('onetwothreefour');\n\n this.runTask(function () {\n return _this3.rerender();\n });\n\n this.assertText('onetwothreefour');\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this3.context, 'model.first', 'five');\n });\n\n this.assertText('fivetwothreefour');\n\n this.runTask(function () {\n (0, _emberMetal.set)(_this3.context, 'model.second', 'six');\n (0, _emberMetal.set)(_this3.context, 'model.third', 'seven');\n });\n\n this.assertText('fivesixsevenfour');\n\n this.runTask(function () {\n (0, _emberMetal.set)(_this3.context, 'model', {\n first: 'one',\n second: 'two',\n third: 'three',\n fourth: 'four'\n });\n });\n\n this.assertText('onetwothreefour');\n };\n\n _class.prototype['@test it can be used as input for other helpers'] = function testItCanBeUsedAsInputForOtherHelpers() {\n var _this4 = this;\n\n this.registerHelper('x-eq', function (_ref) {\n var actual = _ref[0],\n expected = _ref[1];\n return actual === expected;\n });\n\n this.render('{{#if (x-eq (concat model.first model.second) \"onetwo\")}}Truthy!{{else}}False{{/if}}', {\n model: {\n first: 'one',\n second: 'two'\n }\n });\n\n this.assertText('Truthy!');\n\n this.runTask(function () {\n return _this4.rerender();\n });\n\n this.assertText('Truthy!');\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this4.context, 'model.first', 'three');\n });\n\n this.assertText('False');\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this4.context, 'model', { first: 'one', second: 'two' });\n });\n\n this.assertText('Truthy!');\n };\n\n return _class;\n }(_testCase.RenderingTest));\n});","QUnit.module('ESLint | ember-glimmer/tests/integration/helpers/concat-test.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-glimmer/tests/integration/helpers/concat-test.js should pass ESLint\\n\\n');\n});\n","enifed('ember-glimmer/tests/integration/helpers/custom-helper-test', ['ember-babel', 'ember-glimmer/tests/utils/test-case', 'internal-test-helpers', 'ember-metal', 'ember-utils'], function (_emberBabel, _testCase, _internalTestHelpers, _emberMetal, _emberUtils) {\n 'use strict';\n\n /* globals EmberDev */\n var assert = QUnit.assert;\n\n (0, _testCase.moduleFor)('Helpers test: custom helpers', function (_RenderingTest) {\n (0, _emberBabel.inherits)(_class, _RenderingTest);\n\n function _class() {\n (0, _emberBabel.classCallCheck)(this, _class);\n return (0, _emberBabel.possibleConstructorReturn)(this, _RenderingTest.apply(this, arguments));\n }\n\n _class.prototype['@test it cannot override built-in syntax'] = function testItCannotOverrideBuiltInSyntax() {\n var _this2 = this;\n\n this.registerHelper('if', function () {\n return 'Nope';\n });\n expectAssertion(function () {\n _this2.render('{{if foo \\'LOL\\'}}', { foo: true });\n }, /You attempted to overwrite the built-in helper \\\"if\\\" which is not allowed. Please rename the helper./);\n };\n\n _class.prototype['@test it can resolve custom simple helpers with or without dashes'] = function testItCanResolveCustomSimpleHelpersWithOrWithoutDashes() {\n var _this3 = this;\n\n this.registerHelper('hello', function () {\n return 'hello';\n });\n this.registerHelper('hello-world', function () {\n return 'hello world';\n });\n\n this.render('{{hello}} | {{hello-world}}');\n\n this.assertText('hello | hello world');\n\n this.runTask(function () {\n return _this3.rerender();\n });\n\n this.assertText('hello | hello world');\n };\n\n _class.prototype['@test it does not resolve helpers with a `.` (period)'] = function testItDoesNotResolveHelpersWithAPeriod() {\n var _this4 = this;\n\n this.registerHelper('hello.world', function () {\n return 'hello world';\n });\n\n this.render('{{hello.world}}', {\n hello: {\n world: ''\n }\n });\n\n this.assertText('');\n\n this.assertStableRerender();\n\n this.assertText('');\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this4.context, 'hello', { world: 'hello world!' });\n });\n\n this.assertText('hello world!');\n\n this.runTask(function () {\n (0, _emberMetal.set)(_this4.context, 'hello', {\n world: ''\n });\n });\n\n this.assertText('');\n };\n\n _class.prototype['@test it can resolve custom class-based helpers with or without dashes'] = function testItCanResolveCustomClassBasedHelpersWithOrWithoutDashes() {\n var _this5 = this;\n\n this.registerHelper('hello', {\n compute: function () {\n return 'hello';\n }\n });\n\n this.registerHelper('hello-world', {\n compute: function () {\n return 'hello world';\n }\n });\n\n this.render('{{hello}} | {{hello-world}}');\n\n this.assertText('hello | hello world');\n\n this.runTask(function () {\n return _this5.rerender();\n });\n\n this.assertText('hello | hello world');\n };\n\n _class.prototype['@test throws if `this._super` is not called from `init`'] = function testThrowsIfThis_superIsNotCalledFromInit() {\n var _this6 = this;\n\n this.registerHelper('hello-world', {\n init: function () {}\n });\n\n expectAssertion(function () {\n _this6.render('{{hello-world}}');\n }, /You must call `this._super\\(...arguments\\);` when overriding `init` on a framework object. Please update .* to call `this._super\\(...arguments\\);` from `init`./);\n };\n\n _class.prototype['@test class-based helper can recompute a new value'] = function testClassBasedHelperCanRecomputeANewValue() {\n var _this7 = this;\n\n var destroyCount = 0;\n var computeCount = 0;\n var helper = void 0;\n\n this.registerHelper('hello-world', {\n init: function () {\n this._super.apply(this, arguments);\n helper = this;\n },\n compute: function () {\n return ++computeCount;\n },\n destroy: function () {\n destroyCount++;\n this._super();\n }\n });\n\n this.render('{{hello-world}}');\n\n this.assertText('1');\n\n this.runTask(function () {\n return _this7.rerender();\n });\n\n this.assertText('1');\n\n this.runTask(function () {\n return helper.recompute();\n });\n\n this.assertText('2');\n\n assert.strictEqual(destroyCount, 0, 'destroy is not called on recomputation');\n };\n\n _class.prototype['@test class-based helper with static arguments can recompute a new value'] = function testClassBasedHelperWithStaticArgumentsCanRecomputeANewValue() {\n var _this8 = this;\n\n var destroyCount = 0;\n var computeCount = 0;\n var helper = void 0;\n\n this.registerHelper('hello-world', {\n init: function () {\n this._super.apply(this, arguments);\n helper = this;\n },\n compute: function () {\n return ++computeCount;\n },\n destroy: function () {\n destroyCount++;\n this._super();\n }\n });\n\n this.render('{{hello-world \"whut\"}}');\n\n this.assertText('1');\n\n this.runTask(function () {\n return _this8.rerender();\n });\n\n this.assertText('1');\n\n this.runTask(function () {\n return helper.recompute();\n });\n\n this.assertText('2');\n\n assert.strictEqual(destroyCount, 0, 'destroy is not called on recomputation');\n };\n\n _class.prototype['@test helper params can be returned'] = function testHelperParamsCanBeReturned() {\n this.registerHelper('hello-world', function (values) {\n return values;\n });\n\n this.render('{{#each (hello-world model) as |item|}}({{item}}){{/each}}', {\n model: ['bob']\n });\n\n this.assertText('(bob)');\n };\n\n _class.prototype['@test helper hash can be returned'] = function testHelperHashCanBeReturned() {\n this.registerHelper('hello-world', function (_, hash) {\n return hash.model;\n });\n\n this.render('{{get (hello-world model=model) \\'name\\'}}', {\n model: { name: 'bob' }\n });\n\n this.assertText('bob');\n };\n\n _class.prototype['@test simple helper is called for param changes'] = function testSimpleHelperIsCalledForParamChanges() {\n var _this9 = this;\n\n var computeCount = 0;\n\n this.registerHelper('hello-world', function (_ref) {\n var value = _ref[0];\n\n computeCount++;\n return value + '-value';\n });\n\n this.render('{{hello-world model.name}}', {\n model: { name: 'bob' }\n });\n\n this.assertText('bob-value');\n\n assert.strictEqual(computeCount, 1, 'compute is called exactly 1 time');\n\n this.runTask(function () {\n return _this9.rerender();\n });\n\n this.assertText('bob-value');\n\n assert.strictEqual(computeCount, 1, 'compute is called exactly 1 time');\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this9.context, 'model.name', 'sal');\n });\n\n this.assertText('sal-value');\n\n assert.strictEqual(computeCount, 2, 'compute is called exactly 2 times');\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this9.context, 'model', { name: 'bob' });\n });\n\n this.assertText('bob-value');\n\n assert.strictEqual(computeCount, 3, 'compute is called exactly 3 times');\n };\n\n _class.prototype['@test class-based helper compute is called for param changes'] = function testClassBasedHelperComputeIsCalledForParamChanges() {\n var _this10 = this;\n\n var createCount = 0;\n var computeCount = 0;\n\n this.registerHelper('hello-world', {\n init: function () {\n this._super.apply(this, arguments);\n createCount++;\n },\n compute: function (_ref2) {\n var value = _ref2[0];\n\n computeCount++;\n return value + '-value';\n }\n });\n\n this.render('{{hello-world model.name}}', {\n model: { name: 'bob' }\n });\n\n this.assertText('bob-value');\n\n assert.strictEqual(computeCount, 1, 'compute is called exactly 1 time');\n\n this.runTask(function () {\n return _this10.rerender();\n });\n\n this.assertText('bob-value');\n\n assert.strictEqual(computeCount, 1, 'compute is called exactly 1 time');\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this10.context, 'model.name', 'sal');\n });\n\n this.assertText('sal-value');\n\n assert.strictEqual(computeCount, 2, 'compute is called exactly 2 times');\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this10.context, 'model', { name: 'bob' });\n });\n\n this.assertText('bob-value');\n\n assert.strictEqual(computeCount, 3, 'compute is called exactly 3 times');\n assert.strictEqual(createCount, 1, 'helper is only created once');\n };\n\n _class.prototype['@test simple helper receives params, hash'] = function testSimpleHelperReceivesParamsHash() {\n var _this11 = this;\n\n this.registerHelper('hello-world', function (_params, _hash) {\n return 'params: ' + JSON.stringify(_params) + ', hash: ' + JSON.stringify(_hash);\n });\n\n this.render('{{hello-world model.name \"rich\" first=model.age last=\"sam\"}}', {\n model: {\n name: 'bob',\n age: 42\n }\n });\n\n this.assertText('params: [\"bob\",\"rich\"], hash: {\"first\":42,\"last\":\"sam\"}');\n\n this.runTask(function () {\n return _this11.rerender();\n });\n\n this.assertText('params: [\"bob\",\"rich\"], hash: {\"first\":42,\"last\":\"sam\"}');\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this11.context, 'model.name', 'sal');\n });\n\n this.assertText('params: [\"sal\",\"rich\"], hash: {\"first\":42,\"last\":\"sam\"}');\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this11.context, 'model.age', 28);\n });\n\n this.assertText('params: [\"sal\",\"rich\"], hash: {\"first\":28,\"last\":\"sam\"}');\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this11.context, 'model', { name: 'bob', age: 42 });\n });\n\n this.assertText('params: [\"bob\",\"rich\"], hash: {\"first\":42,\"last\":\"sam\"}');\n };\n\n _class.prototype['@test class-based helper receives params, hash'] = function testClassBasedHelperReceivesParamsHash() {\n var _this12 = this;\n\n this.registerHelper('hello-world', {\n compute: function (_params, _hash) {\n return 'params: ' + JSON.stringify(_params) + ', hash: ' + JSON.stringify(_hash);\n }\n });\n\n this.render('{{hello-world model.name \"rich\" first=model.age last=\"sam\"}}', {\n model: {\n name: 'bob',\n age: 42\n }\n });\n\n this.assertText('params: [\"bob\",\"rich\"], hash: {\"first\":42,\"last\":\"sam\"}');\n\n this.runTask(function () {\n return _this12.rerender();\n });\n\n this.assertText('params: [\"bob\",\"rich\"], hash: {\"first\":42,\"last\":\"sam\"}');\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this12.context, 'model.name', 'sal');\n });\n\n this.assertText('params: [\"sal\",\"rich\"], hash: {\"first\":42,\"last\":\"sam\"}');\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this12.context, 'model.age', 28);\n });\n\n this.assertText('params: [\"sal\",\"rich\"], hash: {\"first\":28,\"last\":\"sam\"}');\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this12.context, 'model', { name: 'bob', age: 42 });\n });\n\n this.assertText('params: [\"bob\",\"rich\"], hash: {\"first\":42,\"last\":\"sam\"}');\n };\n\n _class.prototype['@test class-based helper usable in subexpressions'] = function testClassBasedHelperUsableInSubexpressions() {\n var _this13 = this;\n\n this.registerHelper('join-words', {\n compute: function (params) {\n return params.join(' ');\n }\n });\n\n this.render('{{join-words \"Who\"\\n (join-words \"overcomes\" \"by\")\\n model.reason\\n (join-words (join-words \"hath overcome but\" \"half\"))\\n (join-words \"his\" (join-words \"foe\"))}}', { model: { reason: 'force' } });\n\n this.assertText('Who overcomes by force hath overcome but half his foe');\n\n this.runTask(function () {\n return _this13.rerender();\n });\n\n this.assertText('Who overcomes by force hath overcome but half his foe');\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this13.context, 'model.reason', 'Nickleback');\n });\n\n this.assertText('Who overcomes by Nickleback hath overcome but half his foe');\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this13.context, 'model', { reason: 'force' });\n });\n\n this.assertText('Who overcomes by force hath overcome but half his foe');\n };\n\n _class.prototype['@test parameterless helper is usable in subexpressions'] = function testParameterlessHelperIsUsableInSubexpressions() {\n var _this14 = this;\n\n this.registerHelper('should-show', function () {\n return true;\n });\n\n this.render('{{#if (should-show)}}true{{/if}}');\n\n this.assertText('true');\n\n this.runTask(function () {\n return _this14.rerender();\n });\n\n this.assertText('true');\n };\n\n _class.prototype['@test parameterless helper is usable in attributes'] = function testParameterlessHelperIsUsableInAttributes() {\n var _this15 = this;\n\n this.registerHelper('foo-bar', function () {\n return 'baz';\n });\n\n this.render('<div data-foo-bar=\"{{foo-bar}}\"></div>');\n\n this.assertHTML('<div data-foo-bar=\"baz\"></div>');\n\n this.runTask(function () {\n return _this15.rerender();\n });\n\n this.assertHTML('<div data-foo-bar=\"baz\"></div>');\n };\n\n _class.prototype['@test simple helper not usable with a block'] = function testSimpleHelperNotUsableWithABlock() {\n var _this16 = this;\n\n this.registerHelper('some-helper', function () {});\n\n expectAssertion(function () {\n _this16.render('{{#some-helper}}{{/some-helper}}');\n }, /Helpers may not be used in the block form/);\n };\n\n _class.prototype['@test class-based helper not usable with a block'] = function testClassBasedHelperNotUsableWithABlock() {\n var _this17 = this;\n\n this.registerHelper('some-helper', {\n compute: function () {}\n });\n\n expectAssertion(function () {\n _this17.render('{{#some-helper}}{{/some-helper}}');\n }, /Helpers may not be used in the block form/);\n };\n\n _class.prototype['@test simple helper not usable within element'] = function testSimpleHelperNotUsableWithinElement() {\n var _this18 = this;\n\n this.registerHelper('some-helper', function () {});\n\n this.assert.throws(function () {\n _this18.render('<div {{some-helper}}></div>');\n }, /Compile Error some-helper is not a modifier: Helpers may not be used in the element form/);\n };\n\n _class.prototype['@test class-based helper not usable within element'] = function testClassBasedHelperNotUsableWithinElement() {\n var _this19 = this;\n\n this.registerHelper('some-helper', {\n compute: function () {}\n });\n\n this.assert.throws(function () {\n _this19.render('<div {{some-helper}}></div>');\n }, /Compile Error some-helper is not a modifier: Helpers may not be used in the element form/);\n };\n\n _class.prototype['@test class-based helper is torn down'] = function testClassBasedHelperIsTornDown() {\n var destroyCalled = 0;\n\n this.registerHelper('some-helper', {\n destroy: function () {\n destroyCalled++;\n this._super.apply(this, arguments);\n },\n compute: function () {\n return 'must define a compute';\n }\n });\n\n this.render('{{some-helper}}');\n\n (0, _internalTestHelpers.runDestroy)(this.component);\n\n assert.strictEqual(destroyCalled, 1, 'destroy called once');\n };\n\n _class.prototype['@test class-based helper used in subexpression can recompute'] = function testClassBasedHelperUsedInSubexpressionCanRecompute() {\n var _this20 = this;\n\n var helper = void 0;\n var phrase = 'overcomes by';\n\n this.registerHelper('dynamic-segment', {\n init: function () {\n this._super.apply(this, arguments);\n helper = this;\n },\n compute: function () {\n return phrase;\n }\n });\n\n this.registerHelper('join-words', {\n compute: function (params) {\n return params.join(' ');\n }\n });\n\n this.render('{{join-words \"Who\"\\n (dynamic-segment)\\n \"force\"\\n (join-words (join-words \"hath overcome but\" \"half\"))\\n (join-words \"his\" (join-words \"foe\"))}}');\n\n this.assertText('Who overcomes by force hath overcome but half his foe');\n\n this.runTask(function () {\n return _this20.rerender();\n });\n\n this.assertText('Who overcomes by force hath overcome but half his foe');\n\n phrase = 'believes his';\n\n this.runTask(function () {\n return helper.recompute();\n });\n\n this.assertText('Who believes his force hath overcome but half his foe');\n\n phrase = 'overcomes by';\n\n this.runTask(function () {\n return helper.recompute();\n });\n\n this.assertText('Who overcomes by force hath overcome but half his foe');\n };\n\n _class.prototype['@test class-based helper used in subexpression can recompute component'] = function testClassBasedHelperUsedInSubexpressionCanRecomputeComponent() {\n var _this21 = this;\n\n var helper = void 0;\n var phrase = 'overcomes by';\n\n this.registerHelper('dynamic-segment', {\n init: function () {\n this._super.apply(this, arguments);\n helper = this;\n },\n compute: function () {\n return phrase;\n }\n });\n\n this.registerHelper('join-words', {\n compute: function (params) {\n return params.join(' ');\n }\n });\n\n this.registerComponent('some-component', {\n template: '{{first}} {{second}} {{third}} {{fourth}} {{fifth}}'\n });\n\n this.render('{{some-component first=\"Who\"\\n second=(dynamic-segment)\\n third=\"force\"\\n fourth=(join-words (join-words \"hath overcome but\" \"half\"))\\n fifth=(join-words \"his\" (join-words \"foe\"))}}');\n\n this.assertText('Who overcomes by force hath overcome but half his foe');\n\n this.runTask(function () {\n return _this21.rerender();\n });\n\n this.assertText('Who overcomes by force hath overcome but half his foe');\n\n phrase = 'believes his';\n\n this.runTask(function () {\n return helper.recompute();\n });\n\n this.assertText('Who believes his force hath overcome but half his foe');\n\n phrase = 'overcomes by';\n\n this.runTask(function () {\n return helper.recompute();\n });\n\n this.assertText('Who overcomes by force hath overcome but half his foe');\n };\n\n _class.prototype['@test class-based helper used in subexpression is destroyed'] = function testClassBasedHelperUsedInSubexpressionIsDestroyed() {\n var destroyCount = 0;\n\n this.registerHelper('dynamic-segment', {\n phrase: 'overcomes by',\n init: function () {\n this._super.apply(this, arguments);\n },\n compute: function () {\n return this.phrase;\n },\n destroy: function () {\n destroyCount++;\n this._super.apply(this, arguments);\n }\n });\n\n this.registerHelper('join-words', {\n compute: function (params) {\n return params.join(' ');\n }\n });\n\n this.render('{{join-words \"Who\"\\n (dynamic-segment)\\n \"force\"\\n (join-words (join-words \"hath overcome but\" \"half\"))\\n (join-words \"his\" (join-words \"foe\"))}}');\n\n (0, _internalTestHelpers.runDestroy)(this.component);\n\n equal(destroyCount, 1, 'destroy is called after a view is destroyed');\n };\n\n _class.prototype['@test simple helper can be invoked manually via `owner.factoryFor(...).create().compute()'] = function testSimpleHelperCanBeInvokedManuallyViaOwnerFactoryForCreateCompute(assert) {\n this.registerHelper('some-helper', function () {\n assert.ok(true, 'some-helper helper invoked');\n return 'lolol';\n });\n\n var instance = this.owner.factoryFor('helper:some-helper').create();\n\n assert.equal(typeof instance.compute, 'function', 'expected instance.compute to be present');\n assert.equal(instance.compute(), 'lolol', 'can invoke `.compute`');\n };\n\n _class.prototype['@test class-based helper can be invoked manually via `owner.factoryFor(...).create().compute()'] = function testClassBasedHelperCanBeInvokedManuallyViaOwnerFactoryForCreateCompute() {\n this.registerHelper('some-helper', {\n compute: function () {\n assert.ok(true, 'some-helper helper invoked');\n return 'lolol';\n }\n });\n\n var instance = this.owner.factoryFor('helper:some-helper').create();\n\n assert.equal(typeof instance.compute, 'function', 'expected instance.compute to be present');\n assert.equal(instance.compute(), 'lolol', 'can invoke `.compute`');\n };\n\n return _class;\n }(_testCase.RenderingTest));\n\n // these feature detects prevent errors in these tests\n // on platforms (*cough* IE9 *cough*) that do not\n // property support `Object.freeze`\n var pushingIntoFrozenArrayThrows = function () {\n var array = [];\n Object.freeze(array);\n\n try {\n array.push('foo');\n\n return false;\n } catch (e) {\n return true;\n }\n }();\n\n var assigningExistingFrozenPropertyThrows = function () {\n var obj = { foo: 'asdf' };\n Object.freeze(obj);\n\n try {\n obj.foo = 'derp';\n\n return false;\n } catch (e) {\n return true;\n }\n }();\n\n var addingPropertyToFrozenObjectThrows = function () {\n var obj = { foo: 'asdf' };\n Object.freeze(obj);\n\n try {\n obj.bar = 'derp';\n\n return false;\n } catch (e) {\n return true;\n }\n }();\n\n if (!EmberDev.runningProdBuild && _emberUtils.HAS_NATIVE_WEAKMAP && (pushingIntoFrozenArrayThrows || assigningExistingFrozenPropertyThrows || addingPropertyToFrozenObjectThrows)) {\n var HelperMutatingArgsTests = function (_RenderingTest2) {\n (0, _emberBabel.inherits)(HelperMutatingArgsTests, _RenderingTest2);\n\n function HelperMutatingArgsTests() {\n (0, _emberBabel.classCallCheck)(this, HelperMutatingArgsTests);\n return (0, _emberBabel.possibleConstructorReturn)(this, _RenderingTest2.apply(this, arguments));\n }\n\n HelperMutatingArgsTests.prototype.buildCompute = function buildCompute() {\n var _this23 = this;\n\n return function (params, hash) {\n if (pushingIntoFrozenArrayThrows) {\n _this23.assert.throws(function () {\n params.push('foo');\n\n // cannot assert error message as it varies by platform\n });\n }\n\n if (assigningExistingFrozenPropertyThrows) {\n _this23.assert.throws(function () {\n hash.foo = 'bar';\n\n // cannot assert error message as it varies by platform\n });\n }\n\n if (addingPropertyToFrozenObjectThrows) {\n _this23.assert.throws(function () {\n hash.someUnusedHashProperty = 'bar';\n\n // cannot assert error message as it varies by platform\n });\n }\n };\n };\n\n HelperMutatingArgsTests.prototype['@test cannot mutate params - no positional specified / named specified'] = function testCannotMutateParamsNoPositionalSpecifiedNamedSpecified() {\n this.render('{{test-helper foo=bar}}', { bar: 'derp' });\n };\n\n HelperMutatingArgsTests.prototype['@test cannot mutate params - positional specified / no named specified'] = function testCannotMutateParamsPositionalSpecifiedNoNamedSpecified() {\n this.render('{{test-helper bar}}', { bar: 'derp' });\n };\n\n HelperMutatingArgsTests.prototype['@test cannot mutate params - positional specified / named specified'] = function testCannotMutateParamsPositionalSpecifiedNamedSpecified() {\n this.render('{{test-helper bar foo=qux}}', { bar: 'derp', qux: 'baz' });\n };\n\n HelperMutatingArgsTests.prototype['@test cannot mutate params - no positional specified / no named specified'] = function testCannotMutateParamsNoPositionalSpecifiedNoNamedSpecified() {\n this.render('{{test-helper}}', { bar: 'derp', qux: 'baz' });\n };\n\n return HelperMutatingArgsTests;\n }(_testCase.RenderingTest);\n\n (0, _testCase.moduleFor)('Helpers test: mutation triggers errors - class based helper', function (_HelperMutatingArgsTe) {\n (0, _emberBabel.inherits)(_class2, _HelperMutatingArgsTe);\n\n function _class2() {\n (0, _emberBabel.classCallCheck)(this, _class2);\n\n var _this24 = (0, _emberBabel.possibleConstructorReturn)(this, _HelperMutatingArgsTe.call(this));\n\n var compute = _this24.buildCompute();\n\n _this24.registerHelper('test-helper', {\n compute: compute\n });\n return _this24;\n }\n\n return _class2;\n }(HelperMutatingArgsTests));\n\n (0, _testCase.moduleFor)('Helpers test: mutation triggers errors - simple helper', function (_HelperMutatingArgsTe2) {\n (0, _emberBabel.inherits)(_class3, _HelperMutatingArgsTe2);\n\n function _class3() {\n (0, _emberBabel.classCallCheck)(this, _class3);\n\n var _this25 = (0, _emberBabel.possibleConstructorReturn)(this, _HelperMutatingArgsTe2.call(this));\n\n var compute = _this25.buildCompute();\n\n _this25.registerHelper('test-helper', compute);\n return _this25;\n }\n\n return _class3;\n }(HelperMutatingArgsTests));\n }\n});","QUnit.module('ESLint | ember-glimmer/tests/integration/helpers/custom-helper-test.js');\nQUnit.test('should pass ESLint', function(assert) {\n assert.expect(1);\n assert.ok(true, 'ember-glimmer/tests/integration/helpers/custom-helper-test.js should pass ESLint\\n\\n');\n});\n","enifed('ember-glimmer/tests/integration/helpers/element-action-test', ['ember-babel', 'ember-glimmer/tests/utils/test-case', 'ember-glimmer/tests/utils/abstract-test-case', 'ember-glimmer/tests/utils/helpers', 'ember-metal', 'ember/features', 'ember-runtime', 'ember-views'], function (_emberBabel, _testCase, _abstractTestCase, _helpers, _emberMetal, _features, _emberRuntime, _emberViews) {\n 'use strict';\n\n var _templateObject = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n {{#inner-component}}\\n <button {{action \"wat\"}}>Wat me!</button>\\n {{/inner-component}}\\n '], ['\\n {{#inner-component}}\\n <button {{action \"wat\"}}>Wat me!</button>\\n {{/inner-component}}\\n ']),\n _templateObject2 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n {{#target-component as |parent|}}\\n {{other-component anotherTarget=parent}}\\n {{/target-component}}\\n '], ['\\n {{#target-component as |parent|}}\\n {{other-component anotherTarget=parent}}\\n {{/target-component}}\\n ']),\n _templateObject3 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n {{#target-component as |aTarget|}}\\n <a id=\"edit\" href=\"#\" {{action \"edit\" this target=aTarget}}>click me</a>\\n {{/target-component}}\\n '], ['\\n {{#target-component as |aTarget|}}\\n <a id=\"edit\" href=\"#\" {{action \"edit\" this target=aTarget}}>click me</a>\\n {{/target-component}}\\n ']),\n _templateObject4 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n <a href=\"#\"\\n {{action \"clicked\" on=\"click\"}}\\n {{action \"doubleClicked\" on=\"doubleClick\"}}\\n >click me</a>'], ['\\n <a href=\"#\"\\n {{action \"clicked\" on=\"click\"}}\\n {{action \"doubleClicked\" on=\"doubleClick\"}}\\n >click me</a>']),\n _templateObject5 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n {{#middle-component}}\\n {{inner-component action=\"hey\"}}\\n {{/middle-component}}\\n '], ['\\n {{#middle-component}}\\n {{inner-component action=\"hey\"}}\\n {{/middle-component}}\\n ']),\n _templateObject6 = (0, _emberBabel.taggedTemplateLiteralLoose)(['\\n <button>Click Me</button>\\n {{yield}}\\n '], ['\\n <button>Click Me</button>\\n {{yield}}\\n ']);\n\n function getActionAttributes(element) {\n var attributes = element.attributes;\n var actionAttrs = [];\n\n for (var i = 0; i < attributes.length; i++) {\n var attr = attributes.item(i);\n\n if (attr.name.indexOf('data-ember-action-') === 0) {\n actionAttrs.push(attr.name);\n }\n }\n\n return actionAttrs;\n }\n\n function getActionIds(element) {\n return getActionAttributes(element).map(function (attribute) {\n return attribute.slice('data-ember-action-'.length);\n });\n }\n\n if (_features.EMBER_IMPROVED_INSTRUMENTATION) {\n (0, _testCase.moduleFor)('Helpers test: element action instrumentation', function (_RenderingTest) {\n (0, _emberBabel.inherits)(_class, _RenderingTest);\n\n function _class() {\n (0, _emberBabel.classCallCheck)(this, _class);\n return (0, _emberBabel.possibleConstructorReturn)(this, _RenderingTest.apply(this, arguments));\n }\n\n _class.prototype.teardown = function teardown() {\n _RenderingTest.prototype.teardown.call(this);\n (0, _emberMetal.instrumentationReset)();\n };\n\n _class.prototype['@test action should fire interaction event with proper params'] = function testActionShouldFireInteractionEventWithProperParams() {\n var _this2 = this;\n\n var subscriberCallCount = 0;\n var subscriberPayload = null;\n\n var ExampleComponent = _helpers.Component.extend({\n actions: {\n foo: function () {}\n }\n });\n\n this.registerComponent('example-component', {\n ComponentClass: ExampleComponent,\n template: '<button {{action \"foo\" \"bar\"}}>Click me</button>'\n });\n\n (0, _emberMetal.instrumentationSubscribe)('interaction.ember-action', {\n before: function () {\n subscriberCallCount++;\n },\n after: function (name, time, payload) {\n subscriberPayload = payload;\n }\n });\n\n this.render('{{example-component}}');\n\n this.assert.equal(subscriberCallCount, 0, 'subscriber has not been called');\n\n this.runTask(function () {\n return _this2.rerender();\n });\n\n this.assert.equal(subscriberCallCount, 0, 'subscriber has not been called');\n\n this.runTask(function () {\n _this2.$('button').click();\n });\n\n this.assert.equal(subscriberCallCount, 1, 'subscriber has been called 1 time');\n this.assert.equal(subscriberPayload.name, 'foo', 'subscriber called with correct name');\n this.assert.equal(subscriberPayload.args[0], 'bar', 'subscriber called with correct args');\n };\n\n return _class;\n }(_testCase.RenderingTest));\n }\n\n (0, _testCase.moduleFor)('Helpers test: element action', function (_RenderingTest2) {\n (0, _emberBabel.inherits)(_class2, _RenderingTest2);\n\n function _class2() {\n (0, _emberBabel.classCallCheck)(this, _class2);\n return (0, _emberBabel.possibleConstructorReturn)(this, _RenderingTest2.apply(this, arguments));\n }\n\n _class2.prototype['@test it can call an action on its enclosing component'] = function testItCanCallAnActionOnItsEnclosingComponent() {\n var _this4 = this;\n\n var fooCallCount = 0;\n\n var ExampleComponent = _helpers.Component.extend({\n actions: {\n foo: function () {\n fooCallCount++;\n }\n }\n });\n\n this.registerComponent('example-component', {\n ComponentClass: ExampleComponent,\n template: '<button {{action \"foo\"}}>Click me</button>'\n });\n\n this.render('{{example-component}}');\n\n this.assert.equal(fooCallCount, 0, 'foo has not been called');\n\n this.runTask(function () {\n return _this4.rerender();\n });\n\n this.assert.equal(fooCallCount, 0, 'foo has not been called');\n\n this.runTask(function () {\n _this4.$('button').click();\n });\n\n this.assert.equal(fooCallCount, 1, 'foo has been called 1 time');\n\n this.runTask(function () {\n _this4.$('button').click();\n });\n\n this.assert.equal(fooCallCount, 2, 'foo has been called 2 times');\n };\n\n _class2.prototype['@test it can call an action with parameters'] = function testItCanCallAnActionWithParameters() {\n var _this5 = this;\n\n var fooArgs = [];\n var component = void 0;\n\n var ExampleComponent = _helpers.Component.extend({\n member: 'a',\n init: function () {\n this._super.apply(this, arguments);\n component = this;\n },\n\n actions: {\n foo: function (thing) {\n fooArgs.push(thing);\n }\n }\n });\n\n this.registerComponent('example-component', {\n ComponentClass: ExampleComponent,\n template: '<button {{action \"foo\" member}}>Click me</button>'\n });\n\n this.render('{{example-component}}');\n\n this.assert.deepEqual(fooArgs, [], 'foo has not been called');\n\n this.runTask(function () {\n return _this5.rerender();\n });\n\n this.assert.deepEqual(fooArgs, [], 'foo has not been called');\n\n this.runTask(function () {\n _this5.$('button').click();\n });\n\n this.assert.deepEqual(fooArgs, ['a'], 'foo has not been called');\n\n this.runTask(function () {\n component.set('member', 'b');\n });\n\n this.runTask(function () {\n _this5.$('button').click();\n });\n\n this.assert.deepEqual(fooArgs, ['a', 'b'], 'foo has been called with an updated value');\n };\n\n _class2.prototype['@test it should output a marker attribute with a guid'] = function testItShouldOutputAMarkerAttributeWithAGuid() {\n this.render('<button {{action \"show\"}}>me the money</button>');\n\n var button = this.$('button');\n\n var attributes = getActionAttributes(button.get(0));\n\n this.assert.ok(button.attr('data-ember-action').match(''), 'An empty data-ember-action attribute was added');\n this.assert.ok(attributes[0].match(/data-ember-action-\\d+/), 'A data-ember-action-xyz attribute with a guid was added');\n };\n\n _class2.prototype['@test it should allow alternative events to be handled'] = function testItShouldAllowAlternativeEventsToBeHandled() {\n var _this6 = this;\n\n var showCalled = false;\n\n var ExampleComponent = _helpers.Component.extend({\n actions: {\n show: function () {\n showCalled = true;\n }\n }\n });\n\n this.registerComponent('example-component', {\n ComponentClass: ExampleComponent,\n template: '<div id=\"show\" {{action \"show\" on=\"mouseUp\"}}></div>'\n });\n\n this.render('{{example-component}}');\n\n this.runTask(function () {\n var event = _emberViews.jQuery.Event('mouseup');\n _this6.$('#show').trigger(event);\n });\n\n this.assert.ok(showCalled, 'show action was called on mouseUp');\n };\n\n _class2.prototype['@test inside a yield, the target points at the original target'] = function testInsideAYieldTheTargetPointsAtTheOriginalTarget() {\n var _this7 = this;\n\n var targetWatted = false;\n var innerWatted = false;\n\n var TargetComponent = _helpers.Component.extend({\n actions: {\n wat: function () {\n targetWatted = true;\n }\n }\n });\n\n var InnerComponent = _helpers.Component.extend({\n actions: {\n wat: function () {\n innerWatted = true;\n }\n }\n });\n\n this.registerComponent('inner-component', {\n ComponentClass: InnerComponent,\n template: '{{yield}}'\n });\n\n this.registerComponent('target-component', {\n ComponentClass: TargetComponent,\n template: (0, _abstractTestCase.strip)(_templateObject)\n });\n\n this.render('{{target-component}}');\n\n this.runTask(function () {\n _this7.$('button').click();\n });\n\n this.assert.ok(targetWatted, 'the correct target was watted');\n this.assert.notOk(innerWatted, 'the inner target was not watted');\n };\n\n _class2.prototype['@test it should allow a target to be specified'] = function testItShouldAllowATargetToBeSpecified() {\n var _this8 = this;\n\n var targetWatted = false;\n\n var TargetComponent = _helpers.Component.extend({\n actions: {\n wat: function () {\n targetWatted = true;\n }\n }\n });\n\n var OtherComponent = _helpers.Component.extend({});\n\n this.registerComponent('target-component', {\n ComponentClass: TargetComponent,\n template: '{{yield this}}'\n });\n\n this.registerComponent('other-component', {\n ComponentClass: OtherComponent,\n template: '<a {{action \"wat\" target=anotherTarget}}>Wat?</a>'\n });\n\n this.render((0, _abstractTestCase.strip)(_templateObject2));\n\n this.runTask(function () {\n _this8.$('a').click();\n });\n\n this.assert.equal(targetWatted, true, 'the specified target was watted');\n };\n\n _class2.prototype['@test it should lazily evaluate the target'] = function testItShouldLazilyEvaluateTheTarget() {\n var _this9 = this;\n\n var firstEdit = 0;\n var secondEdit = 0;\n var component = void 0;\n\n var first = {\n edit: function () {\n firstEdit++;\n }\n };\n\n var second = {\n edit: function () {\n secondEdit++;\n }\n };\n\n var ExampleComponent = _helpers.Component.extend({\n init: function () {\n this._super.apply(this, arguments);\n component = this;\n },\n\n theTarget: first\n });\n\n this.registerComponent('example-component', {\n ComponentClass: ExampleComponent,\n template: '<a {{action \"edit\" target=theTarget}}>Edit</a>'\n });\n\n this.render('{{example-component}}');\n\n this.runTask(function () {\n _this9.$('a').click();\n });\n\n this.assert.equal(firstEdit, 1);\n\n this.runTask(function () {\n (0, _emberMetal.set)(component, 'theTarget', second);\n });\n\n this.runTask(function () {\n _this9.$('a').click();\n });\n\n this.assert.equal(firstEdit, 1);\n this.assert.equal(secondEdit, 1);\n };\n\n _class2.prototype['@test it should register an event handler'] = function testItShouldRegisterAnEventHandler() {\n var _this10 = this;\n\n var editHandlerWasCalled = false;\n var shortcutHandlerWasCalled = false;\n\n var ExampleComponent = _helpers.Component.extend({\n actions: {\n edit: function () {\n editHandlerWasCalled = true;\n },\n shortcut: function () {\n shortcutHandlerWasCalled = true;\n }\n }\n });\n\n this.registerComponent('example-component', {\n ComponentClass: ExampleComponent,\n template: '<a href=\"#\" {{action \"edit\" allowedKeys=\"alt\"}}>click me</a> <div {{action \"shortcut\" allowedKeys=\"any\"}}>click me too</div>'\n });\n\n this.render('{{example-component}}');\n\n this.runTask(function () {\n var event = _emberViews.jQuery.Event('click');\n event.altKey = true;\n _this10.$('a[data-ember-action]').trigger(event);\n });\n\n this.assert.equal(editHandlerWasCalled, true, 'the event handler was called');\n\n this.runTask(function () {\n var event = _emberViews.jQuery.Event('click');\n event.ctrlKey = true;\n _this10.$('div[data-ember-action]').trigger(event);\n });\n\n this.assert.equal(shortcutHandlerWasCalled, true, 'the \"any\" shortcut\\'s event handler was called');\n };\n\n _class2.prototype['@test it handles whitelisted bound modifier keys'] = function testItHandlesWhitelistedBoundModifierKeys() {\n var _this11 = this;\n\n var editHandlerWasCalled = false;\n var shortcutHandlerWasCalled = false;\n\n var ExampleComponent = _helpers.Component.extend({\n altKey: 'alt',\n anyKey: 'any',\n actions: {\n edit: function () {\n editHandlerWasCalled = true;\n },\n shortcut: function () {\n shortcutHandlerWasCalled = true;\n }\n }\n });\n\n this.registerComponent('example-component', {\n ComponentClass: ExampleComponent,\n template: '<a href=\"#\" {{action \"edit\" allowedKeys=altKey}}>click me</a> <div {{action \"shortcut\" allowedKeys=anyKey}}>click me too</div>'\n });\n\n this.render('{{example-component}}');\n\n this.runTask(function () {\n var event = _emberViews.jQuery.Event('click');\n event.altKey = true;\n _this11.$('a[data-ember-action]').trigger(event);\n });\n\n this.assert.equal(editHandlerWasCalled, true, 'the event handler was called');\n\n this.runTask(function () {\n var event = _emberViews.jQuery.Event('click');\n event.ctrlKey = true;\n _this11.$('div[data-ember-action]').trigger(event);\n });\n\n this.assert.equal(shortcutHandlerWasCalled, true, 'the \"any\" shortcut\\'s event handler was called');\n };\n\n _class2.prototype['@test it handles whitelisted bound modifier keys with current value'] = function testItHandlesWhitelistedBoundModifierKeysWithCurrentValue() {\n var _this12 = this;\n\n var editHandlerWasCalled = false;\n var component = void 0;\n\n var ExampleComponent = _helpers.Component.extend({\n init: function () {\n this._super.apply(this, arguments);\n component = this;\n },\n\n acceptedKeys: 'alt',\n actions: {\n edit: function () {\n editHandlerWasCalled = true;\n }\n }\n });\n\n this.registerComponent('example-component', {\n ComponentClass: ExampleComponent,\n template: '<a href=\"#\" {{action \"edit\" allowedKeys=acceptedKeys}}>click me</a>'\n });\n\n this.render('{{example-component}}');\n\n this.runTask(function () {\n var event = _emberViews.jQuery.Event('click');\n event.altKey = true;\n _this12.$('a[data-ember-action]').trigger(event);\n });\n\n this.assert.equal(editHandlerWasCalled, true, 'the event handler was called');\n\n editHandlerWasCalled = false;\n\n this.runTask(function () {\n component.set('acceptedKeys', '');\n });\n\n this.runTask(function () {\n var event = _emberViews.jQuery.Event('click');\n _this12.$('div[data-ember-action]').trigger(event);\n });\n\n this.assert.equal(editHandlerWasCalled, false, 'the event handler was not called');\n };\n\n _class2.prototype['@test should be able to use action more than once for the same event within a view'] = function testShouldBeAbleToUseActionMoreThanOnceForTheSameEventWithinAView() {\n var _this13 = this;\n\n var editHandlerWasCalled = false;\n var deleteHandlerWasCalled = false;\n var originalHandlerWasCalled = false;\n var component = void 0;\n\n var ExampleComponent = _helpers.Component.extend({\n init: function () {\n this._super.apply(this, arguments);\n component = this;\n },\n\n actions: {\n edit: function () {\n editHandlerWasCalled = true;\n },\n 'delete': function () {\n deleteHandlerWasCalled = true;\n }\n },\n click: function () {\n originalHandlerWasCalled = true;\n }\n });\n\n this.registerComponent('example-component', {\n ComponentClass: ExampleComponent,\n template: '<a id=\"edit\" href=\"#\" {{action \"edit\"}}>edit</a><a id=\"delete\" href=\"#\" {{action \"delete\"}}>delete</a>'\n });\n\n this.render('{{example-component}}');\n\n this.runTask(function () {\n _this13.$('#edit').click();\n });\n\n this.assert.equal(editHandlerWasCalled, true, 'the edit action was called');\n this.assert.equal(deleteHandlerWasCalled, false, 'the delete action was not called');\n this.assert.equal(originalHandlerWasCalled, true, 'the click handler was called (due to bubbling)');\n\n editHandlerWasCalled = deleteHandlerWasCalled = originalHandlerWasCalled = false;\n\n this.runTask(function () {\n _this13.$('#delete').click();\n });\n\n this.assert.equal(editHandlerWasCalled, false, 'the edit action was not called');\n this.assert.equal(deleteHandlerWasCalled, true, 'the delete action was called');\n this.assert.equal(originalHandlerWasCalled, true, 'the click handler was called (due to bubbling)');\n\n editHandlerWasCalled = deleteHandlerWasCalled = originalHandlerWasCalled = false;\n\n this.runTask(function () {\n component.$().click();\n });\n\n this.assert.equal(editHandlerWasCalled, false, 'the edit action was not called');\n this.assert.equal(deleteHandlerWasCalled, false, 'the delete action was not called');\n this.assert.equal(originalHandlerWasCalled, true, 'the click handler was called');\n };\n\n _class2.prototype['@test the event should not bubble if `bubbles=false` is passed'] = function testTheEventShouldNotBubbleIfBubblesFalseIsPassed() {\n var _this14 = this;\n\n var editHandlerWasCalled = false;\n var deleteHandlerWasCalled = false;\n var originalHandlerWasCalled = false;\n var component = void 0;\n\n var ExampleComponent = _helpers.Component.extend({\n init: function () {\n this._super.apply(this, arguments);\n component = this;\n },\n\n actions: {\n edit: function () {\n editHandlerWasCalled = true;\n },\n 'delete': function () {\n deleteHandlerWasCalled = true;\n }\n },\n click: function () {\n originalHandlerWasCalled = true;\n }\n });\n\n this.registerComponent('example-component', {\n ComponentClass: ExampleComponent,\n template: '<a id=\"edit\" href=\"#\" {{action \"edit\" bubbles=false}}>edit</a><a id=\"delete\" href=\"#\" {{action \"delete\" bubbles=false}}>delete</a>'\n });\n\n this.render('{{example-component}}');\n\n this.runTask(function () {\n _this14.$('#edit').click();\n });\n\n this.assert.equal(editHandlerWasCalled, true, 'the edit action was called');\n this.assert.equal(deleteHandlerWasCalled, false, 'the delete action was not called');\n this.assert.equal(originalHandlerWasCalled, false, 'the click handler was not called');\n\n editHandlerWasCalled = deleteHandlerWasCalled = originalHandlerWasCalled = false;\n\n this.runTask(function () {\n _this14.$('#delete').click();\n });\n\n this.assert.equal(editHandlerWasCalled, false, 'the edit action was not called');\n this.assert.equal(deleteHandlerWasCalled, true, 'the delete action was called');\n this.assert.equal(originalHandlerWasCalled, false, 'the click handler was not called');\n\n editHandlerWasCalled = deleteHandlerWasCalled = originalHandlerWasCalled = false;\n\n this.runTask(function () {\n component.$().click();\n });\n\n this.assert.equal(editHandlerWasCalled, false, 'the edit action was not called');\n this.assert.equal(deleteHandlerWasCalled, false, 'the delete action was not called');\n this.assert.equal(originalHandlerWasCalled, true, 'the click handler was called');\n };\n\n _class2.prototype['@test the event should not bubble if `bubbles=false` is passed bound'] = function testTheEventShouldNotBubbleIfBubblesFalseIsPassedBound() {\n var _this15 = this;\n\n var editHandlerWasCalled = false;\n var deleteHandlerWasCalled = false;\n var originalHandlerWasCalled = false;\n var component = void 0;\n\n var ExampleComponent = _helpers.Component.extend({\n init: function () {\n this._super.apply(this, arguments);\n component = this;\n },\n\n isFalse: false,\n actions: {\n edit: function () {\n editHandlerWasCalled = true;\n },\n 'delete': function () {\n deleteHandlerWasCalled = true;\n }\n },\n click: function () {\n originalHandlerWasCalled = true;\n }\n });\n\n this.registerComponent('example-component', {\n ComponentClass: ExampleComponent,\n template: '<a id=\"edit\" href=\"#\" {{action \"edit\" bubbles=isFalse}}>edit</a><a id=\"delete\" href=\"#\" {{action \"delete\" bubbles=isFalse}}>delete</a>'\n });\n\n this.render('{{example-component}}');\n\n this.runTask(function () {\n _this15.$('#edit').click();\n });\n\n this.assert.equal(editHandlerWasCalled, true, 'the edit action was called');\n this.assert.equal(deleteHandlerWasCalled, false, 'the delete action was not called');\n this.assert.equal(originalHandlerWasCalled, false, 'the click handler was not called');\n\n editHandlerWasCalled = deleteHandlerWasCalled = originalHandlerWasCalled = false;\n\n this.runTask(function () {\n _this15.$('#delete').click();\n });\n\n this.assert.equal(editHandlerWasCalled, false, 'the edit action was not called');\n this.assert.equal(deleteHandlerWasCalled, true, 'the delete action was called');\n this.assert.equal(originalHandlerWasCalled, false, 'the click handler was not called');\n\n editHandlerWasCalled = deleteHandlerWasCalled = originalHandlerWasCalled = false;\n\n this.runTask(function () {\n component.$().click();\n });\n\n this.assert.equal(editHandlerWasCalled, false, 'the edit action was not called');\n this.assert.equal(deleteHandlerWasCalled, false, 'the delete action was not called');\n this.assert.equal(originalHandlerWasCalled, true, 'the click handler was called');\n };\n\n _class2.prototype['@test the bubbling depends on the bound parameter'] = function testTheBubblingDependsOnTheBoundParameter() {\n var _this16 = this;\n\n var editHandlerWasCalled = false;\n var originalHandlerWasCalled = false;\n var component = void 0;\n\n var ExampleComponent = _helpers.Component.extend({\n init: function () {\n this._super.apply(this, arguments);\n component = this;\n },\n\n shouldBubble: false,\n actions: {\n edit: function () {\n editHandlerWasCalled = true;\n }\n },\n click: function () {\n originalHandlerWasCalled = true;\n }\n });\n\n this.registerComponent('example-component', {\n ComponentClass: ExampleComponent,\n template: '<a id=\"edit\" href=\"#\" {{action \"edit\" bubbles=shouldBubble}}>edit</a>'\n });\n\n this.render('{{example-component}}');\n\n this.runTask(function () {\n _this16.$('#edit').click();\n });\n\n this.assert.equal(editHandlerWasCalled, true, 'the edit action was called');\n this.assert.equal(originalHandlerWasCalled, false, 'the click handler was not called');\n\n editHandlerWasCalled = originalHandlerWasCalled = false;\n\n this.runTask(function () {\n component.set('shouldBubble', true);\n });\n\n this.runTask(function () {\n _this16.$('#edit').click();\n });\n\n this.assert.equal(editHandlerWasCalled, true, 'the edit action was called');\n this.assert.equal(originalHandlerWasCalled, true, 'the click handler was called');\n };\n\n _class2.prototype['@test it should work properly in an #each block'] = function testItShouldWorkProperlyInAnEachBlock() {\n var _this17 = this;\n\n var editHandlerWasCalled = false;\n\n var ExampleComponent = _helpers.Component.extend({\n items: (0, _emberRuntime.A)([1, 2, 3, 4]),\n actions: {\n edit: function () {\n editHandlerWasCalled = true;\n }\n }\n });\n\n this.registerComponent('example-component', {\n ComponentClass: ExampleComponent,\n template: '{{#each items as |item|}}<a href=\"#\" {{action \"edit\"}}>click me</a>{{/each}}'\n });\n\n this.render('{{example-component}}');\n\n this.runTask(function () {\n _this17.$('a').click();\n });\n\n this.assert.equal(editHandlerWasCalled, true, 'the event handler was called');\n };\n\n _class2.prototype['@test it should work properly in a {{#with foo as |bar|}} block'] = function testItShouldWorkProperlyInAWithFooAsBarBlock() {\n var _this18 = this;\n\n var editHandlerWasCalled = false;\n\n var ExampleComponent = _helpers.Component.extend({\n something: { ohai: 'there' },\n actions: {\n edit: function () {\n editHandlerWasCalled = true;\n }\n }\n });\n\n this.registerComponent('example-component', {\n ComponentClass: ExampleComponent,\n template: '{{#with something as |somethingElse|}}<a href=\"#\" {{action \"edit\"}}>click me</a>{{/with}}'\n });\n\n this.render('{{example-component}}');\n\n this.runTask(function () {\n _this18.$('a').click();\n });\n\n this.assert.equal(editHandlerWasCalled, true, 'the event handler was called');\n };\n\n _class2.prototype['@test it should unregister event handlers when an element action is removed'] = function testItShouldUnregisterEventHandlersWhenAnElementActionIsRemoved() {\n var _this19 = this;\n\n var ExampleComponent = _helpers.Component.extend({\n actions: {\n edit: function () {}\n }\n });\n\n this.registerComponent('example-component', {\n ComponentClass: ExampleComponent,\n template: '{{#if isActive}}<a href=\"#\" {{action \"edit\"}}>click me</a>{{/if}}'\n });\n\n this.render('{{example-component isActive=isActive}}', { isActive: true });\n\n equal(this.$('a[data-ember-action]').length, 1, 'The element is rendered');\n\n var actionId = void 0;\n\n actionId = getActionIds(this.$('a[data-ember-action]').get(0))[0];\n\n ok(_emberViews.ActionManager.registeredActions[actionId], 'An action is registered');\n\n this.runTask(function () {\n return _this19.rerender();\n });\n\n equal(this.$('a[data-ember-action]').length, 1, 'The element is still present');\n\n ok(_emberViews.ActionManager.registeredActions[actionId], 'The action is still registered');\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this19.context, 'isActive', false);\n });\n\n strictEqual(this.$('a[data-ember-action]').length, 0, 'The element is removed');\n\n ok(!_emberViews.ActionManager.registeredActions[actionId], 'The action is unregistered');\n\n this.runTask(function () {\n return (0, _emberMetal.set)(_this19.context, 'isActive', true);\n });\n\n equal(this.$('a[data-ember-action]').length, 1, 'The element is rendered');\n\n actionId = getActionIds(this.$('a[data-ember-action]').get(0))[0];\n\n ok(_emberViews.ActionManager.registeredActions[actionId], 'A new action is registered');\n };\n\n _class2.prototype['@test it should capture events from child elements and allow them to trigger the action'] = function testItShouldCaptureEventsFromChildElementsAndAllowThemToTriggerTheAction() {\n var _this20 = this;\n\n var editHandlerWasCalled = false;\n\n var ExampleComponent = _helpers.Component.extend({\n actions: {\n edit: function () {\n editHandlerWasCalled = true;\n }\n }\n });\n\n this.registerComponent('example-component', {\n ComponentClass: ExampleComponent,\n template: '<div {{action \"edit\"}}><button>click me</button></div>'\n });\n\n this.render('{{example-component}}');\n\n this.runTask(function () {\n _this20.$('button').click();\n });\n\n this.assert.ok(editHandlerWasCalled, 'event on a child target triggered the action of its parent');\n };\n\n _class2.prototype['@test it should allow bubbling of events from action helper to original parent event'] = function testItShouldAllowBubblingOfEventsFromActionHelperToOriginalParentEvent() {\n var _this21 = this;\n\n var editHandlerWasCalled = false;\n var originalHandlerWasCalled = false;\n\n var ExampleComponent = _helpers.Component.extend({\n actions: {\n edit: function () {\n editHandlerWasCalled = true;\n }\n },\n click: function () {\n originalHandlerWasCalled = true;\n }\n });\n\n this.registerComponent('example-component', {\n ComponentClass: ExampleComponent,\n template: '<a href=\"#\" {{action \"edit\"}}>click me</a>'\n });\n\n this.render('{{example-component}}');\n\n this.runTask(function () {\n _this21.$('a').click();\n });\n\n this.assert.ok(editHandlerWasCalled && originalHandlerWasCalled, 'both event handlers were called');\n };\n\n _class2.prototype['@test it should not bubble an event from action helper to original parent event if `bubbles=false` is passed'] = function testItShouldNotBubbleAnEventFromActionHelperToOriginalParentEventIfBubblesFalseIsPassed() {\n var _this22 = this;\n\n var editHandlerWasCalled = false;\n var originalHandlerWasCalled = false;\n\n var ExampleComponent = _helpers.Component.extend({\n actions: {\n edit: function () {\n editHandlerWasCalled = true;\n }\n },\n click: function () {\n originalHandlerWasCalled = true;\n }\n });\n\n this.registerComponent('example-component', {\n ComponentClass: ExampleComponent,\n template: '<a href=\"#\" {{action \"edit\" bubbles=false}}>click me</a>'\n });\n\n this.render('{{example-component}}');\n\n this.runTask(function () {\n _this22.$('a').click();\n });\n\n this.assert.ok(editHandlerWasCalled, 'the child event handler was called');\n this.assert.notOk(originalHandlerWasCalled, 'the parent handler was not called');\n };\n\n _class2.prototype['@test it should allow \"send\" as the action name (#594)'] = function testItShouldAllowSendAsTheActionName594() {\n var _this23 = this;\n\n var sendHandlerWasCalled = false;\n\n var ExampleComponent = _helpers.Component.extend({\n actions: {\n send: function () {\n sendHandlerWasCalled = true;\n }\n }\n });\n\n this.registerComponent('example-component', {\n ComponentClass: ExampleComponent,\n template: '<a href=\"#\" {{action \"send\"}}>click me</a>'\n });\n\n this.render('{{example-component}}');\n\n this.runTask(function () {\n _this23.$('a').click();\n });\n\n this.assert.ok(sendHandlerWasCalled, 'the event handler was called');\n };\n\n _class2.prototype['@test it should send the view, event, and current context to the action'] = function testItShouldSendTheViewEventAndCurrentContextToTheAction() {\n var _this24 = this;\n\n var passedTarget = void 0;\n var passedContext = void 0;\n var targetThis = void 0;\n\n var TargetComponent = _helpers.Component.extend({\n init: function () {\n this._super.apply(this, arguments);\n targetThis = this;\n },\n\n actions: {\n edit: function (context) {\n passedTarget = this === targetThis;\n passedContext = context;\n }\n }\n });\n\n var aContext = void 0;\n\n var ExampleComponent = _helpers.Component.extend({\n init: function () {\n this._super.apply(this, arguments);\n aContext = this;\n }\n });\n\n this.registerComponent('target-component', {\n ComponentClass: TargetComponent,\n template: '{{yield this}}'\n });\n\n this.registerComponent('example-component', {\n ComponentClass: ExampleComponent,\n template: (0, _abstractTestCase.strip)(_templateObject3)\n });\n\n this.render('{{example-component}}');\n\n this.runTask(function () {\n _this24.$('#edit').click();\n });\n\n this.assert.ok(passedTarget, 'the action is called with the target as this');\n this.assert.strictEqual(passedContext, aContext, 'the parameter is passed along');\n };\n\n _class2.prototype['@test it should only trigger actions for the event they were registered on'] = function testItShouldOnlyTriggerActionsForTheEventTheyWereRegisteredOn() {\n var _this25 = this;\n\n var editHandlerWasCalled = false;\n\n var ExampleComponent = _helpers.Component.extend({\n actions: {\n edit: function () {\n editHandlerWasCalled = true;\n }\n }\n });\n\n this.registerComponent('example-component', {\n ComponentClass: ExampleComponent,\n template: '<a href=\"#\" {{action \"edit\"}}>click me</a>'\n });\n\n this.render('{{example-component}}');\n\n this.runTask(function () {\n _this25.$('a').click();\n });\n\n this.assert.ok(editHandlerWasCalled, 'the event handler was called on click');\n\n editHandlerWasCalled = false;\n\n this.runTask(function () {\n _this25.$('a').trigger('mouseover');\n });\n\n this.assert.notOk(editHandlerWasCalled, 'the event handler was not called on mouseover');\n };\n\n _class2.prototype['@test it should allow multiple contexts to be specified'] = function testItShouldAllowMultipleContextsToBeSpecified() {\n var _this26 = this;\n\n var passedContexts = void 0;\n var models = [_emberRuntime.Object.create(), _emberRuntime.Object.create()];\n\n var ExampleComponent = _helpers.Component.extend({\n modelA: models[0],\n modelB: models[1],\n actions: {\n edit: function () {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n passedCo