scottohara/loot

View on GitHub
src/mocks/node-modules/angular/providers/ihttppromise.ts

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
import type { Mock } from "~/mocks/types";
import angular from "angular";

export default class IHttpPromiseMockProvider
    implements Mock<angular.IHttpPromise<unknown>>
{
    public $get(): angular.IHttpPromise<unknown> {
        // Return the mock HTTP promise object
        return {
            then(): angular.IHttpPromise<unknown> {
                return this;
            },
            catch(): angular.IHttpPromise<unknown> {
                return this;
            },
            finally(callback: () => void): angular.IHttpPromise<unknown> {
                callback();

                return this;
            },
        };
    }
}

// These specs are only here for full coverage
describe("iHttpPromiseMock", (): void => {
    // The object under test
    let iHttpPromiseMock: angular.IHttpPromise<unknown>;

    // Load the modules
    beforeEach(angular.mock.module("lootMocks") as Mocha.HookFunction);

    // Inject the object under test
    beforeEach(
        angular.mock.inject(
            (
                _iHttpPromiseMock_: angular.IHttpPromise<unknown>,
            ): angular.IHttpPromise<unknown> =>
                (iHttpPromiseMock = _iHttpPromiseMock_),
        ) as Mocha.HookFunction,
    );

    describe("then", (): void => {
        it("should return itself", (): Chai.Assertion =>
            expect(iHttpPromiseMock.then()).to.equal(iHttpPromiseMock));
    });

    describe("catch", (): void => {
        it("should return itself", (): Chai.Assertion =>
            expect(iHttpPromiseMock.catch()).to.equal(iHttpPromiseMock));
    });

    describe("finally", (): void => {
        it("should return itself", (): Chai.Assertion =>
            expect(iHttpPromiseMock.finally((): void => undefined)).to.equal(
                iHttpPromiseMock,
            ));
    });
});

IHttpPromiseMockProvider.$inject = [];