eHealthAfrica/direct-delivery-dashboard

View on GitHub
src/app/planning/kpi/kpi.state.spec.js

Summary

Maintainability
B
6 hrs
Test Coverage
'use strict'

/* global describe beforeEach module inject it expect spyOn jasmine */

describe('State: planning.kpi', function () {
  var state
  var $rootScope
  var planningService
  var log
  var kpiService
  beforeEach(module('directDeliveryDashboard', 'planning'))

  beforeEach(inject(function (_$rootScope_, _$state_, _planningService_, _log_, $q, _kpiService_) {
    state = _$state_.get('planning.kpi')
    $rootScope = _$rootScope_
    planningService = _planningService_
    log = _log_
    kpiService = _kpiService_

    function kpiServiceMock (param) {
      var deferred = $q.defer()
      if (param === 'fail') {
        deferred.reject('reject')
      } else {
        deferred.resolve([])
      }
      return deferred.promise
    }

    spyOn(planningService, 'getByRoundId').and.callFake(kpiServiceMock)
    spyOn(kpiService, 'getByRoundId').and.callFake(kpiServiceMock)
    spyOn(kpiService, 'getAllTemplates').and.callFake(function () {
      return $q.when([])
    })
  }))

  it('should be object', function () {
    expect(state).toEqual(jasmine.any(Object))
  })

  it('should have resolve object', function () {
    expect(state.resolve).toEqual(jasmine.any(Object))
  })

  it('should resolve deliveryRound', function (done) {
    expect(state.resolve.deliveryRound).toEqual(jasmine.any(Function))

    state.resolve.deliveryRound(log, planningService, {roundId: 'KN-01'})
      .then(function (res) {
        expect(res).toEqual(jasmine.any(Array))
        done()
      })
    $rootScope.$digest()
  })

  it('should resolve kpiTemplates', function (done) {
    expect(state.resolve.kpiTemplates).toEqual(jasmine.any(Function))

    state.resolve.kpiTemplates(kpiService)
      .then(function (res) {
        expect(res).toEqual(jasmine.any(Array))
        done()
      })
    $rootScope.$digest()
  })

  it('should resolve kpiInfo', function (done) {
    expect(state.resolve.kpiInfo).toEqual(jasmine.any(Function))

    state.resolve.kpiInfo(log, kpiService, {roundId: 'KN-01'})
      .then(function (res) {
        expect(res).toEqual(jasmine.any(Array))
        done()
      })

    state.resolve.kpiInfo(log, kpiService, {roundId: 'fail'})
      .then(function (res) {
        expect(res).toEqual(jasmine.any(Object))
        done()
      })
    $rootScope.$digest()
  })

  it('should reject kpiInfo with an object with two arrays antigens and kpiList', function (done) {
    state.resolve.kpiInfo(log, kpiService, {roundId: 'fail'})
      .then(function (res) {
        expect(res).toEqual(jasmine.any(Object))
        expect(res.antigens).toEqual(jasmine.any(Array))
        expect(res.kpiList).toEqual(jasmine.any(Array))
        done()
      })
    $rootScope.$digest()
  })
})