define(["jquery", "underscore", "common/js/spec_helpers/ajax_helpers", "URI", "js/models/xblock_info", "js/views/paged_container", "js/views/paging_header", "common/js/components/views/paging_footer", "js/views/xblock"], function ($, _, AjaxHelpers, URI, XBlockInfo, PagedContainer, PagingHeader, PagingFooter, XBlockView) { var htmlResponseTpl = _.template('' + '
' ); function getResponseHtml(override_options){ var default_options = { start: 0, displayed: PAGE_SIZE, total: PAGE_SIZE + 1, previews: true }; var options = _.extend(default_options, override_options); return '
' + '
' + htmlResponseTpl(options) + '' + '
' } var makePage = function(html_parameters) { return { resources: [], html: getResponseHtml(html_parameters) }; }; var PAGE_SIZE = 3; var mockFirstPage = makePage({ start: 0, displayed: PAGE_SIZE, total: PAGE_SIZE + 1 }); var mockSecondPage = makePage({ start: PAGE_SIZE, displayed: 1, total: PAGE_SIZE + 1 }); var mockEmptyPage = makePage({ start: 0, displayed: 0, total: 0 }); var respondWithMockPage = function(requests, mockPage) { var requestIndex = requests.length - 1; if (typeof mockPage == 'undefined') { var request = requests[requestIndex]; var url = new URI(request.url); var queryParameters = url.query(true); // Returns an object with each query parameter stored as a value var page = queryParameters.page_number; mockPage = page === "0" ? mockFirstPage : mockSecondPage; } AjaxHelpers.respondWithJson(requests, mockPage, requestIndex); }; var MockPagingView = PagedContainer.extend({ view: 'container_preview', el: $("
"), model: new XBlockInfo({}, {parse: true}) }); describe("Paging Container", function() { var pagingContainer; beforeEach(function () { var feedbackTpl = readFixtures('system-feedback.underscore'); setFixtures($("