| 
									
										
										
										
											2015-05-27 09:53:37 -07:00
										 |  |  | import { | 
					
						
							|  |  |  |   describe, | 
					
						
							|  |  |  |   it, | 
					
						
							|  |  |  |   iit, | 
					
						
							|  |  |  |   ddescribe, | 
					
						
							|  |  |  |   expect, | 
					
						
							|  |  |  |   tick, | 
					
						
							|  |  |  |   SpyObject, | 
					
						
							|  |  |  |   beforeEach, | 
					
						
							|  |  |  |   proxy, | 
					
						
							|  |  |  |   containsRegexp | 
					
						
							|  |  |  | } from 'angular2/test_lib'; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-20 14:28:25 -07:00
										 |  |  | import {DOM} from 'angular2/src/core/dom/dom_adapter'; | 
					
						
							|  |  |  | import {MapWrapper} from 'angular2/src/core/facade/collection'; | 
					
						
							| 
									
										
										
										
											2015-08-26 11:41:41 -07:00
										 |  |  | import {RegExpWrapper} from 'angular2/src/core/facade/lang'; | 
					
						
							| 
									
										
										
										
											2014-10-29 14:26:52 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | class TestObj { | 
					
						
							| 
									
										
										
										
											2014-11-21 21:19:23 -08:00
										 |  |  |   prop; | 
					
						
							| 
									
										
										
										
											2015-05-27 09:53:37 -07:00
										 |  |  |   constructor(prop) { this.prop = prop; } | 
					
						
							|  |  |  |   someFunc(): number { return -1; } | 
					
						
							|  |  |  |   someComplexFunc(a) { return a; } | 
					
						
							| 
									
										
										
										
											2014-10-29 14:26:52 -04:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-04-14 13:26:42 -07:00
										 |  |  | class SpyTestObj extends SpyObject { | 
					
						
							| 
									
										
										
										
											2015-05-27 09:53:37 -07:00
										 |  |  |   constructor() { super(TestObj); } | 
					
						
							|  |  |  |   noSuchMethod(m) { return super.noSuchMethod(m) } | 
					
						
							| 
									
										
										
										
											2015-04-14 13:26:42 -07:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2014-11-25 15:16:53 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-04-24 15:19:11 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-10-29 14:26:52 -04:00
										 |  |  | export function main() { | 
					
						
							| 
									
										
										
										
											2014-11-17 17:39:39 -08:00
										 |  |  |   describe('test_lib', () => { | 
					
						
							|  |  |  |     describe('equality', () => { | 
					
						
							|  |  |  |       it('should structurally compare objects', () => { | 
					
						
							| 
									
										
										
										
											2015-05-27 09:53:37 -07:00
										 |  |  |         var expected = new TestObj(new TestObj({'one': [1, 2]})); | 
					
						
							|  |  |  |         var actual = new TestObj(new TestObj({'one': [1, 2]})); | 
					
						
							|  |  |  |         var falseActual = new TestObj(new TestObj({'one': [1, 3]})); | 
					
						
							| 
									
										
										
										
											2014-10-29 14:26:52 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |         expect(actual).toEqual(expected); | 
					
						
							|  |  |  |         expect(falseActual).not.toEqual(expected); | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  |     }); | 
					
						
							| 
									
										
										
										
											2014-11-17 17:39:39 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-07 16:45:26 -07:00
										 |  |  |     describe("toHaveCssClass", () => { | 
					
						
							|  |  |  |       it("should assert that the CSS class is present", () => { | 
					
						
							|  |  |  |         var el = DOM.createElement('div'); | 
					
						
							|  |  |  |         DOM.addClass(el, 'matias'); | 
					
						
							|  |  |  |         expect(el).toHaveCssClass('matias'); | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       it("should assert that the CSS class is not present", () => { | 
					
						
							|  |  |  |         var el = DOM.createElement('div'); | 
					
						
							|  |  |  |         DOM.addClass(el, 'matias'); | 
					
						
							|  |  |  |         expect(el).not.toHaveCssClass('fatias'); | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-11-17 17:39:39 -08:00
										 |  |  |     describe('toEqual for Maps', () => { | 
					
						
							|  |  |  |       it('should detect equality for same reference', () => { | 
					
						
							|  |  |  |         var m1 = MapWrapper.createFromStringMap({'a': 1}); | 
					
						
							|  |  |  |         expect(m1).toEqual(m1); | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       it('should detect equality for same content', () => { | 
					
						
							| 
									
										
										
										
											2015-05-27 09:53:37 -07:00
										 |  |  |         expect(MapWrapper.createFromStringMap({'a': 1})) | 
					
						
							|  |  |  |             .toEqual(MapWrapper.createFromStringMap({'a': 1})); | 
					
						
							| 
									
										
										
										
											2014-11-17 17:39:39 -08:00
										 |  |  |       }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       it('should detect missing entries', () => { | 
					
						
							| 
									
										
										
										
											2015-05-27 09:53:37 -07:00
										 |  |  |         expect(MapWrapper.createFromStringMap({'a': 1})) | 
					
						
							|  |  |  |             .not.toEqual(MapWrapper.createFromStringMap({})); | 
					
						
							| 
									
										
										
										
											2014-11-17 17:39:39 -08:00
										 |  |  |       }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       it('should detect different values', () => { | 
					
						
							| 
									
										
										
										
											2015-05-27 09:53:37 -07:00
										 |  |  |         expect(MapWrapper.createFromStringMap({'a': 1})) | 
					
						
							|  |  |  |             .not.toEqual(MapWrapper.createFromStringMap({'a': 2})); | 
					
						
							| 
									
										
										
										
											2014-11-17 17:39:39 -08:00
										 |  |  |       }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       it('should detect additional entries', () => { | 
					
						
							| 
									
										
										
										
											2015-05-27 09:53:37 -07:00
										 |  |  |         expect(MapWrapper.createFromStringMap({'a': 1})) | 
					
						
							|  |  |  |             .not.toEqual(MapWrapper.createFromStringMap({'a': 1, 'b': 1})); | 
					
						
							| 
									
										
										
										
											2014-11-17 17:39:39 -08:00
										 |  |  |       }); | 
					
						
							|  |  |  |     }); | 
					
						
							| 
									
										
										
										
											2014-11-25 15:16:53 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  |     describe("spy objects", () => { | 
					
						
							|  |  |  |       var spyObj; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-05-27 09:53:37 -07:00
										 |  |  |       beforeEach(() => { spyObj = <any>new SpyTestObj(); }); | 
					
						
							| 
									
										
										
										
											2014-11-25 15:16:53 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-05-27 09:53:37 -07:00
										 |  |  |       it("should return a new spy func with no calls", | 
					
						
							|  |  |  |          () => { expect(spyObj.spy("someFunc")).not.toHaveBeenCalled(); }); | 
					
						
							| 
									
										
										
										
											2014-11-25 15:16:53 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  |       it("should record function calls", () => { | 
					
						
							| 
									
										
										
										
											2015-05-27 09:53:37 -07:00
										 |  |  |         spyObj.spy("someFunc").andCallFake((a, b) => {return a + b}); | 
					
						
							| 
									
										
										
										
											2014-11-25 15:16:53 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-05-27 09:53:37 -07:00
										 |  |  |         expect(spyObj.someFunc(1, 2)).toEqual(3); | 
					
						
							|  |  |  |         expect(spyObj.spy("someFunc")).toHaveBeenCalledWith(1, 2); | 
					
						
							| 
									
										
										
										
											2014-11-25 15:16:53 -08:00
										 |  |  |       }); | 
					
						
							| 
									
										
										
										
											2015-04-14 13:26:42 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-04-23 09:13:42 -07:00
										 |  |  |       it("should match multiple function calls", () => { | 
					
						
							| 
									
										
										
										
											2015-05-27 09:53:37 -07:00
										 |  |  |         spyObj.someFunc(1, 2); | 
					
						
							|  |  |  |         spyObj.someFunc(3, 4); | 
					
						
							|  |  |  |         expect(spyObj.spy("someFunc")).toHaveBeenCalledWith(1, 2); | 
					
						
							|  |  |  |         expect(spyObj.spy("someFunc")).toHaveBeenCalledWith(3, 4); | 
					
						
							| 
									
										
										
										
											2015-04-23 09:13:42 -07:00
										 |  |  |       }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-05-07 17:18:42 -07:00
										 |  |  |       it("should match null arguments", () => { | 
					
						
							|  |  |  |         spyObj.someFunc(null, "hello"); | 
					
						
							| 
									
										
										
										
											2015-05-27 09:53:37 -07:00
										 |  |  |         expect(spyObj.spy("someFunc")).toHaveBeenCalledWith(null, "hello"); | 
					
						
							| 
									
										
										
										
											2015-05-07 17:18:42 -07:00
										 |  |  |       }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-04-23 09:13:42 -07:00
										 |  |  |       it("should match using deep equality", () => { | 
					
						
							|  |  |  |         spyObj.someComplexFunc([1]); | 
					
						
							|  |  |  |         expect(spyObj.spy("someComplexFunc")).toHaveBeenCalledWith([1]); | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-04-17 16:08:59 -07:00
										 |  |  |       it("should support stubs", () => { | 
					
						
							| 
									
										
										
										
											2015-05-27 09:53:37 -07:00
										 |  |  |         var s = SpyObject.stub({"a": 1}, {"b": 2}); | 
					
						
							| 
									
										
										
										
											2015-04-17 16:08:59 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  |         expect(s.a()).toEqual(1); | 
					
						
							|  |  |  |         expect(s.b()).toEqual(2); | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-05-27 09:53:37 -07:00
										 |  |  |       it('should create spys for all methods', | 
					
						
							|  |  |  |          () => { expect(() => spyObj.someFunc()).not.toThrow(); }); | 
					
						
							| 
									
										
										
										
											2015-04-14 13:26:42 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  |       it('should create a default spy that does not fail for numbers', () => { | 
					
						
							|  |  |  |         // Need to return null instead of undefined so that rtts assert does
 | 
					
						
							|  |  |  |         // not fail...
 | 
					
						
							|  |  |  |         expect(spyObj.someFunc()).toBe(null); | 
					
						
							|  |  |  |       }); | 
					
						
							| 
									
										
										
										
											2014-11-25 15:16:53 -08:00
										 |  |  |     }); | 
					
						
							| 
									
										
										
										
											2015-05-26 13:57:13 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  |     describe('containsRegexp', () => { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       it('should allow any prefix and suffix', () => { | 
					
						
							|  |  |  |         expect(RegExpWrapper.firstMatch(containsRegexp('b'), 'abc')).toBeTruthy(); | 
					
						
							|  |  |  |         expect(RegExpWrapper.firstMatch(containsRegexp('b'), 'adc')).toBeFalsy(); | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       it('should match various special characters', () => { | 
					
						
							|  |  |  |         expect(RegExpWrapper.firstMatch(containsRegexp('a.b'), 'a.b')).toBeTruthy(); | 
					
						
							|  |  |  |         expect(RegExpWrapper.firstMatch(containsRegexp('axb'), 'a.b')).toBeFalsy(); | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     }); | 
					
						
							| 
									
										
										
										
											2014-10-29 14:26:52 -04:00
										 |  |  |   }); | 
					
						
							| 
									
										
										
										
											2015-02-16 20:04:03 -08:00
										 |  |  | } |