Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions app/helpers/clean-repo-url.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import { helper } from '@ember/component/helper';

export function cleanRepoUrl([repoUrl]) {
return (repoUrl || '').replace(/\.git$/, '');
}

export default helper(cleanRepoUrl);
2 changes: 1 addition & 1 deletion app/templates/components/addon-source-usages.hbs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
{{#if usages}}
{{#each visibleUsages as |usage|}}
<div class="usage test-usage">
<a class="filename" href="{{addon.repositoryUrl}}/tree/master/{{usage.filename}}#L{{usage.line_number}}">
<a class="filename" href="{{clean-repo-url addon.repositoryUrl}}/tree/master/{{usage.filename}}#L{{usage.line_number}}">
{{usage.filename}}:{{usage.line_number}}
</a>
{{#each usage.lines as |line|}}
Expand Down
43 changes: 43 additions & 0 deletions tests/acceptance/code-search-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -601,6 +601,49 @@ module('Acceptance | code search', function(hooks) {
assert.dom('.test-filtered-result-info').containsText('0 usages', 'filtered usage count is 0');
});

test('fixes links to code when repo URL ends with .git', async function(assert) {
let addon = server.create('addon', {
name: 'ember-try',
repositoryUrl: 'https://github.com/ember-cli/ember-try.git'
});

server.get('/search/addons', () => {
return {
results: [
{
addon: addon.id,
count: 1
}
]
};
});

server.get('/search/source', () => {
return {
/* eslint-disable camelcase */
results: [
{
line_number: 52,
filename: 'app/services/fake-service.js',
lines: [
{ text: 'if (addonData) {', number: 51 },
{ text: 'addons.pushObject({ addon: addonData.addon });', number: 52 },
{ text: '}', number: 53 }
]
}
]
/* eslint-disable camelcase */
};
});

await visit('/code-search');
await fillIn('#code-search-input', 'TestEm.afterTests');
await click('.test-submit-search');
await click('.test-usage-count');

assert.dom('.filename').hasAttribute('href', 'https://github.com/ember-cli/ember-try/tree/master/app/services/fake-service.js#L52');
});

function searchResults(addons) {
return addons.map((addon) => {
return {
Expand Down
34 changes: 34 additions & 0 deletions tests/integration/helpers/clean-repo-url-test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
import { module, test } from 'qunit';
import { setupRenderingTest } from 'ember-qunit';
import { render } from '@ember/test-helpers';
import hbs from 'htmlbars-inline-precompile';

module('Integration | Helper | clean-repo-url', function(hooks) {
setupRenderingTest(hooks);

test('it removes trailing .git from repo URLs', async function(assert) {
this.set('repoUrl', 'http://example.com/someone/something.git');

await render(hbs`{{clean-repo-url repoUrl}}`);

assert.equal(this.element.textContent.trim(), 'http://example.com/someone/something');
});

test('it does not remove non-trailing ".git"', async function(assert) {
let repoUrl = 'http://example.com/someone.git/something';
this.set('repoUrl', repoUrl);

await render(hbs`{{clean-repo-url repoUrl}}`);

assert.equal(this.element.textContent.trim(), repoUrl);
});

test('it does nothing to URLs that lack .git', async function(assert) {
let repoUrl = 'http://example.com/someone/something';
this.set('repoUrl', repoUrl);

await render(hbs`{{clean-repo-url repoUrl}}`);

assert.equal(this.element.textContent.trim(), repoUrl);
});
});