From e9736dfda9ced09c390a3cd49cb3002afbb5c814 Mon Sep 17 00:00:00 2001 From: Piotr Sarnacki Date: Wed, 20 May 2015 14:19:22 +0200 Subject: [PATCH 1/8] Add ssl certs for localhost, for ssl testing --- ssl/server.crt | 20 ++++++++++++++++++++ ssl/server.csr | 17 +++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 ssl/server.crt create mode 100644 ssl/server.csr diff --git a/ssl/server.crt b/ssl/server.crt new file mode 100644 index 00000000..2ce6eb47 --- /dev/null +++ b/ssl/server.crt @@ -0,0 +1,20 @@ +-----BEGIN CERTIFICATE----- +MIIDLjCCAhYCCQDTkfHu8v7oWzANBgkqhkiG9w0BAQUFADBZMQswCQYDVQQGEwJB +VTETMBEGA1UECBMKU29tZS1TdGF0ZTEhMB8GA1UEChMYSW50ZXJuZXQgV2lkZ2l0 +cyBQdHkgTHRkMRIwEAYDVQQDEwlsb2NhbGhvc3QwHhcNMTUwNTIwMDk0OTMzWhcN +MTYwNTE5MDk0OTMzWjBZMQswCQYDVQQGEwJBVTETMBEGA1UECBMKU29tZS1TdGF0 +ZTEhMB8GA1UEChMYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMRIwEAYDVQQDEwls +b2NhbGhvc3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC06JKX9fIR +89LcCahSOWb2S3jloGmd05TRFmmuWQdVIH0a9oXcgQMGY54P1J5DJCCEf/qnjz3a +EQtcvBV2P+pkaagN/K0spUhY0yhCFeva17OSP8rKBzwGGI+CUfALZuSE1UNsKNdu +5VhPZEAVBMm99577TUT+ljWjIIc7lH1tAg7e+J91juboHCPnjTpkQabzfMJiktCi +/9iMRUQPc9v9qXE2FnXIdh0nMze8O4dcbbuBq9KmNoAEyrcnlui9fHoSuBjG9A5S +Zli36i7DupbuKCYHzx2WfDiFXGBnsbPhF65IwirlU4xgzeTof5AOPyCIz7FBYCoK +GscTQCdp2vVlAgMBAAEwDQYJKoZIhvcNAQEFBQADggEBACGUVI55W3ZXBdTjcMBU +bvYd4IZy6eMQ8SuKWe6ovYEetSEJypz0ePEEOr1eC2TPpLqD++pHsVnpRsC23kpd +MhOYA657T8CGbUppOLdk3E2+oRNWzPq6Qgi7MR75O6jskMAXMwbClqhPc4AAAjkX +unhtZCRFgt/HNpiWms+CYHJ1UM2goRo3QUTTSPR1gctmbm0xT4Ma5CLdYuKuDlVx +ukgdMokH8i3CjgCF1tlD7GtPq9MkCFIZcx3Tjm8UgC8KYM6nBt1ejvKthMrmIvHP +KJgP9bcr4BZJJfb210hme2u7Ru+DCdvPeVoUA8phIupcf2b2CrXG0xuvVuSsxdDb +2YM= +-----END CERTIFICATE----- diff --git a/ssl/server.csr b/ssl/server.csr new file mode 100644 index 00000000..f3e66f75 --- /dev/null +++ b/ssl/server.csr @@ -0,0 +1,17 @@ +-----BEGIN CERTIFICATE REQUEST----- +MIICnjCCAYYCAQAwWTELMAkGA1UEBhMCQVUxEzARBgNVBAgTClNvbWUtU3RhdGUx +ITAfBgNVBAoTGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDESMBAGA1UEAxMJbG9j +YWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtOiSl/XyEfPS +3AmoUjlm9kt45aBpndOU0RZprlkHVSB9GvaF3IEDBmOeD9SeQyQghH/6p4892hEL +XLwVdj/qZGmoDfytLKVIWNMoQhXr2tezkj/Kygc8BhiPglHwC2bkhNVDbCjXbuVY +T2RAFQTJvfee+01E/pY1oyCHO5R9bQIO3vifdY7m6Bwj5406ZEGm83zCYpLQov/Y +jEVED3Pb/alxNhZ1yHYdJzM3vDuHXG27gavSpjaABMq3J5bovXx6ErgYxvQOUmZY +t+ouw7qW7igmB88dlnw4hVxgZ7Gz4ReuSMIq5VOMYM3k6H+QDj8giM+xQWAqChrH +E0Anadr1ZQIDAQABoAAwDQYJKoZIhvcNAQEFBQADggEBAGq46qWXlHunS/k7M8DD +AdKrOXrO836C/35gX6C8dabdbbGjIvRCopci1hxpOP7HBA0seN21P0DABn/YvwMW +20zeAraAzAgCso/yeMOWZFpsXyj/0uF7BMGyVV9kiy3x2U4T+//4fYQLKwuCJmh1 +ZEbt7otycYYMETukX21TyzUTDEZXzeX+RPhCKJkIr/4H/Mb9Ij/XlOgMfDMNYfK3 +90D9UNq/gLe7Jq+U13BmlIRYBOlRSKpSZDiLxFb0XYGwi8a9cXSvQZgHrc2cTl7V +pljnkCiKcwUOYBQfsQn/ohcp6cdQQcHTrHc/KApFw0jB1+EmOAg3gaTI041ryT5a +25A= +-----END CERTIFICATE REQUEST----- From 8b333c09fa51c4bb1b91d400c66eedbe1cb2504a Mon Sep 17 00:00:00 2001 From: Piotr Sarnacki Date: Fri, 8 May 2015 14:30:45 +0200 Subject: [PATCH 2/8] Extract builds-item as a component to not use itemController --- app/components/builds-item.coffee | 12 +++++ app/controllers/builds-item.coffee | 20 ------- app/controllers/builds.coffee | 2 - app/routes/pull-requests.coffee | 10 ---- app/templates/builds.hbs | 53 +------------------ app/templates/components/builds-item.hbs | 48 +++++++++++++++++ tests/unit/components/builds-item-test.coffee | 17 ++++++ tests/unit/components/jobs-item-test.coffee | 2 +- 8 files changed, 80 insertions(+), 84 deletions(-) create mode 100644 app/components/builds-item.coffee delete mode 100644 app/controllers/builds-item.coffee create mode 100644 app/templates/components/builds-item.hbs create mode 100644 tests/unit/components/builds-item-test.coffee diff --git a/app/components/builds-item.coffee b/app/components/builds-item.coffee new file mode 100644 index 00000000..1cdd1e8e --- /dev/null +++ b/app/components/builds-item.coffee @@ -0,0 +1,12 @@ +`import Ember from 'ember'` +`import { gravatarImage } from 'travis/utils/urls'` + +BuildsItemComponent = Ember.Component.extend + classNameBindings: ['build.state'] + classNames: ['tile', 'tile--small', 'tile--build', 'row'] + + urlAuthorGravatarImage: (-> + gravatarImage(@get('build.commit.authorEmail'), 40) + ).property('build.commit.authorEmail') + +`export default BuildsItemComponent` diff --git a/app/controllers/builds-item.coffee b/app/controllers/builds-item.coffee deleted file mode 100644 index 5373764b..00000000 --- a/app/controllers/builds-item.coffee +++ /dev/null @@ -1,20 +0,0 @@ -`import Ember from 'ember'` -`import { colorForState } from 'travis/utils/helpers'` -`import GithubUrlProperties from 'travis/mixins/github-url-properties'` -`import { gravatarImage } from 'travis/utils/urls'` - -Controller = Ember.ObjectController.extend(GithubUrlProperties, - needs: ['builds'] - isPullRequestsListBinding: 'controllers.builds.isPullRequestsList' - buildBinding: 'model' - - color: (-> - colorForState(@get('build.state')) - ).property('build.state') - - urlAuthorGravatarImage: (-> - gravatarImage(@get('build.commit.committerEmail'), 40) - ).property('build.commit.authorEmail') -) - -`export default Controller` diff --git a/app/controllers/builds.coffee b/app/controllers/builds.coffee index 325d7565..7bd25ad8 100644 --- a/app/controllers/builds.coffee +++ b/app/controllers/builds.coffee @@ -1,8 +1,6 @@ `import Ember from 'ember'` Controller = Ember.ArrayController.extend - isPullRequestsList: false - sortAscending: false sortProperties: ['number'] diff --git a/app/routes/pull-requests.coffee b/app/routes/pull-requests.coffee index 4253f7c0..4f07d233 100644 --- a/app/routes/pull-requests.coffee +++ b/app/routes/pull-requests.coffee @@ -2,16 +2,6 @@ Route = AbstractBuildsRoute.extend( contentType: 'pull_requests' - - # TODO: it would be better to have separate controller for branches and PRs list - setupController: (controller, model) -> - @_super(controller, model) - - this.controllerFor('builds').set('isPullRequestsList', true) - - deactivate: -> - @_super.apply(this, arguments) - this.controllerFor('builds').set('isPullRequestsList', false) ) `export default Route` diff --git a/app/templates/builds.hbs b/app/templates/builds.hbs index ed386250..ec885c71 100644 --- a/app/templates/builds.hbs +++ b/app/templates/builds.hbs @@ -1,56 +1,7 @@ {{#if content.isLoaded}} {{!-- --}} - {{#each build in controller itemController="buildsItem"}} -
-
- - -
-
-

- {{#if isPullRequestsList}} - PR #{{build.pullRequestNumber}} - {{#link-to "build" build.repo build}} - {{{format-message build.pullRequestTitle short="true" repoBinding=build.repo}}} - {{/link-to}} - {{else}} - {{build.commit.branch}} - {{#link-to "build" build.repo build}} - {{{format-message build.commit.message short="true" repoBinding=build.repo}}} - {{/link-to}} - {{/if}} -

-

{{build.commit.committerName}} committed

-
-
-
-

- {{#if build.id}} - {{#link-to "build" build.repo build}} - - {{build.number}} {{build.state}} - {{/link-to}} - {{/if}} -

-

- - - {{format-sha build.commit.sha}} - -

-
-
-

- - {{format-duration build.duration}} -

-

- - {{format-time build.finishedAt}} -

-
-
-
+ {{#each controller as |build|}} + {{builds-item build=build}} {{/each}} {{#if displayShowMoreButton}}

diff --git a/app/templates/components/builds-item.hbs b/app/templates/components/builds-item.hbs new file mode 100644 index 00000000..519420f9 --- /dev/null +++ b/app/templates/components/builds-item.hbs @@ -0,0 +1,48 @@ +

+ + +
+
+

+ {{#if build.isPullRequest}} + PR #{{build.pullRequestNumber}} + {{#link-to "build" build.repo build}} + {{{format-message build.pullRequestTitle short="true" repoBinding=build.repo}}} + {{/link-to}} + {{else}} + {{build.commit.branch}} + {{#link-to "build" build.repo build}} + {{{format-message build.commit.message short="true" repoBinding=build.repo}}} + {{/link-to}} + {{/if}} +

+

{{build.commit.committerName}} committed

+
+
+
+

+ {{#if build.id}} + {{#link-to "build" build.repo build}} + + {{build.number}} {{build.state}} + {{/link-to}} + {{/if}} +

+

+ + + {{format-sha build.commit.sha}} + +

+
+
+

+ + {{format-duration build.duration}} +

+

+ + {{format-time build.finishedAt}} +

+
+
diff --git a/tests/unit/components/builds-item-test.coffee b/tests/unit/components/builds-item-test.coffee new file mode 100644 index 00000000..c6214df8 --- /dev/null +++ b/tests/unit/components/builds-item-test.coffee @@ -0,0 +1,17 @@ +`import { test, moduleForComponent } from 'ember-qunit'` + +moduleForComponent 'builds-item', { + # specify the other units that are required for this test + # needs: ['component:foo', 'helper:bar'] +} + +test 'it renders', (assert) -> + assert.expect 2 + + # creates the component instance + component = @subject() + assert.equal component._state, 'preRender' + + # renders the component to the page + @render() + assert.equal component._state, 'inDOM' diff --git a/tests/unit/components/jobs-item-test.coffee b/tests/unit/components/jobs-item-test.coffee index 39e91d80..9529c4f4 100644 --- a/tests/unit/components/jobs-item-test.coffee +++ b/tests/unit/components/jobs-item-test.coffee @@ -29,7 +29,7 @@ test 'it renders', -> ok component.$('.job-os').hasClass('linux'), 'OS class should be added for OS icon' equal component.$('.job-duration').text().trim(), '1 min 40 sec', 'duration should be displayed' -test 'ouputs info on not set properties', -> +test 'outputs info on not set properties', -> job = Ember.Object.create() component = @subject(job: job) From 394e9ce11b29302d326d84f42b6539e9879e5024 Mon Sep 17 00:00:00 2001 From: Piotr Sarnacki Date: Fri, 8 May 2015 14:44:36 +0200 Subject: [PATCH 3/8] Change account to Controller --- app/controllers/account.coffee | 6 +++--- app/controllers/profile.coffee | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/controllers/account.coffee b/app/controllers/account.coffee index f060c8da..c08ed3ce 100644 --- a/app/controllers/account.coffee +++ b/app/controllers/account.coffee @@ -1,6 +1,6 @@ `import Ember from 'ember'` -Controller = Ember.ObjectController.extend +Controller = Ember.Controller.extend allHooks: [] needs: ['currentUser'] userBinding: 'controllers.currentUser' @@ -21,7 +21,7 @@ Controller = Ember.ObjectController.extend hook.toggle() reloadHooks: -> - if login = @get('login') + if login = @get('model.login') hooks = @store.find('hook', all: true, owner_name: login) hooks.then () -> @@ -49,7 +49,7 @@ Controller = Ember.ObjectController.extend billingUrl: (-> id = if @get('model.type') == 'user' then 'user' else @get('model.login') - "#{@get('config').billingEndpoint}/subscriptions/#{id}" + "#{@config.billingEndpoint}/subscriptions/#{id}" ).property('model.login', 'model.type') `export default Controller` diff --git a/app/controllers/profile.coffee b/app/controllers/profile.coffee index 4686516a..742fb083 100644 --- a/app/controllers/profile.coffee +++ b/app/controllers/profile.coffee @@ -5,7 +5,7 @@ Controller = Ember.Controller.extend needs: ['currentUser', 'accounts', 'account'] userBinding: 'controllers.currentUser' - accountBinding: 'controllers.account' + accountBinding: 'controllers.account.model' activate: (action, params) -> this["view_#{action}".camelize()]() From 4201b81fe81b5ad8a0cce28d1023b5d6307b003b Mon Sep 17 00:00:00 2001 From: Piotr Sarnacki Date: Fri, 8 May 2015 15:14:35 +0200 Subject: [PATCH 4/8] Change CurrentUserController to Controller --- app/controllers/account.coffee | 2 +- app/controllers/build.coffee | 4 ++-- app/controllers/current-user.coffee | 2 +- app/controllers/first-sync.coffee | 2 +- app/controllers/flash.coffee | 2 +- app/controllers/job.coffee | 4 ++-- app/controllers/profile.coffee | 2 +- app/controllers/repo.coffee | 2 +- app/controllers/repos.coffee | 2 +- app/controllers/top.coffee | 2 +- app/routes/accounts/index.coffee | 2 +- app/templates/components/builds-item.hbs | 10 +++++++--- app/templates/dashboard/repositories.hbs | 1 - app/utils/urls.coffee | 4 ++-- app/views/pre.coffee | 2 +- app/views/repos-list-tabs.coffee | 2 +- 16 files changed, 24 insertions(+), 21 deletions(-) diff --git a/app/controllers/account.coffee b/app/controllers/account.coffee index c08ed3ce..a922a5a8 100644 --- a/app/controllers/account.coffee +++ b/app/controllers/account.coffee @@ -3,7 +3,7 @@ Controller = Ember.Controller.extend allHooks: [] needs: ['currentUser'] - userBinding: 'controllers.currentUser' + userBinding: 'controllers.currentUser.model' init: -> @_super.apply this, arguments diff --git a/app/controllers/build.coffee b/app/controllers/build.coffee index 4e868705..b25d61b1 100644 --- a/app/controllers/build.coffee +++ b/app/controllers/build.coffee @@ -3,10 +3,10 @@ `import GithubUrlPropertievs from 'travis/mixins/github-url-properties'` Controller = Ember.Controller.extend GithubUrlPropertievs, - needs: ['repo'] + needs: ['repo', 'currentUser'] repoBinding: 'controllers.repo.repo' commitBinding: 'build.commit' - currentUserBinding: 'controllers.repo.currentUser' + currentUserBinding: 'controllers.currentUser.model' tabBinding: 'controllers.repo.tab' sendFaviconStateChanges: true diff --git a/app/controllers/current-user.coffee b/app/controllers/current-user.coffee index af7231f6..b6b5d130 100644 --- a/app/controllers/current-user.coffee +++ b/app/controllers/current-user.coffee @@ -1,4 +1,4 @@ -Controller = Ember.ObjectController.extend +Controller = Ember.Controller.extend sync: -> @get('model').sync() diff --git a/app/controllers/first-sync.coffee b/app/controllers/first-sync.coffee index bc9e94a5..6ca0d82b 100644 --- a/app/controllers/first-sync.coffee +++ b/app/controllers/first-sync.coffee @@ -2,7 +2,7 @@ Controller = Ember.Controller.extend needs: ['currentUser'] - user: Ember.computed.alias('controllers.currentUser') + user: Ember.computed.alias('controllers.currentUser.model') isSyncing: Ember.computed.alias('user.isSyncing') diff --git a/app/controllers/flash.coffee b/app/controllers/flash.coffee index dff32821..650d2081 100644 --- a/app/controllers/flash.coffee +++ b/app/controllers/flash.coffee @@ -4,7 +4,7 @@ Controller = Ember.ArrayController.extend needs: ['currentUser'] - currentUserBinding: 'controllers.currentUser' + currentUserBinding: 'controllers.currentUser.model' init: -> @_super.apply this, arguments diff --git a/app/controllers/job.coffee b/app/controllers/job.coffee index f262a0e4..fb45da9c 100644 --- a/app/controllers/job.coffee +++ b/app/controllers/job.coffee @@ -2,12 +2,12 @@ `import { githubCommit } from 'travis/utils/urls'` Controller = Ember.Controller.extend - needs: ['repo'] + needs: ['repo', 'currentUser'] repoBinding: 'controllers.repo.repo' commitBinding: 'job.commit' annotationsBinding: 'job.annotations' - currentUserBinding: 'controllers.repo.currentUser' + currentUserBinding: 'controllers.currentUser.model' tabBinding: 'controllers.repo.tab' currentItemBinding: 'job' diff --git a/app/controllers/profile.coffee b/app/controllers/profile.coffee index 742fb083..d5dd0c5d 100644 --- a/app/controllers/profile.coffee +++ b/app/controllers/profile.coffee @@ -4,7 +4,7 @@ Controller = Ember.Controller.extend name: 'profile' needs: ['currentUser', 'accounts', 'account'] - userBinding: 'controllers.currentUser' + userBinding: 'controllers.currentUser.model' accountBinding: 'controllers.account.model' activate: (action, params) -> diff --git a/app/controllers/repo.coffee b/app/controllers/repo.coffee index e8b616ec..dd8ed09f 100644 --- a/app/controllers/repo.coffee +++ b/app/controllers/repo.coffee @@ -3,7 +3,7 @@ Controller = Ember.Controller.extend needs: ['repos', 'currentUser', 'build', 'request', 'job'] - currentUserBinding: 'controllers.currentUser' + currentUserBinding: 'controllers.currentUser.model' build: Ember.computed.alias('controllers.build.build') job: Ember.computed.alias('controllers.job.job') diff --git a/app/controllers/repos.coffee b/app/controllers/repos.coffee index 42a7e613..bce174fa 100644 --- a/app/controllers/repos.coffee +++ b/app/controllers/repos.coffee @@ -31,7 +31,7 @@ Controller = Ember.ArrayController.extend isLoadedBinding: 'content.isLoaded' needs: ['currentUser', 'repo', 'runningJobs', 'queue'] - currentUserBinding: 'controllers.currentUser' + currentUserBinding: 'controllers.currentUser.model' selectedRepo: (-> # we need to observe also repo.content here, because we use # ObjectProxy in repo controller diff --git a/app/controllers/top.coffee b/app/controllers/top.coffee index d70f1f6c..7ef3d5be 100644 --- a/app/controllers/top.coffee +++ b/app/controllers/top.coffee @@ -2,7 +2,7 @@ Controller = Ember.Controller.extend needs: ['currentUser'] - userBinding: 'controllers.currentUser' + userBinding: 'controllers.currentUser.model' userName: (-> @get('user.name') || @get('user.login') diff --git a/app/routes/accounts/index.coffee b/app/routes/accounts/index.coffee index 7cb2c715..b3f39679 100644 --- a/app/routes/accounts/index.coffee +++ b/app/routes/accounts/index.coffee @@ -5,7 +5,7 @@ Route = TravisRoute.extend # TODO: setting accounts model in ProfileRoute is wrong, but # at this stage it's better than what we had before accounts = @modelFor('accounts') - login = @controllerFor('currentUser').get('login') + login = @controllerFor('currentUser').get('model.login') account = accounts.find (account) -> account.get('login') == login @replaceWith 'account', account diff --git a/app/templates/components/builds-item.hbs b/app/templates/components/builds-item.hbs index 519420f9..eb6f3d65 100644 --- a/app/templates/components/builds-item.hbs +++ b/app/templates/components/builds-item.hbs @@ -1,7 +1,8 @@
- - + +
+

{{#if build.isPullRequest}} @@ -16,7 +17,9 @@ {{/link-to}} {{/if}}

-

{{build.commit.committerName}} committed

+

+ {{build.commit.committerName}} committed +

@@ -35,6 +38,7 @@

+

diff --git a/app/templates/dashboard/repositories.hbs b/app/templates/dashboard/repositories.hbs index 3e8abe9f..0fb099ea 100644 --- a/app/templates/dashboard/repositories.hbs +++ b/app/templates/dashboard/repositories.hbs @@ -8,7 +8,6 @@

-
diff --git a/app/utils/urls.coffee b/app/utils/urls.coffee index ac3ef3c3..65ebf9d6 100644 --- a/app/utils/urls.coffee +++ b/app/utils/urls.coffee @@ -23,7 +23,7 @@ githubAdmin = (slug) -> statusImage = (slug, branch) -> if config.pro - token = Travis.__container__.lookup('controller:currentUser').get('token') + token = Travis.__container__.lookup('controller:currentUser').get('model.token') "#{location.protocol}//#{location.host}/#{slug}.svg?token=#{token}" + if branch then "&branch=#{branch}" else '' else "#{location.protocol}//#{location.host}/#{slug}.svg" + if branch then "?branch=#{encodeURIComponent(branch)}" else '' @@ -35,7 +35,7 @@ ccXml = (slug, branch) -> if config.pro delimiter = if url.indexOf('?') == -1 then '?' else '&' - token = Travis.__container__.lookup('controller:currentUser').get('token') + token = Travis.__container__.lookup('controller:currentUser').get('model.token') url = "#{url}#{delimiter}token=#{token}" url diff --git a/app/views/pre.coffee b/app/views/pre.coffee index 67ffeea2..6607559f 100644 --- a/app/views/pre.coffee +++ b/app/views/pre.coffee @@ -25,7 +25,7 @@ Log.Scroll.prototype = $.extend new Log.Listener, View = BasicView.extend templateName: 'jobs/pre' - currentUserBinding: 'controller.currentUser' + currentUserBinding: 'controller.currentUser.model' logWillChange: (-> console.log 'log view: log will change' if Log.DEBUG diff --git a/app/views/repos-list-tabs.coffee b/app/views/repos-list-tabs.coffee index 4b2d272f..2a72c29b 100644 --- a/app/views/repos-list-tabs.coffee +++ b/app/views/repos-list-tabs.coffee @@ -3,7 +3,7 @@ View = Ember.View.extend templateName: 'repos/list/tabs' tabBinding: 'controller.tab' - currentUserBinding: 'controller.currentUser.id' + currentUserBinding: 'controller.currentUser.model' classRecent: (-> if @get('tab') == 'recent' From d2dd744811aee1f8ebe4b2a4c0736c71711b75ac Mon Sep 17 00:00:00 2001 From: Piotr Sarnacki Date: Fri, 8 May 2015 15:15:19 +0200 Subject: [PATCH 5/8] Remove unused controllers --- app/controllers/caches-by-branch.coffee | 25 ----------------------- app/controllers/caches-item.coffee | 27 ------------------------- 2 files changed, 52 deletions(-) delete mode 100644 app/controllers/caches-by-branch.coffee delete mode 100644 app/controllers/caches-item.coffee diff --git a/app/controllers/caches-by-branch.coffee b/app/controllers/caches-by-branch.coffee deleted file mode 100644 index 34f01be2..00000000 --- a/app/controllers/caches-by-branch.coffee +++ /dev/null @@ -1,25 +0,0 @@ -`import Ember from 'ember'` -`import Ajax from 'travis/utils/ajax'` - -Controller = Ember.ObjectController.extend - isDeleting: false - needs: ['repo', 'caches'] - repo: Ember.computed.alias('controllers.repo.repo') - - actions: - delete: -> - return if @get('isDeleting') - - if confirm('Are you sure?') - @set('isDeleting', true) - - data = { branch: @get('branch') } - - deletingDone = => @set('isDeleting', false) - - repo = @get('repo') - Ajax.ajax("/repos/#{repo.get('id')}/caches", "DELETE", data: data).then(deletingDone, deletingDone).then => - model = @get('model') - @get('controllers.caches').removeObject(model) - -`export default Controller` diff --git a/app/controllers/caches-item.coffee b/app/controllers/caches-item.coffee deleted file mode 100644 index ef14fea2..00000000 --- a/app/controllers/caches-item.coffee +++ /dev/null @@ -1,27 +0,0 @@ -`import Ember from 'ember'` -`import Ajax from 'travis/utils/ajax'` - -Controller = Ember.ObjectController.extend - isDeleting: false - needs: ['repo', 'caches'] - repo: Ember.computed.alias('controllers.repo.repo') - - actions: - delete: -> - return if @get('isDeleting') - - if confirm('Are you sure?') - @set('isDeleting', true) - - data = { branch: @get('branch'), match: @get('slug') } - - deletingDone = => @set('isDeleting', false) - - repo = @get('repo') - Ajax.ajax("/repos/#{repo.get('id')}/caches", "DELETE", data: data).then(deletingDone, deletingDone).then => - model = @get('model') - @get('parent.caches').removeObject(model) - if @get('parent.caches.length') == 0 - @get('controllers.caches').removeObject(@get('parent')) - -`export default Controller` From 81264689f896d075ad9787bf7a09efe595efd457 Mon Sep 17 00:00:00 2001 From: Piotr Sarnacki Date: Fri, 8 May 2015 17:00:53 +0200 Subject: [PATCH 6/8] Change requests items to use components --- app/components/requests-item.coffee | 41 +++++++++++++++++++ app/controllers/repo.coffee | 3 +- app/controllers/request.coffee | 35 ---------------- app/templates/components/requests-item.hbs | 30 ++++++++++++++ app/templates/requests.hbs | 35 +--------------- .../unit/components/requests-item-test.coffee | 17 ++++++++ 6 files changed, 91 insertions(+), 70 deletions(-) create mode 100644 app/components/requests-item.coffee delete mode 100644 app/controllers/request.coffee create mode 100644 app/templates/components/requests-item.hbs create mode 100644 tests/unit/components/requests-item-test.coffee diff --git a/app/components/requests-item.coffee b/app/components/requests-item.coffee new file mode 100644 index 00000000..a80b0d74 --- /dev/null +++ b/app/components/requests-item.coffee @@ -0,0 +1,41 @@ +`import Ember from 'ember'` +`import config from 'travis/config/environment'` + +RequestsItemComponent = Ember.Component.extend + classNames: ['tile', 'tile--jobs', 'row'] + classNameBindings: ['requestClass'] + tagName: 'li' + + requestClass: (-> + if @get('request.isAccepted') + 'accepted' + else + 'rejected' + ).property('content.isAccepted') + + type: (-> + if @get('request.isPullRequest') + 'pull_request' + else + 'push' + ).property('request.isPullRequest') + + status: (-> + if @get('request.isAccepted') + 'Accepted' + else + 'Rejected' + ).property('request.isAccepted') + + message: (-> + message = @get('request.message') + if config.pro && message == "private repository" + '' + else if !message + 'Build created successfully ' + else + message + ).property('request.message') + + +`export default RequestsItemComponent` diff --git a/app/controllers/repo.coffee b/app/controllers/repo.coffee index dd8ed09f..6ae60aa3 100644 --- a/app/controllers/repo.coffee +++ b/app/controllers/repo.coffee @@ -2,12 +2,11 @@ `import { githubRepo } from 'travis/utils/urls'` Controller = Ember.Controller.extend - needs: ['repos', 'currentUser', 'build', 'request', 'job'] + needs: ['repos', 'currentUser', 'build', 'job'] currentUserBinding: 'controllers.currentUser.model' build: Ember.computed.alias('controllers.build.build') job: Ember.computed.alias('controllers.job.job') - request: Ember.computed.alias('controllers.request.model') slug: (-> @get('repo.slug') ).property('repo.slug') isLoading: (-> @get('repo.isLoading') ).property('repo.isLoading') diff --git a/app/controllers/request.coffee b/app/controllers/request.coffee deleted file mode 100644 index 59173b06..00000000 --- a/app/controllers/request.coffee +++ /dev/null @@ -1,35 +0,0 @@ -`import Ember from 'ember'` - -Controller = Ember.ObjectController.extend - requestClass: (-> - if @get('content.isAccepted') - 'accepted' - else - 'rejected' - ).property('content.isAccepted') - - type: (-> - if @get('isPullRequest') - 'pull_request' - else - 'push' - ).property('isPullRequest') - - status: (-> - if @get('isAccepted') - 'Accepted' - else - 'Rejected' - ).property('isAccepted') - - message: (-> - message = @get('model.message') - if @config.pro && message == "private repository" - '' - else if !message - 'Build created successfully ' - else - message - ).property('model.message') - -`export default Controller` diff --git a/app/templates/components/requests-item.hbs b/app/templates/components/requests-item.hbs new file mode 100644 index 00000000..a931f716 --- /dev/null +++ b/app/templates/components/requests-item.hbs @@ -0,0 +1,30 @@ +
+ +
+ +

{{format-time request.created_at}}

+ +

+ + {{#if request.isPullRequest}} + #{{request.pullRequestNumber}} + {{else}} + {{request.branchName}} + {{/if}} + {{github-commit-link request.repo.slug request.commit.sha}} +

+ +

+ {{{format-message request.commit.message short="true" repoBinding=request.build.repo}}} +

+ +

+ {{#if request.build}} + + {{#link-to "build" request.build}} + {{request.build.number}}{{/link-to}} + {{else}} + - + {{/if}} +

+

{{message}}

diff --git a/app/templates/requests.hbs b/app/templates/requests.hbs index d0050a7c..14a0bce2 100644 --- a/app/templates/requests.hbs +++ b/app/templates/requests.hbs @@ -7,38 +7,7 @@ {{/if}}
    - {{#each controller itemController="request"}} -
  • -
    - -
    - -

    {{format-time created_at}}

    - -

    - - {{#if isPullRequest}} - #{{pullRequestNumber}} - {{else}} - {{branchName}} - {{/if}} - {{github-commit-link repo.slug commit.sha}} -

    - -

    - {{{format-message commit.message short="true" repoBinding=build.repo}}} -

    - -

    - {{#if build}} - - {{#link-to "build" build}} - {{build.number}}{{/link-to}} - {{else}} - - - {{/if}} -

    -

    {{message}}

    -
  • + {{#each model as |request| }} + {{requests-item request=request}} {{/each}}
diff --git a/tests/unit/components/requests-item-test.coffee b/tests/unit/components/requests-item-test.coffee new file mode 100644 index 00000000..7b8f38a9 --- /dev/null +++ b/tests/unit/components/requests-item-test.coffee @@ -0,0 +1,17 @@ +`import { test, moduleForComponent } from 'ember-qunit'` + +moduleForComponent 'requests-item', { + # specify the other units that are required for this test + # needs: ['component:foo', 'helper:bar'] +} + +test 'it renders', (assert) -> + assert.expect 2 + + # creates the component instance + component = @subject() + assert.equal component._state, 'preRender' + + # renders the component to the page + @render() + assert.equal component._state, 'inDOM' From e1bb8a2e412a29bb4894c6519534a4b1cf1a3eea Mon Sep 17 00:00:00 2001 From: Piotr Sarnacki Date: Fri, 8 May 2015 17:05:08 +0200 Subject: [PATCH 7/8] Settings controller doesn't need to be ObjectController --- app/controllers/settings/index.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/settings/index.coffee b/app/controllers/settings/index.coffee index 40656ffa..ca04a09b 100644 --- a/app/controllers/settings/index.coffee +++ b/app/controllers/settings/index.coffee @@ -1,6 +1,6 @@ `import Ember from 'ember'` -Controller = Ember.ObjectController.extend +Controller = Ember.Controller.extend settings: Ember.computed.alias('model.settings') settingsChanged: (-> From f8470cd2311e6012ef587e17afc09bc40b57c0da Mon Sep 17 00:00:00 2001 From: Piotr Sarnacki Date: Tue, 2 Jun 2015 11:44:11 +0200 Subject: [PATCH 8/8] Add some more tests for requests-item component, fix builds-item tests --- tests/unit/components/builds-item-test.coffee | 4 +- .../unit/components/requests-item-test.coffee | 54 +++++++++++++++---- 2 files changed, 47 insertions(+), 11 deletions(-) diff --git a/tests/unit/components/builds-item-test.coffee b/tests/unit/components/builds-item-test.coffee index c6214df8..d28a53f7 100644 --- a/tests/unit/components/builds-item-test.coffee +++ b/tests/unit/components/builds-item-test.coffee @@ -1,8 +1,8 @@ `import { test, moduleForComponent } from 'ember-qunit'` moduleForComponent 'builds-item', { - # specify the other units that are required for this test - # needs: ['component:foo', 'helper:bar'] + needs: ['helper:format-sha', 'helper:format-duration', 'helper:format-time', + 'helper:format-message'] } test 'it renders', (assert) -> diff --git a/tests/unit/components/requests-item-test.coffee b/tests/unit/components/requests-item-test.coffee index 7b8f38a9..985ccd18 100644 --- a/tests/unit/components/requests-item-test.coffee +++ b/tests/unit/components/requests-item-test.coffee @@ -1,17 +1,53 @@ `import { test, moduleForComponent } from 'ember-qunit'` moduleForComponent 'requests-item', { - # specify the other units that are required for this test - # needs: ['component:foo', 'helper:bar'] + needs: ['helper:format-message', 'helper:format-time', 'helper:github-commit-link'] } -test 'it renders', (assert) -> - assert.expect 2 +test 'it renders request data', (assert) -> + yesterday = new Date() + yesterday.setDate(yesterday.getDate() - 1) - # creates the component instance - component = @subject() - assert.equal component._state, 'preRender' + request = { + id: 1, + branchName: 'dev', + commit: { + sha: 'abcdef123', + message: 'Bam! :bomb:' + }, + repo: { + slug: 'travis-ci/travis-ci' + }, + build: { + number: 10 + } + created_at: yesterday, + isAccepted: true + } - # renders the component to the page + component = @subject(request: request) @render() - assert.equal component._state, 'inDOM' + + assert.equal component.$('.requests-branch').text().trim().replace(/[\s]+/, ' '), + 'dev abcdef1' + assert.equal component.$('.requests-time').text().trim(), 'a day ago' + assert.ok component.$('.tile-status > .icon').hasClass('accepted'), 'icon should have accepted class' + assert.equal component.$('.requests-commit').text().trim(), 'Bam!' + assert.equal component.$('.requests-commit .emoji').length, 1, 'there should be an emoji icon in commit message' + assert.equal component.$('.requests-commit .emoji').attr('title'), ':bomb:' + assert.equal component.$('.requests-build a').text().trim(), '10', 'build number should be displayed' + +test 'it renders PR number if a request is a PR', (assert) -> + # creates the component instance + request = { + id: 1, + isPullRequest: true, + pullRequestNumber: 20, + build: null + } + + component = @subject(request: request) + @render() + + assert.equal component.$('.requests-branch').text().trim(), '#20' + assert.equal component.$('.requests-build').text().trim(), '-'