{"version":3,"file":"berglund-firebase-testing.mjs","sources":["../../../projects/firebase/testing/src/core/crud-api-mock.ts","../../../projects/firebase/testing/berglund-firebase-testing.ts"],"sourcesContent":["import { CrudApi } from '@berglund/firebase';\r\nimport { EMPTY, of } from 'rxjs';\r\nimport createSpyObj = jasmine.createSpyObj;\r\n\r\nexport function createCrudApiSpyObj<T>(\r\n  database: Record<string, T>\r\n): jasmine.SpyObj<CrudApi<T>> {\r\n  const spyObj = createSpyObj<CrudApi<T>>('CrudApi', [\r\n    'get',\r\n    'set',\r\n    'getRecord',\r\n    'getAll',\r\n    'getMany',\r\n    'getPage',\r\n    'getProperty',\r\n    'setProperty',\r\n    'removeProperty',\r\n    'pushProperty',\r\n    'push',\r\n    'update',\r\n    'delete',\r\n  ]);\r\n\r\n  mockReturn(spyObj, database);\r\n  return spyObj;\r\n}\r\n\r\nfunction mockReturn<T>(\r\n  spyObj: jasmine.SpyObj<CrudApi<T>>,\r\n  database: Record<string, T>\r\n) {\r\n  spyObj.getRecord.and.returnValue(of(database));\r\n\r\n  spyObj.getAll.and.returnValue(of(Object.values(database)));\r\n  spyObj.getMany.and.returnValue(of(Object.values(database)));\r\n\r\n  spyObj.getProperty.and.returnValue(of(null));\r\n  spyObj.get.and.returnValue(of(null));\r\n\r\n  spyObj.getPage.and.returnValue(of([]));\r\n\r\n  spyObj.set.and.returnValue(EMPTY);\r\n  spyObj.delete.and.returnValue(EMPTY);\r\n  spyObj.update.and.returnValue(EMPTY);\r\n  spyObj.setProperty.and.returnValue(EMPTY);\r\n  spyObj.removeProperty.and.returnValue(EMPTY);\r\n\r\n  spyObj.push.and.returnValue('generatedId');\r\n\r\n  for (const [key, value] of Object.entries(database)) {\r\n    spyObj.get.withArgs(key).and.returnValue(of(value));\r\n\r\n    if (typeof value === 'object' && value !== null) {\r\n      for (const [nestedKey, nestedValue] of Object.entries(value)) {\r\n        // jasmine does not understand that the overload can have two args\r\n        (spyObj.getProperty as any)\r\n          .withArgs(key, nestedKey)\r\n          .and.returnValue(of(nestedValue));\r\n      }\r\n    }\r\n  }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;AAEA,IAAO,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;SAE3B,mBAAmB,CACjC,QAA2B;IAE3B,MAAM,MAAM,GAAG,YAAY,CAAa,SAAS,EAAE;QACjD,KAAK;QACL,KAAK;QACL,WAAW;QACX,QAAQ;QACR,SAAS;QACT,SAAS;QACT,aAAa;QACb,aAAa;QACb,gBAAgB;QAChB,cAAc;QACd,MAAM;QACN,QAAQ;QACR,QAAQ;KACT,CAAC,CAAC;IAEH,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC7B,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,UAAU,CACjB,MAAkC,EAClC,QAA2B;IAE3B,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAE/C,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC3D,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAE5D,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7C,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAErC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAEvC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IAClC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IACrC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IACrC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IAC1C,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IAE7C,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;IAE3C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;QACnD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QAEpD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE;YAC/C,KAAK,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;;gBAE3D,MAAM,CAAC,WAAmB;qBACxB,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC;qBACxB,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;aACrC;SACF;KACF;AACH;;AC7DA;;;;;;"}