From c751b7a8a4c9b3bd8e5be1451c94d78eadb99389 Mon Sep 17 00:00:00 2001 From: Piotr Sarnacki Date: Mon, 9 Dec 2013 18:32:00 +0100 Subject: [PATCH] Fix specs After update specs fail when there is an unexpected ajax query, because the response is not an ajax response. A long term solution is to remove mockjax from specs, because it makes them brittle and they usually fail after small changes. A better approach would be to use fixtures, which are available for ember model --- .../spec/integration/event_spec.coffee | 2 + assets/scripts/spec/integration/sync.coffee | 13 +++++++ assets/scripts/spec/spec_helper.coffee | 30 +++++++++++++++ assets/scripts/spec/support/mocks.coffee | 7 ++-- assets/scripts/spec/unit/user_spec.coffee | 37 +++++++++++++------ 5 files changed, 74 insertions(+), 15 deletions(-) diff --git a/assets/scripts/spec/integration/event_spec.coffee b/assets/scripts/spec/integration/event_spec.coffee index 26b8eac3..3cd2f835 100644 --- a/assets/scripts/spec/integration/event_spec.coffee +++ b/assets/scripts/spec/integration/event_spec.coffee @@ -29,6 +29,8 @@ test "event containing a repository, adds repository to repos list", -> last_build_number: 10 last_build_started_at: '2012-07-02T00:01:00Z' last_build_finished_at: '2012-07-02T00:02:30Z' + last_build_state: 'passed' + last_build_duration: 90 wait().then -> listsRepo diff --git a/assets/scripts/spec/integration/sync.coffee b/assets/scripts/spec/integration/sync.coffee index 768edc4e..a78ff1ea 100644 --- a/assets/scripts/spec/integration/sync.coffee +++ b/assets/scripts/spec/integration/sync.coffee @@ -12,6 +12,19 @@ test "first sync page is show when user just signed up and is syncing", -> login: 'new-user' ) + $.mockjax + url: '/hooks' + responseTime: 10 + responseText: + hooks: [] + + $.mockjax + url: '/users' + responseTime: 10 + responseText: + user: + is_syncing: true + Travis.config.syncingPageRedirectionTime = 100 wait().then -> diff --git a/assets/scripts/spec/spec_helper.coffee b/assets/scripts/spec/spec_helper.coffee index b98554ea..47f3c6a1 100644 --- a/assets/scripts/spec/spec_helper.coffee +++ b/assets/scripts/spec/spec_helper.coffee @@ -23,7 +23,37 @@ window.signInUser = (data) -> email: 'tyrion@example.org' login: 'tyrion' token: 'abcdef' + created_at: "2011-05-10T15:43:59Z" + gravatar_id: "582034b63279abeaa8e76acf12f5ee30" + is_syncing: false + locale: "en" + name: "Tyrion" + synced_at: "2013-12-09T09:41:47Z" } + $.mockjax + url: '/users/1' + responseTime: 10 + responseText: + user: userData + $.mockjax + url: '/users/permissions' + responseTime: 10 + responseText: + permissions: [] + admin: [] + push: [] + pull: [] + $.mockjax + url: '/broadcasts' + responseTime: 10 + responseText: + broadcasts: [] + $.mockjax + url: '/accounts' + responseTime: 10 + responseText: + accounts: [] + 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 diff --git a/assets/scripts/spec/support/mocks.coffee b/assets/scripts/spec/support/mocks.coffee index 2220b866..76f3b655 100644 --- a/assets/scripts/spec/support/mocks.coffee +++ b/assets/scripts/spec/support/mocks.coffee @@ -1,6 +1,6 @@ minispade.require 'ext/jquery' -responseTime = 0 +responseTime = 10 repos = [ { id: '1', owner: 'travis-ci', name: 'travis-core', slug: 'travis-ci/travis-core', build_ids: [1, 2], last_build_id: 1, last_build_number: 1, last_build_state: 'passed', last_build_duration: 30, last_build_started_at: '2012-07-02T00:00:00Z', last_build_finished_at: '2012-07-02T00:00:30Z', description: 'Description of travis-core', github_language: 'ruby' }, @@ -18,9 +18,9 @@ reposByName = (name) -> builds = [ { id: '1', repository_id: '1', commit_id: 1, job_ids: [1, 2, 3], number: 1, pull_request: false, config: { rvm: ['rbx', '1.9.3', 'jruby'] }, duration: 30, started_at: '2012-07-02T00:00:00Z', finished_at: '2012-07-02T00:00:30Z', state: 'passed' }, - { id: '2', repository_id: '1', commit_id: 2, job_ids: [4], number: 2, pull_request: false, config: { rvm: ['rbx'] }, duration: null }, + { id: '2', repository_id: '1', commit_id: 2, job_ids: [4], number: 2, pull_request: false, config: { rvm: ['rbx'] }, duration: null, state: 'created', finished_at: null }, { id: '3', repository_id: '2', commit_id: 3, job_ids: [5], number: 3, pull_request: false, config: { rvm: ['rbx'] }, duration: 30, started_at: '2012-07-02T00:01:00Z', finished_at: '2012-07-01T00:01:30Z', state: 'failed' }, - { id: '4', repository_id: '3', commit_id: 4, job_ids: [6], number: 4, pull_request: false, config: { rvm: ['rbx'] }, duration: null, started_at: '2012-07-02T00:02:00Z' }, + { id: '4', repository_id: '3', commit_id: 4, job_ids: [6], number: 4, pull_request: false, config: { rvm: ['rbx'] }, duration: null, started_at: '2012-07-02T00:02:00Z', state: 'queued', finished_at: null }, ] commits = [ @@ -174,4 +174,3 @@ $.mockjax url: '/profile/hooks' responseTime: responseTime responseText: { hooks: hooks } - diff --git a/assets/scripts/spec/unit/user_spec.coffee b/assets/scripts/spec/unit/user_spec.coffee index 9c4f832b..8df3fcdb 100644 --- a/assets/scripts/spec/unit/user_spec.coffee +++ b/assets/scripts/spec/unit/user_spec.coffee @@ -6,16 +6,27 @@ module "Travis.User", Travis.User.resetData() test '', -> - $.mockjax({ - url: '/users/permissions', - responseTime: 10, - responseText: { - permissions: [1], - admin: [1], - pull: [2], - push: [3] - } - }); + # TODO: we should not need to mock entire user response + # just for user creation. It happens, because whenever + # a user is created we try to get fresh data + userData = { + id: 1 + email: 'tyrion@example.org' + login: 'tyrion' + token: 'abcdef' + created_at: "2011-05-10T15:43:59Z" + gravatar_id: "582034b63279abeaa8e76acf12f5ee30" + is_syncing: false + locale: "en" + name: "Tyrion" + synced_at: "2013-12-09T09:41:47Z" + } + $.mockjax + url: '/users/1' + responseTime: 10 + responseText: + user: userData + Travis.User.load [{ id: '1', login: 'test@travis-ci.org' }] user = null @@ -24,9 +35,13 @@ test '', -> Ember.run -> user = Travis.User.find(1) + user.set '_rawPermissions', + then: (func) -> + func(permissions: [1], admin: [1], pull: [2], push: [3]) + pushPermissions = user.get('pushPermissions') adminPermissions = user.get('adminPermissions') wait().then -> deepEqual(adminPermissions.toArray(), [1]) - deepEqual(pushPermissions.toArray(), [3]) \ No newline at end of file + deepEqual(pushPermissions.toArray(), [3])