Files
edx-platform/lms/static/js/spec/components/card/card_spec.js
Syed Ali Abbas Zaidi 8480dbc228 chore: apply amnesty on existing not fixable issues (#32215)
* fix: eslint operator-linebreak issue

* fix: eslint quotes issue

* fix: react jsx indent and props issues

* fix: eslint trailing spaces issues

* fix: eslint line around directives issue

* fix: eslint semi rule

* fix: eslint newline per chain rule

* fix: eslint space infix ops rule

* fix: eslint space-in-parens issue

* fix: eslint space before function paren issue

* fix: eslint space before blocks issue

* fix: eslint arrow body style issue

* fix: eslint dot-location issue

* fix: eslint quotes issue

* fix: eslint quote props issue

* fix: eslint operator assignment issue

* fix: eslint new line after import issue

* fix: indent issues

* fix: operator assignment issue

* fix: all autofixable eslint issues

* fix: all react related fixable issues

* fix: autofixable eslint issues

* chore: remove all template literals

* fix: remaining autofixable issues

* chore: apply amnesty on all existing issues

* fix: failing xss-lint issues

* refactor: apply amnesty on remaining issues

* refactor: apply amnesty on new issues

* fix: remove file level suppressions

* refactor: apply amnesty on new issues
2023-08-07 19:13:19 +05:00

84 lines
3.9 KiB
JavaScript

(function(define) {
'use strict';
define(['jquery',
'underscore',
'backbone',
'js/components/card/views/card'
],
function($, _, Backbone, CardView) {
describe('card component view', function() {
it('can render itself as a square card', function() {
var view = new CardView({configuration: 'square_card'});
expect(view.$el).toHaveClass('square-card');
expect(view.$el.find('.wrapper-card-meta .action').length).toBe(1);
});
it('can render itself as a list card', function() {
var view = new CardView({configuration: 'list_card'});
expect(view.$el).toHaveClass('list-card');
expect(view.$el.find('.wrapper-card-core .action').length).toBe(1);
});
it('renders a pennant only if the pennant value is truthy', function() {
var view = new (CardView.extend({pennant: ''}))();
expect(view.$el.find('.card-type').length).toBe(0);
view = new (CardView.extend({pennant: 'Test Pennant'}))();
expect(view.$el.find('.card-type').length).toBe(1);
});
it('can render child views', function() {
var testChildView = new (Backbone.View.extend({className: 'test-view'}))();
spyOn(testChildView, 'render');
var view = new (CardView.extend({details: [testChildView]}))();
expect(testChildView.render).toHaveBeenCalled();
expect(view.$el.find('.test-view')).toHaveClass('meta-detail');
});
it('calls action when clicked', function() {
spyOn(CardView.prototype, 'action');
var view = new CardView({configuration: 'square_card'});
view.$el.find('.action').trigger('click');
expect(view.action).toHaveBeenCalled();
});
var verifyContent = function(view) {
expect(view.$el).toHaveClass('test-card');
expect(view.$el.find('.card-type').text()).toContain('Pennant');
expect(view.$el.find('.card-title').text()).toContain('A test title');
expect(view.$el.find('.card-description').text()).toContain('A test description');
expect(view.$el.find('.action')).toHaveClass('test-action');
expect(view.$el.find('.action')).toHaveAttr('href', 'www.example.com');
expect(view.$el.find('.action').text()).toContain('A test action');
};
it('can have strings for cardClass, pennant, title, description, and action', function() {
var view = new (CardView.extend({
cardClass: 'test-card',
pennant: 'Pennant',
title: 'A test title',
description: 'A test description',
actionClass: 'test-action',
actionUrl: 'www.example.com',
actionContent: 'A test action'
}))();
verifyContent(view);
});
it('can have functions for cardClass, pennant, title, description, and action', function() {
// eslint-disable-next-line new-parens
var view = new (CardView.extend({
cardClass: function() { return 'test-card'; },
pennant: function() { return 'Pennant'; },
title: function() { return 'A test title'; },
description: function() { return 'A test description'; },
actionClass: function() { return 'test-action'; },
actionUrl: function() { return 'www.example.com'; },
actionContent: function() { return 'A test action'; }
}));
verifyContent(view);
});
});
});
}).call(this, define || RequireJS.define);