Skip to content

Commit

Permalink
Apply suggestions from code review
Browse files Browse the repository at this point in the history
Co-authored-by: Robert Knight <robertknight@gmail.com>
  • Loading branch information
esanzgar and robertknight committed Jan 20, 2022
1 parent ccf9852 commit 61a4721
Showing 1 changed file with 88 additions and 89 deletions.
177 changes: 88 additions & 89 deletions src/shared/test/integration/inter-frame-communication-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -49,76 +49,72 @@ describe('PortProvider-PortFinder-PortRPC integration', () => {
});

it('enables the communication between guest-host', async () => {
let done;
const promise = new Promise(resolve => (done = resolve));

// guest frame
const portFinder = new PortFinder({
hostFrame: window,
source: 'guest',
});
const hostRPC = new PortRPC();
const simulateGuest = async () => {
const portFinder = new PortFinder({
hostFrame: window,
source: 'guest',
});
const port = await portFinder.discover('host');

portFinder.discover('host').then(port => {
const hostRPC = new PortRPC();
hostRPC.connect(port);
hostRPC.call('ping', response => {
assert.equal(response, 'pong');
done();
await new Promise(resolve =>
hostRPC.call('ping', response => {
assert.equal(response, 'pong');
resolve();
})
);
};

const simulateHost = async () => {
await delay(10); // simulate scenario when `Host` is ready after `Guest`

const portProvider = new PortProvider(window.location.origin);
portProvider.listen();

const guestRPC = new PortRPC();
guestRPC.on('ping', cb => cb('pong'));

portProvider.on('frameConnected', (source, port) => {
if (source === 'guest') {
guestRPC.connect(port);
}
});
});

await delay(10); // add some realism
};

// host frame
const portProvider = new PortProvider(window.location.origin);
portProvider.listen();
const guestRPC = new PortRPC();

// Register RPC method *before* connection
guestRPC.on('ping', cb => cb('pong'));

portProvider.on('frameConnected', (source, port) => {
if (source === 'guest') {
guestRPC.connect(port);
}
});

return promise;
return Promise.all([simulateGuest(), simulateHost()]);
});

it('enables the communication between guest-sidebar', async () => {
let done;
const promise = new Promise(resolve => (done = resolve));

// guest frame;
const portFinder1 = new PortFinder({
hostFrame: window,
source: 'guest',
});
const sidebarRPC = new PortRPC();

portFinder1.discover('sidebar').then(port => {
sidebarRPC.connect(port);
sidebarRPC.call('ping', response => {
assert.equal(response, 'pong');
done();
const simulateGuest = async () => {
const portFinder = new PortFinder({
hostFrame: window,
source: 'guest',
});
});
const hostRPC = new PortRPC();

await delay(10); // add some realism
const port = await portFinder.discover('sidebar');
hostRPC.connect(port);

// sidebar frame
const portFinder2 = new PortFinder({
hostFrame: window,
source: 'sidebar',
});
const guestRPC = new PortRPC();
await new Promise(resolve =>
hostRPC.call('ping', response => {
assert.equal(response, 'pong');
resolve();
})
);
};

const simulateSidebar = async () => {
const portFinder = new PortFinder({
hostFrame: window,
source: 'sidebar',
});
const port = await portFinder.discover('host');

// Register RPC method *before* connection
guestRPC.on('ping', cb => cb('pong'));
const guestRPC = new PortRPC();
guestRPC.on('ping', cb => cb('pong'));

const listenerCollection = new ListenerCollection();
portFinder2.discover('host').then(port => {
const listenerCollection = new ListenerCollection();
listenerCollection.add(port, 'message', ({ data, ports }) => {
if (
isMessageEqual(data, {
Expand All @@ -131,48 +127,51 @@ describe('PortProvider-PortFinder-PortRPC integration', () => {
}
});
port.start(); // `start` method would be triggered by `hostRPC.connect(port)`
});
};

const simulateHost = async () => {
await delay(10); // simulate scenario when `Host` is ready after `Guest`

// host frame
const portProvider = new PortProvider(window.location.origin);
portProvider.listen();
const portProvider = new PortProvider(window.location.origin);
portProvider.listen();
};

return promise;
return Promise.all([simulateGuest(), simulateSidebar(), simulateHost()]);
});

it('enables the communication between sidebar-host', async () => {
let done;
const promise = new Promise(resolve => (done = resolve));

// sidebar frame
const portFinder = new PortFinder({
hostFrame: window,
source: 'sidebar',
});
const hostRPC = new PortRPC();
const simulateSidebar = async () => {
const portFinder = new PortFinder({
hostFrame: window,
source: 'sidebar',
});
const port = await portFinder.discover('host');

portFinder.discover('host').then(port => {
const hostRPC = new PortRPC();
hostRPC.connect(port);
hostRPC.call('ping', response => {
assert.equal(response, 'pong');
done();

await new Promise(resolve => {
hostRPC.call('ping', response => {
assert.equal(response, 'pong');
resolve();
});
});
});
};

// host frame
const portProvider = new PortProvider(window.location.origin);
portProvider.listen();
const sidebarRPC = new PortRPC();
const simulateHost = () => {
const portProvider = new PortProvider(window.location.origin);
portProvider.listen();

// Register RPC method *before* connection
sidebarRPC.on('ping', cb => cb('pong'));
const sidebarRPC = new PortRPC();
sidebarRPC.on('ping', cb => cb('pong'));

portProvider.on('frameConnected', (source, port) => {
if (source === 'sidebar') {
sidebarRPC.connect(port);
}
});
portProvider.on('frameConnected', (source, port) => {
if (source === 'sidebar') {
sidebarRPC.connect(port);
}
});
};

return promise;
return Promise.all([simulateSidebar(), simulateHost()]);
});
});

0 comments on commit 61a4721

Please sign in to comment.