Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/amoldavsky/angular-mocks-async
AngularJS ngMockE2E Async
https://github.com/amoldavsky/angular-mocks-async
angular angular-mocks angular-testing angular1 e2e httpbackend mock mocks ngmock ngmocke2e promise
Last synced: 4 months ago
JSON representation
AngularJS ngMockE2E Async
- Host: GitHub
- URL: https://github.com/amoldavsky/angular-mocks-async
- Owner: amoldavsky
- License: mit
- Created: 2016-02-23T15:11:47.000Z (almost 9 years ago)
- Default Branch: master
- Last Pushed: 2018-04-09T14:15:47.000Z (almost 7 years ago)
- Last Synced: 2024-09-28T09:35:51.277Z (4 months ago)
- Topics: angular, angular-mocks, angular-testing, angular1, e2e, httpbackend, mock, mocks, ngmock, ngmocke2e, promise
- Language: JavaScript
- Size: 650 KB
- Stars: 12
- Watchers: 7
- Forks: 41
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
# angular-mocks-async
AngularJS ngMockE2E Async[![CircleCI](https://circleci.com/gh/amoldavsky/angular-mocks-async/tree/master.svg?style=shield)](https://circleci.com/gh/amoldavsky/angular-mocks-async)
[![codecov](https://codecov.io/gh/amoldavsky/angular-mocks-async/branch/master/graph/badge.svg)](https://codecov.io/gh/amoldavsky/angular-mocks-async)
Tested for:![npm](https://img.shields.io/badge/angular-1.3.17-blue.svg)
![npm](https://img.shields.io/badge/angular-1.4.0-blue.svg)
![npm](https://img.shields.io/badge/angular-1.5.0-blue.svg)
![npm](https://img.shields.io/badge/angular-1.6.0-blue.svg)An abstraction on top of ngMockE2E to support async calls using promises.
If you need to make an async operation ( such as working with WebSQL / IndexedDB ) the orignial ngMockE2E will fall through and you will never have the chance to respond with your own response.
ngMockE2EAsync decorates the $httpBackend by utilizing promises. Responses can now be in a form of a promise where the $httpBackend will original function will not be called until your promise has been resolved. Once resolved the original $httpBackend APIs will be called and things will flow their natural ways back to the caller.
## Demo
[jsFiddle](https://jsfiddle.net/amoldavsky/omw8m23L/) [Plunker](https://plnkr.co/edit/IWtaW9?p=preview)## Install
#### NPM
```
npm install angular-mocks-async
```#### HTML
```html```
## Usage
The decorator exposes a new API
```javascript
$httpBackend.whenAsync()
```
Which is equivalent to the $httpBackend.when() API but expects a promise in the .respond() function.Here is an example for an HTTP GET
```javascript
(function( ng ) {var app = ng.module('myApp', ['ngMockE2E', 'ngMockE2EAsync'])
app.run( [ '$httpBackend', '$q', function( $httpBackend, $q ) {$httpBackend.whenAsync(
'GET',
new RegExp( 'http://api.example.com/user/.+$' )
).respond( function( method, url, data, config ) {var re = /.*\/user\/(\w+)/;
var userId = parseInt(url.replace(re, '$1'), 10);var response = $q.defer();
setTimeout( function() {
var data = {
userId: userId
};
response.resolve( [ 200, "this is a mocked async GET response", "123" ] );
}, 1000 );return response.promise;
});
$httpBackend.whenGET(/.*/).passThrough();
$httpBackend.whenPOST(/.*/).passThrough();
$httpBackend.whenPUT(/.*/).passThrough();
$httpBackend.whenJSONP(/.*/).passThrough();
$httpBackend.whenDELETE(/.*/).passThrough();
$http({
url: "http://api.example.com/user/103",
method: 'GET'
}).then( function( response ) {
alert( response.data );
});
}]);
}(angular);
```
You may use this API the same way for POST, PUT, UPDATE, and DELETE.## Details
The code adds a custom decorator function to the existing angular mock namespace which already hold similar decorator functions - angular.mock.$HttpBackendAsyncDecorator.
## Developing & Testing
gulpfile.js has the following tasks:
```
dist
test-unminified
test-minified
```
Please be sure to run these tests when making changes## License
MIT