define(['js/models/component_template'], function(ComponentTemplate) { describe('ComponentTemplates', function() { var mockTemplateJSON = { 'templates': [ { 'category': 'problem', 'boilerplate_name': 'formularesponse.yaml', 'display_name': 'Math Expression Input' }, { 'category': 'problem', 'boilerplate_name': null, 'display_name': 'Blank Advanced Problem' }, { 'category': 'problem', 'boilerplate_name': 'checkboxes.yaml', 'display_name': 'Checkboxes' }, { 'category': 'problem', 'boilerplate_name': 'multiple_choice.yaml', 'display_name': 'Multiple Choice' }, { 'category': 'problem', 'boilerplate_name': 'drag_and_drop.yaml', 'display_name': 'Drag and Drop' }, { 'category': 'problem', 'boilerplate_name': 'problem_with_hint.yaml', 'display_name': 'Problem with Adaptive Hint' }, { 'category': 'problem', 'boilerplate_name': 'imageresponse.yaml', 'display_name': 'Image Mapped Input' }, { 'category': 'openassessment', 'boilerplate_name': null, 'display_name': 'Peer Assessment' }, { 'category': 'problem', 'boilerplate_name': 'an_easy_problem.yaml', 'display_name': 'An Easy Problem' }, { 'category': 'word_cloud', 'boilerplate_name': null, 'display_name': 'Word Cloud' }, { // duplicate display name to verify sort behavior 'category': 'word_cloud', 'boilerplate_name': 'alternate_word_cloud.yaml', 'display_name': 'Word Cloud' }], 'type': 'problem', 'support_legend': {'show_legend': false} }; it('orders templates correctly', function() { var lastTemplate = null, firstComparison = true, componentTemplate = new ComponentTemplate(), template, templateName, i; componentTemplate.parse(mockTemplateJSON); for (i = 0; i < componentTemplate.templates.length; i++) { template = componentTemplate.templates[i]; templateName = template['display_name']; if (lastTemplate) { if (!firstComparison || lastTemplate['boilerplate_name']) { expect(lastTemplate['display_name'] < templateName).toBeTruthy(); } firstComparison = false; } else { // If the first template is blank, make sure that it has the correct category if (!template['boilerplate_name']) { expect(template['category']).toBe('problem'); } lastTemplate = template; } } }); }); });