Skip to content

Commit 05d1425

Browse files
author
vvo
committed
feat(poweredBy): automatically add utm link to poweredBy
fixes #711
1 parent e5de24f commit 05d1425

File tree

4 files changed

+21
-15
lines changed

4 files changed

+21
-15
lines changed

src/components/PoweredBy/PoweredBy.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ class PoweredBy extends React.Component {
55
return (
66
<div className={this.props.cssClasses.root}>
77
Search by
8-
<a className={this.props.cssClasses.link} href="https://www.algolia.com/" target="_blank">Algolia</a>
8+
<a className={this.props.cssClasses.link} href={this.props.link} target="_blank">Algolia</a>
99
</div>
1010
);
1111
}
@@ -15,7 +15,8 @@ PoweredBy.propTypes = {
1515
cssClasses: React.PropTypes.shape({
1616
root: React.PropTypes.string,
1717
link: React.PropTypes.string
18-
})
18+
}),
19+
link: React.PropTypes.string.isRequired
1920
};
2021

2122
export default PoweredBy;

src/components/PoweredBy/__tests__/PoweredBy-test.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,13 @@ describe('PoweredBy', () => {
2121
cssClasses: {
2222
root: 'pb-root',
2323
link: 'pb-link'
24-
}
24+
},
25+
link: 'www.google.com'
2526
});
2627
expect(out).toEqualJSX(
2728
<div className="pb-root">
2829
Search by
29-
<a className="pb-link" href="https://www.algolia.com/" target="_blank">Algolia</a>
30+
<a className="pb-link" href="www.google.com" target="_blank">Algolia</a>
3031
</div>);
3132
});
3233

src/widgets/search-box/__tests__/search-box-test.js

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -16,20 +16,17 @@ function createHTMLNodeFromString(string) {
1616
return parent.firstChild;
1717
}
1818

19-
describe('search-box()', () => {
19+
describe('searchBox()', () => {
2020
beforeEach(function() {this.jsdom = jsdom();});
2121
afterEach(function() {this.jsdom();});
2222

23-
let ReactDOM;
2423
let container;
2524
let state;
2625
let helper;
2726
let widget;
2827
let onHistoryChange;
2928

3029
beforeEach(() => {
31-
ReactDOM = {render: sinon.spy()};
32-
searchBox.__Rewire__('ReactDOM', ReactDOM);
3330
state = {
3431
query: ''
3532
};
@@ -193,13 +190,17 @@ describe('search-box()', () => {
193190
it('do not add the poweredBy if not specified', () => {
194191
widget = searchBox({container});
195192
widget.init({state, helper, onHistoryChange});
196-
expect(ReactDOM.render.notCalled).toBe(true);
193+
expect(container.querySelector('.ais-search-box--powered-by')).toBe(null);
197194
});
198195

199-
it('add the poweredBy if specified', () => {
196+
it('adds the poweredBy if specified', () => {
200197
widget = searchBox({container, poweredBy: true});
201198
widget.init({state, helper, onHistoryChange});
202-
expect(ReactDOM.render.notCalled).toBe(false);
199+
const poweredBy = container.querySelector('.ais-search-box--powered-by');
200+
const poweredByLink = poweredBy.querySelector('a');
201+
const expectedLink = `https://www.algolia.com/?utm_source=instantsearch.js&utm_medium=website&utm_content=${location.hostname}&utm_campaign=poweredby`;
202+
expect(poweredBy).toNotBe(null);
203+
expect(poweredByLink.getAttribute('href')).toBe(expectedLink);
203204
});
204205
});
205206

@@ -405,9 +406,5 @@ describe('search-box()', () => {
405406
});
406407
});
407408
});
408-
409-
afterEach(() => {
410-
searchBox.__ResetDependency__('ReactDOM');
411-
});
412409
});
413410

src/widgets/search-box/search-box.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,9 +103,16 @@ function searchBox({
103103
root: cx(bem('powered-by'), cssClasses.poweredBy),
104104
link: bem('powered-by-link')
105105
};
106+
let link = 'https://www.algolia.com/?' +
107+
'utm_source=instantsearch.js&' +
108+
'utm_medium=website&' +
109+
`utm_content=${location.hostname}&` +
110+
'utm_campaign=poweredby';
111+
106112
ReactDOM.render(
107113
<PoweredBy
108114
cssClasses={poweredByCssClasses}
115+
link={link}
109116
/>,
110117
poweredByContainer
111118
);

0 commit comments

Comments
 (0)