Skip to content

Commit b446e0d

Browse files
lalli-floresakoushke
authored andcommitted
feat(activity): add ActivityAdapter interface
1 parent 141e092 commit b446e0d

File tree

2 files changed

+49
-0
lines changed

2 files changed

+49
-0
lines changed

src/adapters/ActivityAdapter.js

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import {throwError} from 'rxjs';
2+
3+
import WebexAdapter from './WebexAdapter';
4+
5+
/**
6+
* This is a base class that defines the interface that maps activity data.
7+
* Developers that want to extend `ActivityAdapter` must implement all of its methods,
8+
* adhering to the exact parameters and structure of the returned objects.
9+
*/
10+
export default class ActivityAdapter extends WebexAdapter {
11+
/**
12+
* Returns an observable that emits message data of the given ID.
13+
*
14+
* @param {string} ID ID of the message to get.
15+
* @returns {Observable.<Activity>}
16+
* @memberof ActivityAdapter
17+
*/
18+
// eslint-disable-next-line no-unused-vars
19+
getMessage(ID) {
20+
return throwError(new Error('getMessage(ID) must be defined in ActivityAdapter'));
21+
}
22+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import ActivityAdapter from './ActivityAdapter';
2+
3+
describe('Activity Adapter Interface', () => {
4+
let activityAdapter;
5+
6+
beforeEach(() => {
7+
activityAdapter = new ActivityAdapter();
8+
});
9+
10+
test('getMessage() returns an observable', () => {
11+
expect(rxjs.isObservable(activityAdapter.getMessage())).toBeTruthy();
12+
});
13+
14+
test('getMessage() throws a proper error message', (done) => {
15+
activityAdapter.getMessage('msgID').subscribe(
16+
() => {},
17+
(error) => {
18+
expect(error.message).toBe('getMessage(ID) must be defined in ActivityAdapter');
19+
done();
20+
}
21+
);
22+
});
23+
24+
afterEach(() => {
25+
activityAdapter = null;
26+
});
27+
});

0 commit comments

Comments
 (0)