data.service.mock.ts 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. import { of } from 'rxjs';
  2. import { QueryResult } from '../types/query-result';
  3. import { DataService } from './data.service';
  4. export type DataServiceSectionMock<T> = { [K in keyof T]: jasmine.Spy };
  5. export type DataServiceMock = { [K in keyof DataService]: DataServiceSectionMock<DataService[K]> };
  6. export type MockQueryResult = { [K in keyof QueryResult<any>]: any };
  7. export function spyQueryResult(name: string): jasmine.Spy {
  8. const mockQueryResult: MockQueryResult = {
  9. ref: {},
  10. stream$: of({}),
  11. single$: of({}),
  12. mapStream() {
  13. return of({});
  14. },
  15. mapSingle() {
  16. return of({});
  17. },
  18. };
  19. return jasmine.createSpy(name).and.returnValue(mockQueryResult);
  20. }
  21. export function spyObservable(name: string, returnValue: any = {}): jasmine.Spy {
  22. return jasmine.createSpy(name).and.returnValue(of(returnValue));
  23. }
  24. export class MockDataService implements DataServiceMock {
  25. client = {
  26. startRequest: spyObservable('startRequest'),
  27. completeRequest: spyObservable('completeRequest'),
  28. getNetworkStatus: spyObservable('getNetworkStatus'),
  29. loginSuccess: spyObservable('loginSuccess'),
  30. logOut: spyObservable('logOut'),
  31. userStatus: spyQueryResult('userStatus'),
  32. uiState: spyQueryResult('uiState'),
  33. setUiLanguage: spyObservable('setUiLanguage'),
  34. };
  35. product = {
  36. getProducts: spyQueryResult('getProducts'),
  37. getProduct: spyQueryResult('getProduct'),
  38. createProduct: spyObservable('createProduct'),
  39. updateProduct: spyObservable('updateProduct'),
  40. updateProductVariants: spyObservable('updateProductVariants'),
  41. createProductOptionGroups: spyObservable('createProductOptionGroups'),
  42. addOptionGroupToProduct: spyObservable('addOptionGroupToProduct'),
  43. removeOptionGroupFromProduct: spyObservable('removeOptionGroupFromProduct'),
  44. getProductOptionGroups: spyQueryResult('getProductOptionGroups'),
  45. generateProductVariants: spyObservable('generateProductVariants'),
  46. };
  47. user = {
  48. checkLoggedIn: spyObservable('checkLoggedIn'),
  49. attemptLogin: spyObservable('attemptLogin'),
  50. };
  51. }