geo_coder_spec.js 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. /* global google, jasmine */
  2. describe('GeoCoder', function () {
  3. var scope, geoCoder;
  4. beforeEach(module('ngMap'));
  5. beforeEach(inject(function ($rootScope, GeoCoder) {
  6. scope = $rootScope, geoCoder = GeoCoder;
  7. google.maps.Geocoder = jasmine.createSpy();
  8. }));
  9. describe('geocode function', function () {
  10. it('Should return a promise', function () {
  11. var GoodResponse = function (params, callback) { callback('GOOD', 'OK'); };
  12. google.maps.Geocoder.prototype.geocode = jasmine.createSpy().andCallFake(GoodResponse);
  13. var promise = geoCoder.geocode('Canada');
  14. expect(typeof promise.then).toBe('function');
  15. });
  16. it('Should call geocoder.geocode to retrieve good results', function () {
  17. var GoodResponse = function (params, callback) { callback('GOOD', 'OK'); };
  18. google.maps.Geocoder.prototype.geocode = jasmine.createSpy().andCallFake(GoodResponse);
  19. var okMock = jasmine.createSpy();
  20. geoCoder.geocode('Canada').then(okMock);
  21. scope.$apply();
  22. expect(okMock).toHaveBeenCalledWith('GOOD');
  23. });
  24. it('Should call geocoder.geocode to retrieve bad results', function () {
  25. var BadResponse = function (params, callback) { callback('BAD', 'ERROR'); };
  26. google.maps.Geocoder.prototype.geocode = jasmine.createSpy().andCallFake(BadResponse);
  27. var okMock = jasmine.createSpy();
  28. var errorMock = jasmine.createSpy();
  29. geoCoder.geocode('Canada').then(okMock, errorMock);
  30. scope.$apply();
  31. expect(okMock).not.toHaveBeenCalled();
  32. expect(errorMock).toHaveBeenCalledWith('Geocoder failed due to: ERROR');
  33. });
  34. });
  35. });