summaryrefslogtreecommitdiff
path: root/dev/lib/handlebars/src/spec/index.strict.test.ts
diff options
context:
space:
mode:
Diffstat (limited to 'dev/lib/handlebars/src/spec/index.strict.test.ts')
-rw-r--r--dev/lib/handlebars/src/spec/index.strict.test.ts164
1 files changed, 0 insertions, 164 deletions
diff --git a/dev/lib/handlebars/src/spec/index.strict.test.ts b/dev/lib/handlebars/src/spec/index.strict.test.ts
deleted file mode 100644
index a8f294b9..00000000
--- a/dev/lib/handlebars/src/spec/index.strict.test.ts
+++ /dev/null
@@ -1,164 +0,0 @@
-/*
- * This file is forked from the handlebars project (https://github.com/handlebars-lang/handlebars.js),
- * and may include modifications made by Elasticsearch B.V.
- * Elasticsearch B.V. licenses this file to you under the MIT License.
- * See `packages/kbn-handlebars/LICENSE` for more information.
- */
-
-import { expectTemplate } from '../__jest__/test_bench';
-
-describe('strict', () => {
- describe('strict mode', () => {
- it('should error on missing property lookup', () => {
- expectTemplate('{{hello}}')
- .withCompileOptions({ strict: true })
- .toThrow(/"hello" not defined in/);
- });
-
- it('should error on missing child', () => {
- expectTemplate('{{hello.bar}}')
- .withCompileOptions({ strict: true })
- .withInput({ hello: { bar: 'foo' } })
- .toCompileTo('foo');
-
- expectTemplate('{{hello.bar}}')
- .withCompileOptions({ strict: true })
- .withInput({ hello: {} })
- .toThrow(/"bar" not defined in/);
- });
-
- it('should handle explicit undefined', () => {
- expectTemplate('{{hello.bar}}')
- .withCompileOptions({ strict: true })
- .withInput({ hello: { bar: undefined } })
- .toCompileTo('');
- });
-
- it('should error on missing property lookup in known helpers mode', () => {
- expectTemplate('{{hello}}')
- .withCompileOptions({
- strict: true,
- knownHelpersOnly: true,
- })
- .toThrow(/"hello" not defined in/);
- });
-
- it('should error on missing context', () => {
- expectTemplate('{{hello}}').withCompileOptions({ strict: true }).toThrow(Error);
- });
-
- it('should error on missing data lookup', () => {
- const xt = expectTemplate('{{@hello}}').withCompileOptions({
- strict: true,
- });
-
- xt.toThrow(Error);
-
- xt.withRuntimeOptions({ data: { hello: 'foo' } }).toCompileTo('foo');
- });
-
- it('should not run helperMissing for helper calls', () => {
- expectTemplate('{{hello foo}}')
- .withCompileOptions({ strict: true })
- .withInput({ foo: true })
- .toThrow(/"hello" not defined in/);
-
- expectTemplate('{{#hello foo}}{{/hello}}')
- .withCompileOptions({ strict: true })
- .withInput({ foo: true })
- .toThrow(/"hello" not defined in/);
- });
-
- it('should throw on ambiguous blocks', () => {
- expectTemplate('{{#hello}}{{/hello}}')
- .withCompileOptions({ strict: true })
- .toThrow(/"hello" not defined in/);
-
- expectTemplate('{{^hello}}{{/hello}}')
- .withCompileOptions({ strict: true })
- .toThrow(/"hello" not defined in/);
-
- expectTemplate('{{#hello.bar}}{{/hello.bar}}')
- .withCompileOptions({ strict: true })
- .withInput({ hello: {} })
- .toThrow(/"bar" not defined in/);
- });
-
- it('should allow undefined parameters when passed to helpers', () => {
- expectTemplate('{{#unless foo}}success{{/unless}}')
- .withCompileOptions({ strict: true })
- .toCompileTo('success');
- });
-
- it('should allow undefined hash when passed to helpers', () => {
- expectTemplate('{{helper value=@foo}}')
- .withCompileOptions({
- strict: true,
- })
- .withHelpers({
- helper(options) {
- expect('value' in options.hash).toEqual(true);
- expect(options.hash.value).toBeUndefined();
- return 'success';
- },
- })
- .toCompileTo('success');
- });
-
- it('should show error location on missing property lookup', () => {
- expectTemplate('\n\n\n {{hello}}')
- .withCompileOptions({ strict: true })
- .toThrow('"hello" not defined in [object Object] - 4:5');
- });
-
- it('should error contains correct location properties on missing property lookup', () => {
- try {
- expectTemplate('\n\n\n {{hello}}')
- .withCompileOptions({ strict: true })
- .toCompileTo('throw before asserting this');
- } catch (error) {
- expect(error.lineNumber).toEqual(4);
- expect(error.endLineNumber).toEqual(4);
- expect(error.column).toEqual(5);
- expect(error.endColumn).toEqual(10);
- }
- });
- });
-
- describe('assume objects', () => {
- it('should ignore missing property', () => {
- expectTemplate('{{hello}}').withCompileOptions({ assumeObjects: true }).toCompileTo('');
- });
-
- it('should ignore missing child', () => {
- expectTemplate('{{hello.bar}}')
- .withCompileOptions({ assumeObjects: true })
- .withInput({ hello: {} })
- .toCompileTo('');
- });
-
- it('should error on missing object', () => {
- expectTemplate('{{hello.bar}}').withCompileOptions({ assumeObjects: true }).toThrow(Error);
- });
-
- it('should error on missing context', () => {
- expectTemplate('{{hello}}')
- .withCompileOptions({ assumeObjects: true })
- .withInput(undefined)
- .toThrow(Error);
- });
-
- it('should error on missing data lookup', () => {
- expectTemplate('{{@hello.bar}}')
- .withCompileOptions({ assumeObjects: true })
- .withInput(undefined)
- .toThrow(Error);
- });
-
- it('should execute blockHelperMissing', () => {
- expectTemplate('{{^hello}}foo{{/hello}}')
- .withCompileOptions({ assumeObjects: true })
- .toCompileTo('foo');
- });
- });
-});