Skip to content

Commit

Permalink
Merge b402984 into 3b70fe8
Browse files Browse the repository at this point in the history
  • Loading branch information
jeremierobert-coveo committed Aug 31, 2020
2 parents 3b70fe8 + b402984 commit d400040
Show file tree
Hide file tree
Showing 2 changed files with 58 additions and 1 deletion.
7 changes: 6 additions & 1 deletion src/components/UserActions/ClickedDocumentList.ts
Expand Up @@ -166,7 +166,12 @@ export class ClickedDocumentList extends Component {
this.element,
result
);
this.openLink(false);

if (this.options.alwaysOpenInNewWindow) {
this.openLinkInNewWindow(false);
} else {
this.openLink(false);
}
};
}
}
Expand Down
52 changes: 52 additions & 0 deletions tests/components/UserActions/ClickedDocumentList.spec.ts
Expand Up @@ -271,6 +271,58 @@ describe('ClickedDocumentList', () => {
expect(mock.cmp.disabled).toBe(true);
});

it('Should open the link in a new tab when alwaysOpenInNewWindow is true', async () => {
let openLinkStub = sandbox.stub(ResultLink.prototype, 'openLink');
let openInANewTabStub = sandbox.stub(ResultLink.prototype, 'openLinkInNewWindow');
const mock = Mock.advancedComponentSetup<ClickedDocumentList>(
ClickedDocumentList,
new Mock.AdvancedComponentSetupOptions(null, { userId: 'testuserId' }, (env) => {
fakeUserProfileModel(env.root, sandbox).getActions.callsFake(() => Promise.resolve(TEST_CLICKS));
env.componentOptionsModel;
env.usageAnalytics = new NoopAnalyticsClient();
env.withResult();
env.searchInterface.options.originalOptionsObject['ResultLink'] = {
...env.searchInterface.options.originalOptionsObject['ResultLink'],
};
env.searchInterface.options.originalOptionsObject['ResultLink']['alwaysOpenInNewWindow'] = true;
return env;
})
);

await waitForPromiseCompletion();

mock.env.element.querySelector<HTMLOListElement>('.coveo-list .CoveoResultLink').click();

expect(openLinkStub.calledWith(false)).toBe(false);
expect(openInANewTabStub.calledWith(false)).toBe(true);
});

it('Should not open the link in a new tab when alwaysOpenInNewWindow is false', async () => {
let openLinkStub = sandbox.stub(ResultLink.prototype, 'openLink');
let openInANewTabStub = sandbox.stub(ResultLink.prototype, 'openLinkInNewWindow');
const mock = Mock.advancedComponentSetup<ClickedDocumentList>(
ClickedDocumentList,
new Mock.AdvancedComponentSetupOptions(null, { userId: 'testuserId' }, (env) => {
fakeUserProfileModel(env.root, sandbox).getActions.callsFake(() => Promise.resolve(TEST_CLICKS));
env.componentOptionsModel;
env.usageAnalytics = new NoopAnalyticsClient();
env.withResult();
env.searchInterface.options.originalOptionsObject['ResultLink'] = {
...env.searchInterface.options.originalOptionsObject['ResultLink'],
};
env.searchInterface.options.originalOptionsObject['ResultLink']['alwaysOpenInNewWindow'] = false;
return env;
})
);

await waitForPromiseCompletion();

mock.env.element.querySelector<HTMLOListElement>('.coveo-list .CoveoResultLink').click();

expect(openLinkStub.calledWith(false)).toBe(true);
expect(openInANewTabStub.calledWith(false)).toBe(false);
});

it('should log a userActionDocumentClick event when a result link in the template is clicked', async () => {
let openLinkStub = sandbox.stub(ResultLink.prototype, 'openLink');
let logSearchStub: SinonStub;
Expand Down

0 comments on commit d400040

Please sign in to comment.