diff --git a/src/api/analytics/AnalyticsEnrollments.js b/src/api/analytics/AnalyticsEnrollments.js index ac1e94092..8920ad2f5 100644 --- a/src/api/analytics/AnalyticsEnrollments.js +++ b/src/api/analytics/AnalyticsEnrollments.js @@ -11,6 +11,28 @@ import AnalyticsBase from './AnalyticsBase.js' * @see https://docs.dhis2.org/en/develop/using-the-api/dhis-core-version-236/analytics.html#webapi_enrollment_analytics */ class AnalyticsEnrollments extends AnalyticsBase { + /** + * @param {!AnalyticsRequest} req Request object + * + * @returns {Promise} Promise that resolves with the analytics aggregate data from the api. + * + * @example + * const req = new analytics.request() + * .withProgram('eBAyeGv0exc') + * .addDataDimension(['Uvn6LCg7dVU','OdiHJayrsKo']) + * .addPeriodDimension('LAST_4_QUARTERS') + * .addOrgUnitDimension(['lc3eMKXaEfw','PMa2VCrupOd']) + * .addOrgUnitFilter('O6uvpzGd5pu') + * .withStartDate('2017-10-01') + * .withEndDate('2017-10-31'); + * + * analytics.enrollments.getAggregate(req) + * .then(console.log); + */ + getAggregate(req) { + return this.fetch(req.withPath('enrollments/aggregate')) + } + /** * @param {!AnalyticsRequest} req Request object * diff --git a/src/api/analytics/__tests__/AnalyticsEnrollments.spec.js b/src/api/analytics/__tests__/AnalyticsEnrollments.spec.js index c1bb00a5d..5483714a2 100644 --- a/src/api/analytics/__tests__/AnalyticsEnrollments.spec.js +++ b/src/api/analytics/__tests__/AnalyticsEnrollments.spec.js @@ -27,6 +27,29 @@ describe('analytics.enrollments', () => { expect(enrollments.dataEngine).toBe(dataEngineMockObject) }) + describe('.getAggregate()', () => { + beforeEach(() => { + enrollments = new AnalyticsEnrollments(new DataEngineMock()) + + request = new AnalyticsRequest().withLimit(10) + + fixture = fixtures.get('/api/analytics/aggregate') + + dataEngineMock.query.mockReturnValue( + Promise.resolve({ data: fixture }) + ) + }) + + it('should be a function', () => { + expect(enrollments.getAggregate).toBeInstanceOf(Function) + }) + + it('should resolve a promise with data', () => + enrollments.getAggregate(request).then((data) => { + expect(data).toEqual(fixture) + })) + }) + describe('.getQuery()', () => { beforeEach(() => { enrollments = new AnalyticsEnrollments(new DataEngineMock())