From 9e94643dc4985aa94cc03c89544369e2edafaf57 Mon Sep 17 00:00:00 2001 From: Jonas Weber <github@jonasw.de> Date: Fri, 1 Jan 2016 17:09:54 +0100 Subject: [PATCH 1/3] Calculate actual avatar URL in model repeated logic for Gravatar fallback --- app/components/build-header.coffee | 17 ----------------- app/components/builds-item.coffee | 9 --------- app/models/commit.coffee | 17 +++++++++++++++++ app/templates/components/build-header.hbs | 4 ++-- app/templates/components/builds-item.hbs | 2 +- 5 files changed, 20 insertions(+), 29 deletions(-) diff --git a/app/components/build-header.coffee b/app/components/build-header.coffee index e3f515f1..92eda750 100644 --- a/app/components/build-header.coffee +++ b/app/components/build-header.coffee @@ -1,5 +1,4 @@ `import Ember from 'ember'` -`import { gravatarImage } from 'travis/utils/urls'` `import GithubUrlPropertievs from 'travis/mixins/github-url-properties'` `import { durationFrom, safe } from 'travis/utils/helpers'` `import { githubCommit } from 'travis/utils/urls'` @@ -10,22 +9,6 @@ BuildHeaderComponent = Ember.Component.extend classNames: ['build-header'] classNameBindings: ['item.state'] - committerAvatarUrl: (-> - if url = @get('commit.committerAvatarUrl') - url - else - email = @get('commit.committerEmail') - gravatarImage(email, 40) - ).property('commit.committerEmail', 'commit.committerAvatarUrl') - - authorAvatarUrl: (-> - if url = @get('commit.authorAvatarUrl') - url - else - email = @get('commit.authorEmail') - gravatarImage(email, 40) - ).property('commit.authorEmail', 'commit.authorAvatarUrl') - isJob: (-> if @get('item.build') then true else false ).property('item') diff --git a/app/components/builds-item.coffee b/app/components/builds-item.coffee index 49c5e520..c2cf4740 100644 --- a/app/components/builds-item.coffee +++ b/app/components/builds-item.coffee @@ -1,5 +1,4 @@ `import Ember from 'ember'` -`import { gravatarImage } from 'travis/utils/urls'` `import { githubCommit as githubCommitUrl } from 'travis/utils/urls'` BuildsItemComponent = Ember.Component.extend @@ -7,14 +6,6 @@ BuildsItemComponent = Ember.Component.extend classNameBindings: ['build.state'] classNames: ['row-li', 'pr-row'] - authorAvatarUrl: (-> - if url = @get('build.commit.authorAvatarUrl') - url - else - email = @get('build.commit.authorEmail') - gravatarImage(email, 40) - ).property('build.commit.authorEmail', 'build.commit.authorAvatarUrl') - urlGithubCommit: (-> githubCommitUrl(@get('build.repo.slug'), @get('build.commit.sha')) ).property('build.commit.sha') diff --git a/app/models/commit.coffee b/app/models/commit.coffee index 3585b1e3..e942b42e 100644 --- a/app/models/commit.coffee +++ b/app/models/commit.coffee @@ -1,6 +1,7 @@ `import Ember from 'ember'` `import Model from 'travis/models/model'` `import Build from 'travis/models/build'` +`import { gravatarImage } from 'travis/utils/urls'` Commit = Model.extend sha: DS.attr() @@ -34,4 +35,20 @@ Commit = Model.extend @get('authorEmail') == @get('committerEmail') ).property('authorName', 'authorEmail', 'committerName', 'committerEmail') + authorAvatarUrlOrGravatar: (-> + if url = @get('authorAvatarUrl') + url + else + email = @get('authorEmail') + gravatarImage(email, 40) + ).property('authorEmail', 'authorAvatarUrl') + + committerAvatarUrlOrGravatar: (-> + if url = @get('committerAvatarUrl') + url + else + email = @get('committerEmail') + gravatarImage(email, 40) + ).property('committerEmail', 'committerAvatarUrl') + `export default Commit` diff --git a/app/templates/components/build-header.hbs b/app/templates/components/build-header.hbs index 442eeaed..15a1fc88 100644 --- a/app/templates/components/build-header.hbs +++ b/app/templates/components/build-header.hbs @@ -38,11 +38,11 @@ </ul> <p class="commit-author"> {{#if commit.authorName}} - <img src={{authorAvatarUrl}} alt="comitter avatar" aria-hidden="true"><span class="label-align">{{commit.authorName}} authored{{#if commit.authorIsCommitter}} and committed{{/if}}</span> + <img src={{commit.authorAvatarUrlOrGravatar}} alt="author avatar" aria-hidden="true"><span class="label-align">{{commit.authorName}} authored{{#if commit.authorIsCommitter}} and committed{{/if}}</span> {{/if}} {{#unless commit.authorIsCommitter}} {{#if commit.committerName}} - <img src={{committerAvatarUrl}} alt="comitter avatar" aria-hidden="true"><span class="label-align">{{commit.committerName}} committed</span> + <img src={{commit.committerAvatarUrlOrGravatar}} alt="comitter avatar" aria-hidden="true"><span class="label-align">{{commit.committerName}} committed</span> {{/if}} {{/unless}} </p> diff --git a/app/templates/components/builds-item.hbs b/app/templates/components/builds-item.hbs index 081e190f..946d5d6e 100644 --- a/app/templates/components/builds-item.hbs +++ b/app/templates/components/builds-item.hbs @@ -20,7 +20,7 @@ {{/unless}} </div> <div class="row-item row-committer"> - <img class="avatar" src={{authorAvatarUrl}} alt="{{build.commit.committerName}} avatar"> + <img class="avatar" src={{build.commit.authorAvatarUrlOrGravatar}} alt="{{build.commit.authorName}} avatar"> <span class="label-align">{{build.commit.committerName}}</span> </div> </div> From ab54733723852c0f9651abe97bb67cdcb26593a5 Mon Sep 17 00:00:00 2001 From: Jonas Weber <github@jonasw.de> Date: Fri, 1 Jan 2016 17:11:17 +0100 Subject: [PATCH 2/3] Show author name and author avatar on builds list --- app/templates/components/builds-item.hbs | 2 +- tests/unit/components/builds-item-test.coffee | 1 - tests/unit/models/commit-test.coffee | 25 +++++++++++++++++++ 3 files changed, 26 insertions(+), 2 deletions(-) create mode 100644 tests/unit/models/commit-test.coffee diff --git a/app/templates/components/builds-item.hbs b/app/templates/components/builds-item.hbs index 946d5d6e..46b11b3e 100644 --- a/app/templates/components/builds-item.hbs +++ b/app/templates/components/builds-item.hbs @@ -21,7 +21,7 @@ </div> <div class="row-item row-committer"> <img class="avatar" src={{build.commit.authorAvatarUrlOrGravatar}} alt="{{build.commit.authorName}} avatar"> - <span class="label-align">{{build.commit.committerName}}</span> + <span class="label-align">{{build.commit.authorName}}</span> </div> </div> diff --git a/tests/unit/components/builds-item-test.coffee b/tests/unit/components/builds-item-test.coffee index eb1bbbee..4c449367 100644 --- a/tests/unit/components/builds-item-test.coffee +++ b/tests/unit/components/builds-item-test.coffee @@ -32,5 +32,4 @@ test 'it renders', (assert) -> ok component.$().hasClass('passed'), 'component has right status class' equal component.$('.row-branch a').text().trim(), 'foobarbranch', 'component renders branch if event is push' - equal component.$('.avatar').attr('src'), 'https://www.gravatar.com/avatar/5c1e6d6e64e12aca17657581a48005d1?s=40&d=https%3A%2F%2Ftravis-ci.org%2Fimages%2Fui%2Fdefault-avatar.png', 'component renders right gravatar image' equal component.$('a[title="See the commit on GitHub"]').attr('href'), 'https://github.com/foo/bar/commit/a5e8093098f9c0fb46856b753fb8943c7fbf26f3', 'component generates right commit link' diff --git a/tests/unit/models/commit-test.coffee b/tests/unit/models/commit-test.coffee new file mode 100644 index 00000000..d22dddee --- /dev/null +++ b/tests/unit/models/commit-test.coffee @@ -0,0 +1,25 @@ +`import { moduleForModel, test } from 'ember-qunit'` + +moduleForModel 'commit', 'Unit | Model | commit', needs: ['model:build'] + +test 'calculation of avatar urls via Gravatar', -> + model = @subject() + Ember.run -> + model.setProperties + authorEmail: 'author@example.com' + committerEmail: 'author@example.com' + authorAvatarUrl: null + committerAvatarUrl: null + equal model.get('authorAvatarUrlOrGravatar'), 'https://www.gravatar.com/avatar/5c1e6d6e64e12aca17657581a48005d1?s=40&d=https%3A%2F%2Ftravis-ci.org%2Fimages%2Fui%2Fdefault-avatar.png', 'correctly sets gravatar image' + equal model.get('committerAvatarUrlOrGravatar'), 'https://www.gravatar.com/avatar/5c1e6d6e64e12aca17657581a48005d1?s=40&d=https%3A%2F%2Ftravis-ci.org%2Fimages%2Fui%2Fdefault-avatar.png', 'correctly sets gravatar image' + +test 'calculation of avatar urls via overriding parameter', -> + model = @subject() + Ember.run -> + model.setProperties + authorEmail: 'author@example.com' + committerEmail: 'author@example.com' + authorAvatarUrl: 'http://example.com/test.jpg' + committerAvatarUrl: 'http://example.com/test2.jpg' + equal model.get('authorAvatarUrlOrGravatar'), 'http://example.com/test.jpg', 'correctly sets avatar' + equal model.get('committerAvatarUrlOrGravatar'), 'http://example.com/test2.jpg', 'correctly sets avatar' From e27a19101d031aa2a4db3a92a2067a49432f1888 Mon Sep 17 00:00:00 2001 From: Jonas Weber <github@jonasw.de> Date: Fri, 1 Jan 2016 17:27:29 +0100 Subject: [PATCH 3/3] Drop unneeded imports for gravatarImage --- app/components/branch-row.coffee | 1 - app/controllers/branches.coffee | 1 - app/controllers/build.coffee | 1 - app/views/job.coffee | 10 +--------- 4 files changed, 1 insertion(+), 12 deletions(-) diff --git a/app/components/branch-row.coffee b/app/components/branch-row.coffee index 5a90c21d..bb40ad55 100644 --- a/app/components/branch-row.coffee +++ b/app/components/branch-row.coffee @@ -1,5 +1,4 @@ `import Ember from 'ember'` -`import { gravatarImage } from 'travis/utils/urls'` `import { githubCommit as githubCommitUrl } from 'travis/utils/urls'` `import TravisRoute from 'travis/routes/basic'` `import config from 'travis/config/environment'` diff --git a/app/controllers/branches.coffee b/app/controllers/branches.coffee index e2b73697..528573df 100644 --- a/app/controllers/branches.coffee +++ b/app/controllers/branches.coffee @@ -1,5 +1,4 @@ `import Ember from 'ember'` -`import { gravatarImage } from 'travis/utils/urls'` `import GithubUrlPropertievs from 'travis/mixins/github-url-properties'` BranchesController = Ember.Controller.extend diff --git a/app/controllers/build.coffee b/app/controllers/build.coffee index 433dd49d..fcf82f19 100644 --- a/app/controllers/build.coffee +++ b/app/controllers/build.coffee @@ -1,5 +1,4 @@ `import Ember from 'ember'` -`import { gravatarImage } from 'travis/utils/urls'` `import GithubUrlPropertievs from 'travis/mixins/github-url-properties'` Controller = Ember.Controller.extend GithubUrlPropertievs, diff --git a/app/views/job.coffee b/app/views/job.coffee index f9d93bbd..41cc3c96 100644 --- a/app/views/job.coffee +++ b/app/views/job.coffee @@ -1,6 +1,6 @@ `import Ember from 'ember'` `import { colorForState } from 'travis/utils/helpers'` -`import { githubCommit, gravatarImage } from 'travis/utils/urls'` +`import { githubCommit } from 'travis/utils/urls'` `import Polling from 'travis/mixins/polling'` View = Ember.View.extend Polling, @@ -20,12 +20,4 @@ View = Ember.View.extend Polling, githubCommit(@get('repo.slug'), @get('commit.sha')) ).property('repo.slug', 'commit.sha') - urlCommitterGravatarImage: (-> - gravatarImage(@get('commit.committerEmail'), 40) - ).property('commit.committerEmail') - - urlAuthorGravatarImage: (-> - gravatarImage(@get('commit.authorEmail'), 40) - ).property('commit.authorEmail') - `export default View`