diff --git a/assets/scripts/app/controllers/repos.coffee b/assets/scripts/app/controllers/repos.coffee index bfa09ace..f61de1a4 100644 --- a/assets/scripts/app/controllers/repos.coffee +++ b/assets/scripts/app/controllers/repos.coffee @@ -6,7 +6,7 @@ Travis.ReposController = Ember.ArrayController.extend 'owned' else 'recent' - ).property('currentUser') + ).property('currentUser.id') currentUserIdDidChange: (-> if @get('currentUser.id') @@ -16,10 +16,10 @@ Travis.ReposController = Ember.ArrayController.extend ).observes('currentUser.id') tabOrIsLoadedDidChange: (-> - if @get('tab') == 'owned' && @get('isLoaded') && @get('length') == 0 - - @container.lookup('router:main').send('renderNoOwnedRepos') - ).observes('isLoaded', 'tab') + Ember.run.scheduleOnce 'routerTransitions', this, -> + if @get('tab') == 'owned' && @get('isLoaded') && @get('length') == 0 + @container.lookup('router:main').send('renderNoOwnedRepos') + ).observes('isLoaded', 'tab', 'length') isLoadedBinding: 'content.isLoaded' needs: ['currentUser', 'repo'] diff --git a/assets/scripts/app/routes.coffee b/assets/scripts/app/routes.coffee index 1c296e1f..cb68dee1 100644 --- a/assets/scripts/app/routes.coffee +++ b/assets/scripts/app/routes.coffee @@ -140,6 +140,11 @@ Travis.GettingStartedRoute = Ember.Route.extend @_super.apply(this, arguments) Travis.FirstSyncRoute = Ember.Route.extend + events: + renderNoOwnedRepos: (->) + # do nothing, we are showing first sync, so it's normal that there is + # no owned repos + setupController: -> $('body').attr('id', 'home') @container.lookup('controller:repos').activate() diff --git a/assets/scripts/app/views.coffee b/assets/scripts/app/views.coffee index ae5928c1..7ddf2bc8 100644 --- a/assets/scripts/app/views.coffee +++ b/assets/scripts/app/views.coffee @@ -43,7 +43,7 @@ Travis.FirstSyncView = Travis.View.extend ).then(null, (e) -> console.log('There was a problem while redirecting from first sync', e) ) - , 5000 + , Travis.config.syncingPageRedirectionTime require 'views/accounts' require 'views/application' diff --git a/assets/scripts/spec/integration/my_repos_spec.coffee b/assets/scripts/spec/integration/my_repos_spec.coffee index 1c086406..6011772b 100644 --- a/assets/scripts/spec/integration/my_repos_spec.coffee +++ b/assets/scripts/spec/integration/my_repos_spec.coffee @@ -5,7 +5,6 @@ module "My repos", Ember.run -> Travis.reset() test "my repos is active by default when user is signed in", -> - Ember.run -> signInUser() visit('/').then -> wait().then -> diff --git a/assets/scripts/spec/integration/sync.coffee b/assets/scripts/spec/integration/sync.coffee new file mode 100644 index 00000000..768edc4e --- /dev/null +++ b/assets/scripts/spec/integration/sync.coffee @@ -0,0 +1,26 @@ +module "Sync", + setup: -> + Ember.run -> Travis.advanceReadiness() + teardown: -> + Ember.run -> Travis.reset() + +test "first sync page is show when user just signed up and is syncing", -> + Ember.run -> + signInUser( + is_syncing: true + synced_at: null + login: 'new-user' + ) + + Travis.config.syncingPageRedirectionTime = 100 + + wait().then -> + ok $('#first_sync').text().match(/Just a few more seconds as we talk to GitHub to find out which repositories belong to you./) + + stop() + Travis.__container__.lookup('controller:currentUser').get('content').set('isSyncing', false) + setTimeout -> + start() + visit('/').then -> + ok $('#getting-started').text().match(/Welcome to Travis CI!/) + , 120 diff --git a/assets/scripts/spec/spec_helper.coffee b/assets/scripts/spec/spec_helper.coffee index e869902c..b98554ea 100644 --- a/assets/scripts/spec/spec_helper.coffee +++ b/assets/scripts/spec/spec_helper.coffee @@ -16,15 +16,19 @@ Ember.Container.prototype.stub = (fullName, instance) -> instance.destroy = instance.destroy || (->) this.cache.dict[fullName] = instance -window.signInUser = -> +window.signInUser = (data) -> + data ||= {} + userData = { + id: 1 + email: 'tyrion@example.org' + login: 'tyrion' + token: 'abcdef' + } + userData = Ember.merge(userData, data) # for now let's just use harcoded data to log in the user, # we may extend it in the future to pass specific user data Travis.auth.signIn - user: - id: 1 - email: 'tyrion@example.org' - login: 'tyrion' - token: 'abcdef' + user: userData token: 'abcdef' #@app = (url, options = {}) -> diff --git a/assets/scripts/travis.coffee b/assets/scripts/travis.coffee index a5753048..71bce608 100644 --- a/assets/scripts/travis.coffee +++ b/assets/scripts/travis.coffee @@ -71,6 +71,7 @@ $.extend Travis, Travis.advanceReadiness() # bc, remove once merged to master config: + syncingPageRedirectionTime: 5000 api_endpoint: $('meta[rel="travis.api_endpoint"]').attr('href') pusher_key: $('meta[name="travis.pusher_key"]').attr('value') ga_code: $('meta[name="travis.ga_code"]').attr('value')