UNPKG

@ngneat/spectator

Version:

A powerful tool to simplify your Angular tests

56 lines 6.4 kB
import { BaseSpectator } from '../base/base-spectator'; /** * @publicApi */ export var HttpMethod; (function (HttpMethod) { HttpMethod["GET"] = "GET"; HttpMethod["POST"] = "POST"; HttpMethod["DELETE"] = "DELETE"; HttpMethod["PUT"] = "PUT"; HttpMethod["PATCH"] = "PATCH"; HttpMethod["HEAD"] = "HEAD"; HttpMethod["JSONP"] = "JSONP"; HttpMethod["OPTIONS"] = "OPTIONS"; })(HttpMethod || (HttpMethod = {})); /** * @publicApi */ export class SpectatorHttp extends BaseSpectator { constructor(service, httpClient, controller) { super(); this.service = service; this.httpClient = httpClient; this.controller = controller; // small workaround to prevent issues if destructuring SpectatorHttp, which was common in Spectator 3 // remove in v5? this.expectOne = this.expectOne.bind(this); this.expectConcurrent = this.expectConcurrent.bind(this); } expectOne(url, method) { expect(true).toBe(true); // workaround to avoid `Spec has no expectations` https://github.com/NetanelBasal/spectator/issues/75 const req = this.controller.expectOne({ url, method, }); // assert that there are no outstanding requests. this.controller.verify(); return req; } expectConcurrent(expectations) { const requests = expectations.map((expectation) => { return this.controller.expectOne({ url: expectation.url, method: expectation.method, }); }); this.controller.verify(); return requests; } flushAll(requests, args) { requests.forEach((request, idx) => { request.flush(args[idx]); }); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BlY3RhdG9yLWh0dHAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zcGVjdGF0b3Ivc3JjL2xpYi9zcGVjdGF0b3ItaHR0cC9zcGVjdGF0b3ItaHR0cC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFdkQ7O0dBRUc7QUFDSCxNQUFNLENBQU4sSUFBWSxVQVNYO0FBVEQsV0FBWSxVQUFVO0lBQ3BCLHlCQUFXLENBQUE7SUFDWCwyQkFBYSxDQUFBO0lBQ2IsK0JBQWlCLENBQUE7SUFDakIseUJBQVcsQ0FBQTtJQUNYLDZCQUFlLENBQUE7SUFDZiwyQkFBYSxDQUFBO0lBQ2IsNkJBQWUsQ0FBQTtJQUNmLGlDQUFtQixDQUFBO0FBQ3JCLENBQUMsRUFUVyxVQUFVLEtBQVYsVUFBVSxRQVNyQjtBQU9EOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGFBQWlCLFNBQVEsYUFBYTtJQUNqRCxZQUNTLE9BQVUsRUFDVixVQUFzQixFQUN0QixVQUFpQztRQUV4QyxLQUFLLEVBQUUsQ0FBQztRQUpELFlBQU8sR0FBUCxPQUFPLENBQUc7UUFDVixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLGVBQVUsR0FBVixVQUFVLENBQXVCO1FBSXhDLHFHQUFxRztRQUNyRyxnQkFBZ0I7UUFDaEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRU0sU0FBUyxDQUFDLEdBQVcsRUFBRSxNQUFrQjtRQUM5QyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMscUdBQXFHO1FBRTlILE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDO1lBQ3BDLEdBQUc7WUFDSCxNQUFNO1NBQ1AsQ0FBQyxDQUFDO1FBRUgsaURBQWlEO1FBQ2pELElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUM7UUFFekIsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRU0sZ0JBQWdCLENBQUMsWUFBMEI7UUFDaEQsTUFBTSxRQUFRLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQXVCLEVBQUUsRUFBRTtZQUM1RCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDO2dCQUMvQixHQUFHLEVBQUUsV0FBVyxDQUFDLEdBQUc7Z0JBQ3BCLE1BQU0sRUFBRSxXQUFXLENBQUMsTUFBTTthQUMzQixDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUM7UUFFekIsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVNLFFBQVEsQ0FBQyxRQUF1QixFQUFFLElBQVc7UUFDbEQsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQW9CLEVBQUUsR0FBVyxFQUFFLEVBQUU7WUFDckQsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBIdHRwVGVzdGluZ0NvbnRyb2xsZXIsIFRlc3RSZXF1ZXN0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAvdGVzdGluZyc7XG5cbmltcG9ydCB7IEJhc2VTcGVjdGF0b3IgfSBmcm9tICcuLi9iYXNlL2Jhc2Utc3BlY3RhdG9yJztcblxuLyoqXG4gKiBAcHVibGljQXBpXG4gKi9cbmV4cG9ydCBlbnVtIEh0dHBNZXRob2Qge1xuICBHRVQgPSAnR0VUJyxcbiAgUE9TVCA9ICdQT1NUJyxcbiAgREVMRVRFID0gJ0RFTEVURScsXG4gIFBVVCA9ICdQVVQnLFxuICBQQVRDSCA9ICdQQVRDSCcsXG4gIEhFQUQgPSAnSEVBRCcsXG4gIEpTT05QID0gJ0pTT05QJyxcbiAgT1BUSU9OUyA9ICdPUFRJT05TJyxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBIdHRwRXhwZWN0IHtcbiAgdXJsOiBzdHJpbmc7XG4gIG1ldGhvZDogSHR0cE1ldGhvZDtcbn1cblxuLyoqXG4gKiBAcHVibGljQXBpXG4gKi9cbmV4cG9ydCBjbGFzcyBTcGVjdGF0b3JIdHRwPFM+IGV4dGVuZHMgQmFzZVNwZWN0YXRvciB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBzZXJ2aWNlOiBTLFxuICAgIHB1YmxpYyBodHRwQ2xpZW50OiBIdHRwQ2xpZW50LFxuICAgIHB1YmxpYyBjb250cm9sbGVyOiBIdHRwVGVzdGluZ0NvbnRyb2xsZXIsXG4gICkge1xuICAgIHN1cGVyKCk7XG5cbiAgICAvLyBzbWFsbCB3b3JrYXJvdW5kIHRvIHByZXZlbnQgaXNzdWVzIGlmIGRlc3RydWN0dXJpbmcgU3BlY3RhdG9ySHR0cCwgd2hpY2ggd2FzIGNvbW1vbiBpbiBTcGVjdGF0b3IgM1xuICAgIC8vIHJlbW92ZSBpbiB2NT9cbiAgICB0aGlzLmV4cGVjdE9uZSA9IHRoaXMuZXhwZWN0T25lLmJpbmQodGhpcyk7XG4gICAgdGhpcy5leHBlY3RDb25jdXJyZW50ID0gdGhpcy5leHBlY3RDb25jdXJyZW50LmJpbmQodGhpcyk7XG4gIH1cblxuICBwdWJsaWMgZXhwZWN0T25lKHVybDogc3RyaW5nLCBtZXRob2Q6IEh0dHBNZXRob2QpOiBUZXN0UmVxdWVzdCB7XG4gICAgZXhwZWN0KHRydWUpLnRvQmUodHJ1ZSk7IC8vIHdvcmthcm91bmQgdG8gYXZvaWQgYFNwZWMgaGFzIG5vIGV4cGVjdGF0aW9uc2AgaHR0cHM6Ly9naXRodWIuY29tL05ldGFuZWxCYXNhbC9zcGVjdGF0b3IvaXNzdWVzLzc1XG5cbiAgICBjb25zdCByZXEgPSB0aGlzLmNvbnRyb2xsZXIuZXhwZWN0T25lKHtcbiAgICAgIHVybCxcbiAgICAgIG1ldGhvZCxcbiAgICB9KTtcblxuICAgIC8vIGFzc2VydCB0aGF0IHRoZXJlIGFyZSBubyBvdXRzdGFuZGluZyByZXF1ZXN0cy5cbiAgICB0aGlzLmNvbnRyb2xsZXIudmVyaWZ5KCk7XG5cbiAgICByZXR1cm4gcmVxO1xuICB9XG5cbiAgcHVibGljIGV4cGVjdENvbmN1cnJlbnQoZXhwZWN0YXRpb25zOiBIdHRwRXhwZWN0W10pOiBUZXN0UmVxdWVzdFtdIHtcbiAgICBjb25zdCByZXF1ZXN0cyA9IGV4cGVjdGF0aW9ucy5tYXAoKGV4cGVjdGF0aW9uOiBIdHRwRXhwZWN0KSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5jb250cm9sbGVyLmV4cGVjdE9uZSh7XG4gICAgICAgIHVybDogZXhwZWN0YXRpb24udXJsLFxuICAgICAgICBtZXRob2Q6IGV4cGVjdGF0aW9uLm1ldGhvZCxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgdGhpcy5jb250cm9sbGVyLnZlcmlmeSgpO1xuXG4gICAgcmV0dXJuIHJlcXVlc3RzO1xuICB9XG5cbiAgcHVibGljIGZsdXNoQWxsKHJlcXVlc3RzOiBUZXN0UmVxdWVzdFtdLCBhcmdzOiBhbnlbXSk6IHZvaWQge1xuICAgIHJlcXVlc3RzLmZvckVhY2goKHJlcXVlc3Q6IFRlc3RSZXF1ZXN0LCBpZHg6IG51bWJlcikgPT4ge1xuICAgICAgcmVxdWVzdC5mbHVzaChhcmdzW2lkeF0pO1xuICAgIH0pO1xuICB9XG59XG4iXX0=