From 91086b7a7588d5e27a6cfe808cc95bb26dcebb8c Mon Sep 17 00:00:00 2001 From: Chase McCarthy Date: Sat, 19 Mar 2016 12:56:12 -0400 Subject: [PATCH] [Glimmer2] Port `{{loc}}` helper test to `ember-glimmer` Also implements helper in Glimmer. Only tested initial render and no-op rerender because the helper does not accept any bound attributes. --- packages/ember-glimmer/lib/environment.js | 4 +- packages/ember-glimmer/lib/helpers/loc.js | 45 ++++++++++++++++ .../tests/integration/helpers/loc-test.js | 39 ++++++++++++++ packages/ember-htmlbars/lib/helpers/loc.js | 43 +-------------- .../ember-htmlbars/tests/helpers/loc_test.js | 53 ------------------- 5 files changed, 88 insertions(+), 96 deletions(-) create mode 100644 packages/ember-glimmer/lib/helpers/loc.js create mode 100644 packages/ember-glimmer/tests/integration/helpers/loc-test.js mode change 100644 => 120000 packages/ember-htmlbars/lib/helpers/loc.js delete mode 100644 packages/ember-htmlbars/tests/helpers/loc_test.js diff --git a/packages/ember-glimmer/lib/environment.js b/packages/ember-glimmer/lib/environment.js index 9212b8759ad..b8be4b219b5 100644 --- a/packages/ember-glimmer/lib/environment.js +++ b/packages/ember-glimmer/lib/environment.js @@ -19,12 +19,14 @@ import { } from './helpers/if-unless'; import { default as hash } from './helpers/hash'; +import { default as loc } from './helpers/loc'; const builtInHelpers = { concat, if: inlineIf, unless: inlineUnless, - hash + hash, + loc }; export default class extends Environment { diff --git a/packages/ember-glimmer/lib/helpers/loc.js b/packages/ember-glimmer/lib/helpers/loc.js new file mode 100644 index 00000000000..cca7230689a --- /dev/null +++ b/packages/ember-glimmer/lib/helpers/loc.js @@ -0,0 +1,45 @@ +import { helper } from '../helper'; +import { loc } from 'ember-runtime/system/string'; + +/** +@module ember +@submodule ember-templates +*/ + +/** + Calls [Ember.String.loc](/api/classes/Ember.String.html#method_loc) with the + provided string. This is a convenient way to localize text within a template. + For example: + + ```javascript + Ember.STRINGS = { + '_welcome_': 'Bonjour' + }; + ``` + + ```handlebars +
+ {{loc '_welcome_'}} +
+ ``` + + ```html +
+ Bonjour +
+ ``` + + See [Ember.String.loc](/api/classes/Ember.String.html#method_loc) for how to + set up localized string references. + + @method loc + @for Ember.Templates.helpers + @param {String} str The string to format. + @see {Ember.String#loc} + @public +*/ +function locHelper(params) { + return loc.apply(null, params); +} + +export default helper(locHelper); diff --git a/packages/ember-glimmer/tests/integration/helpers/loc-test.js b/packages/ember-glimmer/tests/integration/helpers/loc-test.js new file mode 100644 index 00000000000..acc599e07fd --- /dev/null +++ b/packages/ember-glimmer/tests/integration/helpers/loc-test.js @@ -0,0 +1,39 @@ +import { RenderingTest, moduleFor } from '../../utils/test-case'; +import Ember from 'ember-metal/core'; + +moduleFor('Helpers test: {{loc}}', class extends RenderingTest { + + constructor() { + super(); + this.oldString = Ember.STRINGS; + Ember.STRINGS = { + '_Howdy Friend': 'Hallo Freund' + }; + } + + teardown() { + Ember.STRINGS = this.oldString; + } + + ['@test it lets the original value through by default']() { + this.render(`{{loc "Hiya buddy!"}}`); + this.assertText('Hiya buddy!', 'the unlocalized string is correct'); + this.runTask(() => this.rerender()); + this.assertText('Hiya buddy!', 'the unlocalized string is correct after rerender'); + } + + ['@test it localizes a simple string']() { + this.render(`{{loc "_Howdy Friend"}}`); + this.assertText('Hallo Freund', 'the localized string is correct'); + this.runTask(() => this.rerender()); + this.assertText('Hallo Freund', 'the localized string is correct after rerender'); + } + + ['@test it takes passed formats into an account']() { + this.render(`{{loc "%@, %@" "Hello" "Mr. Pitkin"}}`); + this.assertText('Hello, Mr. Pitkin', 'the formatted string is correct'); + this.runTask(() => this.rerender()); + this.assertText('Hello, Mr. Pitkin', 'the formatted string is correct after rerender'); + } + +}); diff --git a/packages/ember-htmlbars/lib/helpers/loc.js b/packages/ember-htmlbars/lib/helpers/loc.js deleted file mode 100644 index 9436ed132c7..00000000000 --- a/packages/ember-htmlbars/lib/helpers/loc.js +++ /dev/null @@ -1,42 +0,0 @@ -import { loc } from 'ember-runtime/system/string'; - -/** -@module ember -@submodule ember-templates -*/ - -/** - Calls [Ember.String.loc](/api/classes/Ember.String.html#method_loc) with the - provided string. This is a convenient way to localize text within a template. - For example: - - ```javascript - Ember.STRINGS = { - '_welcome_': 'Bonjour' - }; - ``` - - ```handlebars -
- {{loc '_welcome_'}} -
- ``` - - ```html -
- Bonjour -
- ``` - - See [Ember.String.loc](/api/classes/Ember.String.html#method_loc) for how to - set up localized string references. - - @method loc - @for Ember.Templates.helpers - @param {String} str The string to format. - @see {Ember.String#loc} - @public -*/ -export default function locHelper(params) { - return loc.apply(null, params); -} diff --git a/packages/ember-htmlbars/lib/helpers/loc.js b/packages/ember-htmlbars/lib/helpers/loc.js new file mode 120000 index 00000000000..13019820b52 --- /dev/null +++ b/packages/ember-htmlbars/lib/helpers/loc.js @@ -0,0 +1 @@ +../../../ember-glimmer/lib/helpers/loc.js \ No newline at end of file diff --git a/packages/ember-htmlbars/tests/helpers/loc_test.js b/packages/ember-htmlbars/tests/helpers/loc_test.js deleted file mode 100644 index 37896396b79..00000000000 --- a/packages/ember-htmlbars/tests/helpers/loc_test.js +++ /dev/null @@ -1,53 +0,0 @@ -import Ember from 'ember-metal/core'; -import EmberView from 'ember-views/views/view'; -import compile from 'ember-template-compiler/system/compile'; -import { runAppend, runDestroy } from 'ember-runtime/tests/utils'; - -function buildView(template, context = {}) { - return EmberView.create({ - template: compile(template), - context - }); -} - -var oldString; - -QUnit.module('ember-htmlbars: {{#loc}} helper', { - setup() { - oldString = Ember.STRINGS; - Ember.STRINGS = { - '_Howdy Friend': 'Hallo Freund' - }; - }, - - teardown() { - Ember.STRINGS = oldString; - } -}); - -QUnit.test('let the original value through by default', function() { - var view = buildView('{{loc "Hiya buddy!"}}'); - runAppend(view); - - equal(view.$().text(), 'Hiya buddy!'); - - runDestroy(view); -}); - -QUnit.test('localize a simple string', function() { - var view = buildView('{{loc "_Howdy Friend"}}'); - runAppend(view); - - equal(view.$().text(), 'Hallo Freund'); - - runDestroy(view); -}); - -QUnit.test('localize takes passed formats into an account', function() { - var view = buildView('{{loc "%@, %@" "Hello" "Mr. Pitkin"}}'); - runAppend(view); - - equal(view.$().text(), 'Hello, Mr. Pitkin', 'the value of localizationKey is correct'); - - runDestroy(view); -});