Skip to content

Commit 1959c96

Browse files
authored
feat(reviews): support in-memory backend delegate (#3194)
1 parent 6f1146e commit 1959c96

File tree

5 files changed

+29
-7
lines changed

5 files changed

+29
-7
lines changed

libs/reviews/driver/in-memory/src/backend/reviews.service.ts

+6-2
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,12 @@ import {
55
STATUS,
66
} from 'angular-in-memory-web-api';
77

8-
import { DaffInMemoryDataServiceInterface } from '@daffodil/driver/in-memory';
8+
import { DaffInMemorySingleRouteableBackend } from '@daffodil/driver/in-memory';
99
import { DaffProductReviews } from '@daffodil/reviews';
1010
import { DaffProductReviewsFactory } from '@daffodil/reviews/testing';
1111

12+
import { DAFF_REVIEWS_IN_MEMORY_COLLECTION_NAME } from '../collection-name.const';
13+
1214
/**
1315
* An in-memory service that stubs out the backend services for getting reviews.
1416
*
@@ -17,7 +19,9 @@ import { DaffProductReviewsFactory } from '@daffodil/reviews/testing';
1719
@Injectable({
1820
providedIn: 'root',
1921
})
20-
export class DaffReviewsInMemoryBackendService implements InMemoryDbService, DaffInMemoryDataServiceInterface {
22+
export class DaffReviewsInMemoryBackendService implements InMemoryDbService, DaffInMemorySingleRouteableBackend {
23+
readonly collectionName = DAFF_REVIEWS_IN_MEMORY_COLLECTION_NAME;
24+
2125
reviews: DaffProductReviews;
2226

2327
constructor(
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export const DAFF_REVIEWS_IN_MEMORY_COLLECTION_NAME = 'reviews';

libs/reviews/driver/in-memory/src/drivers/reviews-driver.module.ts

+3
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,11 @@ import {
44
ModuleWithProviders,
55
} from '@angular/core';
66

7+
import { provideDaffInMemoryBackends } from '@daffodil/driver/in-memory';
78
import { DaffReviewsDriver } from '@daffodil/reviews/driver';
89

910
import { DaffReviewsInMemoryService } from './reviews.service';
11+
import { DaffReviewsInMemoryBackendService } from '../backend/reviews.service';
1012

1113
@NgModule({
1214
imports: [
@@ -22,6 +24,7 @@ export class DaffReviewsInMemoryDriverModule {
2224
provide: DaffReviewsDriver,
2325
useExisting: DaffReviewsInMemoryService,
2426
},
27+
provideDaffInMemoryBackends(DaffReviewsInMemoryBackendService),
2528
],
2629
};
2730
}

libs/reviews/driver/in-memory/src/drivers/reviews.service.spec.ts

+8-1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import {
77
provideHttpClientTesting,
88
} from '@angular/common/http/testing';
99
import { TestBed } from '@angular/core/testing';
10+
import { InMemoryBackendConfig } from 'angular-in-memory-web-api';
1011
import { of } from 'rxjs';
1112
import { catchError } from 'rxjs/operators';
1213

@@ -30,6 +31,12 @@ describe('@daffodil/reviews/driver/in-memory | DaffReviewsInMemoryService', () =
3031
imports: [],
3132
providers: [
3233
DaffReviewsInMemoryService,
34+
{
35+
provide: InMemoryBackendConfig,
36+
useValue: {
37+
apiBase: 'api',
38+
},
39+
},
3340
provideHttpClient(withInterceptorsFromDi()),
3441
provideHttpClientTesting(),
3542
],
@@ -58,7 +65,7 @@ describe('@daffodil/reviews/driver/in-memory | DaffReviewsInMemoryService', () =
5865
done();
5966
});
6067

61-
const req = httpMock.expectOne(`${service.url}/`);
68+
const req = httpMock.expectOne(`${service['url']}/`);
6269

6370
expect(req.request.method).toBe('GET');
6471
req.flush(mockReviews);

libs/reviews/driver/in-memory/src/drivers/reviews.service.ts

+11-4
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,27 @@
11
import { HttpClient } from '@angular/common/http';
22
import { Injectable } from '@angular/core';
3+
import { InMemoryBackendConfig } from 'angular-in-memory-web-api';
34
import { Observable } from 'rxjs';
45

6+
import { DaffInMemoryDriverBase } from '@daffodil/driver/in-memory';
57
import { DaffProductReviews } from '@daffodil/reviews';
68
import { DaffProductReviewsServiceInterface } from '@daffodil/reviews/driver';
79

10+
import { DAFF_REVIEWS_IN_MEMORY_COLLECTION_NAME } from '../collection-name.const';
11+
812
/**
913
* @inheritdoc
1014
*/
1115
@Injectable({
1216
providedIn: 'root',
1317
})
14-
export class DaffReviewsInMemoryService implements DaffProductReviewsServiceInterface {
15-
url = '/api/reviews';
16-
17-
constructor(private http: HttpClient) {}
18+
export class DaffReviewsInMemoryService extends DaffInMemoryDriverBase implements DaffProductReviewsServiceInterface {
19+
constructor(
20+
private http: HttpClient,
21+
config: InMemoryBackendConfig,
22+
) {
23+
super(config, DAFF_REVIEWS_IN_MEMORY_COLLECTION_NAME);
24+
}
1825

1926
list(): Observable<DaffProductReviews> {
2027
return this.http.get<DaffProductReviews>(`${this.url}/`);

0 commit comments

Comments
 (0)