From 5fbad148c9caca4fefb9e3a462649fb20cccd8aa Mon Sep 17 00:00:00 2001 From: cahrens Date: Fri, 12 Jun 2015 14:18:05 -0400 Subject: [PATCH] Jasmine test runner for files in common using RequireJS. --- .../js/spec/components/paging_collection.js | 38 +++++ .../js/spec}/components/paging_spec.js | 142 ++++++++------- common/static/js/spec/main_requirejs.js | 161 ++++++++++++++++++ common/static/js_test_requirejs.yml | 76 +++++++++ pavelib/utils/envs.py | 2 + 5 files changed, 344 insertions(+), 75 deletions(-) create mode 100644 common/static/common/js/spec/components/paging_collection.js rename common/static/{js/spec/common => common/js/spec}/components/paging_spec.js (85%) create mode 100644 common/static/js/spec/main_requirejs.js create mode 100644 common/static/js_test_requirejs.yml diff --git a/common/static/common/js/spec/components/paging_collection.js b/common/static/common/js/spec/components/paging_collection.js new file mode 100644 index 0000000000..b83f4f2d86 --- /dev/null +++ b/common/static/common/js/spec/components/paging_collection.js @@ -0,0 +1,38 @@ +define(["backbone.paginator", "backbone"], function(BackbonePaginator, Backbone) { + // This code was adapted from collections/asset.js. + var PagingCollection = BackbonePaginator.requestPager.extend({ + model : Backbone.Model, + paginator_core: { + type: 'GET', + accepts: 'application/json', + dataType: 'json', + url: function() { return this.url; } + }, + paginator_ui: { + firstPage: 0, + currentPage: 0, + perPage: 50 + }, + server_api: { + 'page': function() { return this.currentPage; }, + 'page_size': function() { return this.perPage; }, + 'sort': function() { return this.sortField; }, + 'direction': function() { return this.sortDirection; }, + 'format': 'json' + }, + + parse: function(response) { + var totalCount = response.totalCount, + start = response.start, + currentPage = response.page, + pageSize = response.pageSize, + totalPages = Math.ceil(totalCount / pageSize); + this.totalCount = totalCount; + this.totalPages = Math.max(totalPages, 1); // Treat an empty collection as having 1 page... + this.currentPage = currentPage; + this.start = start; + return response.items; + } + }); + return PagingCollection; +}); diff --git a/common/static/js/spec/common/components/paging_spec.js b/common/static/common/js/spec/components/paging_spec.js similarity index 85% rename from common/static/js/spec/common/components/paging_spec.js rename to common/static/common/js/spec/components/paging_spec.js index c633aaf967..8355adadde 100644 --- a/common/static/js/spec/common/components/paging_spec.js +++ b/common/static/common/js/spec/components/paging_spec.js @@ -1,10 +1,10 @@ define([ "jquery", "common/js/spec_helpers/ajax_helpers", "URI", - "js/views/paging", "js/views/paging_header", "js/views/paging_footer", - "js/models/asset", "js/collections/asset" ], - function ($, AjaxHelpers, URI, PagingView, PagingHeader, PagingFooter, AssetModel, AssetCollection) { + "common/js/components/views/paging", "common/js/components/views/paging_header", + "common/js/components/views/paging_footer", "common/js/spec/components/paging_collection"], + function ($, AjaxHelpers, URI, PagingView, PagingHeader, PagingFooter, PagingCollection) { - var createMockAsset = function(index) { - var id = 'asset_' + index; + var createPageableItem = function(index) { + var id = 'item_' + index; return { id: id, display_name: id, @@ -13,10 +13,10 @@ define([ "jquery", "common/js/spec_helpers/ajax_helpers", "URI", }; var mockFirstPage = { - assets: [ - createMockAsset(1), - createMockAsset(2), - createMockAsset(3) + items: [ + createPageableItem(1), + createPageableItem(2), + createPageableItem(3) ], pageSize: 3, totalCount: 4, @@ -25,8 +25,8 @@ define([ "jquery", "common/js/spec_helpers/ajax_helpers", "URI", end: 2 }; var mockSecondPage = { - assets: [ - createMockAsset(4) + items: [ + createPageableItem(4) ], pageSize: 3, totalCount: 4, @@ -35,7 +35,7 @@ define([ "jquery", "common/js/spec_helpers/ajax_helpers", "URI", end: 4 }; var mockEmptyPage = { - assets: [], + items: [], pageSize: 3, totalCount: 0, page: 0, @@ -43,7 +43,7 @@ define([ "jquery", "common/js/spec_helpers/ajax_helpers", "URI", end: 0 }; - var respondWithMockAssets = function(requests) { + var respondWithMockItems = function(requests) { var requestIndex = requests.length - 1; var request = requests[requestIndex]; var url = new URI(request.url); @@ -58,9 +58,7 @@ define([ "jquery", "common/js/spec_helpers/ajax_helpers", "URI", initialize : function() { this.registerSortableColumn('name-col', 'Name', 'name', 'asc'); this.registerSortableColumn('date-col', 'Date', 'date', 'desc'); - this.registerFilterableColumn('js-asset-type-col', gettext('Type'), 'asset_type'); this.setInitialSortColumn('date-col'); - this.setInitialFilterColumn('js-asset-type-col'); } }); @@ -68,30 +66,25 @@ define([ "jquery", "common/js/spec_helpers/ajax_helpers", "URI", var pagingView; beforeEach(function () { - var assets = new AssetCollection(); - assets.url = "assets_url"; - var feedbackTpl = readFixtures('system-feedback.underscore'); - setFixtures($("