-
-
Notifications
You must be signed in to change notification settings - Fork 4.2k
/
bootstrap_test.js
130 lines (104 loc) · 4.72 KB
/
bootstrap_test.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
import { context } from 'ember-environment';
import run from 'ember-metal/run_loop';
import jQuery from 'ember-views/system/jquery';
import Component from 'ember-templates/component';
import { runDestroy } from 'ember-runtime/tests/utils';
import bootstrap from 'ember-templates/bootstrap';
import { setTemplates, get as getTemplate } from 'ember-templates/template_registry';
var trim = jQuery.trim;
var originalLookup = context.lookup;
var lookup, App, component;
function checkTemplate(templateName) {
run(function() {
bootstrap(jQuery('#qunit-fixture'));
});
var template = getTemplate(templateName);
ok(template, 'template is available on Ember.TEMPLATES');
equal(jQuery('#qunit-fixture script').length, 0, 'script removed');
var component = Component.create({
layout: template,
firstName: 'Tobias',
drug: 'teamocil'
});
run(function() {
component.createElement();
});
equal(trim(component.$().text()), 'Tobias takes teamocil', 'template works');
runDestroy(component);
}
import { test } from 'internal-test-helpers/tests/skip-if-glimmer';
QUnit.module('ember-htmlbars: bootstrap', {
setup() {
context.lookup = lookup = {};
},
teardown() {
setTemplates({});
context.lookup = originalLookup;
runDestroy(App);
runDestroy(component);
}
});
test('template with data-template-name should add a new template to Ember.TEMPLATES', function() {
jQuery('#qunit-fixture').html('<script type="text/x-handlebars" data-template-name="funkyTemplate">{{firstName}} takes {{drug}}</script>');
checkTemplate('funkyTemplate');
});
test('template with id instead of data-template-name should add a new template to Ember.TEMPLATES', function() {
jQuery('#qunit-fixture').html('<script type="text/x-handlebars" id="funkyTemplate" >{{firstName}} takes {{drug}}</script>');
checkTemplate('funkyTemplate');
});
test('template without data-template-name or id should default to application', function() {
jQuery('#qunit-fixture').html('<script type="text/x-handlebars">{{firstName}} takes {{drug}}</script>');
checkTemplate('application');
});
if (typeof Handlebars === 'object') {
QUnit.test('template with type text/x-raw-handlebars should be parsed', function() {
jQuery('#qunit-fixture').html('<script type="text/x-raw-handlebars" data-template-name="funkyTemplate">{{name}}</script>');
run(function() {
bootstrap(jQuery('#qunit-fixture'));
});
let template = getTemplate('funkyTemplate');
ok(template, 'template with name funkyTemplate available');
// This won't even work with Ember templates
equal(trim(template({ name: 'Tobias' })), 'Tobias');
});
}
QUnit.test('duplicated default application templates should throw exception', function() {
jQuery('#qunit-fixture').html('<script type="text/x-handlebars">first</script><script type="text/x-handlebars">second</script>');
throws(function () {
bootstrap(jQuery('#qunit-fixture'));
},
/Template named "[^"]+" already exists\./,
'duplicate templates should not be allowed');
});
QUnit.test('default application template and id application template present should throw exception', function() {
jQuery('#qunit-fixture').html('<script type="text/x-handlebars">first</script><script type="text/x-handlebars" id="application">second</script>');
throws(function () {
bootstrap(jQuery('#qunit-fixture'));
},
/Template named "[^"]+" already exists\./,
'duplicate templates should not be allowed');
});
QUnit.test('default application template and data-template-name application template present should throw exception', function() {
jQuery('#qunit-fixture').html('<script type="text/x-handlebars">first</script><script type="text/x-handlebars" data-template-name="application">second</script>');
throws(function () {
bootstrap(jQuery('#qunit-fixture'));
},
/Template named "[^"]+" already exists\./,
'duplicate templates should not be allowed');
});
QUnit.test('duplicated template id should throw exception', function() {
jQuery('#qunit-fixture').html('<script type="text/x-handlebars" id="funkyTemplate">first</script><script type="text/x-handlebars" id="funkyTemplate">second</script>');
throws(function () {
bootstrap(jQuery('#qunit-fixture'));
},
/Template named "[^"]+" already exists\./,
'duplicate templates should not be allowed');
});
QUnit.test('duplicated template data-template-name should throw exception', function() {
jQuery('#qunit-fixture').html('<script type="text/x-handlebars" data-template-name="funkyTemplate">first</script><script type="text/x-handlebars" data-template-name="funkyTemplate">second</script>');
throws(function () {
bootstrap(jQuery('#qunit-fixture'));
},
/Template named "[^"]+" already exists\./,
'duplicate templates should not be allowed');
});