Skip to content
This repository has been archived by the owner on Feb 15, 2023. It is now read-only.

Commit

Permalink
Merge pull request #18 from pjchender/dev
Browse files Browse the repository at this point in the history
fix: recevie 'to' when sendSignal
  • Loading branch information
andyyou committed Mar 31, 2020
2 parents dab1c1a + 7b8a801 commit cbda746
Show file tree
Hide file tree
Showing 3 changed files with 66 additions and 12 deletions.
1 change: 1 addition & 0 deletions src/__mocks__/mockData.js
Expand Up @@ -87,6 +87,7 @@ const MOCK_SESSION = {
};

const MOCK_SIGNAL = {
to: 'to-specific-user',
type: 'foo',
data: JSON.stringify({
foo: 'bar',
Expand Down
10 changes: 5 additions & 5 deletions src/index.js
Expand Up @@ -191,15 +191,15 @@ const useOpenTok = () => {
);

const sendSignal = useCallback(
({ type, data, completionHandler }) => {
({ type, data, to, completionHandler }) => {
if (!isSessionConnected) {
throw new Error('[ReactUseOpenTok] sendSignal: Session is not connected');
}

let signal = { data };

if (typeof type === 'string' && type.length > 0) {
signal.type = type;
let signal = {
data,
...type && { type },
...to && { to },
}

session.signal(signal, error => {
Expand Down
67 changes: 60 additions & 7 deletions src/index.test.js
Expand Up @@ -44,7 +44,12 @@ describe('session initialization and connection', () => {
expect(error).toMatch(/token/);
}

await act(() => opentokMethods.connectSession(MOCK_CREDENTIALS.token, opentokProps.session));
await act(() =>
opentokMethods.connectSession(
MOCK_CREDENTIALS.token,
opentokProps.session
)
);
[opentokProps, opentokMethods] = result.current;
expect(opentokProps.isSessionConnected).toBeTruthy();
expect(opentokProps.connectionId).toEqual(expect.any(String));
Expand Down Expand Up @@ -82,7 +87,12 @@ describe('session methods after initialization', () => {
connectionId: undefined,
});

await act(() => opentokMethods.connectSession(MOCK_CREDENTIALS.token, opentokProps.session));
await act(() =>
opentokMethods.connectSession(
MOCK_CREDENTIALS.token,
opentokProps.session
)
);
[opentokProps, opentokMethods] = result.current;
expect(opentokProps).toMatchObject({
isSessionConnected: true,
Expand Down Expand Up @@ -180,12 +190,14 @@ describe('session methods after initialization', () => {
const stream = opentokProps.publisher[name].stream;

// subscribe
act(() =>
act(() => {
opentokMethods.subscribe({
stream,
element: 'subscriber',
})
);
});
return undefined;
});

[opentokProps, opentokMethods] = result.current;

expect(opentokProps.subscribers.length).toBe(1);
Expand All @@ -200,15 +212,20 @@ describe('session methods after initialization', () => {
expect(opentokProps.subscribers.length).toBe(0);
});

it('sendSignal', async () => {
it('sendSignal with to and type', async () => {
const { result } = renderHook(() => reactUseOpentok());
let [opentokProps, opentokMethods] = result.current;
expect(() => act(() => opentokMethods.sendSignal(MOCK_SIGNAL))).toThrow();

await act(() => opentokMethods.initSession(MOCK_CREDENTIALS));
[opentokProps, opentokMethods] = result.current;

await act(() => opentokMethods.connectSession(MOCK_CREDENTIALS.token, opentokProps.session));
await act(() =>
opentokMethods.connectSession(
MOCK_CREDENTIALS.token,
opentokProps.session
)
);
[opentokProps, opentokMethods] = result.current;

// register signal event
Expand All @@ -224,6 +241,42 @@ describe('session methods after initialization', () => {
expect(handleSignal).toHaveBeenCalledWith({
type: MOCK_SIGNAL.type,
data: MOCK_SIGNAL.data,
to: MOCK_SIGNAL.to,
});
});

it('sendSignal without to and type', async () => {
const { result } = renderHook(() => reactUseOpentok());
let [opentokProps, opentokMethods] = result.current;
const { to, type, ...mockSignalWithoutTypeAndTo } = MOCK_SIGNAL;

expect(() =>
act(() => opentokMethods.sendSignal(mockSignalWithoutTypeAndTo))
).toThrow();

await act(() => opentokMethods.initSession(MOCK_CREDENTIALS));
[opentokProps, opentokMethods] = result.current;

await act(() =>
opentokMethods.connectSession(
MOCK_CREDENTIALS.token,
opentokProps.session
)
);
[opentokProps, opentokMethods] = result.current;

// register signal event
const handleSignal = jest.fn(e => e);
act(() => opentokProps.session.on('signal', handleSignal));
expect(handleSignal).not.toHaveBeenCalled();

// dispatch signal event
[opentokProps, opentokMethods] = result.current;
act(() => opentokMethods.sendSignal(mockSignalWithoutTypeAndTo));

expect(handleSignal).toHaveBeenCalledTimes(1);
expect(handleSignal).toHaveBeenCalledWith({
data: MOCK_SIGNAL.data,
});
});
});
Expand Down

0 comments on commit cbda746

Please sign in to comment.