UNPKG

pip-webui

Version:

HTML5 UI for LOB applications

235 lines (176 loc) 9.44 kB
/** * @file MockedPartyResource * @copyright Digital Living Software Corp. 2014-2016 * * Mocked: * /api/parties/:id * /api/parties/:party_id/settings * */ (function () { 'use strict'; var thisModule = angular.module('pipMocked.Party', ['ngMockE2E', 'ngResource']); thisModule.factory('MockedPartyResource', function ($httpBackend, $log, MockedResource) { var child = Object.create(MockedResource); child.api = '/api/parties'; child.register = function() { // GET /api/parties $httpBackend.whenGET(child.fakeUrl + child.api) .respond(function(method, url, data, headers, params) { var parties = child.dataset.get('PartiesTestCollection'), partiesCollection; if (!parties) { throw new Error('MockedPartyResource: Parties collection is not found') } partiesCollection = parties.getAll(); return [200, partiesCollection, {}]; }); // GET /api/parties/:id $httpBackend.whenGET(new RegExp(child.regEsc(child.fakeUrl + child.api + '/') + child.IdRegExp + child.EndStringRegExp)) .respond(function(method, url, data, headers, params) { var party, idParams, partyId, parties = child.dataset.get('PartiesTestCollection'); idParams = child.getUrlIdParams(url); if (!idParams || idParams.length == 0) { throw new Error('MockedPartyResource: party_id is not specified into url') } partyId = idParams[0]; if (!parties) { throw new Error('MockedPartyResource: Parties collection is not found') } party = parties.findById(partyId); return [200, party, {}]; }); // POST /api/parties $httpBackend.whenPOST(child.fakeUrl + child.api) .respond(function(method, url, data, headers, params) { var party, partyData = angular.fromJson(data), parties = child.dataset.get('PartiesTestCollection'), partiesCollection; if (!partyData || !partyData['id']) { throw new Error('MockedPartyResource: party id is not specified') } if (!parties) { throw new Error('MockedPartyResource: Parties collection is not found') } partiesCollection = parties.getAll(); party = _.find(partiesCollection, function (item) { return item.id == partyData.id; }); if (party && party.id) { var error = child.getError('1104'); return [error.StatusCode, error.request, error.headers]; } // add party to collection party = parties.create(partyData); return [200, party, {}]; }); // PUT /api/parties/:id $httpBackend.whenPUT(new RegExp(child.regEsc(child.fakeUrl + child.api + '/') + child.IdRegExp + child.EndStringRegExp)) .respond(function(method, url, data, headers, params) { var party, partyData = angular.fromJson(data), idParams, partyId, parties = child.dataset.get('PartiesTestCollection'); idParams = child.getUrlIdParams(url); if (!idParams || idParams.length == 0) { throw new Error('MockedPartyResource: party_id is not specified into url') } partyId = idParams[0]; if (!parties) { throw new Error('MockedPartyResource: Parties collection is not found') } party = parties.findById(partyId); party = parties.update(partyId, partyData); return [200, party, {}]; }); // DELETE /api/parties/:id $httpBackend.whenDELETE(new RegExp(child.regEsc(child.fakeUrl + child.api + '/') + child.IdRegExp + child.EndStringRegExp)) .respond(function(method, url, data, headers, params) { var party, partyData = angular.fromJson(data), idParams, partyId, parties = child.dataset.get('PartiesTestCollection'); idParams = child.getUrlIdParams(url); if (!idParams || idParams.length == 0) { throw new Error('MockedPartyResource: party_id is not specified into url') } partyId = idParams[0]; if (!parties) { throw new Error('MockedPartyResource: Parties collection is not found') } party = parties.findById(partyId); if (!party || !party.id) { var error = child.getError('1106'); return [error.StatusCode, error.request, error.headers]; } parties.deleteById(party.id); return [200, "OK", {}]; }); } return child; }); thisModule.factory('MockedPartySettingsResource', function ($httpBackend, $log, MockedResource) { var child = Object.create(MockedResource); child.api = '/api/parties'; child.register = function() { // GET /api/parties/:party_id/settings $httpBackend.whenGET(new RegExp(child.regEsc(child.fakeUrl + child.api + '/') + child.IdRegExp + child.regEsc('/settings') + child.EndStringRegExp)) .respond(function(method, url, data, headers, params) { var settings = child.dataset.get('SettingsTestCollection'), SettingsCollection, idParams, partyId, setting; if (!settings) { throw new Error('MockedPartySettingsResource: Settings collection is not found') } idParams = child.getUrlIdParams(url); if (!idParams || idParams.length == 0) { throw new Error('MockedPartyResource: party_id is not specified into url') } partyId = idParams[0]; SettingsCollection = settings.getAll(); setting = _.find(SettingsCollection, function (item) { return item.party_id == partyId; }); if (!setting || !setting.party_id) { return [200, {}, {}]; } return [200, setting, {}]; }); // POST /api/parties/:party_id/settings $httpBackend.whenPOST(new RegExp(child.regEsc(child.fakeUrl + child.api + '/') + child.IdRegExp + child.regEsc('/settings') + child.EndStringRegExp)) .respond(function(method, url, data, headers, params) { var setting, match = false, settingsData = angular.fromJson(data) || {}, settings = child.dataset.get('SettingsTestCollection'), SettingsCollection; if (!settingsData || !settingsData['party_id']) { throw new Error('MockedPartySettingsResource: Settings party_id is not specified') } if (!settings) { throw new Error('MockedPartySettingsResource: Settings collection is not found') } SettingsCollection = settings.getAll(); setting = _.find(SettingsCollection, function (item) { return item.party_id == settingsData.party_id; }); if (setting && setting.party_id) { match = true; } // add setting to collection if (match) { setting = settings.update(setting.party_id, settingsData, 'party_id'); } else { setting = settings.create(settingsData); } return [200, setting, {}]; }); } return child; }); })();