File tree Expand file tree Collapse file tree 5 files changed +86
-3
lines changed
Expand file tree Collapse file tree 5 files changed +86
-3
lines changed Original file line number Diff line number Diff line change 1+ import { Observable } from 'rxjs' ;
2+
3+ import person from './../data/person' ;
4+ import PeopleAdapter from './PeopleAdapter' ;
5+
6+ export default class PeopleJSONAdapter extends PeopleAdapter {
7+ /**
8+ * Returns an observable that emits person data.
9+ * Person data comes from JSON file `person.json` in the data folder.
10+ *
11+ * @param {String } id - ID of person to get
12+ * @returns {Observable<PersonObject> }
13+ * @memberof PeopleJSONAdapter
14+ */
15+ getPerson ( id ) {
16+ return Observable . create ( ( observer ) => {
17+ if ( person . id === id ) observer . next ( person ) ;
18+ else observer . error ( new Error ( `Could not find person with id "${ id } "` ) ) ;
19+
20+ observer . complete ( ) ;
21+ } ) ;
22+ }
23+ }
Original file line number Diff line number Diff line change 1+ import person from './../data/person' ;
2+ import PeopleJSONAdapter from './PeopleJSONAdapter' ;
3+
4+ describe ( 'People Adapter Interface' , ( ) => {
5+ let peopleJSONAdapter ;
6+
7+ beforeEach ( ( ) => {
8+ peopleJSONAdapter = new PeopleJSONAdapter ( ) ;
9+ } ) ;
10+
11+ test ( 'getPerson() returns an observable' , ( ) => {
12+ expect ( rxjs . isObservable ( peopleJSONAdapter . getPerson ( ) ) ) . toBeTruthy ( ) ;
13+ } ) ;
14+
15+ test ( 'getPerson() returns a person data' , ( done ) => {
16+ peopleJSONAdapter . getPerson ( person . id ) . subscribe ( ( data ) => {
17+ expect ( data ) . toEqual ( person ) ;
18+ done ( ) ;
19+ } ) ;
20+ } ) ;
21+
22+ test ( 'getPerson() throws a proper error message' , ( done ) => {
23+ const personID = 'personID' ;
24+
25+ peopleJSONAdapter . getPerson ( personID ) . subscribe (
26+ ( ) => { } ,
27+ ( error ) => {
28+ expect ( error . message ) . toBe ( `Could not find person with id "${ personID } "` ) ;
29+ done ( ) ;
30+ }
31+ ) ;
32+ } ) ;
33+
34+ test ( 'getPerson() completes the observable' , ( done ) => {
35+ peopleJSONAdapter . getPerson ( person . id ) . subscribe (
36+ ( ) => { } ,
37+ ( ) => { } ,
38+ ( ) => {
39+ expect ( true ) . toBeTruthy ( ) ;
40+ done ( ) ;
41+ }
42+ ) ;
43+ } ) ;
44+
45+ afterEach ( ( ) => {
46+ peopleJSONAdapter = null ;
47+ } ) ;
48+ } ) ;
Original file line number Diff line number Diff line change 11export { default as WebexAdapter } from './WebexAdapter' ;
2+ export { default as PeopleAdapter } from './PeopleAdapter' ;
3+ export { default as PeopleJSONAdapter } from './PeopleJSONAdapter' ;
Original file line number Diff line number Diff line change 1+ {
2+ "id" : " Y2lzY29zcGFyazovL3VzL1BFT1BMRS9iMzNjYjE3Yy00MmUzLTQxYWMtYTA0NS00OTdlNDAwMjY0NmM" ,
3+ "emails" : [
4+ " webexcmps@gmail.com"
5+ ],
6+ "displayName" : " Webex Component User" ,
7+ "firstName" : " Webex" ,
8+ "LastName" : " Component User" ,
9+ "nickName" : " Webex" ,
10+ "avatar" : " https://4b4dc97add6b1dcc891a-54bf3b4e4579920861d23cc001530c2a.ssl.cf1.rackcdn.com/V1~b33cb17c-42e3-41ac-a045-497e4002646c~697607d5347442a990719dd5d80ce379~1600" ,
11+ "orgId" : " Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi9jb25zdW1lcg" ,
12+ "status" : " unknown"
13+ }
Load Diff This file was deleted.
You can’t perform that action at this time.
0 commit comments