Files
edx-platform/xmodule/js/spec/video/resizer_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

271 lines
9.8 KiB
JavaScript

(function(require) {
'use strict';
require(
['video/00_resizer.js', 'underscore'],
function(Resizer, _) {
describe('Resizer', function() {
var html = [
'<div '
+ 'class="rszr-wrapper" '
+ 'style="width:200px; height: 200px;"'
+ '>',
'<div '
+ 'class="rszr-el" '
+ 'style="width:100px; height: 150px;"'
+ '>',
'Content',
'</div>',
'</div>'
].join(''),
config, $container, $element;
beforeEach(function() {
setFixtures(html);
$container = $('.rszr-wrapper');
$element = $('.rszr-el');
config = {
container: $container,
element: $element
};
spyOn(console, 'log');
});
it('When Initialize without required parameters, log message is shown',
function() {
// eslint-disable-next-line no-new
new Resizer({ });
expect(console.log).toHaveBeenCalled();
}
);
it('`alignByWidthOnly` works correctly', function() {
var resizer = new Resizer(config).alignByWidthOnly(),
expectedWidth = $container.width(),
realWidth = $element.width();
expect(realWidth).toBe(expectedWidth);
});
it('`alignByHeightOnly` works correctly', function() {
var resizer = new Resizer(config).alignByHeightOnly(),
expectedHeight = $container.height(),
realHeight = $element.height();
expect(realHeight).toBe(expectedHeight);
});
it('`align` works correctly', function() {
var resizer = new Resizer(config).align(),
expectedHeight = $container.height(),
realHeight = $element.height(),
expectedWidth = 50,
realWidth;
// containerRatio >= elementRatio
expect(realHeight).toBe(expectedHeight);
// containerRatio < elementRatio
$container.width(expectedWidth);
resizer.align();
realWidth = $element.width();
expect(realWidth).toBe(expectedWidth);
});
it('`setMode` works correctly', function() {
var resizer = new Resizer(config).setMode('height'),
expectedHeight = $container.height(),
realHeight = $element.height(),
expectedWidth = 50,
realWidth;
// containerRatio >= elementRatio
expect(realHeight).toBe(expectedHeight);
// containerRatio < elementRatio
$container.width(expectedWidth);
resizer.setMode('width');
realWidth = $element.width();
expect(realWidth).toBe(expectedWidth);
});
it('`setElement` works correctly', function() {
var $newElement,
expectedHeight;
$container.append('<div '
+ 'id="Another-el" '
+ 'style="width:100px; height: 150px;"'
+ '>');
$newElement = $('#Another-el');
expectedHeight = $container.height();
new Resizer(config).setElement($newElement).alignByHeightOnly();
expect($element.height()).not.toBe(expectedHeight);
expect($newElement.height()).toBe(expectedHeight);
});
describe('Callbacks', function() {
var resizer,
spiesList = [];
beforeEach(function() {
var spiesCount = _.range(3);
spiesList = $.map(spiesCount, function() {
return jasmine.createSpy();
});
resizer = new Resizer(config);
});
it('callbacks are called', function() {
$.each(spiesList, function(index, spy) {
resizer.callbacks.add(spy);
});
resizer.align();
$.each(spiesList, function(index, spy) {
expect(spy).toHaveBeenCalled();
});
});
it('callback called just once', function() {
resizer.callbacks.once(spiesList[0]);
resizer
.align()
.alignByHeightOnly();
expect(spiesList[0].calls.count()).toEqual(1);
});
it('all callbacks are removed', function() {
$.each(spiesList, function(index, spy) {
resizer.callbacks.add(spy);
});
resizer.callbacks.removeAll();
resizer.align();
$.each(spiesList, function(index, spy) {
expect(spy).not.toHaveBeenCalled();
});
});
it('specific callback is removed', function() {
$.each(spiesList, function(index, spy) {
resizer.callbacks.add(spy);
});
resizer.callbacks.remove(spiesList[1]);
resizer.align();
expect(spiesList[1]).not.toHaveBeenCalled();
});
it(
'Error message is shown when wrong argument type is passed',
function() {
var methods = ['add', 'once'],
errorMessage = '[Video info]: TypeError: Argument is not a function.',
arg = {};
spyOn(console, 'error');
$.each(methods, function(index, methodName) {
resizer.callbacks[methodName](arg);
expect(console.error).toHaveBeenCalledWith(errorMessage);
// reset spy
console.log.calls.reset();
});
});
});
describe('Delta', function() {
var resizer;
beforeEach(function() {
resizer = new Resizer(config);
});
it('adding delta align correctly by height', function() {
var delta = 100,
expectedHeight = $container.height() + delta,
realHeight;
resizer
.delta.add(delta, 'height')
.setMode('height');
realHeight = $element.height();
expect(realHeight).toBe(expectedHeight);
});
it('adding delta align correctly by width', function() {
var delta = 100,
expectedWidth = $container.width() + delta,
realWidth;
resizer
.delta.add(delta, 'width')
.setMode('width');
realWidth = $element.width();
expect(realWidth).toBe(expectedWidth);
});
it('substract delta align correctly by height', function() {
var delta = 100,
expectedHeight = $container.height() - delta,
realHeight;
resizer
.delta.substract(delta, 'height')
.setMode('height');
realHeight = $element.height();
expect(realHeight).toBe(expectedHeight);
});
it('substract delta align correctly by width', function() {
var delta = 100,
expectedWidth = $container.width() - delta,
realWidth;
resizer
.delta.substract(delta, 'width')
.setMode('width');
realWidth = $element.width();
expect(realWidth).toBe(expectedWidth);
});
it('reset delta', function() {
var delta = 100,
expectedWidth = $container.width(),
realWidth;
resizer
.delta.substract(delta, 'width')
.delta.reset()
.setMode('width');
realWidth = $element.width();
expect(realWidth).toBe(expectedWidth);
});
});
});
});
}(require));