aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorMisko Hevery2011-12-07 21:01:19 -0800
committerMisko Hevery2012-01-25 11:46:36 -0800
commit5001c1a1217772d2bffe108bafd475b24badf559 (patch)
tree8c16f111ae4bfcf4b098b14d395b327443917501 /test
parent0f6b2ef9823953533dd98849fc29c08e6a05c4a4 (diff)
downloadangular.js-5001c1a1217772d2bffe108bafd475b24badf559.tar.bz2
refactor($interpolate): improve interpolation service add documentation
Diffstat (limited to 'test')
-rw-r--r--test/markupSpec.js86
-rw-r--r--test/service/interpolateSpec.js92
2 files changed, 92 insertions, 86 deletions
diff --git a/test/markupSpec.js b/test/markupSpec.js
index e2e11f7f..0dcbbfe9 100644
--- a/test/markupSpec.js
+++ b/test/markupSpec.js
@@ -170,91 +170,5 @@ describe("markups", function() {
expect(sortedHtml(element)).toEqual('<div href="some" ng:bind-attr="{"href":"some"}"></div>');
dealoc(element);
}));
-
- it('should Parse Text With No Bindings', inject(function($rootScope, $compile) {
- var parts = parseBindings("a");
- expect(parts.length).toBe(1);
- expect(parts[0]).toBe("a");
- expect(binding(parts[0])).toBeFalsy();
- }));
-
- it('should Parse Empty Text', inject(function($rootScope, $compile) {
- var parts = parseBindings("");
- expect(parts.length).toBe(1);
- expect(parts[0]).toBe("");
- expect(binding(parts[0])).toBeFalsy();
- }));
-
- it('should Parse Inner Binding', inject(function($rootScope, $compile) {
- var parts = parseBindings("a{{b}}C");
- expect(parts.length).toBe(3);
- expect(parts[0]).toBe("a");
- expect(binding(parts[0])).toBeFalsy();
- expect(parts[1]).toBe("{{b}}");
- expect(binding(parts[1])).toBe("b");
- expect(parts[2]).toBe("C");
- expect(binding(parts[2])).toBeFalsy();
- }));
-
- it('should Parse Ending Binding', inject(function($rootScope, $compile) {
- var parts = parseBindings("a{{b}}");
- expect(parts.length).toBe(2);
- expect(parts[0]).toBe("a");
- expect(binding(parts[0])).toBeFalsy();
- expect(parts[1]).toBe("{{b}}");
- expect(binding(parts[1])).toBe("b");
- }));
-
- it('should Parse Begging Binding', inject(function($rootScope, $compile) {
- var parts = parseBindings("{{b}}c");
- expect(parts.length).toBe(2);
- expect(parts[0]).toBe("{{b}}");
- expect(binding(parts[0])).toBe("b");
- expect(parts[1]).toBe("c");
- expect(binding(parts[1])).toBeFalsy();
- }));
-
- it('should Parse Loan Binding', inject(function($rootScope, $compile) {
- var parts = parseBindings("{{b}}");
- expect(parts.length).toBe(1);
- expect(parts[0]).toBe("{{b}}");
- expect(binding(parts[0])).toBe("b");
- }));
-
- it('should Parse Two Bindings', inject(function($rootScope, $compile) {
- var parts = parseBindings("{{b}}{{c}}");
- expect(parts.length).toBe(2);
- expect(parts[0]).toBe("{{b}}");
- expect(binding(parts[0])).toBe("b");
- expect(parts[1]).toBe("{{c}}");
- expect(binding(parts[1])).toBe("c");
- }));
-
- it('should Parse Two Bindings With Text In Middle', inject(function($rootScope, $compile) {
- var parts = parseBindings("{{b}}x{{c}}");
- expect(parts.length).toBe(3);
- expect(parts[0]).toBe("{{b}}");
- expect(binding(parts[0])).toBe("b");
- expect(parts[1]).toBe("x");
- expect(binding(parts[1])).toBeFalsy();
- expect(parts[2]).toBe("{{c}}");
- expect(binding(parts[2])).toBe("c");
- }));
-
- it('should Parse Multiline', inject(function($rootScope, $compile) {
- var parts = parseBindings('"X\nY{{A\nB}}C\nD"');
- expect(binding('{{A\nB}}')).toBeTruthy();
- expect(parts.length).toBe(3);
- expect(parts[0]).toBe('"X\nY');
- expect(parts[1]).toBe('{{A\nB}}');
- expect(parts[2]).toBe('C\nD"');
- }));
-
- it('should Has Binding', inject(function($rootScope, $compile) {
- expect(hasBindings(parseBindings("{{a}}"))).toBe(true);
- expect(hasBindings(parseBindings("a"))).toBeFalsy();
- expect(hasBindings(parseBindings("{{b}}x{{c}}"))).toBe(true);
- }));
-
});
diff --git a/test/service/interpolateSpec.js b/test/service/interpolateSpec.js
index 8644ee0a..d5f251ea 100644
--- a/test/service/interpolateSpec.js
+++ b/test/service/interpolateSpec.js
@@ -13,9 +13,101 @@ describe('$interpolate', function() {
expect($interpolate('some text', true)).toBeUndefined();
}));
+ it('should suppress falsy objects', inject(function($interpolate) {
+ expect($interpolate('{{undefined}}')()).toEqual('');
+ expect($interpolate('{{null}}')()).toEqual('');
+ expect($interpolate('{{a.b}}')()).toEqual('');
+ }));
+
+ it('should jsonify objects', inject(function($interpolate) {
+ expect($interpolate('{{ {} }}')()).toEqual('{}');
+ expect($interpolate('{{ true }}')()).toEqual('true');
+ expect($interpolate('{{ false }}')()).toEqual('false');
+ }));
+
it('should return interpolation function', inject(function($interpolate, $rootScope) {
$rootScope.name = 'Misko';
expect($interpolate('Hello {{name}}!')($rootScope)).toEqual('Hello Misko!');
}));
+
+ describe('provider', function() {
+ beforeEach(module(function($interpolateProvider) {
+ $interpolateProvider.startSymbol('--');
+ $interpolateProvider.endSymbol('--');
+ }));
+
+ it('should not get confused with same markers', inject(function($interpolate) {
+ expect($interpolate('---').parts).toEqual(['---']);
+ expect($interpolate('----')()).toEqual('');
+ expect($interpolate('--1--')()).toEqual('1');
+ }));
+ });
+
+ describe('parseBindings', function() {
+ it('should Parse Text With No Bindings', inject(function($interpolate) {
+ var parts = $interpolate("a").parts;
+ expect(parts.length).toEqual(1);
+ expect(parts[0]).toEqual("a");
+ }));
+
+ it('should Parse Empty Text', inject(function($interpolate) {
+ var parts = $interpolate("").parts;
+ expect(parts.length).toEqual(1);
+ expect(parts[0]).toEqual("");
+ }));
+
+ it('should Parse Inner Binding', inject(function($interpolate) {
+ var parts = $interpolate("a{{b}}C").parts;
+ expect(parts.length).toEqual(3);
+ expect(parts[0]).toEqual("a");
+ expect(parts[1].exp).toEqual("b");
+ expect(parts[1]({b:123})).toEqual(123);
+ expect(parts[2]).toEqual("C");
+ }));
+
+ it('should Parse Ending Binding', inject(function($interpolate) {
+ var parts = $interpolate("a{{b}}").parts;
+ expect(parts.length).toEqual(2);
+ expect(parts[0]).toEqual("a");
+ expect(parts[1].exp).toEqual("b");
+ expect(parts[1]({b:123})).toEqual(123);
+ }));
+
+ it('should Parse Begging Binding', inject(function($interpolate) {
+ var parts = $interpolate("{{b}}c").parts;
+ expect(parts.length).toEqual(2);
+ expect(parts[0].exp).toEqual("b");
+ expect(parts[1]).toEqual("c");
+ }));
+
+ it('should Parse Loan Binding', inject(function($interpolate) {
+ var parts = $interpolate("{{b}}").parts;
+ expect(parts.length).toEqual(1);
+ expect(parts[0].exp).toEqual("b");
+ }));
+
+ it('should Parse Two Bindings', inject(function($interpolate) {
+ var parts = $interpolate("{{b}}{{c}}").parts;
+ expect(parts.length).toEqual(2);
+ expect(parts[0].exp).toEqual("b");
+ expect(parts[1].exp).toEqual("c");
+ }));
+
+ it('should Parse Two Bindings With Text In Middle', inject(function($interpolate) {
+ var parts = $interpolate("{{b}}x{{c}}").parts;
+ expect(parts.length).toEqual(3);
+ expect(parts[0].exp).toEqual("b");
+ expect(parts[1]).toEqual("x");
+ expect(parts[2].exp).toEqual("c");
+ }));
+
+ it('should Parse Multiline', inject(function($interpolate) {
+ var parts = $interpolate('"X\nY{{A\n+B}}C\nD"').parts;
+ expect(parts.length).toEqual(3);
+ expect(parts[0]).toEqual('"X\nY');
+ expect(parts[1].exp).toEqual('A\n+B');
+ expect(parts[2]).toEqual('C\nD"');
+ }));
+ });
});