eHealthAfrica/direct-delivery-dashboard

View on GitHub
src/app/reports/reports.service.spec.js

Summary

Maintainability
C
1 day
Test Coverage
'use strict'
/* global module, inject, beforeEach, describe, it, expect */

describe('reportsService', function () {
  var rootScope
  var reportsService
  var deliveryRounds
  var dailyDeliveries

  beforeEach(module('reports', 'reportsMock', 'utility', 'products'))

  beforeEach(inject(function (_$rootScope_, _reportsService_, _deliveryRounds_, _dailyDeliveries_) {
    rootScope = _$rootScope_
    reportsService = _reportsService_
    deliveryRounds = _deliveryRounds_
    dailyDeliveries = _dailyDeliveries_
  }))

  it('should return delivery rounds correctly structured', function (done) {
    reportsService.getDeliveryRounds({})
      .then(function (rounds) {
        expect(rounds.results.length).toEqual(deliveryRounds.length)
        for (var i = 0; i < rounds.results.length; i++) {
          var round = rounds.results[i]
          var mock = deliveryRounds[i]
          expect(round.id).toEqual(mock.id)
          expect(round.state).toEqual(mock.key[0])
          expect(round.startDate).toEqual(new Date(mock.key[1]))
          expect(round.endDate).toEqual(new Date(mock.value.endDate))
          expect(round.roundCode).toEqual(mock.value.roundCode)
        }

        done()
      })

    rootScope.$digest()
  })

  it('should return daily deliveries correctly structured', function (done) {
    reportsService.getDailyDeliveries()
      .then(function (deliveries) {
        expect(deliveries.results.length).toEqual(dailyDeliveries.length)
        for (var i = 0; i < deliveries.results.length; i++) {
          var delivery = deliveries.results[i]
          var mock = dailyDeliveries[i]
          expect(delivery.id).toEqual(mock.id)
          expect(delivery.driverID).toEqual(mock.key[1])
          expect(delivery.date).toEqual(new Date(mock.key[2]))
          expect(delivery.drop).toEqual(mock.key[3])
          expect(delivery.status).toEqual(mock.value.status)
          expect(delivery.window).toEqual(mock.value.window)
          expect(delivery.signature).toEqual(mock.value.signature)
          expect(delivery.facility).toEqual(mock.value.facility)
        }
        done()
      })

    rootScope.$digest()
  })

  it('should return total rows found in delivery rounds query', function (done) {
    reportsService.getRoundsCount()
      .then(function (deliveryRoundCount) {
        var mock = deliveryRounds
        var rows = deliveryRoundCount.rows
        expect(rows.length).toEqual(1)
        expect(mock.length).toEqual(rows[0].value)
        done()
      })

    rootScope.$digest()
  })

  it('should return total rows found in daily delivery query', function (done) {
    reportsService.getDailyDeliveriesCount()
      .then(function (deliveryCount) {
        var mock = dailyDeliveries
        var rows = deliveryCount.rows
        expect(rows.length).toEqual(1)
        expect(mock.length).toEqual(rows[0].value)
        done()
      })

    rootScope.$digest()
  })

  it('should test data structure', function (done) {
    var state = {
      name: 'State1',
      _id: 'STATEID'
    }
    reportsService.getByWithin(state, '2015-04-27', '2015-04-27')
      .then(function (data) {
        expect(data.zones).toBeDefined()
        expect(data.dates).toBeDefined()
        expect(data.status).toBeDefined()
        done()
      })

    rootScope.$digest()
  })

  it('should test data structure', function (done) {
    reportsService.getReportByRound()
      .then(function (data) {
        expect(data.zones).toBeDefined()
        expect(data.dates).toBeDefined()
        expect(data.status).toBeDefined()
        done()
      })

    rootScope.$digest()
  })
})