Index: CHANGELOG.md =================================================================== diff -u -N -r02fe349aa2b4296734ed8ca231b66fb5eaf3a266 -rd9ba7b15e776815cf6aaa65148f78fbc09b51ec5 --- CHANGELOG.md (.../CHANGELOG.md) (revision 02fe349aa2b4296734ed8ca231b66fb5eaf3a266) +++ CHANGELOG.md (.../CHANGELOG.md) (revision d9ba7b15e776815cf6aaa65148f78fbc09b51ec5) @@ -3,4 +3,5 @@ New functionality that are backwards-compatible: * [OLMIS-7209](https://openlmis.atlassian.net/browse/OLMIS-7209): Added pending offline events service decorator which retrieves events from local storage. -* [OLMIS-7198](https://openlmis.atlassian.net/browse/OLMIS-7198): Added the Pending Offline events screen with pending operations table. \ No newline at end of file +* [OLMIS-7198](https://openlmis.atlassian.net/browse/OLMIS-7198): Added the Pending Offline events screen with pending operations table. +* [OLMIS-7205](https://openlmis.atlassian.net/browse/OLMIS-7205): Updated the event service method to return only events that have not been synchronized before. Index: src/offline-events/events.service.js =================================================================== diff -u -N -rc793b96713192fd1dcc9a4fa7c61686171ec2f28 -rd9ba7b15e776815cf6aaa65148f78fbc09b51ec5 --- src/offline-events/events.service.js (.../events.service.js) (revision c793b96713192fd1dcc9a4fa7c61686171ec2f28) +++ src/offline-events/events.service.js (.../events.service.js) (revision d9ba7b15e776815cf6aaa65148f78fbc09b51ec5) @@ -38,7 +38,7 @@ var STOCK_EVENTS = 'stockEvents'; return { - getUserEventsFromStorage: getUserEventsFromStorage, + getUserPendingEventsFromStorage: getUserPendingEventsFromStorage, getOfflineEvents: getOfflineEvents, removeOfflineEvent: removeOfflineEvent, search: search @@ -47,19 +47,22 @@ /** * @ngdoc method * @methodOf offline-events.eventsService - * @name getUserEventsFromStorage + * @name getUserPendingEventsFromStorage * * @description - * Retrieves pending offline events from cache + * Retrieves pending offline events from cache that have not been synchronized * * @return {Promise} the Array of events created offline by current user */ - function getUserEventsFromStorage() { - return currentUserService.getUserInfo() - .then(function(user) { - var offlineEvents = localStorageService.get(STOCK_EVENTS); - return offlineEvents ? angular.fromJson(offlineEvents)[user.id] : []; + function getUserPendingEventsFromStorage() { + return getAllUserEventsFromStorage().then(function(events) { + if (!events) { + return []; + } + return events.filter(function(event) { + return !event.sent && !event.error; }); + }); } /** @@ -76,7 +79,7 @@ function getOfflineEvents() { var orderableResource = new OrderableResource(); - return getUserEventsFromStorage() + return getUserPendingEventsFromStorage() .then(function(userEvents) { var homeFacility, programs = [], @@ -213,6 +216,14 @@ }); } + function getAllUserEventsFromStorage() { + return currentUserService.getUserInfo() + .then(function(user) { + var offlineEvents = localStorageService.get(STOCK_EVENTS); + return offlineEvents ? angular.fromJson(offlineEvents)[user.id] : []; + }); + } + function combineResponses(userEvents, programs, homeFacility, orderables, lots, reasons, validAssignmentsList) { var programsMap = prepareMap(programs), Index: src/offline-events/events.service.spec.js =================================================================== diff -u -N -r0c684c70a44f80c29cd9572f19688df158850ce1 -rd9ba7b15e776815cf6aaa65148f78fbc09b51ec5 --- src/offline-events/events.service.spec.js (.../events.service.spec.js) (revision 0c684c70a44f80c29cd9572f19688df158850ce1) +++ src/offline-events/events.service.spec.js (.../events.service.spec.js) (revision d9ba7b15e776815cf6aaa65148f78fbc09b51ec5) @@ -160,8 +160,26 @@ orderableId: this.orderables[0], occurredDate: '2017-01-01' }] + }, + { + facilityId: this.homeFacility.id, + programId: this.programs[0].id, + lineItems: [{ + orderableId: this.orderables[0], + occurredDate: '2017-01-01' + }], + sent: true, + error: { + status: 'status_1', + data: 'message' + } } ]; + + this.filteredEvents = this.localStorageEvents.user_1.filter(function(event) { + return !event.sent && !event.error; + }); + this.localStorageEvents['user_2'] = [ { facilityId: this.homeFacility.id, @@ -226,7 +244,7 @@ expect(currentUserService.getUserInfo).toHaveBeenCalled(); expect(localStorageService.get).toHaveBeenCalled(); - expect(eventsCount).toEqual(this.localStorageEvents.user_1); + expect(eventsCount).toEqual(this.filteredEvents); }); it('should get empty list if stock events in local storage are empty', function() { @@ -271,7 +289,7 @@ expect(currentUserService.getUserInfo).toHaveBeenCalled(); expect(localStorageService.get).toHaveBeenCalled(); - expect(events).toEqual(this.localStorageEvents.user_1); + expect(events).toEqual(this.filteredEvents); expect(events[2].facility).toEqual(this.homeFacility); expect(events[2].eventType).toEqual(this.EVENT_TYPES.ADJUSTMENT); expect(events[2].program).toEqual(this.programs[0]); @@ -290,7 +308,7 @@ expect(currentUserService.getUserInfo).toHaveBeenCalled(); expect(localStorageService.get).toHaveBeenCalled(); - expect(this.localStorageEvents.user_1.length).toEqual(2); + expect(this.localStorageEvents.user_1.length).toEqual(3); }); it('should do nothing when no offline events', function() { @@ -356,7 +374,7 @@ expect(currentUserService.getUserInfo).toHaveBeenCalled(); expect(localStorageService.get).toHaveBeenCalled(); - expect(filtered).toEqual(this.localStorageEvents.user_1); + expect(filtered).toEqual(this.filteredEvents); }); it('should return events filtered by eventType param', function() { Index: src/referencedata-pending-offline-events-indicator/pending-offline-events.service.decorator.js =================================================================== diff -u -N -r8ab1475e031d8dc3ed153e4f367f11343967812a -rd9ba7b15e776815cf6aaa65148f78fbc09b51ec5 --- src/referencedata-pending-offline-events-indicator/pending-offline-events.service.decorator.js (.../pending-offline-events.service.decorator.js) (revision 8ab1475e031d8dc3ed153e4f367f11343967812a) +++ src/referencedata-pending-offline-events-indicator/pending-offline-events.service.decorator.js (.../pending-offline-events.service.decorator.js) (revision d9ba7b15e776815cf6aaa65148f78fbc09b51ec5) @@ -54,7 +54,7 @@ * @return {Promise} the number of pending offline events */ function getCountOfOfflineEvents() { - return eventsService.getUserEventsFromStorage() + return eventsService.getUserPendingEventsFromStorage() .then(function(result) { return result.length; }); Index: src/referencedata-pending-offline-events-indicator/pending-offline-events.service.decorator.spec.js =================================================================== diff -u -N -r8ab1475e031d8dc3ed153e4f367f11343967812a -rd9ba7b15e776815cf6aaa65148f78fbc09b51ec5 --- src/referencedata-pending-offline-events-indicator/pending-offline-events.service.decorator.spec.js (.../pending-offline-events.service.decorator.spec.js) (revision 8ab1475e031d8dc3ed153e4f367f11343967812a) +++ src/referencedata-pending-offline-events-indicator/pending-offline-events.service.decorator.spec.js (.../pending-offline-events.service.decorator.spec.js) (revision d9ba7b15e776815cf6aaa65148f78fbc09b51ec5) @@ -19,7 +19,7 @@ beforeEach(function() { module('referencedata-pending-offline-events-indicator', function($provide) { - eventsService = jasmine.createSpyObj('eventsService', ['getUserEventsFromStorage']); + eventsService = jasmine.createSpyObj('eventsService', ['getUserPendingEventsFromStorage']); $provide.service('eventsService', function() { return eventsService; }); @@ -52,7 +52,7 @@ describe('getCountOfOfflineEvents', function() { it('should get count of offline events', function() { - eventsService.getUserEventsFromStorage.andReturn(this.$q.resolve(this.localStorageEvents)); + eventsService.getUserPendingEventsFromStorage.andReturn(this.$q.resolve(this.localStorageEvents)); var eventsCount; this.pendingOfflineEventsService.getCountOfOfflineEvents().then(function(result) { @@ -64,7 +64,7 @@ }); it('should get 0 if there are no offline events', function() { - eventsService.getUserEventsFromStorage.andReturn(this.$q.resolve([])); + eventsService.getUserPendingEventsFromStorage.andReturn(this.$q.resolve([])); var eventsCount; this.pendingOfflineEventsService.getCountOfOfflineEvents().then(function(result) {