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('' +
'
" ' +
'data-displayed="<%= displayed %>" ' +
'data-total="<%= total %>" ' +
'data-previews="<%= previews %>">
'
);
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($("