diff --git a/dev/tests/js/JsTestDriver/testsuite/mage/accordion/accordion.js b/dev/tests/js/JsTestDriver/testsuite/mage/accordion/accordion.js deleted file mode 100644 index 562c5c096b654f6c628f81c1a660317cd2a3b864..0000000000000000000000000000000000000000 --- a/dev/tests/js/JsTestDriver/testsuite/mage/accordion/accordion.js +++ /dev/null @@ -1,57 +0,0 @@ -/** - * @category mage.js - * @package test - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. - */ - -/* - - */ -test( "Initialization", function() { - expect(2); - var accordion = $("<div></div>"); - accordion.accordion(); - ok( accordion.is(':mage-accordion'), "widget instantiated" ); - accordion.accordion('destroy'); - ok( !accordion.is(':mage-accordion'), "widget destroyed" ); -}); - - - -test( "One-collapsible element", function() { - expect(4); - var accordion = $('<div></div>'); - var title1 = $('<div data-role="collapsible"></div>').appendTo(accordion); - var content1 = $('<div data-role="content"></div>').appendTo(accordion); - var title2 = $('<div data-role="collapsible"></div>').appendTo(accordion); - var content2 = $('<div data-role="content"></div>').appendTo(accordion); - accordion.appendTo("body"); - - accordion.accordion(); - ok( content1.is(':visible'), "content visible" ); - ok( content2.is(':hidden'), "content hidden" ); - title2.trigger('click'); - ok( content1.is(':hidden'), "content hidden" ); - ok( content2.is(':visible'), "content visible" ); - accordion.accordion('destroy'); - -}); - -test( "Multi-collapsible elements", function() { - expect(4); - var accordion = $('<div></div>'); - var title1 = $('<div data-role="collapsible"></div>').appendTo(accordion); - var content1 = $('<div data-role="content"></div>').appendTo(accordion); - var title2 = $('<div data-role="collapsible"></div>').appendTo(accordion); - var content2 = $('<div data-role="content"></div>').appendTo(accordion); - accordion.appendTo("body"); - - accordion.accordion({multipleCollapsible:true}); - ok( content1.is(':visible'), "content visible" ); - ok( content2.is(':hidden'), "content hidden" ); - title2.trigger('click'); - ok( content1.is(':visible'), "content visible" ); - ok( content2.is(':visible'), "content visible" ); - accordion.accordion('destroy'); -}); diff --git a/dev/tests/js/JsTestDriver/testsuite/mage/accordion/index.html b/dev/tests/js/JsTestDriver/testsuite/mage/accordion/index.html deleted file mode 100644 index 093284c6f4fa853f5f3eeeca5c228a9e83286dab..0000000000000000000000000000000000000000 --- a/dev/tests/js/JsTestDriver/testsuite/mage/accordion/index.html +++ /dev/null @@ -1,31 +0,0 @@ -<!-- -/** - * @category mage.accordion - * @package test - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. - */ ---> - -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <title>Accordion Widget: QUnit Tests </title> - <base href="../../../"/> - <link type="text/css" rel="stylesheet" href="framework/qunit/qunit-1.14.0.css"/> - <script type="text/javascript" src="../../../pub/lib/jquery.js"></script> - <script type="text/javascript" src="../../../pub/lib/jquery/jquery-ui.js"></script> - <script type="text/javascript" src="framework/qunit/qunit-1.14.0.js"></script> - <script type="text/javascript" src="../../../pub/lib/mage/mage.js"></script> - <script type="text/javascript" src="../../../pub/lib/mage/tabs.js"></script> - <script type="text/javascript" src="../../../pub/lib/mage/accordion.js"></script> - <script type="text/javascript" src="../../../pub/lib/mage/collapsible.js"></script> - <script type="text/javascript" src="testsuite/mage/accordion/accordion.js"></script> -</head> -<body> -<div id="qunit"></div> -<div id="qunit-fixture"> -</div> -</body> -</html> diff --git a/dev/tests/js/JsTestDriver/testsuite/mage/calendar/calendar-qunit.js b/dev/tests/js/JsTestDriver/testsuite/mage/calendar/calendar-qunit.js deleted file mode 100644 index 60dffe84db0fc0b653855fc0437e55aa2dcf6f3a..0000000000000000000000000000000000000000 --- a/dev/tests/js/JsTestDriver/testsuite/mage/calendar/calendar-qunit.js +++ /dev/null @@ -1,77 +0,0 @@ -/** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. - */ - -test( "initialization", function() { - var calendar = $('#calendar').calendar(); - ok( calendar.is(':mage-calendar'), "this test is fine" ); - calendar.calendar('destroy'); -}); -test( "global configuration merge", function() { - $.extend(true, $, { - calendarConfig: { - showOn: 'button', - showAnim: '', - buttonImageOnly: true, - showButtonPanel: true, - showWeek: true, - timeFormat: '', - showTime: false, - showHour: false, - showMinute: false - } - }); - var calendar = $('#calendar').calendar(); - equal('button', calendar.calendar('option', 'showOn')); - equal('', calendar.calendar('option', 'showAnim')); - ok(calendar.calendar('option', 'buttonImageOnly')); - ok(calendar.calendar('option', 'showButtonPanel')); - ok(calendar.calendar('option', 'showWeek')); - equal('', calendar.calendar('option', 'timeFormat')); - equal(false, calendar.calendar('option', 'showTime')); - equal(false, calendar.calendar('option', 'showHour')); - equal(false, calendar.calendar('option', 'showMinute')); - calendar.calendar('destroy'); - delete $.calendarConfig; -}); -test( "specifying AM/PM in timeformat option changes AMPM option to true", function(){ - var calendar = $('#calendar').calendar({timeFormat: 'hh:mm tt', ampm: false}); - ok(calendar.calendar('option', 'ampm')); - calendar.calendar('destroy'); -}); -test( "omitting AM/PM in timeformat option changes AMPM option to false", function(){ - var calendar = $('#calendar').calendar({timeFormat: 'hh:mm'}); - notEqual(true, calendar.calendar('option', 'ampm')); - calendar.calendar('destroy'); -}); -test( "with server timezone offset", function(){ - var serverTimezoneSeconds = 1346122095, - calendar = $('#calendar').calendar({serverTimezoneSeconds: serverTimezoneSeconds}), - currentDate = new Date(); - currentDate.setTime((serverTimezoneSeconds + currentDate.getTimezoneOffset() * 60) * 1000); - ok(currentDate.toString() === calendar.calendar('getTimezoneDate').toString()); - calendar.calendar('destroy'); -}); -test( "without sever timezone offset", function() { - var calendar = $('#calendar').calendar(), - currentDate = new Date(); - ok(currentDate.toString() === calendar.calendar('getTimezoneDate').toString()); - calendar.calendar('destroy'); -}); -test( "dateTime format conversions", function() { - var calendar = $('#calendar').calendar({dateFormat: 'M/d/yy', timeFormat: 'h:mm a'}); - equal('mm/d/yy', calendar.calendar('option', 'dateFormat')); - equal('h:mm tt', calendar.calendar('option', 'timeFormat')); - calendar.calendar('destroy'); - calendar.calendar({dateFormat: 'MMMM/EEEE/yyyy', timeFormat: 'HH:mm'}); - equal('MM/DD/yy', calendar.calendar('option', 'dateFormat')); - equal('hh:mm', calendar.calendar('option', 'timeFormat')); - calendar.calendar('destroy'); -}); -test( "destroy", function() { - var calendar = $('#calendar').calendar(), - calendarExist = calendar.is(':mage-calendar'); - calendar.calendar('destroy'); - equal(true, calendarExist != calendar.is(':mage-calendar')); -}); diff --git a/dev/tests/js/JsTestDriver/testsuite/mage/calendar/calendar-test.js b/dev/tests/js/JsTestDriver/testsuite/mage/calendar/calendar-test.js deleted file mode 100644 index 7748106b303c3998974a745c98223e31ea04ab83..0000000000000000000000000000000000000000 --- a/dev/tests/js/JsTestDriver/testsuite/mage/calendar/calendar-test.js +++ /dev/null @@ -1,102 +0,0 @@ -/** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. - */ -CalendarTest = TestCase('CalendarTest'); -CalendarTest.prototype.testInit = function() { - /*:DOC += <input type="text" id="calendar" /> */ - var calendar = jQuery('#calendar').calendar(); - assertEquals(true, calendar.is(':mage-calendar')); - calendar.calendar('destroy'); -}; -CalendarTest.prototype.testGlobalConfigurationMerge = function() { - /*:DOC += <input type="text" id="calendar" /> */ - $.extend(true, $, { - calendarConfig: { - showOn: 'button', - showAnim: '', - buttonImageOnly: true, - showButtonPanel: true, - showWeek: true, - timeFormat: '', - showTime: false, - showHour: false, - showMinute: false - } - }); - var calendar = $('#calendar').calendar(); - assertEquals('button', calendar.calendar('option', 'showOn')); - assertEquals('', calendar.calendar('option', 'showAnim')); - assertEquals(true, calendar.calendar('option', 'buttonImageOnly')); - assertEquals(true, calendar.calendar('option', 'showButtonPanel')); - assertEquals(true, calendar.calendar('option', 'showWeek')); - assertEquals('', calendar.calendar('option', 'timeFormat')); - assertEquals(false, calendar.calendar('option', 'showTime')); - assertEquals(false, calendar.calendar('option', 'showHour')); - assertEquals(false, calendar.calendar('option', 'showMinute')); - calendar.calendar('destroy'); - delete $.calendarConfig; -}; -CalendarTest.prototype.testEnableAMPM = function() { - /*:DOC += <input type="text" id="calendar" /> */ - var calendar = $('#calendar').calendar({timeFormat: 'hh:mm tt', ampm: false}); - assertEquals(true, calendar.calendar('option', 'ampm')); - calendar.calendar('destroy'); -}; -CalendarTest.prototype.testDisableAMPM = function() { - /*:DOC += <input type="text" id="calendar" /> */ - var calendar = $('#calendar').calendar({timeFormat: 'hh:mm'}); - assertTrue(!calendar.calendar('option', 'ampm')); - calendar.calendar('destroy'); -}; -CalendarTest.prototype.testWithServerTimezoneOffset = function() { - /*:DOC += <input type="text" id="calendar" /> */ - var serverTimezoneSeconds = 1346122095, - calendar = $('#calendar').calendar({serverTimezoneSeconds: serverTimezoneSeconds}), - currentDate = new Date(); - currentDate.setTime((serverTimezoneSeconds + currentDate.getTimezoneOffset() * 60) * 1000); - assertEquals(true, currentDate.toString() === calendar.calendar('getTimezoneDate').toString()); - calendar.calendar('destroy'); -}; -CalendarTest.prototype.testWithServerTimezoneShift = function() { - /*:DOC += <input type="text" id="calendar" /> */ - var serverTimezoneOffset = 43200, - calendar = $('#calendar').calendar({serverTimezoneOffset: serverTimezoneOffset}), - currentDate = new Date(); - - setTimeout(function () { - currentDate.setTime(currentDate.getTime() + (serverTimezoneOffset + currentDate.getTimezoneOffset() * 60) * 1000); - assertEquals(true, currentDate.toString() === calendar.calendar('getTimezoneDate').toString()); - calendar.calendar('destroy'); - }, 61000); -}; -CalendarTest.prototype.testWithoutServerTimezoneOffset = function() { - /*:DOC += <input type="text" id="calendar" /> */ - var calendar = $('#calendar').calendar(), - currentDate = new Date(); - assertEquals(true, currentDate.toString() === calendar.calendar('getTimezoneDate').toString()); - calendar.calendar('destroy'); -}; -CalendarTest.prototype.testInitDateTimePicker = function() { - /*:DOC += <input type="text" id="calendar" /> */ - var calendar = $('#calendar').calendar(); - assertEquals(true, calendar.hasClass('_has-datepicker')); - calendar.calendar('destroy'); -}; -CalendarTest.prototype.testDateTimeMapping = function() { - /*:DOC += <input type="text" id="calendar" /> */ - var calendar = $('#calendar').calendar({dateFormat: 'M/d/yy', timeFormat: 'h:mm a'}); - assertEquals('mm/d/yy', calendar.calendar('option', 'dateFormat')); - assertEquals('h:mm TT', calendar.calendar('option', 'timeFormat')); - calendar.calendar('destroy'); - calendar.calendar({dateFormat: 'MMMM/EEEE/yyyy'}); - assertEquals('MM/DD/yy', calendar.calendar('option', 'dateFormat')); - calendar.calendar('destroy'); -}; -CalendarTest.prototype.testDestroy = function() { - /*:DOC += <input type="text" id="calendar" /> */ - var calendar = $('#calendar').calendar(), - calendarExist = calendar.is(':mage-calendar'); - calendar.calendar('destroy'); - assertEquals(true, calendarExist != calendar.is(':mage-calendar')); -}; diff --git a/dev/tests/js/JsTestDriver/testsuite/mage/calendar/calendar.html b/dev/tests/js/JsTestDriver/testsuite/mage/calendar/calendar.html deleted file mode 100644 index b474dc2d5ce95461ba7aac1e57f667f8c70407e9..0000000000000000000000000000000000000000 --- a/dev/tests/js/JsTestDriver/testsuite/mage/calendar/calendar.html +++ /dev/null @@ -1,31 +0,0 @@ -<!-- -/** - * @category mage.calendar - * @package test - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. - */ ---> - -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <title>Calendar Widget: QUnit Tests </title> - <base href="../../../"/> - <link type="text/css" rel="stylesheet" href="framework/qunit/qunit-1.14.0.css"/> - <script type="text/javascript" src="../../../lib/web/jquery.js"></script> - <script type="text/javascript" src="../../../lib/web/jquery/jquery-ui.js"></script> - <script type="text/javascript" src="../../../lib/web/jquery/jquery-ui-timepicker-addon.js"></script> - <script type="text/javascript" src="framework/qunit/qunit-1.14.0.js"></script> - <script type="text/javascript" src="../../../lib/web/mage/mage.js"></script> - <script type="text/javascript" src="../../../lib/web/mage/calendar.js"></script> - <script type="text/javascript" src="testsuite/mage/calendar/calendar-qunit.js"></script> -</head> -<body> - <div id="qunit"></div> - <div id="qunit-fixture"> - <input type="text" id="calendar" /> - </div> -</body> -</html> diff --git a/dev/tests/js/JsTestDriver/testsuite/mage/calendar/date-range-test.js b/dev/tests/js/JsTestDriver/testsuite/mage/calendar/date-range-test.js deleted file mode 100644 index 61211c067ad129e4993d0847e014cdb21aa22bdc..0000000000000000000000000000000000000000 --- a/dev/tests/js/JsTestDriver/testsuite/mage/calendar/date-range-test.js +++ /dev/null @@ -1,63 +0,0 @@ -/** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. - */ -DaterangeTest = TestCase('DaterangeTest'); -DaterangeTest.prototype.testInit = function() { - /*:DOC += - <div id="date-range" /> - */ - var dateRange = jQuery('#date-range').dateRange(); - assertEquals(true, dateRange.is(':mage-dateRange')); - dateRange.dateRange('destroy'); -}; -DaterangeTest.prototype.testInitDateRangeDatepickers = function() { - /*:DOC += - <div id="date-range"> - <input type="text" id="from" /> - <input type="text" id="to" /> - </div> - */ - var options = { - from: { - id: "from" - }, - to: { - id: "to" - } - }, - dateRange = $('#date-range').dateRange(options), - from = $('#'+options.from.id), - to = $('#'+options.to.id); - - assertEquals(true, from.hasClass('_has-datepicker')); - assertEquals(true, to.hasClass('_has-datepicker')); - dateRange.dateRange('destroy'); -}; -DaterangeTest.prototype.testDestroy = function() { - /*:DOC += - <div id="date-range"> - <input type="text" id="from" /> - <input type="text" id="to" /> - </div> - */ - var options = { - from: { - id: "from" - }, - to: { - id: "to" - } - }, - dateRange = $('#date-range').dateRange(options), - from = $('#'+options.from.id), - to = $('#'+options.to.id), - dateRangeExist = dateRange.is(':mage-dateRange'), - fromExist = from.hasClass('_has-datepicker'), - toExist = to.hasClass('_has-datepicker'); - - dateRange.dateRange('destroy'); - assertEquals(true, dateRangeExist != dateRange.is(':mage-dateRange')); - assertEquals(true, fromExist != from.hasClass('_has-datepicker')); - assertEquals(true, toExist != to.hasClass('_has-datepicker')); -}; diff --git a/dev/tests/js/JsTestDriver/testsuite/mage/collapsible/content.html b/dev/tests/js/JsTestDriver/testsuite/mage/collapsible/content.html deleted file mode 100644 index e81938dfbeaba32386a7fe89121e9a653febf991..0000000000000000000000000000000000000000 --- a/dev/tests/js/JsTestDriver/testsuite/mage/collapsible/content.html +++ /dev/null @@ -1,14 +0,0 @@ -<!-- -/** - * @category mage.collapsible - * @package test - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. - */ ---> - -<HTML> -<body> - <p>Test text</p> -</body> -</HTML> diff --git a/dev/tests/js/JsTestDriver/testsuite/mage/collapsible/index.html b/dev/tests/js/JsTestDriver/testsuite/mage/collapsible/index.html deleted file mode 100644 index ccfd4d97f03312ac84950f5655e1276a25777f26..0000000000000000000000000000000000000000 --- a/dev/tests/js/JsTestDriver/testsuite/mage/collapsible/index.html +++ /dev/null @@ -1,31 +0,0 @@ -<!-- -/** - * @category mage.collapsible - * @package test - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. - */ ---> - - -<!DOCTYPE html> -<html> -<head> - <title>Unit test</title> - <base href="../../../"/> - <link type="text/css" rel="stylesheet" href="framework/qunit/qunit-1.14.0.css"/> - <script type="text/javascript" src="framework/qunit/qunit-1.14.0.js"></script> - <script src="../../../pub/lib/jquery.js"></script> - <script src="../../../pub/lib/jquery/jquery-ui.js"></script> - <script type="text/javascript" src="../../../pub/lib/mage/mage.js"></script> - <script type="text/javascript" src="../../../pub/lib/mage/collapsible.js"></script> - <script type="text/javascript" src="../../../pub/lib/mage/bootstrap.js"></script> - <script type="text/javascript" src="testsuite/mage/collapsible/test-collapsible.js"></script> -</head> -<body> -<div id="qunit"></div> -<div id="qunit-fixture"> -</div> -</body> -</html> - diff --git a/dev/tests/js/JsTestDriver/testsuite/mage/collapsible/test-collapsible.js b/dev/tests/js/JsTestDriver/testsuite/mage/collapsible/test-collapsible.js deleted file mode 100644 index 1a22e5a79eb1df0d65e897859733ff95074f5e4f..0000000000000000000000000000000000000000 --- a/dev/tests/js/JsTestDriver/testsuite/mage/collapsible/test-collapsible.js +++ /dev/null @@ -1,180 +0,0 @@ -/** - * @category mage.collapsible - * @package test - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. - */ - -/* - Test if the collapsible widget gets initialized when is called and destroy function works - */ -test('initialization & destroy', function() { - expect(2); - var group = $('<div id="1"></div>'); - group.collapsible(); - ok( group.is(':mage-collapsible'), "widget instantiated" ); - group.collapsible('destroy'); - ok( !group.is(':mage-collapsible'), "widget destroyed" ); -}); - -/* - Test enable, disable, activate, deactivate functions - */ -test('Enable, disable, activate, deactivate methods', function() { - expect(5); - var group = $('<div id="2"></div>'); - var title = $('<div data-role="title"></div>'); - var content = $('<div data-role="content"></div>'); - title.appendTo(group); - content.appendTo(group); - group.appendTo("body"); - group.collapsible(); - group.collapsible("deactivate"); - ok(content.is(':hidden'), "Content is collapsed"); - group.collapsible("activate"); - ok(content.is(':visible'), "Content is expanded"); - group.collapsible("disable"); - ok(content.is(':hidden'), "Content is collapsed"); - group.collapsible("activate"); - ok(content.is(':hidden'), "Content is collapsed"); - group.collapsible("enable"); - group.collapsible("activate"); - ok(content.is(':visible'), "Content is expanded"); - group.collapsible('destroy'); -}); - -/* - Test if the widget gets expanded/collapsed when the title is clicked - */ -test('Collapse and expand', function() { - expect(3); - var group = $('<div id="3"></div>'); - var title = $('<div data-role="title"></div>'); - var content = $('<div data-role="content"></div>'); - title.appendTo(group); - content.appendTo(group); - group.appendTo("body"); - group.collapsible(); - group.collapsible("deactivate"); - ok(content.is(':hidden'), "Content is collapsed"); - title.trigger("click"); - ok(content.is(':visible'), "Content gets expanded on click title"); - title.trigger("click"); - ok(content.is(':hidden'), "Content gets collapsed on click again"); - group.collapsible('destroy'); -}); - - -/* - Test state Classes - */ -test('State classes', function() { - expect(3); - var group = $('<div id="4"></div>'); - var title = $('<div data-role="title"></div>'); - var content = $('<div data-role="content"></div>'); - title.appendTo(group); - content.appendTo(group); - group.collapsible({openedState:"opened", closedState:"closed", disabledState:"disabled"}); - ok( group.hasClass("closed")); - title.trigger("click"); - ok( group.hasClass("opened")); - group.collapsible("disable"); - ok( group.hasClass("disabled")); - group.collapsible('destroy'); -}); - -/* - Test if icons are added to title when widget gets initialized and are removed when gets destroyed - */ -test('Create & destroy icons', function() { - expect(2); - var group = $('<div id="5"></div>'); - var title = $('<div data-role="title"></div>'); - var content = $('<div data-role="content"></div>'); - title.appendTo(group); - content.appendTo(group); - group.collapsible({icons: {header:"minus",activeHeader:"plus"}}); - ok(title.children("[data-role=icons]").length, "Icons added to title" ); - group.collapsible('destroy'); - ok(!title.children("[data-role=icons]").length, "Icons removed from title" ); -}); - -/* - Test if icon classes are changed when content gets expanded/collapsed - */ -test('Change icons when content gets expanded/collapsed', function() { - expect(2); - var group = $('<div id="6"></div>'); - var title = $('<div data-role="title"></div>'); - var content = $('<div data-role="content"></div>'); - title.appendTo(group); - content.appendTo(group); - group.collapsible({icons: {header:"minus",activeHeader:"plus"}}); - group.collapsible("deactivate"); - var icons = group.collapsible("option","icons"); - ok(title.children("[data-role=icons]").hasClass(icons.header), "When content is collapsed,header has the right class for icons" ); - title.trigger("click"); - ok(title.children("[data-role=icons]").hasClass(icons.activeHeader), "When content is expanded,header has the right class for icons" ); - group.collapsible('destroy'); -}); - - -/* - Test if content gets expanded/collapsed when certain keys are pressed - */ -asyncTest( "keyboard support", function() { - - expect( 5 ); - var group = $('<div id="7"></div>'); - var title = $('<div data-role="title"></div>'); - var content = $('<div data-role="content"></div>'); - title.appendTo(group); - content.appendTo(group); - group.appendTo("body"); - group.collapsible(); - group.collapsible("deactivate"); - - title.on("focus",function(ev){ - ok(content.is(':hidden'), "Content is collapsed"); - title.trigger($.Event( 'keydown', { keyCode: $.ui.keyCode.ENTER } )); - ok(content.is(':visible'), "Content is expanded"); - title.trigger($.Event( 'keydown', { keyCode: $.ui.keyCode.ENTER } )); - ok(content.is(':hidden'), "Content is collapsed"); - title.trigger($.Event( 'keydown', { keyCode: $.ui.keyCode.SPACE } )); - ok(content.is(':visible'), "Content is expanded"); - title.trigger($.Event( 'keydown', { keyCode: $.ui.keyCode.SPACE } )); - ok(content.is(':hidden'), "Content is collapsed"); - group.collapsible('destroy'); - start(); - } ); - - setTimeout(function(){ - title.focus(); - },10); - -}); - -/* - Test if content gets updated via Ajax when title is clicked - */ -test('Update content via ajax', function() { - expect(2); - var group = $('<div id="8"></div>'); - var title = $('<div data-role="title"></div>'); - var content = $('<div data-role="content"></div>'); - var ajax = $('<a data-ajax="true" href="testsuite/mage/collapsible/content.html"></a>'); - title.appendTo(group); - content.appendTo(group); - ajax.appendTo(content); - group.appendTo("body"); - group.collapsible({ajaxContent : true}); - group.collapsible("deactivate"); - ok(!content.children("p").length, "Content has no data"); - title.trigger("click"); - ok(content.children("p"), "Content gets data from content.html"); - group.collapsible('destroy'); -}); - - - diff --git a/dev/tests/js/JsTestDriver/testsuite/mage/decorate-test.js b/dev/tests/js/JsTestDriver/testsuite/mage/decorate-test.js deleted file mode 100644 index 96bad35a17e2e3a2ceca85ae498cc9eeee90cf7e..0000000000000000000000000000000000000000 --- a/dev/tests/js/JsTestDriver/testsuite/mage/decorate-test.js +++ /dev/null @@ -1,141 +0,0 @@ -/** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. - */ -DecoratorTest = TestCase('DecoratorTest'); -DecoratorTest.prototype.testDecoratorList = function () { - /*:DOC += <ul id="list"> - <li>item1</li> - <li>item2</li> - <li>item3</li> - <li>item4</li> - </ul> - */ - var list = $('#list'); - list.decorate('list'); - assertTrue($(list.find('li')[0]).hasClass('odd')); - assertFalse($(list.find('li')[0]).hasClass('even')); - assertTrue($(list.find('li')[1]).hasClass('even')); - assertFalse($(list.find('li')[1]).hasClass('odd')); - assertTrue($(list.find('li')[2]).hasClass('odd')); - assertFalse($(list.find('li')[2]).hasClass('even')); - assertTrue($(list.find('li')[3]).hasClass('even')); - assertFalse($(list.find('li')[3]).hasClass('odd')); - assertTrue($(list.find('li')[3]).hasClass('last')); -}; - -DecoratorTest.prototype.testDecoratorGeneral = function () { - /*:DOC += <div id="foo"> - <div class="item even">item1</div> - <div class="item odd">item2</div> - <div class="item odd">item3</div> - <div class="item even">item4</div> - </div> - */ - var itemClass = '.item'; - $(itemClass).decorate('generic'); - assertTrue($($(itemClass)[0]).hasClass('odd')); - assertFalse($($(itemClass)[0]).hasClass('even')); - assertTrue($($(itemClass)[0]).hasClass('first')); - assertFalse($($(itemClass)[0]).hasClass('last')); - - assertFalse($($(itemClass)[1]).hasClass('odd')); - assertTrue($($(itemClass)[1]).hasClass('even')); - assertFalse($($(itemClass)[1]).hasClass('first')); - assertFalse($($(itemClass)[1]).hasClass('last')); - - assertTrue($($(itemClass)[2]).hasClass('odd')); - assertFalse($($(itemClass)[2]).hasClass('even')); - assertFalse($($(itemClass)[2]).hasClass('first')); - assertFalse($($(itemClass)[2]).hasClass('last')); - - assertFalse($($(itemClass)[3]).hasClass('odd')); - assertTrue($($(itemClass)[3]).hasClass('even')); - assertFalse($($(itemClass)[3]).hasClass('first')); - assertTrue($($(itemClass)[3]).hasClass('last')); -}; - -DecoratorTest.prototype.testDecoratorTable = function (){ - /*:DOC += <table id="foo"> - <thead> - <tr> - <th>Month</th> - <th>Savings</th> - </tr> - </thead> - <tfoot> - <tr> - <td>Sum</td> - <td>$180</td> - </tr> - </tfoot> - <tbody> - <tr> - <td>January</td> - <td>$100</td> - </tr> - <tr> - <td>February</td> - <td>$80</td> - </tr> - </tbody> - </table> - */ - var tableId = '#foo'; - $(tableId).decorate('table'); - assertTrue($(tableId).find('thead tr').hasClass('first')); - assertTrue($(tableId).find('thead tr').hasClass('last')); - assertFalse($(tableId).find('thead tr').hasClass('odd')); - assertFalse($(tableId).find('thead tr').hasClass('even')); - - assertTrue($(tableId).find('tfoot tr').hasClass('first')); - assertTrue($(tableId).find('tfoot tr').hasClass('last')); - assertFalse($(tableId).find('tfoot tr').hasClass('odd')); - assertFalse($(tableId).find('tfoot tr').hasClass('even')); - - assertFalse($(tableId).find('tfoot tr td').last().hasClass('first')); - assertTrue($(tableId).find('tfoot tr td').last().hasClass('last')); - assertFalse($(tableId).find('tfoot tr td').last().hasClass('odd')); - assertFalse($(tableId).find('tfoot tr td').last().hasClass('even')); - - assertTrue($(tableId).find('tbody tr').first().hasClass('first')); - assertTrue($(tableId).find('tbody tr').first().hasClass('odd')); - assertFalse($(tableId).find('tbody tr').first().hasClass('last')); - assertFalse($(tableId).find('tbody tr').first().hasClass('even')); - assertFalse($(tableId).find('tbody tr').last().hasClass('first')); - assertFalse($(tableId).find('tbody tr').last().hasClass('odd')); - assertTrue($(tableId).find('tbody tr').last().hasClass('last')); - assertTrue($(tableId).find('tbody tr').last().hasClass('even')); - - assertFalse($(tableId).find('tbody tr td').last().hasClass('first')); - assertFalse($(tableId).find('tbody tr td').last().hasClass('odd')); - assertTrue($(tableId).find('tbody tr td').last().hasClass('last')); - assertFalse($(tableId).find('tbody tr td').last().hasClass('even')); -}; - -DecoratorTest.prototype.testDecoratorDataList = function () { - /*:DOC += <dl id="data-list"> - <dt>item</dt> - <dt>item</dt> - <dd>item</dd> - <dd>item</dd> - </dl> - */ - var listId = '#data-list'; - $(listId).decorate('dataList'); - assertTrue($(listId).find('dt').first().hasClass('odd')); - assertFalse($(listId).find('dt').first().hasClass('even')); - assertFalse($(listId).find('dt').first().hasClass('last')); - - assertTrue($(listId).find('dt').last().hasClass('even')); - assertFalse($(listId).find('dt').last().hasClass('odd')); - assertTrue($(listId).find('dt').last().hasClass('last')); - - assertTrue($(listId).find('dd').first().hasClass('odd')); - assertFalse($(listId).find('dd').first().hasClass('even')); - assertFalse($(listId).find('dd').first().hasClass('last')); - - assertTrue($(listId).find('dd').last().hasClass('even')); - assertFalse($(listId).find('dd').last().hasClass('odd')); - assertTrue($(listId).find('dd').last().hasClass('last')); -}; diff --git a/dev/tests/js/JsTestDriver/testsuite/mage/dropdown/index.html b/dev/tests/js/JsTestDriver/testsuite/mage/dropdown/index.html deleted file mode 100644 index 3d6ed5a7c1d2824f3d404cb885c54e2823559654..0000000000000000000000000000000000000000 --- a/dev/tests/js/JsTestDriver/testsuite/mage/dropdown/index.html +++ /dev/null @@ -1,30 +0,0 @@ -<!-- -/** - * @category mage.dropdown - * @package test - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. - */ ---> - -<!DOCTYPE html> -<html> -<head> - <title>Unit test</title> - <base href="../../../"/> - <link type="text/css" rel="stylesheet" href="framework/qunit/qunit-1.14.0.css"/> - <script type="text/javascript" src="framework/qunit/qunit-1.14.0.js"></script> - <script src="../../../lib/web/jquery.js"></script> - <script src="../../../lib/web/jquery/jquery-ui.js"></script> - <script type="text/javascript" src="../../../lib/web/mage/mage.js"></script> - <script type="text/javascript" src="../../../lib/web/mage/dropdown.js"></script> - <script type="text/javascript" src="../../../lib/web/mage/bootstrap.js"></script> - <script type="text/javascript" src="testsuite/mage/dropdown/test-dropdown.js"></script> - -</head> -<body> -<div id="qunit"></div> -<div id="qunit-fixture"> -</div> -</body> -</html> diff --git a/dev/tests/js/JsTestDriver/testsuite/mage/dropdown/test-dropdown.js b/dev/tests/js/JsTestDriver/testsuite/mage/dropdown/test-dropdown.js deleted file mode 100644 index e67c92b3d4018ce5e2a7bc5160d89ebd49aee967..0000000000000000000000000000000000000000 --- a/dev/tests/js/JsTestDriver/testsuite/mage/dropdown/test-dropdown.js +++ /dev/null @@ -1,270 +0,0 @@ -/** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. - */ - -/* - testing if dialog opens when the triggerEvent is triggered - */ -test( "triggerEvent", function() { - expect(2); - var opener = $('<div></div>'); - var dialog = $('<div></div>'); - dialog.dropdownDialog({"triggerEvent":"click", "triggerTarget":opener}); - opener.trigger("click"); - equal(dialog.dropdownDialog("isOpen"), true, "Dropdown opens when click opener"); - dialog.dropdownDialog( "destroy" ); - - dialog.dropdownDialog({"triggerEvent":null, "triggerTarget":opener}); - opener.trigger("click"); - equal(dialog.dropdownDialog("isOpen"), false, "Dropdown doesn't open when click opener"); - dialog.dropdownDialog( "destroy" ); - -}); - -/* - testing if a specified class is added to the trigger - */ -test( "triggerClass", function() { - expect(2); - var opener = $('<div></div>'); - var dialog = $('<div></div>'); - dialog.dropdownDialog({"triggerTarget":opener,"triggerClass":"active"}); - dialog.dropdownDialog("open"); - ok( opener.hasClass("active"), "Class added to opener when dialog opens" ); - dialog.dropdownDialog("close"); - dialog.dropdownDialog( "destroy" ); - - dialog.dropdownDialog({"triggerEvent":opener, "triggerClass":null}); - dialog.dropdownDialog("open"); - ok( !opener.hasClass("active"), "Class added to opener when dialog opens" ); - dialog.dropdownDialog("close"); - dialog.dropdownDialog( "destroy" ); - -}); - -/* - testing if a specified class is added to the element which the dialog appends to - */ -test( "parentClass", function() { - expect(2); - var parent = $('<div></div>'); - var dialog = $('<div></div>'); - - dialog.dropdownDialog({"parentClass":"active","appendTo":parent}); - dialog.dropdownDialog("open"); - ok( parent.hasClass("active"), "Class is added to parent when dialog opens" ); - dialog.dropdownDialog("close"); - dialog.dropdownDialog( "destroy" ); - - dialog.dropdownDialog({"parentClass":null,"appendTo":parent}); - dialog.dropdownDialog("open"); - ok( !parent.hasClass("active"), "No class is added to parent when dialog opens" ); - dialog.dropdownDialog("close"); - dialog.dropdownDialog( "destroy" ); - -}); - -/* - testing if a specified class is added to the element that becomes dialog - */ -test( "dialogContentClass", function() { - expect(2); - var dialog = $('<div></div>'); - - dialog.dropdownDialog({"dialogContentClass":"active"}); - dialog.dropdownDialog("open"); - ok( $('.ui-dialog-content').hasClass("active"), "Class is added to dialog content when dialog opens" ); - dialog.dropdownDialog("close"); - dialog.dropdownDialog( "destroy" ); - - dialog.dropdownDialog({"dialogContentClass": null}); - dialog.dropdownDialog("open"); - ok( !$('.ui-dialog-content').hasClass("active"), "No class is added to dialog content" ); - dialog.dropdownDialog("close"); - dialog.dropdownDialog( "destroy" ); -}); - -/* - testing if a specified class is added to dialog - */ -test( "defaultDialogClass", function() { - expect(3); - var dialog = $('<div></div>'); - - dialog.dropdownDialog({"defaultDialogClass":"custom"}); - ok( $('.ui-dialog').hasClass("custom"), "Class is added to dialog" ); - ok( !$('.ui-dialog').hasClass("mage-dropdown-dialog"), "Default class has been overwritten" ); - dialog.dropdownDialog( "destroy" ); - - dialog.dropdownDialog({}); - ok( $('.ui-dialog').hasClass("mage-dropdown-dialog"), "Default class hasn't been overwritten" ); - dialog.dropdownDialog( "destroy" ); -}); - -/* - testing if the specified trigger actually opens the dialog - */ -test( "triggerTarget", function() { - expect(2); - var opener = $('<div></div>'); - var dialog = $('<div></div>'); - - dialog.dropdownDialog({"triggerTarget":opener}); - opener.trigger("click"); - equal(dialog.dropdownDialog("isOpen"), true, "Dropdown opens when click opener"); - dialog.dropdownDialog("close"); - dialog.dropdownDialog( "destroy" ); - - dialog.dropdownDialog({"triggerTarget":null}); - opener.trigger("click"); - equal(dialog.dropdownDialog("isOpen"), false, "Dropdown doesn't open when click opener"); - dialog.dropdownDialog( "destroy" ); -}); - -/* - testing if the dialog gets closed when clicking outside of it - */ -test( "closeOnClickOutside", function() { - expect(2); - var outside = $('<div></div>').attr({"id":"outside"}); - var dialog = $('<div></div>').attr({"id":"dialog"}); - outside.appendTo("#qunit-fixture"); - dialog.appendTo("#qunit-fixture"); - - dialog.dropdownDialog({"closeOnClickOutside":true}); - dialog.dropdownDialog("open"); - outside.trigger("click"); - equal(dialog.dropdownDialog("isOpen"), false, "Dropdown closes when click outside dropdown"); - dialog.dropdownDialog( "destroy" ); - - dialog.dropdownDialog({"closeOnClickOutside":false}); - dialog.dropdownDialog("open"); - outside.trigger("click"); - equal(dialog.dropdownDialog("isOpen"), true, "Dropdown doesn't close when click outside dropdown"); - dialog.dropdownDialog( "destroy" ); -}); - -/* - testing if the dialog gets closed when mouse leaves the dialog area - */ -asyncTest( "closeOnMouseLeave true", function() { - expect(1); - var outside = $('<div></div>').attr({"id":"outside"}); - var dialog = $('<div></div>').attr({"id":"dialog"}); - var opener = $('<div></div>').attr({"id":"opener"}); - outside.appendTo("#qunit-fixture"); - dialog.appendTo("#qunit-fixture"); - opener.appendTo("#qunit-fixture"); - - dialog.dropdownDialog({"closeOnMouseLeave":true}); - dialog.dropdownDialog("open"); - dialog.trigger("mouseenter"); - dialog.trigger("mouseleave"); - - setTimeout(function() { - equal(dialog.dropdownDialog("isOpen"), false, "Dropdown closes when mouseleave the dropdown area"); - dialog.dropdownDialog( "destroy" ); - start(); - }, 3000); - -}); - -/* - testing if the dialog gets closed when mouse leaves the dialog area - */ -asyncTest( "closeOnMouseLeave false", function() { - expect(1); - var outside = $('<div></div>').attr({"id":"outside"}); - var dialog = $('<div></div>').attr({"id":"dialog"}); - var opener = $('<div></div>').attr({"id":"opener"}); - outside.appendTo("#qunit-fixture"); - dialog.appendTo("#qunit-fixture"); - opener.appendTo("#qunit-fixture"); - - dialog.dropdownDialog({"closeOnMouseLeave":false}); - dialog.dropdownDialog("open"); - dialog.trigger("mouseenter"); - dialog.trigger("mouseleave"); - - setTimeout(function() { - equal(dialog.dropdownDialog("isOpen"), true, "Dropdown doesn't close when mouseleave the dropdown area"); - dialog.dropdownDialog( "destroy" ); - start(); - }, 3000); - -}); - -/* - testing if the dialog gets closed with the specified delay - */ -asyncTest( "timeout", function() { - expect(2); - var outside = $('<div></div>').attr({"id":"outside"}); - var dialog = $('<div></div>').attr({"id":"dialog"}); - var opener = $('<div></div>').attr({"id":"opener"}); - outside.appendTo("#qunit-fixture"); - dialog.appendTo("#qunit-fixture"); - opener.appendTo("#qunit-fixture"); - - dialog.dropdownDialog({"timeout":2000}); - dialog.dropdownDialog("open"); - dialog.trigger("mouseenter"); - dialog.trigger("mouseleave"); - equal(dialog.dropdownDialog("isOpen"), true, "Dropdown doesn't close when mouseleave the dropdown area"); - setTimeout(function() { - equal(dialog.dropdownDialog("isOpen"), false, "Dropdown closes when mouseleave the dropdown area, after timeout passed"); - dialog.dropdownDialog( "destroy" ); - start(); - }, 3000); - -}); - -/* - testing if the title bar is prevented from being created - */ -test( "createTitileBar", function() { - expect(2); - var dialog = $('<div></div>'); - dialog.dropdownDialog({"createTitleBar":true}); - ok(($(".ui-dialog").find(".ui-dialog-titlebar").length > 0), "Title bar is created"); - dialog.dropdownDialog( "destroy" ); - - dialog.dropdownDialog({"createTitleBar":false}); - ok($(".ui-dialog").find(".ui-dialog-titlebar").length <= 0, "Title bar isn't created"); - dialog.dropdownDialog( "destroy" ); -}); - -/* - testing if the position function gets disabled - */ -test( "autoPosition", function() { - expect(2); - var dialog = $('<div></div>'); - dialog.dropdownDialog({"autoPosition":false}); - dialog.dropdownDialog("open"); - ok(($(".ui-dialog").css("top") === 'auto'), "_position function disabled"); - dialog.dropdownDialog( "destroy" ); - - dialog.dropdownDialog({"autoPosition":true}); - dialog.dropdownDialog("open"); - ok(($(".ui-dialog").css("top") !== '0px'), "_position function enabled"); - dialog.dropdownDialog( "destroy" ); -}); - -/* - testing if the size function gets disabled - */ -test( "autoSize", function() { - expect(2); - var dialog = $('<div></div>'); - dialog.dropdownDialog({"autoSize":true, width:"300"}); - dialog.dropdownDialog("open"); - ok(($(".ui-dialog").css("width") === '300px'), "_size function enabled"); - dialog.dropdownDialog( "destroy" ); - - dialog.dropdownDialog({"autoSize":false, width:"300"}); - dialog.dropdownDialog("open"); - ok($(".ui-dialog").css("width") !== '300px', "_size function disabled"); - dialog.dropdownDialog( "destroy" ); -}); diff --git a/dev/tests/js/JsTestDriver/testsuite/mage/form/form-test.js b/dev/tests/js/JsTestDriver/testsuite/mage/form/form-test.js deleted file mode 100644 index 83bdefd399eafbeb1baf8a44320786c7035fab3c..0000000000000000000000000000000000000000 --- a/dev/tests/js/JsTestDriver/testsuite/mage/form/form-test.js +++ /dev/null @@ -1,241 +0,0 @@ -/** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. - */ -FormTest = TestCase('FormTest'); -FormTest.prototype.setUp = function() { - /*:DOC += <form id="form" action="action/url" method="GET", target="_self" ></form>*/ -}; -FormTest.prototype.tearDown = function() { - var formInstance = jQuery('#form').data('form'); - if(formInstance && formInstance.destroy) { - formInstance.destroy(); - } -}; -FormTest.prototype.testInit = function() { - var form = jQuery('#form').form(); - assertTrue(form.is(':mage-form')); -}; -FormTest.prototype.testRollback = function() { - var form = jQuery('#form').form(), - initialFormAttrs = { - action: form.prop('action'), - target: form.prop('target'), - method: form.prop('method') - }; - - form.data("form").oldAttributes = initialFormAttrs; - form.prop({ - action: 'new/action/url', - target: '_blank', - method: 'POST' - }); - - assertNotEquals(form.prop('action'), initialFormAttrs.action); - assertNotEquals(form.prop('target'), initialFormAttrs.target); - assertNotEquals(form.prop('method'), initialFormAttrs.method); - form.data("form")._rollback(); - assertEquals(form.prop('action'), initialFormAttrs.action); - assertEquals(form.prop('target'), initialFormAttrs.target); - assertEquals(form.prop('method'), initialFormAttrs.method); -}; -FormTest.prototype.testGetHandlers = function() { - var form = jQuery('#form').form(), - handlersData = form.form('option', 'handlersData'), - handlers = []; - $.each(handlersData, function(key) { - handlers.push(key); - }); - assertEquals(handlers.join(' '), form.data("form")._getHandlers().join(' ')); -}; -FormTest.prototype.testStoreAttribute = function() { - var form = jQuery('#form').form(), - initialFormAttrs = { - action: form.attr('action'), - target: form.attr('target'), - method: form.attr('method') - }; - form.data("form")._storeAttribute('action'); - form.data("form")._storeAttribute('target'); - form.data("form")._storeAttribute('method'); - - assertEquals(form.data("form").oldAttributes.action, initialFormAttrs.action); - assertEquals(form.data("form").oldAttributes.target, initialFormAttrs.target); - assertEquals(form.data("form").oldAttributes.method, initialFormAttrs.method); -}; -FormTest.prototype.testBind = function() { - var form = jQuery('#form').form(), - submitted = false, - handlersData = form.form('option', 'handlersData'); - - form.on('submit', function(e) { - submitted = true; - e.stopImmediatePropagation(); - e.preventDefault(); - }); - $.each(handlersData, function(key) { - form.trigger(key); - assertTrue(submitted); - submitted = false; - }); - form.off('submit'); -}; -FormTest.prototype.testGetActionUrl = function() { - var form = jQuery('#form').form(), - action = form.attr('action'), - testUrl = 'new/action/url', - testArgs = { - args: {arg: 'value'} - }; - - form.data("form")._storeAttribute('action'); - assertEquals(form.data("form")._getActionUrl(testArgs), action + '/arg/value/'); - assertEquals(form.data("form")._getActionUrl(testUrl), testUrl); - assertEquals(form.data("form")._getActionUrl(), action); -}; -FormTest.prototype.testProcessData = function() { - var form = jQuery('#form').form(), - initialFormAttrs = { - action: form.attr('action'), - target: form.attr('target'), - method: form.attr('method') - }, - testSimpleData = { - action: 'new/action/url', - target: '_blank', - method: 'POST' - }, - testActionArgsData = { - action: { - args: { - arg: 'value' - } - } - }; - var processedData = form.data("form")._processData(testSimpleData); - - assertEquals(form.data("form").oldAttributes.action, initialFormAttrs.action); - assertEquals(form.data("form").oldAttributes.target, initialFormAttrs.target); - assertEquals(form.data("form").oldAttributes.method, initialFormAttrs.method); - - assertEquals(processedData.action, testSimpleData.action); - assertEquals(processedData.target, testSimpleData.target); - assertEquals(processedData.method, testSimpleData.method); - - form.data("form")._rollback(); - - processedData = form.data("form")._processData(testActionArgsData); - form.data("form")._storeAttribute('action'); - var newActionUrl = form.data("form")._getActionUrl(testActionArgsData.action); - - assertEquals(processedData.action, newActionUrl); -}; -FormTest.prototype.testBeforeSubmit = function() { - /*:DOC += <form id="test-form"></form> */ - var testHandler = { - action: { - args: { - arg1: 'value1' - } - } - }, - form = jQuery('#form').form({handlersData: { - testHandler: testHandler - } - }), - beforeSubmitData = { - action: { - args: { - arg2: 'value2' - } - }, - target: '_blank' - }, - eventData = { - method: 'POST' - }, - resultData = $.extend( - true, - {}, - testHandler, - beforeSubmitData, - eventData - ); - form.data("form")._storeAttribute('action'); - - var testForm = jQuery('#test-form'); - resultData = form.data("form")._processData(resultData); - testForm.prop(resultData); - - form.on('beforeSubmit', function(e, data) { - jQuery.extend(data, beforeSubmitData); - }); - form.on('submit', function(e) { - e.stopImmediatePropagation(); - e.preventDefault(); - }); - form.data("form")._beforeSubmit('testHandler', eventData); - - assertEquals(testForm.prop('action'), form.prop('action')); - assertEquals(testForm.prop('target'), form.prop('target')); - assertEquals(testForm.prop('method'), form.prop('method')); -}; -FormTest.prototype.testSubmit = function() { - var form = jQuery('#form').form({ - handlersData: { - save: {} - } - }), - formSubmitted = false; - - form.data("form")._storeAttribute('action'); - form.data("form")._storeAttribute('target'); - form.data("form")._storeAttribute('method'); - form - .on('submit', function(e) { - e.preventDefault(); - e.stopImmediatePropagation(); - e.preventDefault(); - formSubmitted = true; - }) - .prop({ - action: 'new/action/url', - target: '_blank', - method: 'POST' - }); - - form.data("form")._submit({type: 'save'}); - - assertEquals(form.attr('action'), form.data("form").oldAttributes.action); - assertEquals(form.attr('target'), form.data("form").oldAttributes.target); - assertEquals(form.attr('method'), form.data("form").oldAttributes.method); - assertTrue(formSubmitted); - form.off('submit'); -}; -FormTest.prototype.testBuildURL = function() { - var dataProvider = [ - { - params: ['http://domain.com//', {'key[one]': 'value 1', 'key2': '# value'}], - expected: 'http://domain.com/key[one]/value%201/key2/%23%20value/' - }, - { - params: ['http://domain.com', {'key[one]': 'value 1', 'key2': '# value'}], - expected: 'http://domain.com/key[one]/value%201/key2/%23%20value/' - }, - { - params: ['http://domain.com?some=param', {'key[one]': 'value 1', 'key2': '# value'}], - expected: 'http://domain.com?some=param&key[one]=value%201&key2=%23%20value' - }, - { - params: ['http://domain.com?some=param&', {'key[one]': 'value 1', 'key2': '# value'}], - expected: 'http://domain.com?some=param&key[one]=value%201&key2=%23%20value' - } - ], - method = jQuery.mage.form._proto._buildURL, - quantity = dataProvider.length; - - expectAsserts(quantity); - for (var i = 0; i < quantity; i++) { - assertEquals(dataProvider[i].expected, method.apply(null, dataProvider[i].params)); - } -}; diff --git a/dev/tests/js/JsTestDriver/testsuite/mage/loader/jquery-loader-test.js b/dev/tests/js/JsTestDriver/testsuite/mage/loader/jquery-loader-test.js deleted file mode 100644 index 174a4efc14da10b00b46360830f8011f1297c961..0000000000000000000000000000000000000000 --- a/dev/tests/js/JsTestDriver/testsuite/mage/loader/jquery-loader-test.js +++ /dev/null @@ -1,73 +0,0 @@ -/** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. - */ -TestCase('options', function() { - expect(3); - - var element = $('<div>'); - element.appendTo('body'); - element.loader(); - element.loader('show'); - equal( element.find('p').text(), 'Please wait...', '.loader() text matches' ); - equal( element.find('img').prop('src').split('/').pop(), 'icon.gif', '.loader() icons match' ); - equal( element.find('img').prop('alt'), 'Loading...', '.loader() image alt text matches' ); - element.loader('destroy'); - -}); - -TestCase( 'element init', function() { - expect(1); - - var element = $('<div>'); - element.appendTo('body'); - element.loader(); - element.loader('show'); - equal(element.is(':mage-loader'), true, '.loader() init on element'); - element.loader('destroy'); - -}); - -TestCase( 'body init', function() { - expect(1); - - //Initialize Loader on Body - var body = $('body').loader(); - body.loader('show'); - equal(body.is(':mage-loader'), true, '.loader() init on body'); - body.loader('destroy'); -}); - -TestCase( 'show/hide', function() { - expect(3); - - var element = $('<div>'); - element.appendTo('body'); - element.loader(); - - //Loader show - element.loader('show'); - equal($('.loading-mask').is(':visible'), true, '.loader() open'); - - //Loader hide - element.loader('hide'); - equal($('.loading-mask').is( ":hidden" ), true, '.loader() closed' ); - - //Loader hide on process complete - element.loader('show'); - element.trigger('processStop'); - equal($('.loading-mask').is('visible'), false, '.loader() closed after process'); - - element.loader('destroy'); - -}); - -TestCase( 'destroy', function() { - expect(1); - - var element = $("#loader").loader(); - element.loader('show'); - element.loader('destroy'); - equal( $('.loading-mask').is(':visible'), false, '.loader() destroyed'); - -}); diff --git a/dev/tests/js/JsTestDriver/testsuite/mage/loader/loader-test.js b/dev/tests/js/JsTestDriver/testsuite/mage/loader/loader-test.js deleted file mode 100644 index 3dd08f57ab8b3e7d8129c281682045472a8ae5f1..0000000000000000000000000000000000000000 --- a/dev/tests/js/JsTestDriver/testsuite/mage/loader/loader-test.js +++ /dev/null @@ -1,93 +0,0 @@ -/** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. - */ -LoaderTest = TestCase('LoaderTest'); -LoaderTest.prototype.setUp = function() { - /*:DOC += <div id="loader"></div> */ -}; -LoaderTest.prototype.tearDown = function() { - var loaderInstance = jQuery('#loader').data('loader'); - if(loaderInstance && loaderInstance.destroy) { - loaderInstance.destroy(); - } -}; -LoaderTest.prototype.getInstance = function() { - return jQuery('#loader').data('loader'); -}; -LoaderTest.prototype.testInit = function() { - var div = jQuery('#loader').loader(); - div.loader('show'); - assertEquals(true, div.is(':mage-loader')); -}; -// @TODO Need to be fixed to avoid errors on the bamboo server in context of MAGETWO-5085 ticket -/*LoaderTest.prototype._testCreateOnBeforeSend = function() { - /*:DOC += <div id="loader"></div> */ -/* var loader = jQuery('#loader').trigger('ajaxSend'); - assertEquals(true, loader.is(':mage-loader')); - loader.loader('destroy'); -};*/ -LoaderTest.prototype.testLoaderOnBody = function() { - var body = jQuery('body').loader(); - body.loader('show'); - assertEquals(true, jQuery('body div:first').is('.loading-mask')); - body.loader('destroy'); -}; -LoaderTest.prototype.testLoaderOnDOMElement = function() { - var div = jQuery('#loader').loader(), - loaderInstance = this.getInstance(); - div.loader('show'); - assertEquals(true, div.find(':first-child').is(loaderInstance.spinner)); -}; -LoaderTest.prototype.testLoaderOptions = function() { - /*:DOC += <div id="loader"></div> */ - var div = jQuery('#loader').loader({ - icon: 'icon.gif', - texts: { - loaderText: 'Loader Text', - imgAlt: 'Image Alt Text' - } - }), - loaderInstance = this.getInstance(); - div.loader('show'); - assertEquals('icon.gif', loaderInstance.spinner.find('img').attr('src')); - assertEquals('Image Alt Text', loaderInstance.spinner.find('img').attr('alt')); - assertEquals('Loader Text', loaderInstance.spinner.find('div.popup-inner').text()); - div.loader('destroy'); - div.loader({ - template:'<div id="test-template"></div>' - }); - div.loader('show'); - loaderInstance = this.getInstance(); - assertEquals(true, loaderInstance.spinner.is('#test-template')); - div.loader('destroy'); -}; -LoaderTest.prototype.testHideOnComplete = function() { - /*:DOC += <div id="loader"></div> */ - var div = jQuery('#loader').loader(); - div.loader('show'); - loaderIsVisible = jQuery('.loading-mask').is(':visible'); - div.trigger('processStop'); - assertEquals(false, jQuery('.loading-mask').is(':visible') === loaderIsVisible); -}; -LoaderTest.prototype.testRender = function() { - /*:DOC += <div id="loader" style="widht:200px; height:200px;"></div> */ - var div = jQuery('#loader').loader(); - div.loader('show'); - assertEquals(true, $('.loading-mask').is(':visible')); -}; -LoaderTest.prototype.testShowHide = function() { - /*:DOC += <div id="loader" style="widht:200px; height:200px;"></div> */ - var div = jQuery('#loader').loader(); - div.loader('show'); - assertEquals(true, $('.loading-mask').is(':visible')); - div.loader('hide'); - assertEquals(false, $('.loading-mask').is(':visible')); -}; -LoaderTest.prototype.testDestroy = function() { - /*:DOC += <div id="loader"></div> */ - var div = jQuery('#loader').loader(), - loaderExist = div.is(':mage-loader'); - div.loader('destroy'); - assertEquals(false, div.is(':mage-loader') === loaderExist); -}; diff --git a/dev/tests/js/JsTestDriver/testsuite/mage/loader/loader.html b/dev/tests/js/JsTestDriver/testsuite/mage/loader/loader.html deleted file mode 100644 index 362dec71382764384fcac497dee708f07c3c0a63..0000000000000000000000000000000000000000 --- a/dev/tests/js/JsTestDriver/testsuite/mage/loader/loader.html +++ /dev/null @@ -1,25 +0,0 @@ -<!-- -/** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. - */ ---> -<!DOCTYPE html> -<html> -<head> - <title>Unit test</title> - <base href="../../../"/> - <link type="text/css" rel="stylesheet" href="framework/qunit/qunit-1.14.0.css"/> - <script src="../../../lib/web/jquery.js"></script> - <script src="../../../lib/web/jquery/jquery-ui.js"></script> - <script type="text/javascript" src="framework/qunit/qunit-1.14.0.js"></script> - <script type="text/javascript" src="../../../lib/web/mage/mage.js"></script> - <script type="text/javascript" src="../../../lib/web/mage/bootstrap.js"></script> - <script type="text/javascript" src="../../../lib/web/mage/loader.js"></script> - <script type="text/javascript" src="testsuite/mage/loader/jquery-loader-test.js"></script> -</head> -<body> - <div id="qunit"></div> - <div id="qunit-fixture"></div> -</body> -</html> diff --git a/dev/tests/js/JsTestDriver/testsuite/mage/menu/test-menu.js b/dev/tests/js/JsTestDriver/testsuite/mage/menu/test-menu.js deleted file mode 100644 index 0e1c4a3682b890bdd9593836303a62c51d2dd1dc..0000000000000000000000000000000000000000 --- a/dev/tests/js/JsTestDriver/testsuite/mage/menu/test-menu.js +++ /dev/null @@ -1,112 +0,0 @@ -/** - * @category mage.js - * @package test - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. - */ - - /* - Set key logger to check key press event - */ - function KeyLogger( target ) { - if ( !(this instanceof KeyLogger) ) { - return new KeyLogger( target ); - } - this.target = target; - this.log = []; - - var self = this; - - this.target.off( 'keydown' ).on( 'keydown', function( event ) { - self.log.push( event.keyCode ); - }); -} -/* - testing if menu get expanded class when option set to true - */ -test( 'Menu Expanded', function() { - expect(1); - var menu = $('#menu'); - var menuItems = menu.find('li'); - var submenu = menuItems.find('ul'); - menu.menu({ - expanded: true - }); - ok(submenu.hasClass('expanded'), 'Expanded Class added'); -}); -/* - testing if down arrow is pressed - */ -test( 'Down Arrow', function() { - expect(1); - var event, - menu = $('#menu'), - keys = KeyLogger(menu); - event = $.Event('keydown'); - event.keyCode = $.ui.keyCode.DOWN; - menu.trigger( event ); - equal( keys.log[ 0 ], 40, 'Down Arrow Was Pressed' ); -}); -/* - testing if up arrow is pressed - */ -test( 'Up Arrow', function() { - expect(1); - var event, - menu = $('#menu'), - keys = KeyLogger(menu); - event = $.Event('keydown'); - event.keyCode = $.ui.keyCode.UP; - menu.trigger( event ); - equal( keys.log[ 0 ], 38, 'Up Arrow Was Pressed' ); -}); -/* - testing if left arrow is pressed - */ -test( 'Left Arrow', function() { - expect(1); - var event, - menu = $('#menu'), - keys = KeyLogger(menu); - event = $.Event('keydown'); - event.keyCode = $.ui.keyCode.LEFT; - menu.trigger( event ); - equal( keys.log[ 0 ], 37, 'Left Arrow Was Pressed' ); -}); -/* - testing if right arrow is pressed - */ -test( 'Right Arrow', function() { - expect(1); - var event, - menu = $('#menu'), - keys = KeyLogger(menu); - event = $.Event('keydown'); - event.keyCode = $.ui.keyCode.RIGHT; - menu.trigger( event ); - equal( keys.log[ 0 ], 39, 'Right Arrow Was Pressed' ); -}); -/* - testing if max limit being set - */ -test( 'Max Limit', function() { - expect(1); - var menu = $('#menu'); - menu.navigation({ - maxItems: 3 - }); - var menuItems = menu.find('> li:visible'); - equal(menuItems.length, 4, 'Max Limit Reach'); -}); -/* - testing if responsive menu is set - */ -test( 'Responsive: More Menu', function() { - expect(1); - var menu = $('#menu'); - menu.navigation({ - responsive: 'onResize' - }); - ok($('body').find('.ui-menu.more'), 'More Menu Created'); -}); - diff --git a/dev/tests/js/JsTestDriver/testsuite/mage/suggest/suggest-test.js b/dev/tests/js/JsTestDriver/testsuite/mage/suggest/suggest-test.js deleted file mode 100644 index 4b2b961f753eea9dc0321f2b788d1196d5cc3696..0000000000000000000000000000000000000000 --- a/dev/tests/js/JsTestDriver/testsuite/mage/suggest/suggest-test.js +++ /dev/null @@ -1,952 +0,0 @@ -/** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. - */ -SuggestTest = TestCase('SuggestTest'); -SuggestTest.prototype.setUp = function() { - /*:DOC += <input name="test-suggest" id="suggest" />*/ - this.suggestElement = jQuery('#suggest'); -}; -SuggestTest.prototype.tearDown = function() { - this.suggestDestroy(); -}; -SuggestTest.prototype.suggestDestroy = function() { - if(this.suggestElement.data('suggest')) { - this.suggestElement.suggest('destroy'); - } -}; -SuggestTest.prototype.suggestCreate = function(options, element) { - return (element || this.suggestElement).suggest(options || {} ).data('suggest'); -}; -SuggestTest.prototype.uiHash = { - item: { - id: 1, - label: 'Test Label' - } -}; - -SuggestTest.prototype.testInit = function() { - this.suggestElement.suggest(); - assertTrue(this.suggestElement.is(':mage-suggest')); -}; -SuggestTest.prototype.testCreate = function() { - var suggestOptions = { - controls: { - selector: '.test', - eventsMap: { - focus: ['testfocus'], - blur: ['testblur'], - select: ['testselect'] - } - }, - showRecent: true, - storageKey: 'jsTestDriver-test-suggest-recent', - multiselect: true - }, - recentItems = [{ - id: "1", - "label": "TestLabel1" - }, - { - id: "2", - label: "TestLabel2" - }], - setTemplateExecuted, - prepareValueFieldExecuted, - renderExecuted, - bindExecuted; - - if(window.localStorage) { - localStorage.setItem(suggestOptions.storageKey, JSON.stringify(recentItems)); - } - - var suggestInstance = this.suggestCreate(suggestOptions), - nonSelectedItem = {id: '', label: ''}; - - assertEquals(null, suggestInstance._term); - assertEquals(suggestInstance._nonSelectedItem, nonSelectedItem); - assertNull(suggestInstance._renderedContext); - assertEquals(suggestInstance._selectedItem, nonSelectedItem); - var control = suggestInstance.options.controls; - assertEquals(suggestInstance._control, control); - assertEquals(suggestInstance._recentItems, window.localStorage ? recentItems : []); - assertTrue(suggestInstance.valueField.is(':hidden')); - if(window.localStorage) { - localStorage.removeItem(suggestOptions.storageKey); - } -}; -SuggestTest.prototype.testRender = function() { - var suggestOptions = { - dropdownWrapper: '<div class="wrapper-test"></div>', - className: 'test-suggest', - inputWrapper: '<div class="test-input-wrapper"></div>' - }; - - var suggestInstance = this.suggestCreate(suggestOptions); - suggestInstance._render(); - - assertTrue(suggestInstance.dropdown.hasClass('wrapper-test')); - assertTrue(suggestInstance.dropdown.is(':hidden')); - assertTrue(suggestInstance.element.closest('.test-input-wrapper').size() > 0); - assertTrue(suggestInstance.element.closest('.' + suggestOptions.className).size() > 0); - assertEquals(suggestInstance.element.attr('autocomplete'), 'off'); - - suggestOptions.appendMethod = 'before'; - this.suggestDestroy(); - suggestInstance = this.suggestCreate(suggestOptions); - suggestInstance._render(); - assertTrue(suggestInstance.element.prev().is(suggestInstance.dropdown)); - - suggestOptions.appendMethod = 'after'; - this.suggestDestroy(); - suggestInstance = this.suggestCreate(suggestOptions); - suggestInstance._render(); - assertTrue(suggestInstance.element.next().is(suggestInstance.dropdown)); -}; -SuggestTest.prototype.testCreateValueField = function() { - var suggestInstance = this.suggestCreate(), - valueField = suggestInstance._createValueField(); - assertTrue(valueField.is('input')); - assertTrue(valueField.is(':hidden')); - this.suggestDestroy(); - - suggestInstance = this.suggestCreate({multiselect: true}); - valueField = suggestInstance._createValueField(); - assertTrue(valueField.is('select')); - assertTrue(valueField.is(':hidden')); - assertEquals(valueField.attr('multiple'), 'multiple'); -}; -SuggestTest.prototype.testPrepareValueField = function() { - var suggestInstance = this.suggestCreate(), - suggestName = this.suggestElement.attr('name'); - suggestInstance._prepareValueField(); - - assertNotUndefined(suggestInstance.valueField); - assertTrue(suggestInstance.element.prev().is(suggestInstance.valueField)); - assertUndefined(suggestInstance.element.attr('name')); - assertEquals(suggestInstance.valueField.attr('name'), suggestName); - this.suggestDestroy(); - - - var valueField = jQuery('<input id="suggest-single-select-value" type="hidden" />'); - jQuery('body').append(valueField); - suggestInstance = this.suggestCreate({valueField: '#suggest-single-select-value'}); - assertTrue(suggestInstance.valueField.is(valueField)); -}; -SuggestTest.prototype.testDestroy = function() { - var suggestOptions = { - inputWrapper: '<div class="test-input-wrapper"></div>', - valueField: null - }, - suggestInstance = this.suggestCreate(suggestOptions), - suggestName = suggestInstance.valueField.attr('name'); - - assertNotUndefined(suggestInstance.dropdown); - assertNotUndefined(suggestInstance.valueField); - assertUndefined(this.suggestElement.attr('name')); - - this.suggestElement.suggest('destroy'); - - assertEquals(this.suggestElement.closest('.test-input-wrapper').length, 0); - assertUndefined(this.suggestElement.attr('autocomplete')); - assertEquals(this.suggestElement.attr('name'), suggestName); - assertFalse(suggestInstance.valueField.parents('html').length > 0); - assertFalse(suggestInstance.dropdown.parents('html').length > 0); -}; -SuggestTest.prototype.testValue = function() { - var value = 'test-value'; - this.suggestElement.val(value); - jQuery('body').append('<div id="suggest-div">' + value + '</div>'); - - var suggestInputInsatnce = this.suggestCreate(), - suggestDivInsatnce = this.suggestCreate(null, jQuery('#suggest-div')); - - assertEquals(suggestInputInsatnce._value(), value); - assertEquals(suggestDivInsatnce._value(), value); -}; -SuggestTest.prototype.testProxyEvents = function() { - var fakeEvent = $.extend({}, $.Event('keydown'), { - ctrlKey: false, - keyCode: $.ui.keyCode.ENTER, - which: $.ui.keyCode.ENTER - }), - suggestInstance = this.suggestCreate({controls: {selector: null}}), - ctrlKey, - keyCode, - which; - - suggestInstance.dropdown.on('keydown', function(e) { - ctrlKey = e.ctrlKey; - keyCode = e.keyCode; - which = e.which; - }); - - suggestInstance._proxyEvents(fakeEvent); - - assertEquals(ctrlKey, fakeEvent.ctrlKey); - assertEquals(keyCode, fakeEvent.keyCode); - assertEquals(which, fakeEvent.which); -}; -SuggestTest.prototype.testBind = function() { - var eventIsBinded = false, - suggestOptions = { - events: { - click: function() { - eventIsBinded = true; - } - } - }; - this.suggestCreate(suggestOptions); - - this.suggestElement.trigger('click'); - assertTrue(eventIsBinded); -}; -SuggestTest.prototype.testChange = function() { - var changeIsTriggered, - suggestInstance = this.suggestCreate(); - - suggestInstance._term = 'changed'; - this.suggestElement.on('suggestchange', function(e) { - changeIsTriggered = true; - }); - - suggestInstance._change($.Event('click')); - assertTrue(changeIsTriggered); -}; -SuggestTest.prototype.testBindDropdown = function() { - var suggestOptions = { - controls: { - eventsMap: { - focus: ['testFocus'], - blur: ['testBlur'], - select: ['testSelect'] - } - } - }, - suggestInstance = this.suggestCreate(suggestOptions), - focusTriggered, - blurTriggered, - selectTriggered; - - suggestInstance._onSelectItem = function() { - selectTriggered = true; - }; - suggestInstance._focusItem = function() { - focusTriggered = true; - }; - suggestInstance._blurItem = function() { - blurTriggered = true; - }; - suggestInstance._bindDropdown(); - - suggestInstance.dropdown.trigger('testFocus'); - suggestInstance.dropdown.trigger('testBlur'); - suggestInstance.dropdown.trigger('testSelect'); - - assertTrue(focusTriggered); - assertTrue(blurTriggered); - assertTrue(selectTriggered); -}; -SuggestTest.prototype.testTrigger = function() { - var propogationStopped = true, - suggestInstance = this.suggestCreate(); - - this.suggestElement - .on('suggesttestevent', function() { - return false; - }); - this.suggestElement.parent().on('suggesttestevent', function() { - propogationStopped = false; - }); - suggestInstance._trigger('testevent'); - - assertTrue(propogationStopped); -}; -SuggestTest.prototype.testFocusItem = function() { - var focusUiParam = false, - suggestInstance = this.suggestCreate(); - - this.suggestElement.on('suggestfocus', function(e, ui) { - focusUiParam = ui; - }); - - assertUndefined(suggestInstance._focused); - assertEquals(suggestInstance.element.val(), ''); - - suggestInstance._focusItem($.Event('focus'), this.uiHash); - assertEquals(suggestInstance._focused, this.uiHash.item); - assertEquals(focusUiParam, this.uiHash); - assertEquals(suggestInstance.element.val(), this.uiHash.item.label); -}; -SuggestTest.prototype.testBlurItem = function() { - var suggestInstance = this.suggestCreate(); - - suggestInstance._focusItem($.Event('focus'), this.uiHash); - assertEquals(suggestInstance._focused, this.uiHash.item); - assertEquals(suggestInstance.element.val(), this.uiHash.item.label); - - suggestInstance._blurItem(); - assertNull(suggestInstance._focused); - //assertEquals(suggestInstance.element.val(), suggestInstance._term.toString()); -}; -SuggestTest.prototype.testOnSelectItem = function() { - var item = this.uiHash.item, - beforeSelect, - beforeSelectUI, - beforeSelectPropagationStopped = true, - select, - selectUI, - selectPropagationStopped = true, - suggestInstance = this.suggestCreate(); - - suggestInstance._focused = item; - this.suggestElement - .on('suggestbeforeselect', function(e, ui) { - beforeSelect = true; - beforeSelectUI = ui; - }) - .on('suggestselect', function(e, ui) { - select = true; - selectUI = ui; - }) - .parent() - .on('suggestbeforeselect', function() { - beforeSelectPropagationStopped = false; - }) - .on('suggestselect', function() { - selectPropagationStopped = false; - }); - - suggestInstance._onSelectItem($.Event('select')); - - assertTrue(beforeSelect); - assertTrue(select); - assertFalse(beforeSelectPropagationStopped); - assertFalse(selectPropagationStopped); - assertEquals(beforeSelectUI.item, item); - assertEquals(selectUI.item, item); - - beforeSelect = select = beforeSelectUI = selectUI = null; - beforeSelectPropagationStopped = selectPropagationStopped = true; - - this.suggestElement - .on('suggestbeforeselect.returnfalse', function(e, ui) { - return false; - }); - - suggestInstance._focused = item; - suggestInstance._onSelectItem($.Event('select')); - assertTrue(beforeSelect); - assertNull(select); - assertTrue(beforeSelectPropagationStopped); - assertTrue(selectPropagationStopped); - assertEquals(beforeSelectUI.item, item); - assertNull(selectUI); - - beforeSelect = select = beforeSelectUI = selectUI = null; - beforeSelectPropagationStopped = selectPropagationStopped = true; - - this.suggestElement - .off('suggestbeforeselect.returnfalse') - .on('suggestselect.returnfalse', function() { - return false; - }); - - suggestInstance._focused = item; - suggestInstance._onSelectItem($.Event('select')); - assertTrue(beforeSelect); - assertTrue(select); - assertFalse(beforeSelectPropagationStopped); - assertTrue(selectPropagationStopped); - assertEquals(beforeSelectUI.item, item); - assertEquals(selectUI.item, item); - - beforeSelect = select = beforeSelectUI = selectUI = null; - beforeSelectPropagationStopped = selectPropagationStopped = true; - - this.suggestElement.off('suggestselect.returnfalse'); - var event = $.Event('select'); - event.target = this.suggestElement[0]; - - suggestInstance._onSelectItem(event, item); - assertEquals(suggestInstance._selectedItem, item); -}; -SuggestTest.prototype.testSelectItem = function() { - var suggestInstance = this.suggestCreate(); - - suggestInstance._focused = suggestInstance._term = suggestInstance._selectedItem = null; - suggestInstance.valueField.val(''); - - suggestInstance._selectItem($.Event('select')); - assertNull(suggestInstance._selectedItem); - assertNull(suggestInstance._term); - assertEquals(suggestInstance.valueField.val(), ''); - - suggestInstance._focused = this.uiHash.item; - - suggestInstance._selectItem($.Event('select')); - assertEquals(suggestInstance._selectedItem, suggestInstance._focused); - assertEquals(suggestInstance._term, suggestInstance._focused.label); - assertEquals(suggestInstance.valueField.val(), suggestInstance._focused.id); - assertTrue(suggestInstance.dropdown.is(':hidden')); - - this.suggestDestroy(); - - var suggestOptions; - if(window.localStorage) { - suggestOptions = { - showRecent: true, - storageKey: 'jsTestDriver-test-suggest-recent' - }; - suggestInstance = this.suggestCreate(suggestOptions); - suggestInstance._focused = this.uiHash.item; - - suggestInstance._selectItem($.Event('select')); - - var storedItem = localStorage.getItem(suggestOptions.storageKey); - assertEquals(storedItem, JSON.stringify([this.uiHash.item])); - localStorage.removeItem(suggestOptions.storageKey); - } -}; -SuggestTest.prototype.testSelectItemMultiselect = function() { - var suggestInstance = this.suggestCreate({multiselect: true}); - - suggestInstance._focused = suggestInstance._term = suggestInstance._selectedItem = null; - suggestInstance.valueField.val(''); - - suggestInstance._selectItem($.Event('select')); - assertNull(suggestInstance._selectedItem); - assertNull(suggestInstance._term); - assertFalse(suggestInstance.valueField.find('option').length > 0); - assertTrue(suggestInstance.dropdown.is(':hidden')); - - suggestInstance._focused = this.uiHash.item; - var selectedElement = jQuery('<div></div>'); - var event = $.Event('select'); - event.target = selectedElement[0]; - - suggestInstance._selectItem(event); - assertEquals(suggestInstance._selectedItem, suggestInstance._focused); - assertEquals(suggestInstance._term, ''); - assertTrue(suggestInstance._getOption(suggestInstance._focused).length > 0); - assertTrue(selectedElement.hasClass(suggestInstance.options.selectedClass)); - assertTrue(suggestInstance.dropdown.is(':hidden')); - - suggestInstance._selectItem(event); - assertEquals(suggestInstance._selectedItem, suggestInstance._nonSelectedItem); - assertFalse(suggestInstance._getOption(suggestInstance._focused).length > 0); - assertFalse(selectedElement.hasClass(suggestInstance.options.selectedClass)); - assertTrue(suggestInstance.dropdown.is(':hidden')); -}; -SuggestTest.prototype.testResetSuggestValue = function() { - var suggestInstance = this.suggestCreate(); - suggestInstance.valueField.val('test'); - suggestInstance._resetSuggestValue(); - assertEquals(suggestInstance.valueField.val(), suggestInstance._nonSelectedItem.id); -}; -SuggestTest.prototype.testResetSuggestValueMultiselect = function() { - var suggestInstance = this.suggestCreate({multiselect: true}); - suggestInstance._focused = this.uiHash.item; - var selectedElement = jQuery('<div></div>'); - var event = $.Event('select'); - event.target = selectedElement[0]; - - suggestInstance._selectItem(event); - suggestInstance._resetSuggestValue(); - - var suggestValue = suggestInstance.valueField.val(); - assertArray(suggestValue); - assertNotUndefined(suggestValue[0]); - assertEquals(suggestValue[0], this.uiHash.item.id); -}; -SuggestTest.prototype.testReadItemData = function() { - var testElement = jQuery('<div></div>'), - suggestInstance = this.suggestCreate(); - assertEquals(suggestInstance._readItemData(testElement), suggestInstance._nonSelectedItem); - testElement.data('suggestOption', 'test'); - assertEquals(suggestInstance._readItemData(testElement), 'test'); -}; -SuggestTest.prototype.testIsDropdownShown = function() { - var suggestInstance = this.suggestCreate(); - suggestInstance.dropdown.hide(); - assertFalse(suggestInstance.isDropdownShown()); - suggestInstance.dropdown.show(); - assertTrue(suggestInstance.isDropdownShown()); -}; -SuggestTest.prototype.testOpen = function() { - var openTriggered = false, - suggestInstance = this.suggestCreate(); - - this.suggestElement.on('suggestopen', function() { - openTriggered = true; - }); - - suggestInstance.dropdown.show(); - suggestInstance.open($.Event('open')); - assertFalse(openTriggered); - - suggestInstance.dropdown.hide(); - suggestInstance.open($.Event('open')); - assertTrue(openTriggered); - assertTrue(suggestInstance.dropdown.is(':visible')); -}; -SuggestTest.prototype.testClose = function() { - var closeTriggered = false, - suggestInstance = this.suggestCreate(); - - suggestInstance.element.val('test'); - suggestInstance._renderedContext = 'test'; - suggestInstance.dropdown.show().append('<div class="test"></div>'); - - this.suggestElement.on('suggestclose', function() { - closeTriggered = true; - }); - - suggestInstance.close($.Event('close')); - assertNull(suggestInstance._renderedContext); - assertTrue(suggestInstance.dropdown.is(':hidden')); - assertFalse(suggestInstance.dropdown.children().length > 0); - assertTrue(closeTriggered); -}; -SuggestTest.prototype.testSetTemplate = function() { - /*:DOC += <script type="text/template" id="test-template"><div><%= data.test %></div></script>*/ - var suggestInstance = this.suggestCreate({template: '<div><%= data.test %></div>'}), - tmpl, - html; - - tmpl = suggestInstance.templates[suggestInstance.templateName] - - html = jQuery('<div />').append(tmpl({ - data: { - test: 'test' - } - })).html(); - - assertEquals(html, '<div>test</div>'); - - suggestInstance = this.suggestCreate({ - template: '#test-template' - }); - - tmpl = suggestInstance.templates[suggestInstance.templateName]; - - html = jQuery('<div />').append(tmpl({ - data: { - test: 'test' - } - })).html(); - - assertEquals(html, '<div>test</div>'); -}; -SuggestTest.prototype.testSearch = function() { - var searchTriggered = false, - seachPropagationStopped = true, - suggestInstance = this.suggestCreate(); - - this.suggestElement - .on('suggestsearch', function() { - searchTriggered = true; - }) - .parent() - .on('suggestsearch', function() { - seachPropagationStopped = false; - }); - - suggestInstance._term = suggestInstance._value(); - suggestInstance._selectedItem = null; - - suggestInstance.preventBlur = true; - suggestInstance.search($.Event('search')); - - assertNull(suggestInstance._selectedItem); - assertFalse(searchTriggered); - suggestInstance.preventBlur = false; - - this.suggestElement.val('test'); - suggestInstance.search($.Event('search')); - - assertEquals(suggestInstance._term, suggestInstance._value()); - assertTrue(searchTriggered); - assertFalse(seachPropagationStopped); - - searchTriggered = false; - seachPropagationStopped = true; - suggestInstance._selectedItem = null; - suggestInstance.options.minLength = 10; - this.suggestElement.val('testtest'); - - suggestInstance.search($.Event('search')); - - assertEquals(suggestInstance._selectedItem, suggestInstance._nonSelectedItem); - assertEquals(suggestInstance.valueField.val(), suggestInstance._selectedItem.id); - assertFalse(searchTriggered); - - searchTriggered = false; - seachPropagationStopped = true; - suggestInstance._selectedItem = null; - suggestInstance.options.minLength = 1; - this.suggestElement.val('test'); - - this.suggestElement - .on('suggestsearch.returnfalse', function() { - return false; - }); - - suggestInstance.search($.Event('search')); - - assertEquals(suggestInstance._term, suggestInstance._value()); - assertTrue(searchTriggered); - assertTrue(seachPropagationStopped); -}; -SuggestTest.prototype.testUderscoreSearch = function() { - var sourceLaunched = false, - sorceTerm = null, - responceExists = false, - suggestOptions = { - source: function(term, response){ - sourceLaunched = true; - sorceTerm = term; - responceExists = (response && jQuery.type(response) === 'function'); - }, - delay: null - }, - suggestInstance = this.suggestCreate(suggestOptions); - - suggestInstance._search($.Event('search'), 'test', {}); - assertTrue(sourceLaunched); - assertEquals(sorceTerm, 'test'); - assertTrue(responceExists); - assertTrue(this.suggestElement.hasClass(suggestInstance.options.loadingClass)); - assertUndefined(suggestInstance._searchTimeout); - - suggestInstance.options.delay = 100; - suggestInstance._search($.Event('search'), 'test', {}); - assertNotUndefined(suggestInstance._searchTimeout); -}; -SuggestTest.prototype.testPrepareDropdownContext = function() { - var suggestInstance = this.suggestCreate(); - - suggestInstance._items = [this.uiHash.item]; - suggestInstance._term = 'test'; - suggestInstance._selectedItem = this.uiHash.item; - - var context = suggestInstance._prepareDropdownContext({}); - - assertEquals(context.items, suggestInstance._items); - assertEquals(context.term, suggestInstance._term); - assertEquals(context.optionData(this.uiHash.item), - 'data-suggest-option="' + JSON.stringify(this.uiHash.item).replace(/"/g, '"') + '"'); - assertTrue(context.itemSelected(this.uiHash.item)); - assertNotUndefined(context.noRecordsText); - assertFalse(context.recentShown()); - assertNotUndefined(context.recentTitle); - assertNotUndefined(context.showAllTitle); - assertFalse(context.allShown()); -}; -SuggestTest.prototype.testIsItemSelected = function() { - var suggestInstance = this.suggestCreate(); - assertFalse(suggestInstance._isItemSelected(this.uiHash.item)); - suggestInstance._selectedItem = this.uiHash.item; - assertTrue(suggestInstance._isItemSelected(this.uiHash.item)); - this.suggestDestroy(); - - suggestInstance = this.suggestCreate({multiselect: true}); - assertFalse(suggestInstance._isItemSelected(this.uiHash.item)); - suggestInstance.valueField.append('<option value="1">Test Label1</option>'); - assertTrue(suggestInstance._isItemSelected(this.uiHash.item)); -}; -SuggestTest.prototype.testRenderDropdown = function() { - var testContext = { - test: 'test' - }, - contentUpdatedTriggered = false, - suggestOptions = { - template: '<div><%= data.test %></div>' - }, - suggestInstance = this.suggestCreate(suggestOptions); - - suggestInstance.dropdown.on('contentUpdated', function() { - contentUpdatedTriggered = true; - }); - suggestInstance.element.addClass(suggestInstance.options.loadingClass); - - suggestInstance._renderDropdown(null, [this.uiHash.item], testContext); - - assertEquals(suggestInstance._items, [this.uiHash.item]); - assertEquals(suggestInstance.dropdown.html(), '<div>test</div>'); - assertTrue(contentUpdatedTriggered); - assertEquals(suggestInstance._renderedContext, suggestInstance._prepareDropdownContext(testContext)); - assertFalse(suggestInstance.element.hasClass(suggestInstance.options.loadingClass)); - assertTrue(suggestInstance.dropdown.is(':visible')); -}; -SuggestTest.prototype.testProcessResponse = function() { - var testContext = { - test: 'test' - }, - responseTriggered = false, - suggestOptions = { - template: '<div><%= data.test %></div>' - }, - responcePropagationStopped = true, - rendererExists, - responseData, - suggestInstance = this.suggestCreate(suggestOptions); - - this.suggestElement - .on('suggestresponse', function(e, data, renderer) { - responseTriggered = true; - rendererExists = (renderer && jQuery.type(renderer) === 'function'); - responseData = data; - }) - .parent() - .on('suggestresponse', function() { - responcePropagationStopped = false; - }); - suggestInstance._processResponse($.Event('response'), [this.uiHash.item], testContext); - - assertTrue(responseTriggered); - assertTrue(rendererExists); - assertEquals(responseData, [this.uiHash.item]); - assertFalse(responcePropagationStopped); - assertEquals(suggestInstance.dropdown.html(), '<div>test</div>'); - - suggestInstance.dropdown.empty(); - this.suggestElement - .on('suggestresponse.returnfalse', function() { - return false; - }); - responcePropagationStopped = true; - - suggestInstance._processResponse($.Event('response'), [this.uiHash.item], testContext); - - assertTrue(responcePropagationStopped); - assertFalse(suggestInstance.dropdown.children().tength > 0); -}; -SuggestTest.prototype.testSource = function() { - var sourceArray = [this.uiHash.item], - sourceUrl = 'www.test.url', - sourceFuncExecuted = false, - responseExecuted = false, - responseItems = null, - sourceFuncTerm = "", - sourceFuncResponse = null, - ajaxData = '', - ajaxUrl = '', - sourceFunc = function(term, response) { - sourceFuncExecuted = true; - sourceFuncTerm = term; - sourceFuncResponse = (response && jQuery.type(response) === 'function'); - }, - response = function (items) { - responseExecuted = true; - responseItems = items; - }; - - var suggestInstance = this.suggestCreate({ - source: sourceArray - }); - - suggestInstance._source('test', response); - - assertTrue(responseExecuted); - assertEquals(responseItems, sourceArray); - this.suggestDestroy(); - - responseExecuted = false; - responseItems = null; - - suggestInstance = this.suggestCreate({ - source: sourceUrl, - ajaxOptions: { - beforeSend: function(xhr, settings) { - xhr.abort(); - ajaxData = settings.data; - ajaxUrl = settings.url; - settings.success(sourceArray); - } - }, - termAjaxArgument: 'test' - }); - suggestInstance._source('test', response); - - assertTrue(responseExecuted); - assertEquals(responseItems, sourceArray); - assertEquals(ajaxData, 'test=test'); - assertEquals(ajaxUrl, sourceUrl); - this.suggestDestroy(); - - responseExecuted = false; - responseItems = null; - - suggestInstance = this.suggestCreate({ - source: sourceFunc - }); - suggestInstance._source('test', response); - - assertTrue(sourceFuncExecuted); - assertEquals(sourceFuncTerm, 'test'); - assertTrue(sourceFuncResponse); -}; -SuggestTest.prototype.testAbortSearch = function() { - var searchAborted = false, - suggestInstance = this.suggestCreate(); - - this.suggestElement.addClass(suggestInstance.options.loadingClass); - suggestInstance._xhr = { - abort: function() { - searchAborted = true; - } - }; - - suggestInstance._abortSearch(); - - assertFalse(this.suggestElement.hasClass(suggestInstance.options.loadingClass)); - assertTrue(searchAborted); -}; -SuggestTest.prototype.testShowAll = function() { - var searchAborted, - showAllTerm, - showAllContext, - suggestInstance = this.suggestCreate(); - suggestInstance._abortSearch = function() { - searchAborted = true; - }; - suggestInstance._search = function(e, term, context) { - showAllTerm = term; - showAllContext = context; - }; - - suggestInstance._showAll(jQuery.Event('showAll')); - - assertTrue(searchAborted); - assertEquals(showAllTerm, ''); - assertEquals(showAllContext, {_allShown: true}); -}; -SuggestTest.prototype.testAddRecent = function() { - var recentItems = [ - {id: 2, label: 'Test Label 2'}, - {id: 3, label: 'Test Label 3'} - ], - suggestInstance = this.suggestCreate(); - - suggestInstance._recentItems = recentItems; - suggestInstance.options.storageKey = 'jsTestDriver-test-suggest-recent'; - suggestInstance._addRecent(this.uiHash.item); - - recentItems.unshift(this.uiHash.item); - assertEquals(recentItems, suggestInstance._recentItems); - if(window.localStorage) { - assertEquals(localStorage.getItem(suggestInstance.options.storageKey), JSON.stringify(recentItems)); - } - - suggestInstance._addRecent(this.uiHash.item); - assertEquals(recentItems, suggestInstance._recentItems); - if(window.localStorage) { - assertEquals(localStorage.getItem(suggestInstance.options.storageKey), JSON.stringify(recentItems)); - } - - suggestInstance.options.storageLimit = 1; - var newRecentItem = {id: 4, label: 'Test Label 4'}; - suggestInstance._addRecent(newRecentItem); - - assertEquals([newRecentItem], suggestInstance._recentItems); - if(window.localStorage) { - assertEquals(localStorage.getItem(suggestInstance.options.storageKey), JSON.stringify([newRecentItem])); - localStorage.removeItem(suggestInstance.options.storageKey); - } -}; -SuggestTest.prototype.testRenderMultiselect = function() { - var suggestOptions = { - multiselect: true, - multiSuggestWrapper: '<div id="test-multisuggest-wrapper" data-role="parent-choice-element"></div>' - }, - suggestInstance = this.suggestCreate(suggestOptions); - - assertTrue(this.suggestElement.closest('[data-role="parent-choice-element"]').is('#test-multisuggest-wrapper')); - assertTrue(suggestInstance.elementWrapper.is('#test-multisuggest-wrapper')); -}; -SuggestTest.prototype.testGetOptions = function() { - var suggestInstance = this.suggestCreate(); - - assertFalse(suggestInstance._getOptions().length > 0); - - var option = jQuery('<option></option>'); - suggestInstance.valueField.append(option); - assertTrue(suggestInstance._getOptions().is(option)); -}; -SuggestTest.prototype.testFilterSelected = function() { - var items = [this.uiHash.item, {id: 2, label: 'Test Label2'}], - suggestInstance = this.suggestCreate(); - - suggestInstance.valueField.append('<option value="2">Test Label2</option>'); - assertEquals(suggestInstance._filterSelected(items), [this.uiHash.item]); -}; -SuggestTest.prototype.testCreateOption = function() { - var suggestInstance = this.suggestCreate(); - - var option = suggestInstance._createOption(this.uiHash.item); - assertEquals(option.val(), "1"); - assertEquals(option.prop('selected'), true); - assertEquals(option.text(), "Test Label"); - assertNotUndefined(option.data('renderedOption')); -}; -SuggestTest.prototype.testAddOption = function() { - var selectTarget = jQuery('<div />'), - event = jQuery.Event('add'), - suggestInstance = this.suggestCreate(); - - event.target = selectTarget[0]; - suggestInstance._addOption(event, this.uiHash.item); - - var option = suggestInstance.valueField.find('option[value=' + this.uiHash.item.id + ']'); - assertTrue(option.length > 0); - assertTrue(option.data('selectTarget').is(selectTarget)); -}; -SuggestTest.prototype.testGetOption = function() { - var suggestInstance = this.suggestCreate(); - - assertFalse(suggestInstance._getOption(this.uiHash.item).length > 0); - - var option = jQuery('<option value="1">Test Label</option>'); - suggestInstance.valueField.append(option); - assertTrue(suggestInstance._getOption(this.uiHash.item).length > 0); - assertTrue(suggestInstance._getOption(option).length > 0); -}; -SuggestTest.prototype.testRemoveLastAdded = function() { - var suggestInstance = this.suggestCreate({multiselect: true}); - - suggestInstance._addOption({}, this.uiHash.item); - assertTrue(suggestInstance.valueField.find('option').length > 0); - suggestInstance._removeLastAdded(); - assertFalse(suggestInstance.valueField.find('option').length > 0); -}; -SuggestTest.prototype.testRemoveOption = function() { - var selectTarget = jQuery('<div />'), - event = jQuery.Event('select'), - suggestInstance = this.suggestCreate({multiselect: true}); - - selectTarget.addClass(suggestInstance.options.selectedClass); - event.target = selectTarget[0]; - - suggestInstance._addOption(event, this.uiHash.item); - assertTrue(suggestInstance.valueField.find('option').length > 0); - suggestInstance.removeOption(event, this.uiHash.item); - assertFalse(suggestInstance.valueField.find('option').length > 0); - assertFalse(selectTarget.hasClass(suggestInstance.options.selectedClass)); -}; -SuggestTest.prototype.testRenderOption = function() { - var suggestInstance = this.suggestCreate(), - choiceTmpl; - - suggestInstance.elementWrapper = jQuery('<div />').appendTo('body'); - - choiceTmpl = mageTemplate(suggestInstance.options.choiceTemplate, { - text: this.uiHash.item.label - }); - - var testOption = jQuery(choiceTmpl), - option = suggestInstance._renderOption(this.uiHash.item); - - assertTrue(option.next().is(suggestInstance.elementWrapper)); - assertEquals(jQuery('<div />').append(testOption).html(), jQuery('<div />').append(option).html()); -}; diff --git a/dev/tests/js/JsTestDriver/testsuite/mage/suggest/tree-suggest-test.js b/dev/tests/js/JsTestDriver/testsuite/mage/suggest/tree-suggest-test.js deleted file mode 100644 index 2a63c6953ef87c493357894a38a1643509dd5751..0000000000000000000000000000000000000000 --- a/dev/tests/js/JsTestDriver/testsuite/mage/suggest/tree-suggest-test.js +++ /dev/null @@ -1,71 +0,0 @@ -/** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. - */ - -TreeSuggestTest = TestCase('TreeSuggestTest'); -TreeSuggestTest.prototype.setUp = function() { - /*:DOC += <input name="test-suggest" id="tree-suggest" />*/ - this.suggestElement = jQuery('#tree-suggest'); -}; -TreeSuggestTest.prototype.tearDown = function() { - this.treeSuggestDestroy(); -}; -TreeSuggestTest.prototype.treeSuggestDestroy = function() { - if(this.suggestElement.data('treeSuggest')) { - this.suggestElement.treeSuggest('destroy'); - } -}; -TreeSuggestTest.prototype.treeSuggestCreate = function(options, element) { - return (element || this.suggestElement).treeSuggest(options || {} ).data('treeSuggest'); -}; -TreeSuggestTest.prototype.uiHash = { - item: { - id: 1, - label: 'Test Label' - } -}; -TreeSuggestTest.prototype.stub = function(instance, methodName, retVal) { - var d = $.Deferred(); - if(instance && instance[methodName]) { - instance[methodName] = function() { - d.resolve(arguments); - if(retVal) { - return retVal; - } - }; - } - return d.promise(); -}; - -TreeSuggestTest.prototype.testInit = function() { - var treeSuggestInstance = this.treeSuggestCreate(); - assertTrue(this.suggestElement.is(':mage-treeSuggest')); - assertEquals(treeSuggestInstance.widgetEventPrefix, 'suggest'); -}; - -TreeSuggestTest.prototype.testClose = function() { - var treeSuggestInstance = this.treeSuggestCreate(), - elementFocused = false; - treeSuggestInstance.element.on('focus', function() { - elementFocused = true; - }); - treeSuggestInstance.dropdown.text('test').show(); - treeSuggestInstance.close(); - assertEquals(treeSuggestInstance.dropdown.text(), ''); - assertTrue(treeSuggestInstance.dropdown.is(':hidden')); - - treeSuggestInstance.dropdown.text('test').show(); - treeSuggestInstance.close(jQuery.Event('select')); - assertEquals(treeSuggestInstance.dropdown.text(), ''); - assertTrue(treeSuggestInstance.dropdown.is(':hidden')); - - treeSuggestInstance.dropdown.text('test').show(); - treeSuggestInstance.close(jQuery.Event('select_tree_node')); - assertEquals(treeSuggestInstance.dropdown.text(), 'test'); - assertTrue(treeSuggestInstance.dropdown.is(':visible')); -}; -TreeSuggestTest.prototype.testFilterSelected = function() { - var treeSuggestInstance = this.treeSuggestCreate(); - assertEquals(treeSuggestInstance._filterSelected([this.uiHash.item], {_allShown: true}), [this.uiHash.item]); -}; diff --git a/dev/tests/js/JsTestDriver/testsuite/mage/tabs/index.html b/dev/tests/js/JsTestDriver/testsuite/mage/tabs/index.html deleted file mode 100644 index 30c29e38cc102f4bfe16d76c8c4b1bbf3f73b4c0..0000000000000000000000000000000000000000 --- a/dev/tests/js/JsTestDriver/testsuite/mage/tabs/index.html +++ /dev/null @@ -1,27 +0,0 @@ -<!-- -/** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. - */ ---> -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <title>Tabs Widget: QUnit Tests </title> - <base href="../../../"/> - <link type="text/css" rel="stylesheet" href="framework/qunit/qunit-1.14.0.css"/> - <script type="text/javascript" src="../../../pub/lib/jquery.js"></script> - <script type="text/javascript" src="../../../pub/lib/jquery/jquery-ui.js"></script> - <script type="text/javascript" src="framework/qunit/qunit-1.14.0.js"></script> - <script type="text/javascript" src="../../../pub/lib/mage/mage.js"></script> - <script type="text/javascript" src="../../../pub/lib/mage/tabs.js"></script> - <script type="text/javascript" src="../../../pub/lib/mage/collapsible.js"></script> - <script type="text/javascript" src="testsuite/mage/tabs/tabs.js"></script> -</head> -<body> -<div id="qunit"></div> -<div id="qunit-fixture"> -</div> -</body> -</html> diff --git a/dev/tests/js/JsTestDriver/testsuite/mage/tabs/tabs-test.js b/dev/tests/js/JsTestDriver/testsuite/mage/tabs/tabs-test.js deleted file mode 100644 index 7129357159f9f8f66022eaa96a39a616a7d5c743..0000000000000000000000000000000000000000 --- a/dev/tests/js/JsTestDriver/testsuite/mage/tabs/tabs-test.js +++ /dev/null @@ -1,203 +0,0 @@ -/** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. - */ -TabsTest = TestCase('TabsTest'); -TabsTest.prototype.testInit = function() { - /*:DOC += <div id="tabs"></div>*/ - var tabs = jQuery('#tabs').tabs(); - assertTrue(tabs.is(':mage-tabs')); -}; - -TabsTest.prototype.testCreate = function() { - /*:DOC += <div id="tabs"><ul> - <li> - <a href="#tab1_content" id="tab1"></a> - <div id="tab1_content"></div> - </li> - <li> - <a href="#tab2_content" id="tab2"></a> - <div id="tab2_content"></div> - </li> - </ul></div>*/ - var tabs = jQuery('#tabs').tabs({active: 'tab2'}); - assertEquals(tabs.tabs('option', 'active'), tabs.data("tabs").anchors.index(jQuery('#tab2'))); -}; - -TabsTest.prototype.testActiveAnchor = function() { - /*:DOC += <div id="tabs"><ul> - <li> - <a href="#tab1_content" id="tab1"></a> - <div id="tab1_content"></div> - </li> - <li> - <a href="#tab2_content" id="tab2"></a> - <div id="tab2_content"></div> - </li> - </ul></div>*/ - var tabs = jQuery('#tabs').tabs({active: 'tab2'}); - assertTrue(tabs.tabs('activeAnchor').is(tabs.data("tabs").anchors.eq(tabs.tabs('option', 'active')))); -}; - -TabsTest.prototype.testGetTabIndex = function() { - /*:DOC += <div id="tabs"><ul> - <li> - <a href="#tab1_content" id="tab1"></a> - <div id="tab1_content"></div> - </li> - <li> - <a href="#tab2_content" id="tab2"></a> - <div id="tab2_content"></div> - </li> - </ul></div>*/ - var tabs = jQuery('#tabs').tabs(); - assertEquals(0, tabs.data("tabs")._getTabIndex('tab1')); - assertEquals(1, tabs.data("tabs")._getTabIndex('tab2')); -}; - -TabsTest.prototype.testGetPanelForTab = function() { - /*:DOC += <div id="tabs"><ul> - <li> - <a href="#tab1_content" id="tab1"></a> - </li> - </ul></div> - <div id="destination"> - <div id="tab1_content"></div> - </div>*/ - var tabs = jQuery('#tabs').tabs({destination: '#destination'}); - assertTrue(jQuery(tabs.data("tabs")._getPanelForTab(jQuery('#tab1').closest('li'))).is('#tab1_content')); -}; - -TabsTest.prototype.testMovePanelsInDestination = function() { - /*:DOC += <div id="tabs"><ul> - <li> - <a href="#tab1_content" id="tab1"></a> - <div id="tab1_content"></div> - </li> - </ul></div> - <div id="destination"> - </div>*/ - var tabs = jQuery('#tabs').tabs({destination: '#destination'}); - var panel = jQuery('#tab1_content'); - tabs.append(panel); - assertTrue(panel.parents('#tabs').length > 0); - assertEquals(panel.parents(tabs.tabs('option', 'destination')).length, 0); - - tabs.data("tabs")._movePanelsInDestination(panel); - assertEquals(panel.parents('#tabs').length, 0); - assertTrue(panel.parents(tabs.tabs('option', 'destination')).length > 0); - - tabs.tabs('option', 'destination', null); - tabs.append(panel); - assertTrue(panel.parents('#tabs').length > 0); - - tabs.data("tabs")._movePanelsInDestination(panel); - assertTrue(panel.parents('#tabs').length > 0); -}; - -TabsTest.prototype.testAjaxLoad = function() { - /*:DOC += <div id="tabs"><ul> - <li> - <a href="www.site.com" id="tab1">Tab 1</a> - <div id="tab1_content"></div> - </li> - </ul></div> - */ - var tabs = jQuery('#tabs').tabs(), - ui = { - tab: jQuery('#tab1'), - panel: jQuery('#tab1_content') - }; - tabs.tabs('option', 'load')({}, ui); - assertEquals(jQuery('#tab1').attr('href'), '#tab1_content'); -}; - -TabsTest.prototype.testOnContentChange = function() { - /*:DOC += <div id="tabs"><ul> - <li> - <a href="www.site.com" id="tab1">Tab 1</a> - <div id="tab1_content"></div> - </li> - </ul></div> - */ - var eventMock = { - data: { - index: 0 - } - }, - tabs = jQuery('#tabs').tabs(); - - tabs.data("tabs")._onContentChange(eventMock); - assertTrue(jQuery('#tab1').hasClass('_changed')); -}; - -TabsTest.prototype.testOnFocus = function() { - /*:DOC += <div id="tabs"><ul> - <li> - <a href="#tab1_content" id="tab1"></a> - <div id="tab1_content"></div> - </li> - <li> - <a href="#tab2_content" id="tab2"></a> - <div id="tab2_content"><input /></div> - </li> - </ul></div> - */ - var eventMock = { - data: { - index: 1 - } - }, - tabs = jQuery('#tabs').tabs(); - - assertNotEquals(tabs.tabs('option', '_active'), eventMock.data.index); - - tabs.data("tabs")._onFocus(eventMock); - assertEquals(tabs.tabs('option', '_active'), eventMock.data.index); -}; - -TabsTest.prototype.testOnBeforeSubmit = function() { - /*:DOC += <div id="tabs"><ul> - <li> - <a href="#tab1_content" id="tab1"></a> - <div id="tab1_content"></div> - </li> - </ul></div> - */ - var tabs = jQuery('#tabs').tabs({active: 'tab1'}), - data= {}, - testData = { - action: { - args: { - tab: 'tab1' - } - } - }, - testDataTabArgument = { - action: { - args: { - testtab: 'tab1' - } - } - }, - tabPrefix = 'test-', - tabIdArgument = 'testtab'; - - tabs.data("tabs")._onBeforeSubmit({}, data); - assertEquals(data, testData); - data = {}; - - jQuery('#tab1').prop('id', 'test-tab1'); - tabs.tabs('option', 'tabsBlockPrefix', tabPrefix); - tabs.data("tabs")._onBeforeSubmit({}, data); - assertEquals(data, testData); - tabs.tabs('option', 'tabsBlockPrefix', null); - jQuery('#test-tab1').prop('id', 'tab1'); - data = {}; - - tabs.tabs('option', 'tabIdArgument', tabIdArgument); - tabs.data("tabs")._onBeforeSubmit({}, data); - assertEquals(data, testDataTabArgument); -}; - - diff --git a/dev/tests/js/JsTestDriver/testsuite/mage/tabs/tabs.js b/dev/tests/js/JsTestDriver/testsuite/mage/tabs/tabs.js deleted file mode 100644 index 582c55da344d35e5eff285466b29869024079c7a..0000000000000000000000000000000000000000 --- a/dev/tests/js/JsTestDriver/testsuite/mage/tabs/tabs.js +++ /dev/null @@ -1,124 +0,0 @@ -/** - * @category mage.js - * @package test - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. - */ - -/* - - */ -test( "Initialization", function() { - expect(2); - var tabs = $("<div></div>"); - tabs.tabs(); - ok( tabs.is(':mage-tabs'), "widget instantiated" ); - tabs.tabs('destroy'); - ok( !tabs.is(':mage-tabs'), "widget destroyed" ); -}); - -test( "Collapsible instantiation", function() { - expect(2); - var tabs = $("<div></div>"); - var title = $("<div></div>").attr("data-role","collapsible"); - title.appendTo(tabs); - tabs.tabs(); - ok( title.is(':mage-collapsible'), "widget instantiated" ); - tabs.tabs('destroy'); - ok( !title.is(':mage-collapsible'), "widget destroyed" ); -}); - -test( "Tabs behavior - closing others tabs when one gets activated", function() { - expect(4); - var tabs = $('<div></div>'); - var title1 = $('<div data-role="collapsible"></div>').appendTo(tabs); - var content1 = $('<div data-role="content"></div>').appendTo(tabs); - var title2 = $('<div data-role="collapsible"></div>').appendTo(tabs); - var content2 = $('<div data-role="content"></div>').appendTo(tabs); - tabs.appendTo("body"); - tabs.tabs(); - ok( content1.is(':visible'), "content visible" ); - ok( content2.is(':hidden'), "content hidden" ); - title2.trigger('click'); - ok( content1.is(':hidden'), "content hidden" ); - ok( content2.is(':visible'), "content visible" ); - tabs.tabs('destroy'); -}); - -test( "Testing enable,disable,activate,deactivate options", function() { - expect(6); - var tabs = $('<div></div>'); - var title = $('<div data-role="collapsible"></div>').appendTo(tabs); - var content = $('<div data-role="content"></div>').appendTo(tabs); - tabs.appendTo("body"); - tabs.tabs(); - ok( content.is(':visible'), "content visible" ); - tabs.tabs("deactivate",0); - ok( content.is(':hidden'), "content hidden" ); - tabs.tabs("activate",0); - ok( content.is(':visible'), "content visible" ); - tabs.tabs("disable",0); - ok( content.is(':hidden'), "content hidden" ); - title.trigger("click"); - ok( content.is(':hidden'), "content hidden" ); - tabs.tabs("enable",0); - title.trigger("click"); - ok( content.is(':visible'), "content visible" ); - tabs.tabs('destroy'); -}); - -asyncTest( "Keyboard support for tabs view", function() { - - expect( 5 ); - var tabs = $('<div></div>'); - var title1 = $('<div data-role="collapsible"></div>').appendTo(tabs); - var content1 = $('<div data-role="content"></div>').appendTo(tabs); - var title2 = $('<div data-role="collapsible"></div>').appendTo(tabs); - var content2 = $('<div data-role="content"></div>').appendTo(tabs); - tabs.appendTo("body"); - tabs.tabs(); - - title1.on("focus",function(ev){ - ok(content1.is(':visible'), "Content is expanded"); - title1.trigger($.Event( 'keydown', { keyCode: $.ui.keyCode.RIGHT } )); - ok(content2.is(':visible'), "Content is expanded"); - ok(content1.is(':hidden'), "Content is collapsed"); - title2.trigger($.Event( 'keydown', { keyCode: $.ui.keyCode.LEFT } )); - ok(content1.is(':visible'), "Content is expanded"); - ok(content2.is(':hidden'), "Content is collapsed"); - tabs.tabs('destroy'); - start(); - } ); - - setTimeout(function(){ - title1.focus(); - },10); -}); - -asyncTest( "Keyboard support for accordion view", function() { - - expect( 5 ); - var tabs = $('<div></div>'); - var title1 = $('<div data-role="collapsible"></div>').appendTo(tabs); - var content1 = $('<div data-role="content"></div>').appendTo(tabs); - var title2 = $('<div data-role="collapsible"></div>').appendTo(tabs); - var content2 = $('<div data-role="content"></div>').appendTo(tabs); - tabs.appendTo("body"); - tabs.tabs({openOnFocus:false}); - - title1.on("focus",function(ev){ - ok(content1.is(':visible'), "Content is expanded"); - title1.trigger($.Event( 'keydown', { keyCode: $.ui.keyCode.RIGHT } )); - ok(content1.is(':visible'), "Content is expanded"); - ok(content2.is(':hidden'), "Content is collapsed"); - title2.trigger($.Event( 'keydown', { keyCode: $.ui.keyCode.ENTER } )); - ok(content2.is(':visible'), "Content is expanded"); - ok(content1.is(':hidden'), "Content is collapsed"); - tabs.tabs('destroy'); - start(); - } ); - - setTimeout(function(){ - title1.focus(); - },10); -}); diff --git a/dev/tests/js/JsTestDriver/testsuite/mage/translate/translate-test.js b/dev/tests/js/JsTestDriver/testsuite/mage/translate/translate-test.js deleted file mode 100644 index a9bbc7fb10d2d766403f0a65f97720816099fc33..0000000000000000000000000000000000000000 --- a/dev/tests/js/JsTestDriver/testsuite/mage/translate/translate-test.js +++ /dev/null @@ -1,47 +0,0 @@ -/** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. - */ -TranslateTest = TestCase('TranslateTest'); -TranslateTest.prototype.testTranslateExist = function() { - assertNotUndefined(jQuery.mage.translate); -}; -TranslateTest.prototype.testTranslationParametersOneArgument = function() { - jQuery.mage.translate.add('Hello World!'); - assertEquals( - 'Hello World!', - jQuery.mage.translate.translate('Hello World!')); -}; -TranslateTest.prototype.testTranslationParametersArray = function() { - jQuery.mage.translate.add(['Hello World!', 'Bonjour tout le monde!']); - assertEquals( - 'Hello World!', - jQuery.mage.translate.translate('Hello World!')); -}; -TranslateTest.prototype.testTranslationParametersObject = function() { - var translation = {'Hello World!': 'Bonjour tout le monde!'}; - jQuery.mage.translate.add(translation); - assertEquals( - translation['Hello World!'], - jQuery.mage.translate.translate('Hello World!')); - - translation = { - 'Hello World!': 'Hallo Welt!', - 'Some text with symbols!-+"%#*': 'Ein Text mit Symbolen!-+"%#*' - }; - jQuery.mage.translate.add(translation); - jQuery.each(translation, function(key) { - assertEquals(translation[key], jQuery.mage.translate.translate(key)); - }); -}; -TranslateTest.prototype.testTranslationParametersTwoArguments = function() { - jQuery.mage.translate.add('Hello World!', 'Bonjour tout le monde!'); - assertEquals( - 'Bonjour tout le monde!', - jQuery.mage.translate.translate('Hello World!')); -}; -TranslateTest.prototype.testTranslationAlias = function() { - var translation = {'Hello World!': 'Bonjour tout le monde!'}; - jQuery.mage.translate.add(translation); - assertEquals(translation['Hello World!'], jQuery.mage.__('Hello World!')); -}; diff --git a/dev/tests/js/JsTestDriver/testsuite/mage/translate_inline/translate-inline-test.js b/dev/tests/js/JsTestDriver/testsuite/mage/translate_inline/translate-inline-test.js deleted file mode 100644 index 18a117f1913b11d32b965f6071e9ea39d19a5a9d..0000000000000000000000000000000000000000 --- a/dev/tests/js/JsTestDriver/testsuite/mage/translate_inline/translate-inline-test.js +++ /dev/null @@ -1,123 +0,0 @@ -/** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. - */ -TranslateInlineTest = TestCase('TranslateInlineTest'); -TranslateInlineTest.prototype.testInit = function() { - /*:DOC += <script id="translate-form-template" type="text/x-magento-template"> - </script> - <div data-role="translate-dialog"></div> - */ - var translateInline = jQuery('[data-role="translate-dialog"]').translateInline(); - assertTrue(translateInline.is(':mage-translateInline')); - translateInline.translateInline('destroy'); -}; -TranslateInlineTest.prototype.testDialogOpenOnEdit = function() { - /*:DOC += <script id="translate-form-template" type="text/x-magento-template"> - </script> - <div data-role="translate-dialog"></div> - */ - var options= { - dialog: { - id: 'dialog-id' - } - }; - var translateInline = jQuery('[data-role="translate-dialog"]').translateInline(options), - isDialogHiddenOnInit = translateInline.is(':hidden'); - translateInline.trigger('edit.editTrigger'); - var dialogVisibleAfterTriggerEdit = translateInline.is(':visible'); - assertTrue(isDialogHiddenOnInit); - assertTrue(dialogVisibleAfterTriggerEdit); - translateInline.translateInline('destroy'); -}; -TranslateInlineTest.prototype.testTranslationFormTemplate = function() { - /*:DOC += <script id="translate-form-template" type="text/x-magento-template"> - <form id="<%= data.id %>"><%= data.newTemplateVariable %></form> - </script> - <div data-role="translate-dialog"></div> - */ - var options = { - translateForm: { - data:{ - id: 'translate-form-id', - newTemplateVariable: 'New Template Variable' - } - } - }, - translateInline = jQuery('[data-role="translate-dialog"]').translateInline(options); - translateInline.trigger('edit.editTrigger'); - var translateForm = jQuery('#' + options.translateForm.data.id); - assertTrue(translateForm.size() > 0); - assertEquals(translateForm.text(), options.translateForm.data.newTemplateVariable); - translateInline.translateInline('destroy'); -}; -// @TODO Need to be fixed to avoid errors on the bamboo server in context of MAGETWO-5085 ticket -/*TranslateInlineTest.prototype._testTranslateFormSubmit = function() { - FORM_KEY = 'form_key'; - var options = { - ajaxUrl: 'www.test.com', - area: 'test', - translateForm: { - template:'<form id="<%= data.id %>"><input name="test" value="test" /></form>', - data:{ - id: 'translate-form-id' - } - }, - dialog: { - id: 'dialog-id', - buttons : [{ - 'class': 'submit-button' - }] - } - }, - translateInline = jQuery(document).translateInline(options), - submit = jQuery('.ui-dialog-buttonset .submit-button'), - ajaxParametersCorrect = false; - - translateInline.trigger('edit.editTrigger'); - var parameters = jQuery.param({area: options.area}) + - '&' + jQuery('#' + options.translateForm.data.id).serialize(), - dialog = jQuery('#' + options.dialog.id), - dialogVisibleOnAjaxSend = false, - dialogHiddenAfterAjaxComplete = false; - jQuery(document) - .on('ajaxSend', function(e, jqXHR, settings){ - jqXHR.abort(); - dialogVisibleOnAjaxSend = dialog.is(':visible'); - ajaxParametersCorrect = settings.data.indexOf(parameters) >= 0; - jQuery(this).trigger('ajaxComplete'); - }); - submit.trigger('click'); - assertEquals(true, dialogVisibleOnAjaxSend); - assertEquals(true, ajaxParametersCorrect); - assertEquals(true, dialog.is(':hidden')); - translateInline.translateInline('destroy'); -};*/ -TranslateInlineTest.prototype.testDestroy = function() { - /*:DOC += <script id="translate-form-template" type="text/x-magento-template"> - <form id="<%= data.id %>"><%= data.newTemplateVariable %></form> - </script> - <div data-role="translate-dialog"></div> - <img id="edit-trigger-id"> - */ - var options = { - translateForm: { - data:{ - id: 'translate-form-id', - newTemplateVariable: '' - } - } - }, - translateInline = jQuery('[data-role="translate-dialog"]').translateInline(options), - editTrigger = jQuery('#edit-trigger-id').editTrigger(), - editTriggerCreated = editTrigger.size() && jQuery('#edit-trigger-id').is(':mage-editTrigger'), - editTriggerEventIsBound = false; - - assertTrue(translateInline.is(':mage-translateInline')); - assertTrue(editTriggerCreated); - translateInline.on('edit.editTrigger', function(){editTriggerEventIsBound = true;}); - translateInline.translateInline('destroy'); - translateInline.trigger('edit.editTrigger'); - assertFalse(translateInline.is(':mage-translateInline')); - assertFalse(editTriggerEventIsBound); -}; diff --git a/dev/tests/js/JsTestDriver/testsuite/mage/validation/index.html b/dev/tests/js/JsTestDriver/testsuite/mage/validation/index.html deleted file mode 100644 index 00661de6d8153a6780b3282a7198129298d3aa93..0000000000000000000000000000000000000000 --- a/dev/tests/js/JsTestDriver/testsuite/mage/validation/index.html +++ /dev/null @@ -1,35 +0,0 @@ -<!-- -/** - * @category mage.validation - * @package test - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. - */ ---> - -<!DOCTYPE html> -<html> -<head> - <title>Validation</title> - <base href="../../../"/> - <link type="text/css" rel="stylesheet" href="framework/qunit/qunit-1.14.0.css"/> - <script type="text/javascript" src="framework/qunit/qunit-1.14.0.js"></script> - <script src="../../../lib/web/jquery.js"></script> - - <script src="../../../lib/web/jquery/jquery-ui.js"></script> - <script type="text/javascript" src="../../../lib/web/mage/mage.js"></script> - <script type="text/javascript" src="../../../lib/web/mage/translate.js"></script> - <script src="../../../lib/web/jquery/jquery.validate.js"></script> - <script type="text/javascript" src="../../../lib/web/mage/validation.js"></script> - <script type="text/javascript" src="../../../lib/web/mage/validation/validation.js"></script> - <script type="text/javascript" src="../../../lib/web/mage/bootstrap.js"></script> - <script type="text/javascript" src="testsuite/mage/validation/test-validation.js"></script> - - -</head> -<body> -<div id="qunit"></div> -<div id="qunit-fixture"> -</div> -</body> -</html> diff --git a/dev/tests/js/JsTestDriver/testsuite/mage/validation/test-validation.js b/dev/tests/js/JsTestDriver/testsuite/mage/validation/test-validation.js deleted file mode 100644 index 602ba4b8d3e607841244e107d48f05d1468a3d3c..0000000000000000000000000000000000000000 --- a/dev/tests/js/JsTestDriver/testsuite/mage/validation/test-validation.js +++ /dev/null @@ -1,611 +0,0 @@ -/** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. - */ -test( "testValidateNoHtmlTags", function() { - expect(4); - equal($.validator.methods['validate-no-html-tags'].call(this, ""),true); - equal($.validator.methods['validate-no-html-tags'].call(this, null),true); - equal($.validator.methods['validate-no-html-tags'].call(this, "abc"),true); - equal($.validator.methods['validate-no-html-tags'].call(this, "<div>abc</div>"),false); - -}); - -test( "testAllowContainerClassName", function() { - expect(4); - var radio = $('<input type="radio" class="change-container-classname"/>'); - radio.appendTo("#qunit-fixture"); - equal($.validator.methods['allow-container-className'].call(this, radio[0]),true); - var checkbox = $('<input type="checkbox" class="change-container-classname"/>'); - equal($.validator.methods['allow-container-className'].call(this, checkbox[0]),true); - var radio2 = $('<input type="radio"/>'); - equal($.validator.methods['allow-container-className'].call(this, radio2[0]),false); - var checkbox2 = $('<input type="checkbox"/>'); - equal($.validator.methods['allow-container-className'].call(this, checkbox2[0]),false); -}); - -test( "testValidateSelect", function() { - expect(5); - equal($.validator.methods['validate-select'].call(this, ""),false); - equal($.validator.methods['validate-select'].call(this, "none"),false); - equal($.validator.methods['validate-select'].call(this, null),false); - equal($.validator.methods['validate-select'].call(this, undefined),false); - equal($.validator.methods['validate-select'].call(this, "abc"),true); -}); - -test( "testValidateNotEmpty", function() { - expect(5); - ok(!$.validator.methods['validate-no-empty'].call(this, "")); - ok(!$.validator.methods['validate-no-empty'].call(this, null)); - ok(!$.validator.methods['validate-no-empty'].call(this, undefined)); - ok(!$.validator.methods['validate-no-empty'].call(this, " ")); - ok($.validator.methods['validate-no-empty'].call(this, "test")); -}); - -test( "testValidateStreet", function() { - expect(9); - equal($.validator.methods['validate-alphanum-with-spaces'].call(this, ""),true); - equal($.validator.methods['validate-alphanum-with-spaces'].call(this, null),true); - equal($.validator.methods['validate-alphanum-with-spaces'].call(this, undefined),true); - equal($.validator.methods['validate-alphanum-with-spaces'].call(this, " "),true); - equal($.validator.methods['validate-alphanum-with-spaces'].call(this, "abc "),true); - equal($.validator.methods['validate-alphanum-with-spaces'].call(this, " 123 "),true); - equal($.validator.methods['validate-alphanum-with-spaces'].call(this, " abc123 "),true); - equal($.validator.methods['validate-alphanum-with-spaces'].call(this, " !@# "),false); - equal($.validator.methods['validate-alphanum-with-spaces'].call(this, " abc.123 "),false); -}); - -test( "testValidatePhoneStrict", function() { - expect(9); - equal($.validator.methods['validate-phoneStrict'].call(this, ""),true); - equal($.validator.methods['validate-phoneStrict'].call(this, null),true); - equal($.validator.methods['validate-phoneStrict'].call(this, undefined),true); - equal($.validator.methods['validate-phoneStrict'].call(this, " "),false); - equal($.validator.methods['validate-phoneStrict'].call(this, "5121231234"),false); - equal($.validator.methods['validate-phoneStrict'].call(this, "512.123.1234"),false); - equal($.validator.methods['validate-phoneStrict'].call(this, "512-123-1234"),true); - equal($.validator.methods['validate-phoneStrict'].call(this, "(512)123-1234"),true); - equal($.validator.methods['validate-phoneStrict'].call(this, "(512) 123-1234"),true); -}); - -test( "testValidatePhoneLax", function() { - expect(11); - equal($.validator.methods['validate-phoneLax'].call(this, ""),true); - equal($.validator.methods['validate-phoneLax'].call(this, null),true); - equal($.validator.methods['validate-phoneLax'].call(this, undefined),true); - equal($.validator.methods['validate-phoneLax'].call(this, " "),false); - equal($.validator.methods['validate-phoneLax'].call(this, "5121231234"),true); - equal($.validator.methods['validate-phoneLax'].call(this, "512.123.1234"),true); - equal($.validator.methods['validate-phoneLax'].call(this, "512-123-1234"),true); - equal($.validator.methods['validate-phoneLax'].call(this, "(512)123-1234"),true); - equal($.validator.methods['validate-phoneLax'].call(this, "(512) 123-1234"),true); - equal($.validator.methods['validate-phoneLax'].call(this, "(512)1231234"),true); - equal($.validator.methods['validate-phoneLax'].call(this, "(512)_123_1234"),false); -}); - -test( "testValidateFax", function() { - expect(9); - equal($.validator.methods['validate-fax'].call(this, ""),true); - equal($.validator.methods['validate-fax'].call(this, null),true); - equal($.validator.methods['validate-fax'].call(this, undefined),true); - equal($.validator.methods['validate-fax'].call(this, " "),false); - equal($.validator.methods['validate-fax'].call(this, "5121231234"),false); - equal($.validator.methods['validate-fax'].call(this, "512.123.1234"),false); - equal($.validator.methods['validate-fax'].call(this, "512-123-1234"),true); - equal($.validator.methods['validate-fax'].call(this, "(512)123-1234"),true); - equal($.validator.methods['validate-fax'].call(this, "(512) 123-1234"),true); -}); - -test( "testValidateEmail", function() { - expect(11); - equal($.validator.methods['validate-email'].call(this, ""),true); - equal($.validator.methods['validate-email'].call(this, null),true); - equal($.validator.methods['validate-email'].call(this, undefined),true); - equal($.validator.methods['validate-email'].call(this, " "),false); - equal($.validator.methods['validate-email'].call(this, "123@123.com"),true); - equal($.validator.methods['validate-email'].call(this, "abc@124.en"),true); - equal($.validator.methods['validate-email'].call(this, "abc@abc.commmmm"),true); - equal($.validator.methods['validate-email'].call(this, "abc.abc.abc@abc.commmmm"),true); - equal($.validator.methods['validate-email'].call(this, "abc.abc-abc@abc.commmmm"),true); - equal($.validator.methods['validate-email'].call(this, "abc.abc_abc@abc.commmmm"),true); - equal($.validator.methods['validate-email'].call(this, "abc.abc_abc@abc"),false); -}); - -test( "testValidateEmailSender", function() { - expect(10); - equal($.validator.methods['validate-emailSender'].call(this, ""),true); - equal($.validator.methods['validate-emailSender'].call(null),true); - equal($.validator.methods['validate-emailSender'].call(undefined),true); - equal($.validator.methods['validate-emailSender'].call(" "),true); - equal($.validator.methods['validate-emailSender'].call("123@123.com"),true); - equal($.validator.methods['validate-emailSender'].call("abc@124.en"),true); - equal($.validator.methods['validate-emailSender'].call("abc@abc.commmmm"),true); - equal($.validator.methods['validate-emailSender'].call("abc.abc.abc@abc.commmmm"),true); - equal($.validator.methods['validate-emailSender'].call("abc.abc-abc@abc.commmmm"),true); - equal($.validator.methods['validate-emailSender'].call("abc.abc_abc@abc.commmmm"),true); -}); - -test( "testValidatePassword", function() { - expect(9); - equal($.validator.methods['validate-password'].call(this, ""),true); - equal($.validator.methods['validate-password'].call(this, null),false); - equal($.validator.methods['validate-password'].call(this, undefined),false); - equal($.validator.methods['validate-password'].call(this, " "),true); - equal($.validator.methods['validate-password'].call(this, "123@123.com"),true); - equal($.validator.methods['validate-password'].call(this, "abc"),false); - equal($.validator.methods['validate-password'].call(this, "abc "),false); - equal($.validator.methods['validate-password'].call(this, " abc "),false); - equal($.validator.methods['validate-password'].call(this, "dddd"),false); -}); - -test( "testValidateAdminPassword", function() { - expect(9); - equal(true, $.validator.methods['validate-admin-password'].call(this, "")); - equal(false, $.validator.methods['validate-admin-password'].call(this, null)); - equal(false, $.validator.methods['validate-admin-password'].call(this, undefined)); - equal(true, $.validator.methods['validate-admin-password'].call(this, " ")); - equal(true, $.validator.methods['validate-admin-password'].call(this, "123@123.com")); - equal(false, $.validator.methods['validate-admin-password'].call(this, "abc")); - equal(false, $.validator.methods['validate-admin-password'].call(this, "abc ")); - equal(false, $.validator.methods['validate-admin-password'].call(this, " abc ")); - equal(false, $.validator.methods['validate-admin-password'].call(this, "dddd")); -}); - -test( "testValidateUrl", function() { - expect(8); - equal(true, $.validator.methods['validate-url'].call(this, "")); - equal(true, $.validator.methods['validate-url'].call(this, null)); - equal(true, $.validator.methods['validate-url'].call(this, undefined)); - equal(false, $.validator.methods['validate-url'].call(this, " ")); - equal(true, $.validator.methods['validate-url'].call(this, "http://www.google.com")); - equal(true, $.validator.methods['validate-url'].call(this, "http://127.0.0.1:8080/index.php")); - equal(true, $.validator.methods['validate-url'].call(this, "http://app-spot.com/index.php")); - equal(true, $.validator.methods['validate-url'].call(this, "http://app-spot_space.com/index.php")); -}); - -test( "testValidateCleanUrl", function() { - expect(8); - equal(true, $.validator.methods['validate-clean-url'].call(this, "")); - equal(true, $.validator.methods['validate-clean-url'].call(this, null)); - equal(true, $.validator.methods['validate-clean-url'].call(this, undefined)); - equal(false, $.validator.methods['validate-clean-url'].call(this, " ")); - equal(true, $.validator.methods['validate-clean-url'].call(this, "http://www.google.com")); - equal(false, $.validator.methods['validate-clean-url'].call(this, "http://127.0.0.1:8080/index.php")); - equal(false, $.validator.methods['validate-clean-url'].call(this, "http://127.0.0.1:8080")); - equal(false, $.validator.methods['validate-clean-url'].call(this, "http://127.0.0.1")); -}); - -test( "testValidateXmlIdentifier", function() { - expect(8); - equal(true, $.validator.methods['validate-xml-identifier'].call(this, "")); - equal(true, $.validator.methods['validate-xml-identifier'].call(this, null)); - equal(true, $.validator.methods['validate-xml-identifier'].call(this, undefined)); - equal(false, $.validator.methods['validate-xml-identifier'].call(this, " ")); - equal(true, $.validator.methods['validate-xml-identifier'].call(this, "abc")); - equal(true, $.validator.methods['validate-xml-identifier'].call(this, "abc_123")); - equal(true, $.validator.methods['validate-xml-identifier'].call(this, "abc-123")); - equal(false, $.validator.methods['validate-xml-identifier'].call(this, "123-abc")); -}); - -test( "testValidateSsn", function() { - expect(8); - equal(true, $.validator.methods['validate-ssn'].call(this, "")); - equal(true, $.validator.methods['validate-ssn'].call(this, null)); - equal(true, $.validator.methods['validate-ssn'].call(this, undefined)); - equal(false, $.validator.methods['validate-ssn'].call(this, " ")); - equal(false, $.validator.methods['validate-ssn'].call(this, "abc")); - equal(true, $.validator.methods['validate-ssn'].call(this, "123-13-1234")); - equal(true, $.validator.methods['validate-ssn'].call(this, "012-12-1234")); - equal(false, $.validator.methods['validate-ssn'].call(this, "23-12-1234")); -}); - -test( "testValidateZip", function() { - expect(8); - equal(true, $.validator.methods['validate-zip-us'].call(this, "")); - equal(true, $.validator.methods['validate-zip-us'].call(this, null)); - equal(true, $.validator.methods['validate-zip-us'].call(this, undefined)); - equal(false, $.validator.methods['validate-zip-us'].call(this, " ")); - equal(true, $.validator.methods['validate-zip-us'].call(this, "12345-1234")); - equal(true, $.validator.methods['validate-zip-us'].call(this, "02345")); - equal(false, $.validator.methods['validate-zip-us'].call(this, "1234")); - equal(false, $.validator.methods['validate-zip-us'].call(this, "1234-1234")); -}); - -test( "testValidateDateAu", function() { - expect(8); - equal(true, $.validator.methods['validate-date-au'].call(this, "")); - equal(true, $.validator.methods['validate-date-au'].call(this, null)); - equal(true, $.validator.methods['validate-date-au'].call(this, undefined)); - equal(false, $.validator.methods['validate-date-au'].call(this, " ")); - equal(true, $.validator.methods['validate-date-au'].call(this, "01/01/2012")); - equal(true, $.validator.methods['validate-date-au'].call(this, "30/01/2012")); - equal(false, $.validator.methods['validate-date-au'].call(this, "01/30/2012")); - equal(false, $.validator.methods['validate-date-au'].call(this, "1/1/2012")); -}); - -test( "testValidateCurrencyDollar", function() { - expect(8); - equal(true, $.validator.methods['validate-currency-dollar'].call(this, "")); - equal(true, $.validator.methods['validate-currency-dollar'].call(this, null)); - equal(true, $.validator.methods['validate-currency-dollar'].call(this, undefined)); - equal(false, $.validator.methods['validate-currency-dollar'].call(this, " ")); - equal(true, $.validator.methods['validate-currency-dollar'].call(this, "$123")); - equal(true, $.validator.methods['validate-currency-dollar'].call(this, "$1,123.00")); - equal(true, $.validator.methods['validate-currency-dollar'].call(this, "$1234")); - equal(false, $.validator.methods['validate-currency-dollar'].call(this, "$1234.1234")); -}); - -test( "testValidateNotNegativeNumber", function() { - expect(11); - equal(true, $.validator.methods['validate-not-negative-number'].call(this, "")); - equal(true, $.validator.methods['validate-not-negative-number'].call(this, null)); - equal(true, $.validator.methods['validate-not-negative-number'].call(this, undefined)); - equal(false, $.validator.methods['validate-not-negative-number'].call(this, " ")); - equal(true, $.validator.methods['validate-not-negative-number'].call(this, "0")); - equal(true, $.validator.methods['validate-not-negative-number'].call(this, "1")); - equal(true, $.validator.methods['validate-not-negative-number'].call(this, "1234")); - equal(true, $.validator.methods['validate-not-negative-number'].call(this, "1,234.1234")); - equal(false, $.validator.methods['validate-not-negative-number'].call(this, "-1")); - equal(false, $.validator.methods['validate-not-negative-number'].call(this, "-1e")); - equal(false, $.validator.methods['validate-not-negative-number'].call(this, "-1,234.1234")); -}); - -test( "testValidateGreaterThanZero", function() { - expect(11); - equal(true, $.validator.methods['validate-greater-than-zero'].call(this, "")); - equal(true, $.validator.methods['validate-greater-than-zero'].call(this, null)); - equal(true, $.validator.methods['validate-greater-than-zero'].call(this, undefined)); - equal(false, $.validator.methods['validate-greater-than-zero'].call(this, " ")); - equal(false, $.validator.methods['validate-greater-than-zero'].call(this, "0")); - equal(true, $.validator.methods['validate-greater-than-zero'].call(this, "1")); - equal(true, $.validator.methods['validate-greater-than-zero'].call(this, "1234")); - equal(true, $.validator.methods['validate-greater-than-zero'].call(this, "1,234.1234")); - equal(false, $.validator.methods['validate-greater-than-zero'].call(this, "-1")); - equal(false, $.validator.methods['validate-greater-than-zero'].call(this, "-1e")); - equal(false, $.validator.methods['validate-greater-than-zero'].call(this, "-1,234.1234")); -}); - -test( "testValidateCssLength", function() { - expect(11); - equal(true, $.validator.methods['validate-css-length'].call(this, "")); - equal(true, $.validator.methods['validate-css-length'].call(this, null)); - equal(true, $.validator.methods['validate-css-length'].call(this, undefined)); - equal(false, $.validator.methods['validate-css-length'].call(this, " ")); - equal(false, $.validator.methods['validate-css-length'].call(this, "0")); - equal(true, $.validator.methods['validate-css-length'].call(this, "1")); - equal(true, $.validator.methods['validate-css-length'].call(this, "1234")); - equal(true, $.validator.methods['validate-css-length'].call(this, "1,234.1234")); - equal(false, $.validator.methods['validate-css-length'].call(this, "-1")); - equal(false, $.validator.methods['validate-css-length'].call(this, "-1e")); - equal(false, $.validator.methods['validate-css-length'].call(this, "-1,234.1234")); -}); - -test( "testValidateData", function() { - expect(9); - equal(true, $.validator.methods['validate-data'].call(this, "")); - equal(true, $.validator.methods['validate-data'].call(this, null)); - equal(true, $.validator.methods['validate-data'].call(this, undefined)); - equal(false, $.validator.methods['validate-data'].call(this, " ")); - equal(false, $.validator.methods['validate-data'].call(this, "123abc")); - equal(true, $.validator.methods['validate-data'].call(this, "abc")); - equal(false, $.validator.methods['validate-data'].call(this, " abc")); - equal(true, $.validator.methods['validate-data'].call(this, "abc123")); - equal(false, $.validator.methods['validate-data'].call(this, "abc-123")); -}); - - -test( "testValidateOneRequiredByName", function() { - expect(4); - var radio = $('<input type="radio" name="radio"/>'); - radio.appendTo("#qunit-fixture"); - ok(!$.validator.methods['validate-one-required-by-name'].call(this, - null, radio[0])); - var radio2 = $('<input type="radio" name="radio" checked/>'); - radio2.appendTo("#qunit-fixture"); - ok($.validator.methods['validate-one-required-by-name'].call(this, - null, radio2[0])); - - var checkbox = $('<input type="checkbox" name="checkbox"/>'); - checkbox.appendTo("#qunit-fixture"); - ok(!$.validator.methods['validate-one-required-by-name'].call(this, - null, checkbox[0])); - var checkbox2 = $('<input type="checkbox" name="checkbox" checked/>'); - checkbox2.appendTo("#qunit-fixture"); - ok($.validator.methods['validate-one-required-by-name'].call(this, - null, checkbox2[0])); -}); - -test( "testLessThanEqualsTo", function() { - expect(5); - var elm1 = $('<input type="text" value=6 id="element1" />'); - var elm2 = $('<input type="text" value=5 id="element2" />'); - ok(!$.validator.methods['less-than-equals-to'].call(this, elm1[0].value, - elm1, elm2)); - elm1[0].value = 4; - ok($.validator.methods['less-than-equals-to'].call(this, elm1[0].value, - elm1, elm2)); - - var elm3 = $('<input type="text" id="element3" />'); - var elm4= $('<input type="text" value=5 id="element4" />'); - ok($.validator.methods['less-than-equals-to'].call(this, elm3[0].value, - elm3, elm4)); - - var elm5 = $('<input type="text" id="element6" />'); - var elm6= $('<input type="text" value=6 id="element5" />'); - ok($.validator.methods['less-than-equals-to'].call(this, elm5[0].value, - elm5, elm6)); - - var elm7 = $('<input type="text" value=20 id="element7" />'); - var elm8= $('<input type="text" value=100 id="element8" />'); - ok($.validator.methods['less-than-equals-to'].call(this, elm7[0].value, - elm7, elm8)); -}); - -test( "testGreaterThanEqualsTo", function() { - expect(5); - - var elm1 = $('<input type="text" value=6 id="element1" />'); - var elm2 = $('<input type="text" value=7 id="element2" />'); - ok(!$.validator.methods['greater-than-equals-to'].call(this, elm1[0].value, - elm1, elm2)); - elm1[0].value = 9; - ok($.validator.methods['greater-than-equals-to'].call(this, elm1[0].value, - elm1, elm2)); - - var elm3 = $('<input type="text" id="element3" />'); - var elm4= $('<input type="text" value=5 id="element4" />'); - ok($.validator.methods['greater-than-equals-to'].call(this, elm3[0].value, - elm3, elm4)); - - var elm5 = $('<input type="text" id="element6" />'); - var elm6= $('<input type="text" value=6 id="element5" />'); - ok($.validator.methods['greater-than-equals-to'].call(this, elm5[0].value, - elm5, elm6)); - - var elm7 = $('<input type="text" value=100 id="element7" />'); - var elm8= $('<input type="text" value=20 id="element8" />'); - ok($.validator.methods['greater-than-equals-to'].call(this, elm7[0].value, - elm7, elm8)); -}); - -test( "testValidateGroupedQty", function() { - expect(5); - var div1 = $('<div id="div1"/>'); - $('<input type="text"/>').attr("data-validate","{'validate-grouped-qty':'#super-product-table'}") - .appendTo(div1); - $('<input type="text"/>').attr("data-validate","{'validate-grouped-qty':'#super-product-table'}") - .appendTo(div1); - $('<input type="text"/>').appendTo(div1); - - ok(!$.validator.methods['validate-grouped-qty'].call(this, null, null, div1[0])); - - var div2 = $('<div id="div2"/>'); - $('<input type="text"/>').attr("data-validate","{'validate-grouped-qty':'#super-product-table'}") - .appendTo(div2); - $('<input type="text" value="a"/>').attr("data-validate","{'validate-grouped-qty':'#super-product-table'}") - .appendTo(div2); - $('<input type="text"/>').appendTo(div2); - ok(!$.validator.methods['validate-grouped-qty'].call(this, null, null, div2[0])); - - var div3 = $('<div id="div3"/>'); - $('<input type="text"/>').attr("data-validate","{'validate-grouped-qty':'#super-product-table'}") - .appendTo(div3); - $('<input type="text" value="-6"/>').attr("data-validate","{'validate-grouped-qty':'#super-product-table'}") - .appendTo(div3); - $('<input type="text"/>').appendTo(div3); - ok(!$.validator.methods['validate-grouped-qty'].call(this, null, null, div3[0])); - - var div4 = $('<div id="div4"/>'); - $('<input type="text"/>').attr("data-validate","{'validate-grouped-qty':'#super-product-table'}") - .appendTo(div4); - $('<input type="text" value="6"/>').attr("data-validate","{'validate-grouped-qty':'#super-product-table'}") - .appendTo(div4); - $('<input type="text"/>').appendTo(div4); - ok($.validator.methods['validate-grouped-qty'].call(this, null, null, div4[0])); - - var div5 = $('<div id="div5"/>'); - $('<input type="text" value=""/>').attr("data-validate","{'validate-grouped-qty':'#super-product-table'}") - .appendTo(div5); - $('<input type="text" value="6"/>').attr("data-validate","{'validate-grouped-qty':'#super-product-table'}") - .appendTo(div5); - $('<input type="text"/>').appendTo(div5); - ok($.validator.methods['validate-grouped-qty'].call(this, null, null, div5[0])); - -}); - -test( "testValidateCCTypeSelect", function() { - expect(14); - var visaValid = $('<input id="visa-valid" type="text" value="4916808263499650"/>'); - var visaInvalid = $('<input id="visa-invalid" type="text" value="1234567890123456"/>'); - var mcValid = $('<input id="mc-valid" type="text" value="5203731841177490"/>'); - var mcInvalid = $('<input id="mc-invalid" type="text" value="1111222233334444"/>'); - var aeValid = $('<input id="ae-valid" type="text" value="376244899619217"/>'); - var aeInvalid = $('<input id="ae-invalid" type="text" value="123451234512345"/>'); - - var diValid = $('<input id="di-valid" type="text" value="6011050000000009"/>'); - var diInvalid = $('<input id="di-invalid" type="text" value="6011199900000005"/>'); - var dnValid = $('<input id="dn-valid" type="text" value="3095434000000001"/>'); - var dnInvalid = $('<input id="dn-invalid" type="text" value="3799999900000003"/>'); - var jcbValid = $('<input id="jcb-valid" type="text" value="3528000000000007"/>'); - var jcbInvalid = $('<input id="jcb-invalid" type="text" value="359000001111118"/>'); - var upValid = $('<input id="up-valid" type="text" value="6221260000000000"/>'); - var upInvalid = $('<input id="up-invalid" type="text" value="6229260000000002"/>'); - - ok($.validator.methods['validate-cc-type-select'].call(this, 'VI', null, visaValid)); - ok(!$.validator.methods['validate-cc-type-select'].call(this, 'VI', null, visaInvalid)); - ok($.validator.methods['validate-cc-type-select'].call(this, 'MC', null, mcValid)); - ok(!$.validator.methods['validate-cc-type-select'].call(this, 'MC', null, mcInvalid)); - ok($.validator.methods['validate-cc-type-select'].call(this, 'AE', null, aeValid)); - ok(!$.validator.methods['validate-cc-type-select'].call(this, 'AE', null, aeInvalid)); - ok($.validator.methods['validate-cc-type-select'].call(this, 'DI', null, diValid)); - ok(!$.validator.methods['validate-cc-type-select'].call(this, 'DI', null, diInvalid)); - ok($.validator.methods['validate-cc-type-select'].call(this, 'DN', null, dnValid)); - ok(!$.validator.methods['validate-cc-type-select'].call(this, 'DN', null, dnInvalid)); - ok($.validator.methods['validate-cc-type-select'].call(this, 'JCB', null, jcbValid)); - ok(!$.validator.methods['validate-cc-type-select'].call(this, 'JCB', null, jcbInvalid)); - ok($.validator.methods['validate-cc-type-select'].call(this, 'UP', null, upValid)); - ok(!$.validator.methods['validate-cc-type-select'].call(this, 'UP', null, upInvalid)); -}); - -test( "testValidateCCNumber", function() { - expect(37); - ok($.validator.methods['validate-cc-number'].call(this, '4916835098995909', null, null)); - ok($.validator.methods['validate-cc-number'].call(this, '5265071363284878', null, null)); - ok($.validator.methods['validate-cc-number'].call(this, '6011120623356953', null, null)); - ok($.validator.methods['validate-cc-number'].call(this, '371293266574617', null, null)); - ok(!$.validator.methods['validate-cc-number'].call(this, '4916835098995901', null, null)); - ok(!$.validator.methods['validate-cc-number'].call(this, '5265071363284870', null, null)); - ok(!$.validator.methods['validate-cc-number'].call(this, '6011120623356951', null, null)); - ok(!$.validator.methods['validate-cc-number'].call(this, '371293266574619', null, null)); - ok($.validator.methods['validate-cc-number'].call(this, '2221220000000003', null, null)); - ok(!$.validator.methods['validate-cc-number'].call(this, '2721220000000008', null, null)); - ok($.validator.methods['validate-cc-number'].call(this, '601109020000000003', null, null)); - ok(!$.validator.methods['validate-cc-number'].call(this, '6011111144444444', null, null)); - ok($.validator.methods['validate-cc-number'].call(this, '6011222233334444', null, null)); - ok(!$.validator.methods['validate-cc-number'].call(this, '6011522233334447', null, null)); - ok($.validator.methods['validate-cc-number'].call(this, '601174455555553', null, null)); - ok(!$.validator.methods['validate-cc-number'].call(this, '6011745555555550', null, null)); - ok($.validator.methods['validate-cc-number'].call(this, '601177455555556', null, null)); - ok(!$.validator.methods['validate-cc-number'].call(this, '601182455555556', null, null)); - ok($.validator.methods['validate-cc-number'].call(this, '601187999555558', null, null)); - ok(!$.validator.methods['validate-cc-number'].call(this, '601287999555556', null, null)); - ok($.validator.methods['validate-cc-number'].call(this, '6444444444444443', null, null)); - ok(!$.validator.methods['validate-cc-number'].call(this, '6644444444444441', null, null)); - ok($.validator.methods['validate-cc-number'].call(this, '3044444444444444', null, null)); - ok(!$.validator.methods['validate-cc-number'].call(this, '3064444444444449', null, null)); - ok($.validator.methods['validate-cc-number'].call(this, '3095444444444442', null, null)); - ok(!$.validator.methods['validate-cc-number'].call(this, '3096444444444441', null, null)); - ok($.validator.methods['validate-cc-number'].call(this, '3696444444444445', null, null)); - ok(!$.validator.methods['validate-cc-number'].call(this, '3796444444444444', null, null)); - ok($.validator.methods['validate-cc-number'].call(this, '3896444444444443', null, null)); - ok($.validator.methods['validate-cc-number'].call(this, '3528444444444449', null, null)); - ok(!$.validator.methods['validate-cc-number'].call(this, '3529444444444448', null, null)); - ok($.validator.methods['validate-cc-number'].call(this, '6221262244444440', null, null)); - ok(!$.validator.methods['validate-cc-number'].call(this, '6229981111111111', null, null)); - ok($.validator.methods['validate-cc-number'].call(this, '6249981111111117', null, null)); - ok(!$.validator.methods['validate-cc-number'].call(this, '6279981111111110', null, null)); - ok($.validator.methods['validate-cc-number'].call(this, '6282981111111115', null, null)); - ok(!$.validator.methods['validate-cc-number'].call(this, '6289981111111118', null, null)); -}); - -test( "testValidateCCType", function() { - expect(14); - var select = $('<select id="cc-type">' + - '<option value="">' + - '</option><option value="VI">' + - '</option><option value="MC">' + - '</option><option value="AE">' + - '</option><option value="DI">' + - '</option><option value="DN">' + - '</option><option value="JCB">' + - '</option><option value="UP">' + - '</option>' + - '</select>'); - - select.val('VI'); - ok($.validator.methods['validate-cc-type'].call(this, '4916835098995909', null, select)); - ok(!$.validator.methods['validate-cc-type'].call(this, '5265071363284878', null, select)); - select.val('MC'); - ok($.validator.methods['validate-cc-type'].call(this, '5265071363284878', null, select)); - ok(!$.validator.methods['validate-cc-type'].call(this, '4916835098995909', null, select)); - select.val('AE'); - ok($.validator.methods['validate-cc-type'].call(this, '371293266574617', null, select)); - ok(!$.validator.methods['validate-cc-type'].call(this, '5265071363284878', null, select)); - select.val('DI'); - ok($.validator.methods['validate-cc-type'].call(this, '6011050000000009', null, select)); - ok(!$.validator.methods['validate-cc-type'].call(this, '371293266574617', null, select)); - select.val('DN'); - ok($.validator.methods['validate-cc-type'].call(this, '3095434000000001', null, select)); - ok(!$.validator.methods['validate-cc-type'].call(this, '6011050000000009', null, select)); - select.val('JCB'); - ok($.validator.methods['validate-cc-type'].call(this, '3528000000000007', null, select)); - ok(!$.validator.methods['validate-cc-type'].call(this, '3095434000000001', null, select)); - select.val('UP'); - ok($.validator.methods['validate-cc-type'].call(this, '6221260000000000', null, select)); - ok(!$.validator.methods['validate-cc-type'].call(this, '3528000000000007', null, select)); -}); - -test( "testValidateCCExp", function() { - expect(3); - var year = $('<input id="year" type="text" value="4916808263499650"/>'), - currentTime = new Date(), - currentMonth = currentTime.getMonth() + 1, - currentYear = currentTime.getFullYear(); - year.val(currentYear); - if (currentMonth > 1) { - ok(!$.validator.methods['validate-cc-exp'].call(this, currentMonth - 1, null, year)); - } - ok($.validator.methods['validate-cc-exp'].call(this, currentMonth, null, year)); - year.val(currentYear + 1); - ok($.validator.methods['validate-cc-exp'].call(this, currentMonth, null, year)); - -}); - -test( "testValidateCCCvn", function() { - expect(8); - var ccType = $('<select id="cc-type">'+ - '<option value=""></option>'+ - '<option value="VI"></option>'+ - '<option value="MC"></option>'+ - '<option value="AE"></option>'+ - '<option value="DI"></option>'+ - '</select>'); - - ccType.val('VI'); - ok($.validator.methods['validate-cc-cvn'].call(this, '123', null, ccType)); - ok(!$.validator.methods['validate-cc-cvn'].call(this, '1234', null, ccType)); - ccType.val('MC'); - ok($.validator.methods['validate-cc-cvn'].call(this, '123', null, ccType)); - ok(!$.validator.methods['validate-cc-cvn'].call(this, '1234', null, ccType)); - ccType.val('AE'); - ok($.validator.methods['validate-cc-cvn'].call(this, '1234', null, ccType)); - ok(!$.validator.methods['validate-cc-cvn'].call(this, '123', null, ccType)); - ccType.val('DI'); - ok($.validator.methods['validate-cc-cvn'].call(this, '123', null, ccType)); - ok(!$.validator.methods['validate-cc-cvn'].call(this, '1234', null, ccType)); -}); - -test( "testValidateNumberRange", function() { - expect(14); - ok($.validator.methods['validate-number-range'].call(this, '-1', null, null)); - ok($.validator.methods['validate-number-range'].call(this, '1', null, null)); - ok($.validator.methods['validate-number-range'].call(this, '', null, null)); - ok($.validator.methods['validate-number-range'].call(this, null, null, null)); - ok($.validator.methods['validate-number-range'].call(this, '0', null, null)); - ok(!$.validator.methods['validate-number-range'].call(this, 'asds', null, null)); - - ok($.validator.methods['validate-number-range'].call(this, '10', null, '10-20.06')); - ok($.validator.methods['validate-number-range'].call(this, '15', null, '10-20.06')); - ok(!$.validator.methods['validate-number-range'].call(this, '1', null, '10-20.06')); - ok(!$.validator.methods['validate-number-range'].call(this, '30', null, '10-20.06')); - - var el1 = $('<input type="text" value="" class="validate-number-range number-range-10-20 number-range-10-100.20">').get(0); - ok($.validator.methods['validate-number-range'].call(this, '10', el1, null)); - ok($.validator.methods['validate-number-range'].call(this, '15', el1, null)); - ok(!$.validator.methods['validate-number-range'].call(this, '1', el1, null)); - ok($.validator.methods['validate-number-range'].call(this, '30', el1, null)); -}); - - - -test( "testValidateDigitsRange", function() { - expect(15); - ok($.validator.methods['validate-digits-range'].call(this, '-1', null, null)); - ok($.validator.methods['validate-digits-range'].call(this, '1', null, null)); - ok($.validator.methods['validate-digits-range'].call(this, '', null, null)); - ok($.validator.methods['validate-digits-range'].call(this, null, null, null)); - ok($.validator.methods['validate-digits-range'].call(this, '0', null, null)); - ok(!$.validator.methods['validate-digits-range'].call(this, 'asds', null, null)); - - ok($.validator.methods['validate-digits-range'].call(this, '10', null, '10-20')); - ok($.validator.methods['validate-digits-range'].call(this, '15', null, '10-20')); - ok(!$.validator.methods['validate-digits-range'].call(this, '1', null, '10-20')); - ok(!$.validator.methods['validate-digits-range'].call(this, '30', null, '10-20')); - ok($.validator.methods['validate-digits-range'].call(this, '30', null, '10-20.06')); - - var el1 = $('<input type="text" value="" class="validate-digits-range digits-range-10-20 digits-range-10-100.20">').get(0); - ok($.validator.methods['validate-digits-range'].call(this, '10', el1, null)); - ok($.validator.methods['validate-digits-range'].call(this, '15', el1, null)); - ok(!$.validator.methods['validate-digits-range'].call(this, '1', el1, null)); - ok(!$.validator.methods['validate-digits-range'].call(this, '30', el1, null)); -}); diff --git a/dev/tests/js/JsTestDriver/testsuite/mage/menu/index.html b/dev/tests/js/jasmine/assets/lib/web/mage/menu.html similarity index 50% rename from dev/tests/js/JsTestDriver/testsuite/mage/menu/index.html rename to dev/tests/js/jasmine/assets/lib/web/mage/menu.html index d0a3b9b873801e700378bfc6b3588c2ac4b8e794..03c673a7dac5fbc69fee9d2e38edf78bdc66d9ab 100644 --- a/dev/tests/js/JsTestDriver/testsuite/mage/menu/index.html +++ b/dev/tests/js/jasmine/assets/lib/web/mage/menu.html @@ -1,36 +1,10 @@ -<!-- -/** - * @category mage.menu - * @package test - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. - */ ---> - -<!DOCTYPE html> -<html> -<head> - <title>Unit test</title> - <base href="../../../"/> - <link type="text/css" rel="stylesheet" href="framework/qunit/qunit-1.14.0.css"/> - <script type="text/javascript" src="framework/qunit/qunit-1.14.0.js"></script> - <script src="../../../pub/lib/jquery.js"></script> - <script src="../../../pub/lib/jquery/jquery-ui.js"></script> - <script type="text/javascript" src="../../../pub/lib/mage/mage.js"></script> - <script type="text/javascript" src="../../../pub/lib/mage/menu.js"></script> - <script type="text/javascript" src="../../../pub/lib/mage/bootstrap.js"></script> - <script type="text/javascript" src="testsuite/mage/menu/test-menu.js"></script> - -</head> -<body> -<div id="qunit"></div> -<div id="qunit-fixture"> <ul id="menu"> <li class="foo">Aberdeen</li> <li class="foo">Ada</li> <li class="foo">Adamsville</li> <li class="foo"><span class="ui-icon ui-icon-print"></span>Addyston</li> - <li>Delphi + <li class="test-menu-item"> + <a>Delphi</a> <ul> <li class="foo">Ada</li> <li class="foo">Saarland</li> @@ -38,7 +12,8 @@ </ul> </li> <li class="foo">Saarland</li> - <li>Salzburg + <li> + <a>Salzburg</a> <ul> <li>Delphi <ul> @@ -60,7 +35,4 @@ <li class="foo">Perch</li> </ul> </li> -</ul> -</div> -</body> -</html> +</ul> \ No newline at end of file diff --git a/dev/tests/js/jasmine/assets/lib/web/mage/tabs.html b/dev/tests/js/jasmine/assets/lib/web/mage/tabs.html new file mode 100644 index 0000000000000000000000000000000000000000..dd4d665ca188e671b2e2382e986461db50474601 --- /dev/null +++ b/dev/tests/js/jasmine/assets/lib/web/mage/tabs.html @@ -0,0 +1,8 @@ +<div id="tabs"> + <div id="title1" data-role="collapsible"> + </div> + <div id="content1" data-role="content"></div> + <div id="title2" data-role="collapsible"> + </div> + <div id="content2" data-role="content"></div> +</div> \ No newline at end of file diff --git a/dev/tests/js/jasmine/assets/lib/web/mage/translate-inline.html b/dev/tests/js/jasmine/assets/lib/web/mage/translate-inline.html new file mode 100644 index 0000000000000000000000000000000000000000..5e48598a081a24d176de38fff5f14ab106bb7e00 --- /dev/null +++ b/dev/tests/js/jasmine/assets/lib/web/mage/translate-inline.html @@ -0,0 +1,4 @@ +<script id="translate-form-template" type="text/x-magento-template"> + <form id="<%= data.id %>"><%= data.newTemplateVariable %></form> +</script> +<div data-role="translate-dialog"></div> \ No newline at end of file diff --git a/dev/tests/js/jasmine/tests/lib/mage/accordion.test.js b/dev/tests/js/jasmine/tests/lib/mage/accordion.test.js new file mode 100644 index 0000000000000000000000000000000000000000..19a54d95cf704236cbacc75fa9e64ae260dc1105 --- /dev/null +++ b/dev/tests/js/jasmine/tests/lib/mage/accordion.test.js @@ -0,0 +1,80 @@ +/** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +define([ + 'jquery', + 'mage/accordion' +], function ($) { + 'use strict'; + + describe('Test for mage/accordion jQuery plugin', function () { + it('check if accordion can be initialized', function () { + var accordion = $('<div/>'); + + accordion.accordion(); + expect(accordion.is(':mage-accordion')).toBeTruthy(); + + accordion.accordion('destroy'); + expect(accordion.is(':mage-accordion')).toBeFalsy(); + }); + it('check one-collapsible element accordion', function () { + var accordion = $('<div/>'), + title1 = $('<div data-role="collapsible"></div>').appendTo(accordion), + content1 = $('<div data-role="content"></div>').appendTo(accordion), + title2 = $('<div data-role="collapsible"></div>').appendTo(accordion), + content2 = $('<div data-role="content"></div>').appendTo(accordion); + + accordion.appendTo('body'); + + accordion.accordion(); + + expect(accordion.is(':mage-accordion')).toBeTruthy(); + + expect(content1.is(':visible')).toBeTruthy(); + expect(content2.is(':hidden')).toBeTruthy(); + + title2.trigger('click'); + + expect(content1.is(':hidden')).toBeTruthy(); + expect(content2.is(':visible')).toBeTruthy(); + + title1.trigger('click'); + + expect(content1.is(':visible')).toBeTruthy(); + expect(content2.is(':hidden')).toBeTruthy(); + + accordion.accordion('destroy'); + + expect(accordion.is(':mage-accordion')).toBeFalsy(); + }); + it('check multi-collapsible element accordion', function () { + var accordion = $('<div/>'), + title1 = $('<div data-role="collapsible"></div>').appendTo(accordion), + content1 = $('<div data-role="content"></div>').appendTo(accordion), + title2 = $('<div data-role="collapsible"></div>').appendTo(accordion), + content2 = $('<div data-role="content"></div>').appendTo(accordion); + + accordion.appendTo('body'); + + accordion.accordion({ + multipleCollapsible: true + }); + + expect(accordion.is(':mage-accordion')).toBeTruthy(); + expect(content1.is(':visible')).toBeTruthy(); + expect(content2.is(':hidden')).toBeTruthy(); + + $(title1).trigger('click'); + expect(content1.is(':visible')).toBeTruthy(); + expect(content2.is(':hidden')).toBeTruthy(); + + $(title2).trigger('click'); + expect(content1.is(':visible')).toBeTruthy(); + expect(content2.is(':visible')).toBeTruthy(); + + accordion.accordion('destroy'); + expect(accordion.is(':mage-accordion')).toBeFalsy(); + }); + }); +}); diff --git a/dev/tests/js/jasmine/tests/lib/mage/backend/suggest.test.js b/dev/tests/js/jasmine/tests/lib/mage/backend/suggest.test.js new file mode 100644 index 0000000000000000000000000000000000000000..84880e6af72c5d362464b88b12b8b7a36b4f7675 --- /dev/null +++ b/dev/tests/js/jasmine/tests/lib/mage/backend/suggest.test.js @@ -0,0 +1,524 @@ +/** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ + +/* eslint-disable max-nested-callbacks */ +define([ + 'jquery', + 'mage/backend/suggest' +], function ($) { + 'use strict'; + + describe('mage/backend/suggest', function () { + var suggestSelector = '#suggest'; + + beforeEach(function () { + var $suggest = $('<input name="test-suggest" id="suggest" />'); + + $('body').append($suggest); + $('body').append('<script type="text/template" id="test-template">' + + '<div><%= data.test %></div>' + + '</script>'); + }); + + afterEach(function () { + $(suggestSelector).remove(); + $('#test-template').remove(); + $(suggestSelector).suggest('destroy'); + }); + + it('Check that suggest inited', function () { + var $suggest = $(suggestSelector).suggest({ + template: '#test-template', + choiceTemplate: '<li/>' + }); + + expect($suggest.is(':mage-suggest')).toBe(true); + }); + + it('Check suggest create', function () { + var options = { + template: '#test-template', + choiceTemplate: '<li/>', + controls: { + selector: '.test', + eventsMap: { + focus: ['testfocus'], + blur: ['testblur'], + select: ['testselect'] + } + }, + showRecent: true, + storageKey: 'test-suggest-recent', + multiselect: true + }, + recentItems = [{ + id: '1', + label: 'TestLabel1' + }, + { + id: '2', + label: 'TestLabel2' + } + ], + nonSelectedItem = { + id: '', + label: '' + }, + suggestInstance; + + if (window.localStorage) { + localStorage.setItem(options.storageKey, JSON.stringify(recentItems)); + } + + suggestInstance = $(suggestSelector).suggest(options).data('mage-suggest'); + + expect(suggestInstance._term).toBe(null); + expect(suggestInstance._nonSelectedItem).toEqual(nonSelectedItem); + expect(suggestInstance._renderedContext).toBe(null); + expect(suggestInstance._selectedItem).toEqual(nonSelectedItem); + expect(suggestInstance._control).toEqual(suggestInstance.options.controls); + expect(suggestInstance._recentItems).toEqual(window.localStorage ? recentItems : []); + expect(suggestInstance.valueField.is(':hidden')).toBe(true); + + if (window.localStorage) { + localStorage.removeItem(options.storageKey); + } + }); + + it('Check suggest render', function () { + var options = { + template: '#test-template', + choiceTemplate: '<li/>', + dropdownWrapper: '<div class="wrapper-test"></div>', + className: 'test-suggest', + inputWrapper: '<div class="test-input-wrapper"></div>' + }, + suggestInstance = $(suggestSelector).suggest(options).data('mage-suggest'); + + suggestInstance._render(); + + expect(suggestInstance.dropdown.hasClass('wrapper-test')).toBe(true); + expect(suggestInstance.dropdown.is(':hidden')).toBe(true); + expect(suggestInstance.element.closest('.test-input-wrapper').size()).toBeGreaterThan(0); + expect(suggestInstance.element.closest('.' + options.className).size()).toBeGreaterThan(0); + expect(suggestInstance.element.attr('autocomplete')).toBe('off'); + + options.appendMethod = 'before'; + $(suggestSelector).suggest('destroy'); + suggestInstance = $(suggestSelector).suggest(options).data('mage-suggest'); + suggestInstance._render(); + expect(suggestInstance.element.prev().is(suggestInstance.dropdown)).toBe(true); + + options.appendMethod = 'after'; + $(suggestSelector).suggest('destroy'); + suggestInstance = $(suggestSelector).suggest(options).data('mage-suggest'); + suggestInstance._render(); + expect(suggestInstance.element.next().is(suggestInstance.dropdown)).toBe(true); + }); + + it('Check suggest createValueField', function () { + var suggestInstance = $(suggestSelector).suggest({ + template: '#test-template', + choiceTemplate: '<li/>' + }).data('mage-suggest'), + valueField = suggestInstance._createValueField(); + + expect(valueField.is('input')).toBe(true); + expect(valueField.is(':hidden')).toBe(true); + + $(suggestSelector).suggest('destroy'); + suggestInstance = $(suggestSelector).suggest({ + multiselect: true, + template: '#test-template', + choiceTemplate: '<li/>' + }).data('mage-suggest'); + valueField = suggestInstance._createValueField(); + + expect(valueField.is('select')).toBe(true); + expect(valueField.is(':hidden')).toBe(true); + expect(valueField.attr('multiple')).toBe('multiple'); + }); + + it('Check suggest prepareValueField', function () { + var $suggest = $(suggestSelector).suggest({ + template: '#test-template', + choiceTemplate: '<li/>' + }), + suggestInstance = $suggest.data('mage-suggest'), + suggestName = $suggest.attr('name'); + + suggestInstance._prepareValueField(); + + expect(suggestInstance.valueField).not.toBe(true); + expect(suggestInstance.element.prev().is(suggestInstance.valueField)).toBe(true); + expect(suggestInstance.element.attr('name')).toBe(undefined); + expect(suggestInstance.valueField.attr('name')).toBe(suggestName); + }); + + it('Check suggest destroy', function () { + var options = { + template: '#test-template', + choiceTemplate: '<li/>', + inputWrapper: '<div class="test-input-wrapper"></div>', + valueField: null + }, + $suggest = $(suggestSelector).suggest(options), + suggestInstance = $suggest.data('mage-suggest'), + suggestName = $suggest.attr('name'); + + expect(suggestInstance.dropdown).not.toBe(undefined); + expect(suggestInstance.valueField).not.toBe(undefined); + expect(suggestName).toBe(undefined); + + $suggest.suggest('destroy'); + + expect($suggest.closest('.test-input-wrapper').length).toBe(0); + expect($suggest.attr('autocomplete')).toBe(undefined); + expect($suggest.attr('name')).toBe(suggestInstance.valueField.attr('name')); + expect(suggestInstance.valueField.parents('html').length).not.toBeGreaterThan(0); + expect(suggestInstance.dropdown.parents('html').length).not.toBeGreaterThan(0); + }); + + it('Check suggest value', function () { + var value = 'test-value', + suggestInstance, suggestDivInstance; + + $(suggestSelector).val(value); + $('body').append('<div id="suggest-div">' + value + '</div>'); + + suggestInstance = $(suggestSelector).suggest({ + template: '#test-template', + choiceTemplate: '<li/>' + }).data('mage-suggest'); + suggestDivInstance = $('#suggest-div').suggest({ + template: '#test-template', + choiceTemplate: '<li/>' + }).data('mage-suggest'); + + expect(suggestInstance._value()).toBe(value); + expect(suggestDivInstance._value()).toBe(value); + $('#suggest-div').remove(); + }); + + it('Check suggest bind', function () { + var eventIsBinded = false, + options = { + template: '#test-template', + choiceTemplate: '<li/>', + events: { + /** Stub function */ + click: function () { + eventIsBinded = true; + } + } + }, + $suggest = $(suggestSelector).suggest(options); + + $suggest.trigger('click'); + expect(eventIsBinded).toBe(true); + }); + + it('Check suggest focus/blur', function () { + var suggestInstance = $(suggestSelector).suggest({ + template: '#test-template', + choiceTemplate: '<li/>' + }).data('mage-suggest'), + uiHash = { + item: { + id: 1, + label: 'Test Label' + } + }; + + expect(suggestInstance._focused).toBe(undefined); + expect(suggestInstance.element.val()).toBe(''); + + suggestInstance._focusItem($.Event('focus'), uiHash); + + expect(suggestInstance._focused).toEqual(uiHash.item); + expect(suggestInstance.element.val()).toBe(uiHash.item.label); + + suggestInstance._blurItem(); + + expect(suggestInstance._focused).toBe(null); + expect(suggestInstance.element.val()).toBe(''); + }); + + it('Check suggest select', function () { + var suggestInstance = $(suggestSelector).suggest({ + template: '#test-template', + choiceTemplate: '<li/>' + }).data('mage-suggest'), + uiHash = { + item: { + id: 1, + label: 'Test Label' + } + }; + + suggestInstance._focused = suggestInstance._term = suggestInstance._selectedItem = null; + suggestInstance.valueField.val(''); + suggestInstance._selectItem($.Event('select')); + + expect(suggestInstance._selectedItem).toBe(null); + expect(suggestInstance._term).toBe(null); + expect(suggestInstance.valueField.val()).toBe(''); + expect(suggestInstance.dropdown.is(':hidden')).toBe(true); + + suggestInstance._focused = uiHash.item; + suggestInstance._selectItem($.Event('select')); + + expect(suggestInstance._selectedItem).toEqual(suggestInstance._focused); + expect(suggestInstance._term).toBe(suggestInstance._focused.label); + expect(suggestInstance.valueField.val()).toBe(suggestInstance._focused.id.toString()); + expect(suggestInstance.dropdown.is(':hidden')).toBe(true); + }); + + it('Check suggest multiselect', function () { + var suggestInstance = $(suggestSelector).suggest({ + template: '#test-template', + choiceTemplate: '<li/>', + multiselect: true + }).data('mage-suggest'), + uiHash = { + item: { + id: 1, + label: 'Test Label' + } + }, + event = $.Event('select'), + selectedElement = $('<div/>'); + + event.target = selectedElement[0]; + suggestInstance._focused = suggestInstance._term = suggestInstance._selectedItem = null; + suggestInstance.valueField.val(''); + suggestInstance._selectItem(event); + + expect(suggestInstance._selectedItem).toBe(null); + expect(suggestInstance._term).toBe(null); + expect(suggestInstance.valueField.find('option').length).not.toBeGreaterThan(0); + expect(suggestInstance.dropdown.is(':hidden')).toBe(true); + + suggestInstance._focused = uiHash.item; + suggestInstance._selectItem(event); + + expect(suggestInstance._selectedItem).toEqual(suggestInstance._focused); + expect(suggestInstance._term).toBe(''); + expect(suggestInstance._getOption(suggestInstance._focused).length).toBeGreaterThan(0); + expect(selectedElement.hasClass(suggestInstance.options.selectedClass)).toBe(true); + expect(suggestInstance.dropdown.is(':hidden')).toBe(true); + + suggestInstance._selectItem(event); + expect(suggestInstance._selectedItem).toEqual(suggestInstance._nonSelectedItem); + expect(suggestInstance._term).toBe(''); + expect(suggestInstance._getOption(suggestInstance._focused).length).not.toBeGreaterThan(0); + expect(selectedElement.hasClass(suggestInstance.options.selectedClass)).toBe(false); + expect(suggestInstance.dropdown.is(':hidden')).toBe(true); + }); + + it('Check suggest reset value', function () { + var suggestInstance = $(suggestSelector).suggest({ + template: '#test-template', + choiceTemplate: '<li/>' + }).data('mage-suggest'); + + suggestInstance.valueField.val('test'); + expect(suggestInstance.valueField.val()).toBe('test'); + suggestInstance._resetSuggestValue(); + expect(suggestInstance.valueField.val()).toBe(suggestInstance._nonSelectedItem.id); + }); + + it('Check suggest reset multiselect value', function () { + var suggestInstance = $(suggestSelector).suggest({ + template: '#test-template', + choiceTemplate: '<li/>', + multiselect: true + }).data('mage-suggest'), + uiHash = { + item: { + id: 1, + label: 'Test Label' + } + }, + event = $.Event('select'); + + event.target = $('<div/>')[0]; + suggestInstance._focused = uiHash.item; + + suggestInstance._selectItem(event); + suggestInstance._resetSuggestValue(); + + expect(suggestInstance.valueField.val() instanceof Array).toBe(true); + expect(suggestInstance.valueField.val()[0]).not.toBe(undefined); + expect(suggestInstance.valueField.val()[0]).toBe(uiHash.item.id.toString()); + }); + + it('Check suggest read item data', function () { + var suggestInstance = $(suggestSelector).suggest({ + template: '#test-template', + choiceTemplate: '<li/>' + }).data('mage-suggest'), + testElement = $('<div/>'); + + expect(suggestInstance._readItemData(testElement)).toEqual(suggestInstance._nonSelectedItem); + testElement.data('suggestOption', 'test'); + expect(suggestInstance._readItemData(testElement)).toEqual('test'); + }); + + it('Check suggest template', function () { + var suggestInstance = $(suggestSelector).suggest({ + template: '<div><%= data.test %></div>', + choiceTemplate: '<li/>' + }).data('mage-suggest'), + tmpl = suggestInstance.templates[suggestInstance.templateName], + html = $('<div/>').append(tmpl({ + data: { + test: 'test' + } + })).html(); + + expect(html).toEqual('<div>test</div>'); + suggestInstance.destroy(); + $('body').append('<script type="text/template" id="test-template">' + + '<div><%= data.test %></div>' + + '</script>'); + + suggestInstance = $(suggestSelector).suggest({ + template: '#test-template', + choiceTemplate: '<li/>' + }).data('mage-suggest'); + tmpl = suggestInstance.templates[suggestInstance.templateName]; + html = $('<div />').append(tmpl({ + data: { + test: 'test' + } + })).html(); + + expect(html).toEqual('<div>test</div>'); + $('#test-template').remove(); + }); + + it('Check suggest dropdown visibility', function () { + var suggestInstance = $(suggestSelector).suggest({ + template: '#test-template', + choiceTemplate: '<li/>' + }).data('mage-suggest'); + + suggestInstance.dropdown.hide(); + expect(suggestInstance.isDropdownShown()).toBe(false); + expect(suggestInstance.dropdown.is(':hidden')).toBe(true); + + suggestInstance.dropdown.show(); + expect(suggestInstance.isDropdownShown()).toBe(true); + expect(suggestInstance.dropdown.is(':visible')).toBe(true); + }); + + it('Check suggest create option', function () { + var suggestInstance = $(suggestSelector).suggest({ + template: '#test-template', + choiceTemplate: '<li/>' + }).data('mage-suggest'), + uiHash = { + item: { + id: 1, + label: 'Test Label' + } + }, + option = suggestInstance._createOption(uiHash.item); + + expect(option.val()).toBe('1'); + expect(option.prop('selected')).toBe(true); + expect(option.text()).toBe('Test Label'); + expect(option.data('renderedOption')).not.toBe(undefined); + }); + + it('Check suggest add option', function () { + var suggestInstance = $(suggestSelector).suggest({ + template: '#test-template', + choiceTemplate: '<li/>' + }).data('mage-suggest'), + uiHash = { + item: { + id: 1, + label: 'Test Label' + } + }, + selectTarget = $('<div/>'), + event = $.Event('add'), + option; + + event.target = selectTarget[0]; + suggestInstance._addOption(event, uiHash.item); + option = suggestInstance.valueField.find('option[value=' + uiHash.item.id + ']'); + + expect(option.length).toBeGreaterThan(0); + expect(option.data('selectTarget').is(selectTarget)).toBe(true); + }); + + it('Check suggest get option', function () { + var suggestInstance = $(suggestSelector).suggest({ + template: '#test-template', + choiceTemplate: '<li/>' + }).data('mage-suggest'), + uiHash = { + item: { + id: 1, + label: 'Test Label' + } + }, + option = $('<option value="1">Test Label</option>'); + + expect(suggestInstance._getOption(uiHash.item).length).not.toBeGreaterThan(0); + + suggestInstance.valueField.append(option); + expect(suggestInstance._getOption(uiHash.item).length).toBeGreaterThan(0); + expect(suggestInstance._getOption(option).length).toBeGreaterThan(0); + }); + + it('Check suggest last added', function () { + var suggestInstance = $(suggestSelector).suggest({ + template: '#test-template', + choiceTemplate: '<li/>', + multiselect: true + }).data('mage-suggest'), + uiHash = { + item: { + id: 1, + label: 'Test Label' + } + }; + + suggestInstance._addOption({}, uiHash.item); + expect(suggestInstance.valueField.find('option').length).toBeGreaterThan(0); + suggestInstance._removeLastAdded(); + expect(suggestInstance.valueField.find('option').length).not.toBeGreaterThan(0); + }); + + it('Check suggest remove option', function () { + var suggestInstance = $(suggestSelector).suggest({ + template: '#test-template', + choiceTemplate: '<li/>', + multiselect: true + }).data('mage-suggest'), + uiHash = { + item: { + id: 1, + label: 'Test Label' + } + }, + selectTarget = $('<div/>'), + event = $.Event('select'); + + selectTarget.addClass(suggestInstance.options.selectedClass); + event.target = selectTarget[0]; + + suggestInstance._addOption(event, uiHash.item); + expect(suggestInstance.valueField.find('option').length).toBeGreaterThan(0); + suggestInstance.removeOption(event, uiHash.item); + expect(suggestInstance.valueField.find('option').length).not.toBeGreaterThan(0); + expect(selectTarget.hasClass(suggestInstance.options.selectedClass)).toBe(false); + }); + }); +}); diff --git a/dev/tests/js/jasmine/tests/lib/mage/backend/tree-suggest.test.js b/dev/tests/js/jasmine/tests/lib/mage/backend/tree-suggest.test.js new file mode 100644 index 0000000000000000000000000000000000000000..b116fc70588088d88b3ddd9cebbd6719531762a8 --- /dev/null +++ b/dev/tests/js/jasmine/tests/lib/mage/backend/tree-suggest.test.js @@ -0,0 +1,52 @@ +/** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ + +/* eslint-disable max-nested-callbacks */ +define([ + 'jquery', + 'mage/backend/tree-suggest' +], function ($) { + 'use strict'; + + describe('mage/backend/tree-suggest', function () { + var treeSuggestSelector = '#tree-suggest'; + + beforeEach(function () { + var $treeSuggest = $('<input name="test-tree-suggest" id="tree-suggest" />'); + + $('body').append($treeSuggest); + }); + + afterEach(function () { + $(treeSuggestSelector).remove(); + $(treeSuggestSelector).treeSuggest('destroy'); + }); + + it('Check that treeSuggest inited', function () { + var $treeSuggest = $(treeSuggestSelector).treeSuggest(), + treeSuggestInstance = $treeSuggest.data('mage-treeSuggest'); + + expect($treeSuggest.is(':mage-treeSuggest')).toBe(true); + expect(treeSuggestInstance.widgetEventPrefix).toBe('suggest'); + }); + + it('Check treeSuggest filter', function () { + var treeSuggestInstance = $(treeSuggestSelector).treeSuggest().data('mage-treeSuggest'), + uiHash = { + item: { + id: 1, + label: 'Test Label' + } + }; + + expect(treeSuggestInstance._filterSelected( + [uiHash.item], + { + _allShown: true + } + )).toEqual([uiHash.item]); + }); + }); +}); diff --git a/dev/tests/js/jasmine/tests/lib/mage/calendar.test.js b/dev/tests/js/jasmine/tests/lib/mage/calendar.test.js new file mode 100644 index 0000000000000000000000000000000000000000..b2c6aed2c9fbad3a5a9e35e9b1cbbd6e547c1700 --- /dev/null +++ b/dev/tests/js/jasmine/tests/lib/mage/calendar.test.js @@ -0,0 +1,173 @@ +/** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ + +/* eslint-disable max-nested-callbacks */ +define([ + 'jquery', + 'jquery/ui', + 'mage/calendar' +], function ($) { + 'use strict'; + + describe('mage/calendar', function () { + describe('Check calendar', function () { + var calendarSelector = '#calendar'; + + beforeEach(function () { + var $calendar = $('<input type="text" id="calendar" />'); + + $('body').append($calendar); + }); + + afterEach(function () { + $(calendarSelector).remove(); + $(calendarSelector).calendar('destroy'); + }); + + it('Check that calendar inited', function () { + var $calendar = $(calendarSelector).calendar(); + + expect($calendar.is(':mage-calendar')).toBe(true); + }); + + it('Check configuration merge', function () { + var $calendar; + + $.extend(true, $, { + calendarConfig: { + showOn: 'button', + showAnim: '', + buttonImageOnly: true, + showButtonPanel: true, + showWeek: true, + timeFormat: '', + showTime: false, + showHour: false, + showMinute: false + } + }); + + $calendar = $(calendarSelector).calendar(); + + expect($calendar.calendar('option', 'showOn')).toBe('button'); + expect($calendar.calendar('option', 'showAnim')).toBe(''); + expect($calendar.calendar('option', 'buttonImageOnly')).toBe(true); + expect($calendar.calendar('option', 'showButtonPanel')).toBe(true); + expect($calendar.calendar('option', 'showWeek')).toBe(true); + expect($calendar.calendar('option', 'timeFormat')).toBe(''); + expect($calendar.calendar('option', 'showTime')).toBe(false); + expect($calendar.calendar('option', 'showHour')).toBe(false); + expect($calendar.calendar('option', 'showMinute')).toBe(false); + + delete $.calendarConfig; + }); + + it('Specifying AM/PM in timeformat option changes AMPM option to true', function () { + var $calendar = $(calendarSelector).calendar({ + timeFormat: 'hh:mm tt', + ampm: false + }); + + expect($calendar.calendar('option', 'ampm')).toBe(true); + }); + + it('Omitting AM/PM in timeformat option changes AMPM option to false', function () { + var $calendar = $(calendarSelector).calendar({ + timeFormat: 'hh:mm' + }); + + expect($calendar.calendar('option', 'ampm')).toBe(null); + }); + + it('With server timezone offset', function () { + var serverTimezoneSeconds = 1346122095, + $calendar = $(calendarSelector).calendar({ + serverTimezoneSeconds: serverTimezoneSeconds + }), + currentDate = new Date(); + + currentDate.setTime((serverTimezoneSeconds + currentDate.getTimezoneOffset() * 60) * 1000); + + expect($calendar.calendar('getTimezoneDate').toString()).toBe(currentDate.toString()); + }); + + it('Without sever timezone offset', function () { + var $calendar = $(calendarSelector).calendar(), + currentDate = new Date(); + + expect($calendar.calendar('getTimezoneDate').toString()).toBe(currentDate.toString()); + }); + + it('Check destroy', function () { + var $calendar = $(calendarSelector).calendar(); + + expect($calendar.is(':mage-calendar')).toBe(true); + $calendar.calendar('destroy'); + expect($calendar.is(':mage-calendar')).toBe(false); + }); + }); + describe('Check dateRange', function () { + var dateRangeSelector = '#date-range'; + + beforeEach(function () { + var $dateRange = $('<div id="date-range">' + + '<input type="text" id="from" />' + + '<input type="text" id="to" />' + + '</div>'); + + $('body').append($dateRange); + }); + + afterEach(function () { + $(dateRangeSelector).remove(); + $(dateRangeSelector).dateRange('destroy'); + }); + + it('Check that dateRange inited', function () { + var $dateRange = $(dateRangeSelector).dateRange(); + + expect($dateRange.is(':mage-dateRange')).toBe(true); + }); + + it('Check that dateRange inited with additional options', function () { + var $from = $('#from'), + $to = $('#to'); + + $(dateRangeSelector).dateRange({ + from: { + id: 'from' + }, + to: { + id: 'to' + } + }); + + expect($from.hasClass('_has-datepicker')).toBe(true); + expect($to.hasClass('_has-datepicker')).toBe(true); + }); + + it('Check destroy', function () { + var $dateRange = $(dateRangeSelector).dateRange({ + from: { + id: 'from' + }, + to: { + id: 'to' + } + }), + $from = $('#from'), + $to = $('#to'); + + expect($dateRange.is(':mage-dateRange')).toBe(true); + expect($from.hasClass('_has-datepicker')).toBe(true); + expect($to.hasClass('_has-datepicker')).toBe(true); + $dateRange.dateRange('destroy'); + expect($dateRange.is(':mage-dateRange')).toBe(false); + expect($from.hasClass('_has-datepicker')).toBe(false); + expect($to.hasClass('_has-datepicker')).toBe(false); + }); + }); + }); +}); diff --git a/dev/tests/js/jasmine/tests/lib/mage/collapsible.test.js b/dev/tests/js/jasmine/tests/lib/mage/collapsible.test.js new file mode 100644 index 0000000000000000000000000000000000000000..d6c95d2887ec7c0706a2ec3b88f4f3fab3079fed --- /dev/null +++ b/dev/tests/js/jasmine/tests/lib/mage/collapsible.test.js @@ -0,0 +1,211 @@ +/** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +/* eslint-disable max-nested-callbacks */ +/* jscs:disable jsDoc */ + +define([ + 'jquery', + 'jquery/ui', + 'mage/collapsible' +], function ($) { + 'use strict'; + + describe('Test for mage/collapsible jQuery plugin', function () { + it('check if collapsible can be initialized and destroyed', function () { + var group = $('<div id="1"></div>'); + + group.collapsible(); + expect(group.is(':mage-collapsible')).toBeTruthy(); + + group.collapsible('destroy'); + expect(group.is(':mage-collapsible')).toBeFalsy(); + group.remove(); + }); + + describe('Test enable, disable, activate and deactivate methods', function () { + var group = $('<div id="2"></div>'), + content = $('<div data-role="content"></div>').appendTo(group); + + $('<div data-role="title"></div>').prependTo(group); + + beforeEach(function () { + group.appendTo('body'); + }); + + afterEach(function () { + group.remove(); + }); + + it('check enable and disable methods', function () { + group.collapsible(); + expect(group.is(':mage-collapsible')).toBeTruthy(); + + group.collapsible('disable'); + expect(content.is(':hidden')).toBeTruthy(); + + group.collapsible('enable'); + expect(content.is(':visible')).toBeTruthy(); + + group.collapsible('destroy'); + expect(group.is(':mage-collapsible')).toBeFalsy(); + }); + + it('check activate and deactivate methods', function () { + group.collapsible(); + expect(group.is(':mage-collapsible')).toBeTruthy(); + + group.collapsible('deactivate'); + expect(content.is(':hidden')).toBeTruthy(); + + group.collapsible('activate'); + expect(content.is(':visible')).toBeTruthy(); + + group.collapsible('destroy'); + expect(group.is(':mage-collapsible')).toBeFalsy(); + }); + }); + + it('check if the widget gets expanded/collapsed when the title is clicked', function () { + var group = $('<div id="3"></div>'), + title = $('<div data-role="title"></div>').appendTo(group), + content = $('<div data-role="content"></div>').appendTo(group); + + group.appendTo('body'); + + group.collapsible(); + expect(group.is(':mage-collapsible')).toBeTruthy(); + + group.collapsible('deactivate'); + expect(content.is(':hidden')).toBeTruthy(); + + title.trigger('click'); + expect(content.is(':visible')).toBeTruthy(); + + title.trigger('click'); + expect(content.is(':hidden')).toBeTruthy(); + + group.collapsible('destroy'); + expect(group.is(':mage-collapsible')).toBeFalsy(); + group.remove(); + }); + + it('check state classes', function () { + var group = $('<div id="4"></div>'), + title = $('<div data-role="title"></div>').appendTo(group); + + $('<div data-role="content"></div>').appendTo(group); + + group.appendTo('body'); + + group.collapsible({ + openedState: 'opened', + closedState: 'closed', + disabledState: 'disabled' + }); + expect(group.is(':mage-collapsible')).toBeTruthy(); + expect(group.hasClass('closed')).toBeTruthy(); + + title.trigger('click'); + expect(group.hasClass('opened')).toBeTruthy(); + + group.collapsible('disable'); + expect(group.hasClass('disabled')).toBeTruthy(); + + group.collapsible('destroy'); + expect(group.is(':mage-collapsible')).toBeFalsy(); + group.remove(); + }); + + it('check if icons are added to title when initialized and removed when destroyed', function () { + var group = $('<div id="5"></div>'), + title = $('<div data-role="title"></div>').appendTo(group); + + $('<div data-role="content"></div>').appendTo(group); + + group.appendTo('body'); + + group.collapsible({ + icons: { + header: 'minus', + activeHeader: 'plus' + } + }); + expect(group.is(':mage-collapsible')).toBeTruthy(); + expect(title.children('[data-role=icons]').length).toBeTruthy(); + + group.collapsible('destroy'); + expect(group.is(':mage-collapsible')).toBeFalsy(); + expect(title.children('[data-role=icons]').length).toBeFalsy(); + group.remove(); + }); + + it('check if icon classes are changed when content gets expanded/collapsed', function () { + var group = $('<div id="6"></div>'), + title = $('<div data-role="title"></div>').appendTo(group), + content = $('<div data-role="content"></div>').appendTo(group), + icons; + + group.appendTo('body'); + + group.collapsible({ + icons: { + header: 'minus', + activeHeader: 'plus' + } + }); + expect(group.is(':mage-collapsible')).toBeTruthy(); + + icons = group.collapsible('option', 'icons'); + group.collapsible('deactivate'); + expect(content.is(':hidden')).toBeTruthy(); + expect(title.children('[data-role=icons]').hasClass(icons.header)).toBeTruthy(); + + title.trigger('click'); + expect(title.children('[data-role=icons]').hasClass(icons.activeHeader)).toBeTruthy(); + + group.collapsible('destroy'); + expect(group.is(':mage-collapsible')).toBeFalsy(); + group.remove(); + }); + + it('check if content gets updated via Ajax when title is clicked', function () { + var group = $('<div id="8"></div>'), + title = $('<div data-role="title"></div>').appendTo(group), + content = $('<div data-role="content"></div>').appendTo(group); + + $('<a data-ajax="true" href="test.html"></a>').appendTo(group); + + $.get = jasmine.createSpy().and.callFake(function () { + var d = $.Deferred(); + + d.promise().success = function () { + }; + + d.promise().complete = function () { + }; + + return d.promise(); + }); + + group.appendTo('body'); + + group.collapsible({ + ajaxContent: true + }); + expect(group.is(':mage-collapsible')).toBeTruthy(); + + group.collapsible('deactivate'); + expect(content.is(':hidden')).toBeTruthy(); + expect(content.children('p').length).toBeFalsy(); + + title.trigger('click'); + expect(content.children('p')).toBeTruthy(); + + group.collapsible('destroy'); + expect(group.is(':mage-collapsible')).toBeFalsy(); + group.remove(); + }); + }); +}); diff --git a/dev/tests/js/jasmine/tests/lib/mage/decorate.test.js b/dev/tests/js/jasmine/tests/lib/mage/decorate.test.js new file mode 100644 index 0000000000000000000000000000000000000000..898bcf8b51128e62138190bc3d7dc4418705c19d --- /dev/null +++ b/dev/tests/js/jasmine/tests/lib/mage/decorate.test.js @@ -0,0 +1,201 @@ +/** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ + +/* eslint-disable max-nested-callbacks */ +define([ + 'mage/decorate', + 'jquery' +], function (decorate, $) { + 'use strict'; + + describe('mage/decorate', function () { + describe('"list" method', function () { + var listId = 'testList'; + + beforeEach(function () { + var list = $('<ul id="' + listId + '"><li/><li/><li/></ul>'); + + $('body').append(list); + }); + + afterEach(function () { + $('#' + listId).remove(); + }); + + it('Check correct class decoration', function () { + var $list = $('#' + listId); + + $list.decorate('list'); + expect($list.find('li:first').hasClass('first')).toBe(false); + expect($list.find('li:first').hasClass('odd')).toBe(true); + expect($list.find('li:last').hasClass('last')).toBe(true); + expect($list.find('li:odd').hasClass('even')).toBe(true); + expect($list.find('li:even').hasClass('odd')).toBe(true); + }); + }); + + describe('"generic" method', function () { + var listId = 'testList'; + + beforeEach(function () { + var list = $('<ul id="' + listId + '"><li/><li/><li/></ul>'); + + $('body').append(list); + }); + + afterEach(function () { + $('#' + listId).remove(); + }); + + it('Check correct class decoration with default params', function () { + var $list = $('#' + listId); + + $list.find('li').decorate('generic'); + expect($list.find('li:first').hasClass('first')).toBe(true); + expect($list.find('li:first').hasClass('odd')).toBe(true); + expect($list.find('li:last').hasClass('last')).toBe(true); + expect($list.find('li:odd').hasClass('even')).toBe(true); + expect($list.find('li:even').hasClass('odd')).toBe(true); + }); + + it('Check correct class decoration with custom params', function () { + var $list = $('#' + listId); + + $list.find('li').decorate('generic', ['last', 'first']); + expect($list.find('li:first').hasClass('first')).toBe(true); + expect($list.find('li:first').hasClass('odd')).toBe(false); + expect($list.find('li:last').hasClass('last')).toBe(true); + expect($list.find('li:odd').hasClass('even')).toBe(false); + expect($list.find('li:even').hasClass('odd')).toBe(false); + }); + + it('Check correct class decoration with empty items', function () { + var $list = $('#' + listId); + + $list.find('span').decorate('generic', ['last', 'first']); + expect($list.find('li:first').hasClass('first')).toBe(false); + expect($list.find('li:first').hasClass('odd')).toBe(false); + expect($list.find('li:last').hasClass('last')).toBe(false); + expect($list.find('li:odd').hasClass('even')).toBe(false); + expect($list.find('li:even').hasClass('odd')).toBe(false); + }); + }); + + describe('"table" method', function () { + var tableId = 'testTable'; + + beforeEach(function () { + var table = $('<table id="' + tableId + '">' + + '<thead><tr><th/><th/></tr></thead>' + + '<tbody>' + + '<tr><td/><td/></tr>' + + '<tr><td/><td/></tr>' + + '<tr><td/><td/></tr>' + + '</tbody>>' + + '<tfoot><tr><th/><th/></tr></tfoot>' + + '</table>'); + + $('body').append(table); + }); + + afterEach(function () { + $('#' + tableId).remove(); + }); + + it('Check correct class decoration with default params', function () { + var $table = $('#' + tableId); + + $table.decorate('table'); + expect($table.find('tbody tr:first').hasClass('first')).toBe(true); + expect($table.find('tbody tr:first').hasClass('odd')).toBe(true); + expect($table.find('tbody tr:odd').hasClass('even')).toBe(true); + expect($table.find('tbody tr:even').hasClass('odd')).toBe(true); + expect($table.find('tbody tr:last').hasClass('last')).toBe(true); + expect($table.find('thead tr:first').hasClass('first')).toBe(true); + expect($table.find('thead tr:last').hasClass('last')).toBe(true); + expect($table.find('tfoot tr:first').hasClass('first')).toBe(true); + expect($table.find('tfoot tr:last').hasClass('last')).toBe(true); + expect($table.find('tr td:last').hasClass('last')).toBe(true); + expect($table.find('tr td:first').hasClass('first')).toBe(false); + }); + + it('Check correct class decoration with custom params', function () { + var $table = $('#' + tableId); + + $table.decorate('table', { + 'tbody': ['first'], + 'tbody tr': ['first'], + 'thead tr': ['first'], + 'tfoot tr': ['last'], + 'tr td': ['first'] + }); + expect($table.find('tbody:first').hasClass('first')).toBe(true); + expect($table.find('tbody tr:first').hasClass('first')).toBe(true); + expect($table.find('tbody tr:first').hasClass('odd')).toBe(false); + expect($table.find('tbody tr:odd').hasClass('even')).toBe(false); + expect($table.find('tbody tr:even').hasClass('odd')).toBe(false); + expect($table.find('tbody tr:last').hasClass('last')).toBe(false); + expect($table.find('thead tr:first').hasClass('first')).toBe(true); + expect($table.find('thead tr:last').hasClass('last')).toBe(false); + expect($table.find('tfoot tr:first').hasClass('first')).toBe(false); + expect($table.find('tfoot tr:last').hasClass('last')).toBe(true); + expect($table.find('tr td:last').hasClass('last')).toBe(false); + expect($table.find('tr td:first').hasClass('first')).toBe(true); + }); + }); + + describe('"dataList" method', function () { + var listId = 'testDataList'; + + beforeEach(function () { + var list = $('<dl id="' + listId + '"><dt/><dd/><dt/><dd/><dt/><dd/></dl>'); + + $('body').append(list); + }); + + afterEach(function () { + $('#' + listId).remove(); + }); + + it('Check correct class decoration', function () { + var $list = $('#' + listId); + + $list.decorate('dataList'); + expect($list.find('dt:first').hasClass('first')).toBe(false); + expect($list.find('dt:first').hasClass('odd')).toBe(true); + expect($list.find('dt:odd').hasClass('even')).toBe(true); + expect($list.find('dt:even').hasClass('odd')).toBe(true); + expect($list.find('dt:last').hasClass('last')).toBe(true); + expect($list.find('dd:first').hasClass('first')).toBe(false); + expect($list.find('dd:first').hasClass('odd')).toBe(true); + expect($list.find('dd:odd').hasClass('even')).toBe(true); + expect($list.find('dd:even').hasClass('odd')).toBe(true); + expect($list.find('dd:last').hasClass('last')).toBe(true); + }); + }); + + describe('Call decorate with fake method', function () { + var listId = 'testDataList'; + + beforeEach(function () { + var list = $('<dl id="' + listId + '"><dt/><dd/><dt/><dd/><dt/><dd/></dl>'); + + $('body').append(list); + }); + + afterEach(function () { + $('#' + listId).remove(); + }); + + it('Check error message', function () { + var $list = $('#' + listId); + + spyOn($, 'error'); + $list.decorate('customMethod'); + expect($.error).toHaveBeenCalledWith('Method customMethod does not exist on jQuery.decorate'); + }); + }); + }); +}); diff --git a/dev/tests/js/jasmine/tests/lib/mage/dropdown.test.js b/dev/tests/js/jasmine/tests/lib/mage/dropdown.test.js new file mode 100644 index 0000000000000000000000000000000000000000..1d149efe040e0f71951d833ce132ffbb098288a4 --- /dev/null +++ b/dev/tests/js/jasmine/tests/lib/mage/dropdown.test.js @@ -0,0 +1,357 @@ +/** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +/* eslint-disable max-nested-callbacks */ + +define([ + 'jquery', + 'mage/dropdown' +], function ($) { + 'use strict'; + + describe('Test for mage/dropdown jQuery plugin', function () { + it('check if dialog opens when the triggerEvent is triggered', function () { + var opener = $('<div/>'), + dialog = $('<div/>'); + + dialog.dropdownDialog({ + 'triggerEvent': 'click', + 'triggerTarget': opener + }); + + opener.trigger('click'); + expect(dialog.dropdownDialog('isOpen')).toBeTruthy(); + + dialog.dropdownDialog('destroy'); + + dialog.dropdownDialog({ + 'triggerEvent': null, + 'triggerTarget': opener + }); + + opener.trigger('click'); + expect(dialog.dropdownDialog('isOpen')).toBeFalsy(); + dialog.dropdownDialog('destroy'); + }); + + it('check if a specified class is added to the trigger', function () { + var opener = $('<div/>'), + dialog = $('<div/>'); + + dialog.dropdownDialog({ + 'triggerClass': 'active', + 'triggerTarget': opener + }); + + dialog.dropdownDialog('open'); + expect(opener.hasClass('active')).toBeTruthy(); + + dialog.dropdownDialog('close'); + dialog.dropdownDialog('destroy'); + + dialog.dropdownDialog({ + 'triggerClass': null, + 'triggerTarget': opener + }); + + dialog.dropdownDialog('open'); + expect(opener.hasClass('active')).toBeFalsy(); + + dialog.dropdownDialog('close'); + dialog.dropdownDialog('destroy'); + }); + + it('check if a specified class is added to the element which the dialog appends to', function () { + var parent = $('<div/>'), + dialog = $('<div/>'); + + dialog.dropdownDialog({ + 'parentClass': 'active', + 'appendTo': parent + }); + + dialog.dropdownDialog('open'); + expect(parent.hasClass('active')).toBeTruthy(); + + dialog.dropdownDialog('close'); + dialog.dropdownDialog('destroy'); + + dialog.dropdownDialog({ + 'parentClass': null, + 'appendTo': parent + }); + + dialog.dropdownDialog('open'); + expect(parent.hasClass('active')).toBeFalsy(); + + dialog.dropdownDialog('close'); + dialog.dropdownDialog('destroy'); + }); + + it('check if a specified class is added to the element that becomes dialog', function () { + var dialog = $('<div/>'), + content; + + dialog.dropdownDialog({ + 'dialogContentClass': 'active' + }); + + content = $('.ui-dialog-content'); + dialog.dropdownDialog('open'); + expect(content.hasClass('active')).toBeTruthy(); + + dialog.dropdownDialog('close'); + dialog.dropdownDialog('destroy'); + + dialog.dropdownDialog({ + 'dialogContentClass': null + }); + + dialog.dropdownDialog('open'); + expect(content.hasClass('active')).toBeFalsy(); + + dialog.dropdownDialog('close'); + dialog.dropdownDialog('destroy'); + }); + + it('check if a specified class is added to dialog', function () { + var dialog = $('<div/>'), + uiClass = '.ui-dialog', + ui; + + dialog.dropdownDialog({ + 'defaultDialogClass': 'custom' + }); + + ui = $(uiClass); + expect(ui.hasClass('custom')).toBeTruthy(); + expect(ui.hasClass('mage-dropdown-dialog')).toBeFalsy(); + + dialog.dropdownDialog('destroy'); + + dialog.dropdownDialog({}); + ui = $(uiClass); + expect(ui.hasClass('mage-dropdown-dialog')).toBeTruthy(); + + dialog.dropdownDialog('destroy'); + }); + + it('check if the specified trigger actually opens the dialog', function () { + var opener = $('<div/>'), + dialog = $('<div/>'); + + dialog.dropdownDialog({ + 'triggerTarget': opener + }); + + opener.trigger('click'); + expect(dialog.dropdownDialog('isOpen')).toBeTruthy(); + + dialog.dropdownDialog('close'); + dialog.dropdownDialog('destroy'); + + dialog.dropdownDialog({ + 'triggerTarget': null + }); + + opener.trigger('click'); + expect(dialog.dropdownDialog('isOpen')).toBeFalsy(); + + dialog.dropdownDialog('destroy'); + }); + + it('check if the dialog gets closed when clicking outside of it', function () { + var container = $('<div/>'), + outside = $('<div/>').attr('id', 'outside').appendTo(container), + dialog = $('<div/>').attr('id', 'dialog').appendTo(container); + + container.appendTo('body'); + + dialog.dropdownDialog({ + 'closeOnClickOutside': true + }); + + dialog.dropdownDialog('open'); + outside.trigger('click'); + expect(dialog.dropdownDialog('isOpen')).toBeFalsy(); + + dialog.dropdownDialog('destroy'); + + dialog.dropdownDialog({ + 'closeOnClickOutside': false + }); + + dialog.dropdownDialog('open'); + outside.trigger('click'); + expect(dialog.dropdownDialog('isOpen')).toBeTruthy(); + + dialog.dropdownDialog('destroy'); + }); + + it('check if the dialog gets closed when mouse leaves the dialog area', function () { + var container = $('<div/>'), + dialog = $('<div/>').attr('id', 'dialog').appendTo(container); + + $('<div/>').attr('id', 'outside').appendTo(container); + $('<div/>').attr('id', 'opener').appendTo(container); + + container.appendTo('body'); + + jasmine.clock().install(); + + dialog.dropdownDialog({ + 'closeOnMouseLeave': true + }); + + dialog.dropdownDialog('open'); + dialog.trigger('mouseenter'); + expect(dialog.dropdownDialog('isOpen')).toBeTruthy(); + + dialog.trigger('mouseleave'); + + jasmine.clock().tick(10); + + expect(dialog.dropdownDialog('isOpen')).toBeFalsy(); + dialog.dropdownDialog('destroy'); + + jasmine.clock().uninstall(); + }); + + it('check if the dialog does not close when mouse leaves the dialog area', function () { + var container = $('<div/>'), + dialog = $('<div/>').attr('id', 'dialog').appendTo(container); + + $('<div/>').attr('id', 'outside').appendTo(container); + $('<div/>').attr('id', 'opener').appendTo(container); + + container.appendTo('body'); + + jasmine.clock().install(); + + dialog.dropdownDialog({ + 'closeOnMouseLeave': false + }); + + dialog.dropdownDialog('open'); + dialog.trigger('mouseenter'); + dialog.trigger('mouseleave'); + jasmine.clock().tick(10); + expect(dialog.dropdownDialog('isOpen')).toBeTruthy(); + dialog.dropdownDialog('destroy'); + + jasmine.clock().uninstall(); + }); + + it('check if the dialog gets closed with the specified delay', function (done) { + var container = $('<div/>'), + dialog = $('<div/>').attr('id', 'dialog').appendTo(container); + + $('<div/>').attr('id', 'outside').appendTo(container); + $('<div/>').attr('id', 'opener').appendTo(container); + + container.appendTo('body'); + + dialog.dropdownDialog({ + 'timeout': 5 + }); + + dialog.dropdownDialog('open'); + dialog.trigger('mouseenter'); + dialog.trigger('mouseleave'); + expect(dialog.dropdownDialog('isOpen')).toBeTruthy(); + + setTimeout(function () { + expect(dialog.dropdownDialog('isOpen')).toBeFalsy(); + dialog.dropdownDialog('destroy'); + done(); + }, 6); + }); + + /* + * jQuery ui version 1.9.2 belongs to the adminhtml. + * + * This test will fail on backend since backend's jquery.ui will + * add ui-dialog-titlebar class anyway on create. + */ + if ($.ui.version !== '1.9.2') { + it('check if the title bar is prevented from being created', function () { + var dialog = $('<div/>'), + uiClass = '.ui-dialog', + ui; + + dialog.dropdownDialog({ + 'createTitleBar': true + }); + + ui = $(uiClass); + expect(ui.find('.ui-dialog-titlebar').length > 0).toBeTruthy(); + + dialog.dropdownDialog('destroy'); + + dialog.dropdownDialog({ + 'createTitleBar': false + }); + + ui = $(uiClass); + expect(ui.find('.ui-dialog-titlebar').length <= 0).toBeTruthy(); + + dialog.dropdownDialog('destroy'); + }); + } + + it('check if the position function gets disabled', function () { + var dialog = $('<div/>'), + uiClass = '.ui-dialog', + ui; + + dialog.dropdownDialog({ + 'autoPosition': false + }); + + ui = $(uiClass); + dialog.dropdownDialog('open'); + expect(ui.css('top') === 'auto').toBeTruthy(); + + dialog.dropdownDialog('destroy'); + + dialog.dropdownDialog({ + 'autoPosition': true + }); + + ui = $(uiClass); + dialog.dropdownDialog('open'); + expect(ui.css('top') !== '0px').toBeTruthy(); + + dialog.dropdownDialog('destroy'); + }); + + it('check if the size function gets disabled', function () { + var dialog = $('<div/>'), + uiClass = '.ui-dialog', + ui; + + dialog.dropdownDialog({ + 'autoSize': true, + 'width': '300' + }); + + ui = $(uiClass); + dialog.dropdownDialog('open'); + expect(ui.css('width') === '300px').toBeTruthy(); + + dialog.dropdownDialog('destroy'); + + dialog.dropdownDialog({ + 'autoSize': false, + 'width': '300' + }); + + ui = $(uiClass); + dialog.dropdownDialog('open'); + expect(ui.css('width') === '300px').toBeFalsy(); + + dialog.dropdownDialog('destroy'); + }); + }); +}); diff --git a/dev/tests/js/jasmine/tests/lib/mage/form.test.js b/dev/tests/js/jasmine/tests/lib/mage/form.test.js new file mode 100644 index 0000000000000000000000000000000000000000..6202f93da999af79ac6d7b98267e40ac05e727b2 --- /dev/null +++ b/dev/tests/js/jasmine/tests/lib/mage/form.test.js @@ -0,0 +1,262 @@ +/** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +/* eslint-disable max-nested-callbacks */ +/* jscs:disable jsDoc */ + +define([ + 'jquery', + 'mage/backend/form' +], function ($) { + 'use strict'; + + /* + * jQuery ui version 1.9.2 belongs to the adminhtml. + * + * This test will fail on frontend since mage/backend/form only belongs to backend. + */ + if ($.ui.version === '1.9.2') { + describe('Test for mage/form jQuery plugin', function () { + var id = 'edit_form', + elementId = '#' + id; + + beforeEach(function () { + var element = $('<form id="' + id + '" action="action/url" method="GET" target="_self" ></form>'); + + element.appendTo('body'); + }); + + afterEach(function () { + $(elementId).remove(); + }); + + it('check if form can be initialized', function () { + var form = $(elementId).form(); + + expect(form.is(':mage-form')).toBeTruthy(); + }); + + it('check get handlers', function () { + var form = $(elementId).form(), + handlersData = form.form('option', 'handlersData'), + handlers = []; + + $.each(handlersData, function (key) { + handlers.push(key); + }); + expect(handlers.join(' ')).toBe(form.data('form')._getHandlers().join(' ')); + }); + + it('check store attribute', function () { + var form = $(elementId).form(), + initialFormAttrs = { + action: form.attr('action'), + target: form.attr('target'), + method: form.attr('method') + }; + + form.data('form')._storeAttribute('action'); + form.data('form')._storeAttribute('target'); + form.data('form')._storeAttribute('method'); + + expect(form.data('form').oldAttributes.action).toBe(initialFormAttrs.action); + expect(form.data('form').oldAttributes.target).toBe(initialFormAttrs.target); + expect(form.data('form').oldAttributes.method).toBe(initialFormAttrs.method); + }); + + it('check bind', function () { + var form = $(elementId).form(), + submitted = false, + handlersData = form.form('option', 'handlersData'); + + form.on('submit', function (e) { + submitted = true; + e.stopImmediatePropagation(); + e.preventDefault(); + }); + + $.each(handlersData, function (key) { + form.trigger(key); + expect(submitted).toBeTruthy(); + submitted = false; + }); + + form.off('submit'); + }); + + it('check get action URL', function () { + var form = $(elementId).form(), + action = form.attr('action'), + testUrl = 'new/action/url', + testArgs = { + args: { + arg: 'value' + } + }; + + form.data('form')._storeAttribute('action'); + expect(form.data('form')._getActionUrl(testArgs)).toBe(action + '/arg/value/'); + expect(form.data('form')._getActionUrl(testUrl)).toBe(testUrl); + expect(form.data('form')._getActionUrl()).toBe(action); + }); + + it('check process data', function () { + var form = $(elementId).form(), + initialFormAttrs = { + action: form.attr('action'), + target: form.attr('target'), + method: form.attr('method') + }, + testSimpleData = { + action: 'new/action/url', + target: '_blank', + method: 'POST' + }, + testActionArgsData = { + action: { + args: { + arg: 'value' + } + } + }, + processedData = form.data('form')._processData(testSimpleData); + + expect(form.data('form').oldAttributes.action).toBe(initialFormAttrs.action); + expect(form.data('form').oldAttributes.target).toBe(initialFormAttrs.target); + expect(form.data('form').oldAttributes.method).toBe(initialFormAttrs.method); + expect(processedData.action).toBe(testSimpleData.action); + expect(processedData.target).toBe(testSimpleData.target); + expect(processedData.method).toBe(testSimpleData.method); + + form.data('form')._rollback(); + processedData = form.data('form')._processData(testActionArgsData); + form.data('form')._storeAttribute('action'); + expect(processedData.action).toBe(form.data('form')._getActionUrl(testActionArgsData.action)); + }); + + it('check before submit', function () { + var testForm = $('<form id="test-form"></form>').appendTo('body'), + testHandler = { + action: { + args: { + arg1: 'value1' + } + } + }, + form = $(elementId).form({ + handlersData: { + testHandler: testHandler + } + }), + beforeSubmitData = { + action: { + args: { + arg2: 'value2' + } + }, + target: '_blank' + }, + eventData = { + method: 'POST' + }, + resultData = $.extend(true, {}, testHandler, beforeSubmitData, eventData); + + form.data('form')._storeAttribute('action'); + resultData = form.data('form')._processData(resultData); + testForm.prop(resultData); + + form.on('beforeSubmit', function (e, data) { + $.extend(data, beforeSubmitData); + }); + + form.on('submit', function (e) { + e.stopImmediatePropagation(); + e.preventDefault(); + }); + + form.data('form')._beforeSubmit('testHandler', eventData); + expect(testForm.prop('action')).toBe(form.prop('action')); + expect(testForm.prop('target')).toBe(form.prop('target')); + expect(testForm.prop('method')).toBe(form.prop('method')); + }); + + it('check submit', function () { + var formSubmitted = false, + form = $(elementId).form({ + handlersData: { + save: {} + } + }); + + form.data('form')._storeAttribute('action'); + form.data('form')._storeAttribute('target'); + form.data('form')._storeAttribute('method'); + + form.on('submit', function (e) { + e.preventDefault(); + e.stopImmediatePropagation(); + e.preventDefault(); + formSubmitted = true; + }).prop({ + action: 'new/action/url', + target: '_blank', + method: 'POST' + }); + + form.data('form')._submit({ + type: 'save' + }); + + expect(form.attr('action')).toBe(form.data('form').oldAttributes.action); + expect(form.attr('target')).toBe(form.data('form').oldAttributes.target); + expect(form.attr('method')).toBe(form.data('form').oldAttributes.method); + expect(formSubmitted).toBeTruthy(); + + form.off('submit'); + }); + + it('check build URL', function () { + var dataProvider = [ + { + params: ['http://domain.com//', { + 'key[one]': 'value 1', + 'key2': '# value' + }], + expected: 'http://domain.com/key[one]/value%201/key2/%23%20value/' + }, + { + params: ['http://domain.com', { + 'key[one]': 'value 1', + 'key2': '# value' + }], + expected: 'http://domain.com/key[one]/value%201/key2/%23%20value/' + }, + { + params: ['http://domain.com?some=param', { + 'key[one]': 'value 1', + 'key2': '# value' + }], + expected: 'http://domain.com?some=param&key[one]=value%201&key2=%23%20value' + }, + { + params: ['http://domain.com?some=param&', { + 'key[one]': 'value 1', + 'key2': '# value' + }], + expected: 'http://domain.com?some=param&key[one]=value%201&key2=%23%20value' + } + ], + method = $.mage.form._proto._buildURL, + quantity = dataProvider.length, + i = 0; + + expect(quantity).toBeTruthy(); + + for (i; i < quantity; i++) { + expect(dataProvider[i].expected).toBe(method.apply(null, dataProvider[i].params)); + } + }); + }); + } +}); diff --git a/dev/tests/js/jasmine/tests/lib/mage/loader.test.js b/dev/tests/js/jasmine/tests/lib/mage/loader.test.js new file mode 100644 index 0000000000000000000000000000000000000000..93dd2ee91902c4755fd25161c6e8a8f7ca451aa0 --- /dev/null +++ b/dev/tests/js/jasmine/tests/lib/mage/loader.test.js @@ -0,0 +1,79 @@ +/** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ + +/* eslint-disable max-nested-callbacks */ +define([ + 'jquery', + 'mage/loader' +], function ($) { + 'use strict'; + + describe('mage/loader', function () { + describe('Check loader', function () { + var loaderSelector = '#loader'; + + beforeEach(function () { + var $loader = $('<div id="loader"/>'); + + $('body').append($loader); + }); + + afterEach(function () { + $(loaderSelector).remove(); + $(loaderSelector).loader('destroy'); + }); + + it('Check that loader inited', function () { + var $loader = $(loaderSelector).loader({ + icon: 'icon.gif' + }); + + $loader.loader('show'); + + expect($loader.is(':mage-loader')).toBe(true); + expect($loader.find('p').text()).toBe('Please wait...'); + expect($loader.find('img').prop('src').split('/').pop()).toBe('icon.gif'); + expect($loader.find('img').prop('alt')).toBe('Loading...'); + }); + + it('Body init', function () { + var $loader = $('body').loader(); + + $loader.loader('show'); + + expect($loader.is(':mage-loader')).toBe(true); + $loader.loader('destroy'); + }); + + it('Check show/hide', function () { + var $loader = $(loaderSelector).loader(), + $loadingMask; + + $loader.loader('show'); + $loadingMask = $('.loading-mask'); + expect($loadingMask.is(':visible')).toBe(true); + + $loader.loader('hide'); + expect($loadingMask.is(':hidden')).toBe(true); + + $loader.loader('show'); + $loader.trigger('processStop'); + expect($loadingMask.is(':hidden')).toBe(true); + }); + + it('Check destroy', function () { + var $loader = $(loaderSelector).loader(), + $loadingMask; + + $loader.loader('show'); + $loadingMask = $('.loading-mask'); + expect($loadingMask.is(':visible')).toBe(true); + + $loader.loader('destroy'); + expect($loadingMask.is(':visible')).toBe(false); + }); + }); + }); +}); diff --git a/dev/tests/js/jasmine/tests/lib/mage/menu.test.js b/dev/tests/js/jasmine/tests/lib/mage/menu.test.js new file mode 100644 index 0000000000000000000000000000000000000000..69d8af4ff3dbac9a4cbf544d1dc853cc4290bc8d --- /dev/null +++ b/dev/tests/js/jasmine/tests/lib/mage/menu.test.js @@ -0,0 +1,110 @@ +/** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ + +/* eslint-disable max-nested-callbacks */ +define([ + 'jquery', + 'mage/menu', + 'text!tests/assets/lib/web/mage/menu.html' +], function ($, menu, menuTmpl) { + 'use strict'; + + describe('mage/menu', function () { + describe('Menu expanded', function () { + var menuSelector = '#menu'; + + beforeEach(function () { + var $menu = $(menuTmpl); + + $('body').append($menu); + }); + + afterEach(function () { + $(menuSelector).remove(); + }); + + it('Check that menu expanded', function () { + var $menu = $(menuSelector), + $menuItems = $menu.find('li'), + $submenu = $menuItems.find('ul'); + + menu.menu({ + expanded: true + }, $menu); + expect($submenu.hasClass('expanded')).toBe(true); + }); + }); + + describe('Menu hover event', function () { + var menuSelector = '#menu', + $menu; + + beforeEach(function () { + var $menuObject = $(menuTmpl); + + $('body').append($menuObject); + $menu = $(menuSelector).menu({ + delay: 0, + showDelay: 0, + hideDelay: 0 + }); + }); + + afterEach(function () { + $(menuSelector).remove(); + }); + + it('Check that menu expanded', function (done) { + var $menuItem = $menu.find('li.test-menu-item'), + $submenu = $menuItem.find('ul'); + + $menuItem.trigger('mouseover'); + setTimeout(function () { + expect($submenu.attr('aria-expanded')).toBe('true'); + $menuItem.trigger('mouseout'); + setTimeout(function () { + expect($submenu.attr('aria-expanded')).toBe('false'); + done(); + }, 300); + }, 300); + }); + }); + + describe('Menu navigation', function () { + var menuSelector = '#menu', + $menu; + + beforeEach(function () { + var $menuObject = $(menuTmpl); + + $('body').append($menuObject); + $menu = $(menuSelector).menu(); + }); + + afterEach(function () { + $(menuSelector).remove(); + }); + + it('Check max item limit', function () { + var $menuItems; + + $menu.navigation({ + maxItems: 3 + }); + $menuItems = $menu.find('li:visible'); + + expect($menuItems.length).toBe(4); + }); + + it('Check that More Menu item will be added', function () { + $menu.navigation({ + responsive: 'onResize' + }); + + expect($('body').find('.ui-menu-more').length).toBeGreaterThan(0); + }); + }); + }); +}); diff --git a/dev/tests/js/jasmine/tests/lib/mage/tabs.test.js b/dev/tests/js/jasmine/tests/lib/mage/tabs.test.js new file mode 100644 index 0000000000000000000000000000000000000000..a6138df073434c2e9bf4f12c3c23425ec68976f4 --- /dev/null +++ b/dev/tests/js/jasmine/tests/lib/mage/tabs.test.js @@ -0,0 +1,93 @@ +/** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ + +/* eslint-disable max-nested-callbacks */ +define([ + 'jquery', + 'jquery/ui', + 'mage/tabs', + 'text!tests/assets/lib/web/mage/tabs.html' +], function ($, ui, tabs, tabsTmpl) { + 'use strict'; + + describe('mage/tabs', function () { + var tabsSelector = '#tabs'; + + beforeEach(function () { + var $tabs = $(tabsTmpl); + + $('body').append($tabs); + }); + + afterEach(function () { + $(tabsSelector).remove(); + $(tabsSelector).tabs('destroy'); + }); + + it('Check tabs inited', function () { + var $tabs = $(tabsSelector).tabs(); + + expect($tabs.is(':mage-tabs')).toBe(true); + }); + + it('Check tabs collapsible inited', function () { + var $title1 = $('#title1'), + $title2 = $('#title2'); + + $(tabsSelector).tabs(); + + expect($title1.is(':mage-collapsible')).toBe(true); + expect($title2.is(':mage-collapsible')).toBe(true); + }); + + it('Check tabs active', function () { + var $content1 = $('#content1'), + $content2 = $('#content2'); + + $(tabsSelector).tabs({ + active: 1 + }); + + expect($content1.is(':hidden')).toBe(true); + expect($content2.is(':visible')).toBe(true); + }); + + it('Check tabs closing others tabs when one gets activated', function () { + var $title2 = $('#title2'), + $content1 = $('#content1'), + $content2 = $('#content2'); + + $(tabsSelector).tabs(); + + expect($content1.is(':visible')).toBe(true); + expect($content2.is(':hidden')).toBe(true); + + $title2.trigger('click'); + + expect($content1.is(':hidden')).toBe(true); + expect($content2.is(':visible')).toBe(true); + }); + + it('Check tabs enable,disable,activate,deactivate options', function () { + var $title1 = $('#title1'), + $content1 = $('#content1'), + $tabs = $(tabsSelector).tabs(); + + expect($content1.is(':visible')).toBe(true); + $tabs.tabs('deactivate', 0); + expect($content1.is(':hidden')).toBe(true); + $tabs.tabs('activate', 0); + expect($content1.is(':visible')).toBe(true); + $tabs.tabs('disable', 0); + expect($content1.is(':hidden')).toBe(true); + $title1.trigger('click'); + expect($content1.is(':hidden')).toBe(true); + $tabs.tabs('enable', 0); + expect($content1.is(':visible')).toBe(true); + $title1.trigger('click'); + expect($content1.is(':visible')).toBe(true); + }); + }); +}); diff --git a/dev/tests/js/jasmine/tests/lib/mage/translate-inline.test.js b/dev/tests/js/jasmine/tests/lib/mage/translate-inline.test.js new file mode 100644 index 0000000000000000000000000000000000000000..bcdfc4cc59705dc07ed412b7e7ad4bb4a944f1d6 --- /dev/null +++ b/dev/tests/js/jasmine/tests/lib/mage/translate-inline.test.js @@ -0,0 +1,111 @@ +/** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ + +/* eslint-disable max-nested-callbacks */ +define([ + 'jquery', + 'mage/translate-inline', + 'text!tests/assets/lib/web/mage/translate-inline.html' +], function ($, TranslateInline, translateTmpl) { + 'use strict'; + + describe('mage/translate-inline', function () { + describe('Check translate', function () { + var translateSelector = '[data-role="translate-dialog"]', + translateTemplateSelector = '#translate-form-template'; + + beforeEach(function () { + var translateBlock = $(translateTmpl); + + $('body').append(translateBlock); + }); + + afterEach(function () { + $(translateSelector).remove(); + $(translateSelector).translateInline('destroy'); + $(translateTemplateSelector).remove(); + }); + + it('Check that translate inited', function () { + var translateInline = $(translateSelector).translateInline(); + + expect(translateInline.is(':mage-translateInline')).toBe(true); + }); + + it('Check that translate hidden on init and visible on trigger', function () { + var translateInline = $(translateSelector).translateInline({ + id: 'dialog-id' + }), + isDialogHiddenOnInit = translateInline.is(':hidden'), + dialogVisibleAfterTriggerEdit; + + translateInline.trigger('edit.editTrigger'); + dialogVisibleAfterTriggerEdit = translateInline.is(':visible'); + expect(isDialogHiddenOnInit).toBe(true); + expect(dialogVisibleAfterTriggerEdit).toBe(true); + }); + + it('Check translation form template', function () { + var translateFormId = 'translate-form-id', + translateFormContent = 'New Template Variable', + translateInline = $(translateSelector).translateInline({ + translateForm: { + data: { + id: translateFormId, + newTemplateVariable: translateFormContent + } + } + }), + $translateForm; + + translateInline.trigger('edit.editTrigger'); + $translateForm = $('#' + translateFormId); + + expect($translateForm.length).toBeGreaterThan(0); + expect($translateForm.text()).toBe(translateFormContent); + }); + + it('Check translation submit', function () { + var options = { + ajaxUrl: 'www.test.com', + area: 'test', + translateForm: { + template: '<form id="<%= data.id %>"><input name="test" value="test" /></form>', + data: { + id: 'translate-form-id' + } + } + }, + expectedEequestData = 'area=test&test=test', + translateInline = $(translateSelector).translateInline(options), + $submitButton = $('body').find('.action-primary'), + originalAjax = $.ajax; + + $.ajax = jasmine.createSpy().and.callFake(function (request) { + expect(request.url).toBe(options.ajaxUrl); + expect(request.type).toBe('POST'); + expect(request.data).toBe(expectedEequestData); + + return { + complete: jasmine.createSpy() + }; + }); + + translateInline.trigger('edit.editTrigger'); + $submitButton.trigger('click'); + $.ajax = originalAjax; + }); + + it('Check translation destroy', function () { + var translateInline = $(translateSelector).translateInline(); + + translateInline.trigger('edit.editTrigger'); + expect(translateInline.is(':mage-translateInline')).toBe(true); + translateInline.translateInline('destroy'); + expect(translateInline.is(':mage-translateInline')).toBe(false); + }); + }); + }); +}); diff --git a/dev/tests/js/jasmine/tests/lib/mage/translate.test.js b/dev/tests/js/jasmine/tests/lib/mage/translate.test.js new file mode 100644 index 0000000000000000000000000000000000000000..c87cfa227c1aade2915a73061a2aa037dfd2f6f7 --- /dev/null +++ b/dev/tests/js/jasmine/tests/lib/mage/translate.test.js @@ -0,0 +1,49 @@ +/** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +/* eslint-disable max-nested-callbacks */ +define([ + 'jquery', + 'mage/translate' +], function ($) { + 'use strict'; + + describe('Test for mage/translate jQuery plugin', function () { + it('works with one string as parameter', function () { + $.mage.translate.add('Hello World!'); + expect('Hello World!').toEqual($.mage.translate.translate('Hello World!')); + }); + it('works with one array as parameter', function () { + $.mage.translate.add(['Hello World!', 'Bonjour tout le monde!']); + expect('Hello World!').toEqual($.mage.translate.translate('Hello World!')); + }); + it('works with one object as parameter', function () { + var translation = { + 'Hello World!': 'Bonjour tout le monde!' + }; + + $.mage.translate.add(translation); + expect(translation['Hello World!']).toEqual($.mage.translate.translate('Hello World!')); + + translation = { + 'Hello World!': 'Hallo Welt!', + 'Some text with symbols!-+"%#*': 'Ein Text mit Symbolen!-+"%#*' + }; + + $.mage.translate.add(translation); + $.each(translation, function (key) { + expect(translation[key]).toEqual($.mage.translate.translate(key)); + }); + }); + it('works with two string as parameter', function () { + $.mage.translate.add('Hello World!', 'Bonjour tout le monde!'); + expect('Bonjour tout le monde!').toEqual($.mage.translate.translate('Hello World!')); + }); + it('works with translation alias __', function () { + $.mage.translate.add('Hello World!'); + expect('Hello World!').toEqual($.mage.__('Hello World!')); + }); + }); + +}); diff --git a/dev/tests/js/jasmine/tests/lib/mage/validation.test.js b/dev/tests/js/jasmine/tests/lib/mage/validation.test.js index 12138e5939a7b1bdc487f3a27f7e003930287c48..ccf3591be0dfe7c13c196f0fb2adbe2498a8e55e 100644 --- a/dev/tests/js/jasmine/tests/lib/mage/validation.test.js +++ b/dev/tests/js/jasmine/tests/lib/mage/validation.test.js @@ -255,4 +255,891 @@ define([ }); }); + describe('Testing validate-no-html-tags', function () { + it('validate-no-html-tags', function () { + expect($.validator.methods['validate-no-html-tags'] + .call($.validator.prototype, '')).toEqual(true); + expect($.validator.methods['validate-no-html-tags'] + .call($.validator.prototype, null)).toEqual(true); + expect($.validator.methods['validate-no-html-tags'] + .call($.validator.prototype, 'abc')).toEqual(true); + expect($.validator.methods['validate-no-html-tags'] + .call($.validator.prototype, '<div>abc</div>')).toEqual(false); + }); + }); + + describe('Testing allow-container-className', function () { + it('allow-container-className', function () { + var radio = $('<input type="radio" class="change-container-classname"/>'), + checkbox = $('<input type="checkbox" class="change-container-classname"/>'), + radio2 = $('<input type="radio"/>'), + checkbox2 = $('<input type="checkbox"/>'); + + expect($.validator.methods['allow-container-className'] + .call($.validator.prototype, radio[0])).toEqual(true); + expect($.validator.methods['allow-container-className'] + .call($.validator.prototype, checkbox[0])).toEqual(true); + expect($.validator.methods['allow-container-className'] + .call($.validator.prototype, radio2[0])).toEqual(false); + expect($.validator.methods['allow-container-className'] + .call($.validator.prototype, checkbox2[0])).toEqual(false); + }); + }); + + describe('Testing validate-select', function () { + it('validate-select', function () { + expect($.validator.methods['validate-select'] + .call($.validator.prototype, '')).toEqual(false); + expect($.validator.methods['validate-select'] + .call($.validator.prototype, 'none')).toEqual(false); + expect($.validator.methods['validate-select'] + .call($.validator.prototype, null)).toEqual(false); + expect($.validator.methods['validate-select'] + .call($.validator.prototype, undefined)).toEqual(false); + expect($.validator.methods['validate-select'] + .call($.validator.prototype, 'abc')).toEqual(true); + }); + }); + + describe('Testing validate-no-empty', function () { + it('validate-no-empty', function () { + expect($.validator.methods['validate-no-empty'] + .call($.validator.prototype, '')).toEqual(false); + expect($.validator.methods['validate-no-empty'] + .call($.validator.prototype, null)).toEqual(false); + expect($.validator.methods['validate-no-empty'] + .call($.validator.prototype, undefined)).toEqual(false); + expect($.validator.methods['validate-no-empty'] + .call($.validator.prototype, ' ')).toEqual(false); + expect($.validator.methods['validate-no-empty'] + .call($.validator.prototype, 'test')).toEqual(true); + }); + }); + + describe('Testing validate-alphanum-with-spaces', function () { + it('validate-alphanum-with-spaces', function () { + expect($.validator.methods['validate-alphanum-with-spaces'] + .call($.validator.prototype, '')).toEqual(true); + expect($.validator.methods['validate-alphanum-with-spaces'] + .call($.validator.prototype, null)).toEqual(true); + expect($.validator.methods['validate-alphanum-with-spaces'] + .call($.validator.prototype, undefined)).toEqual(true); + expect($.validator.methods['validate-alphanum-with-spaces'] + .call($.validator.prototype, ' ')).toEqual(true); + expect($.validator.methods['validate-alphanum-with-spaces'] + .call($.validator.prototype, 'abc ')).toEqual(true); + expect($.validator.methods['validate-alphanum-with-spaces'] + .call($.validator.prototype, ' 123 ')).toEqual(true); + expect($.validator.methods['validate-alphanum-with-spaces'] + .call($.validator.prototype, ' abc123 ')).toEqual(true); + expect($.validator.methods['validate-alphanum-with-spaces'] + .call($.validator.prototype, ' !@# ')).toEqual(false); + expect($.validator.methods['validate-alphanum-with-spaces'] + .call($.validator.prototype, ' abc.123 ')).toEqual(false); + }); + }); + + describe('Testing validate-phoneStrict', function () { + it('validate-phoneStrict', function () { + expect($.validator.methods['validate-phoneStrict'] + .call($.validator.prototype, '')).toEqual(true); + expect($.validator.methods['validate-phoneStrict'] + .call($.validator.prototype, null)).toEqual(true); + expect($.validator.methods['validate-phoneStrict'] + .call($.validator.prototype, undefined)).toEqual(true); + expect($.validator.methods['validate-phoneStrict'] + .call($.validator.prototype, ' ')).toEqual(false); + expect($.validator.methods['validate-phoneStrict'] + .call($.validator.prototype, '5121231234')).toEqual(false); + expect($.validator.methods['validate-phoneStrict'] + .call($.validator.prototype, '512.123.1234')).toEqual(false); + expect($.validator.methods['validate-phoneStrict'] + .call($.validator.prototype, '512-123-1234')).toEqual(true); + expect($.validator.methods['validate-phoneStrict'] + .call($.validator.prototype, '(512)123-1234')).toEqual(true); + expect($.validator.methods['validate-phoneStrict'] + .call($.validator.prototype, '(512) 123-1234')).toEqual(true); + }); + }); + + describe('Testing validate-phoneLax', function () { + it('validate-phoneLax', function () { + expect($.validator.methods['validate-phoneLax'] + .call($.validator.prototype, '')).toEqual(true); + expect($.validator.methods['validate-phoneLax'] + .call($.validator.prototype, null)).toEqual(true); + expect($.validator.methods['validate-phoneLax'] + .call($.validator.prototype, undefined)).toEqual(true); + expect($.validator.methods['validate-phoneLax'] + .call($.validator.prototype, ' ')).toEqual(false); + expect($.validator.methods['validate-phoneLax'] + .call($.validator.prototype, '5121231234')).toEqual(true); + expect($.validator.methods['validate-phoneLax'] + .call($.validator.prototype, '512.123.1234')).toEqual(true); + expect($.validator.methods['validate-phoneLax'] + .call($.validator.prototype, '512-123-1234')).toEqual(true); + expect($.validator.methods['validate-phoneLax'] + .call($.validator.prototype, '(512)123-1234')).toEqual(true); + expect($.validator.methods['validate-phoneLax'] + .call($.validator.prototype, '(512) 123-1234')).toEqual(true); + expect($.validator.methods['validate-phoneLax'] + .call($.validator.prototype, '(512)1231234')).toEqual(true); + expect($.validator.methods['validate-phoneLax'] + .call($.validator.prototype, '(512)_123_1234')).toEqual(false); + }); + }); + + describe('Testing validate-fax', function () { + it('validate-fax', function () { + expect($.validator.methods['validate-fax'] + .call($.validator.prototype, '')).toEqual(true); + expect($.validator.methods['validate-fax'] + .call($.validator.prototype, null)).toEqual(true); + expect($.validator.methods['validate-fax'] + .call($.validator.prototype, undefined)).toEqual(true); + expect($.validator.methods['validate-fax'] + .call($.validator.prototype, ' ')).toEqual(false); + expect($.validator.methods['validate-fax'] + .call($.validator.prototype, '5121231234')).toEqual(false); + expect($.validator.methods['validate-fax'] + .call($.validator.prototype, '512.123.1234')).toEqual(false); + expect($.validator.methods['validate-fax'] + .call($.validator.prototype, '512-123-1234')).toEqual(true); + expect($.validator.methods['validate-fax'] + .call($.validator.prototype, '(512)123-1234')).toEqual(true); + expect($.validator.methods['validate-fax'] + .call($.validator.prototype, '(512) 123-1234')).toEqual(true); + }); + }); + + describe('Testing validate-email', function () { + it('validate-email', function () { + expect($.validator.methods['validate-email'] + .call($.validator.prototype, '')).toEqual(true); + expect($.validator.methods['validate-email'] + .call($.validator.prototype, null)).toEqual(true); + expect($.validator.methods['validate-email'] + .call($.validator.prototype, undefined)).toEqual(true); + expect($.validator.methods['validate-email'] + .call($.validator.prototype, ' ')).toEqual(false); + expect($.validator.methods['validate-email'] + .call($.validator.prototype, '123@123.com')).toEqual(true); + expect($.validator.methods['validate-email'] + .call($.validator.prototype, 'abc@124.en')).toEqual(true); + expect($.validator.methods['validate-email'] + .call($.validator.prototype, 'abc@abc.commmmm')).toEqual(true); + expect($.validator.methods['validate-email'] + .call($.validator.prototype, 'abc.abc.abc@abc.commmmm')).toEqual(true); + expect($.validator.methods['validate-email'] + .call($.validator.prototype, 'abc.abc-abc@abc.commmmm')).toEqual(true); + expect($.validator.methods['validate-email'] + .call($.validator.prototype, 'abc.abc_abc@abc.commmmm')).toEqual(true); + expect($.validator.methods['validate-email'] + .call($.validator.prototype, 'abc.abc_abc@abc')).toEqual(false); + }); + }); + + describe('Testing validate-emailSender', function () { + it('validate-emailSender', function () { + expect($.validator.methods['validate-emailSender'] + .call($.validator.prototype, '')).toEqual(true); + expect($.validator.methods['validate-emailSender'] + .call($.validator.prototype, null)).toEqual(true); + expect($.validator.methods['validate-emailSender'] + .call($.validator.prototype, undefined)).toEqual(true); + expect($.validator.methods['validate-emailSender'] + .call($.validator.prototype, ' ')).toEqual(true); + expect($.validator.methods['validate-emailSender'] + .call($.validator.prototype, '123@123.com')).toEqual(true); + expect($.validator.methods['validate-emailSender'] + .call($.validator.prototype, 'abc@124.en')).toEqual(true); + expect($.validator.methods['validate-emailSender'] + .call($.validator.prototype, 'abc@abc.commmmm')).toEqual(true); + expect($.validator.methods['validate-emailSender'] + .call($.validator.prototype, 'abc.abc.abc@abc.commmmm')).toEqual(true); + expect($.validator.methods['validate-emailSender'] + .call($.validator.prototype, 'abc.abc-abc@abc.commmmm')).toEqual(true); + expect($.validator.methods['validate-emailSender'] + .call($.validator.prototype, 'abc.abc_abc@abc.commmmm')).toEqual(true); + }); + }); + + describe('Testing validate-password', function () { + it('validate-password', function () { + expect($.validator.methods['validate-password'] + .call($.validator.prototype, '')).toEqual(true); + expect($.validator.methods['validate-password'] + .call($.validator.prototype, null)).toEqual(false); + expect($.validator.methods['validate-password'] + .call($.validator.prototype, undefined)).toEqual(false); + expect($.validator.methods['validate-password'] + .call($.validator.prototype, ' ')).toEqual(true); + expect($.validator.methods['validate-password'] + .call($.validator.prototype, '123@123.com')).toEqual(true); + expect($.validator.methods['validate-password'] + .call($.validator.prototype, 'abc')).toEqual(false); + expect($.validator.methods['validate-password'] + .call($.validator.prototype, 'abc ')).toEqual(false); + expect($.validator.methods['validate-password'] + .call($.validator.prototype, ' abc ')).toEqual(false); + expect($.validator.methods['validate-password'] + .call($.validator.prototype, 'dddd')).toEqual(false); + }); + }); + + describe('Testing validate-admin-password', function () { + it('validate-admin-password', function () { + expect($.validator.methods['validate-admin-password'] + .call($.validator.prototype, '')).toEqual(true); + expect($.validator.methods['validate-admin-password'] + .call($.validator.prototype, null)).toEqual(false); + expect($.validator.methods['validate-admin-password'] + .call($.validator.prototype, undefined)).toEqual(false); + expect($.validator.methods['validate-admin-password'] + .call($.validator.prototype, ' ')).toEqual(true); + expect($.validator.methods['validate-admin-password'] + .call($.validator.prototype, '123@123.com')).toEqual(true); + expect($.validator.methods['validate-admin-password'] + .call($.validator.prototype, 'abc')).toEqual(false); + expect($.validator.methods['validate-admin-password'] + .call($.validator.prototype, 'abc ')).toEqual(false); + expect($.validator.methods['validate-admin-password'] + .call($.validator.prototype, ' abc ')).toEqual(false); + expect($.validator.methods['validate-admin-password'] + .call($.validator.prototype, 'dddd')).toEqual(false); + }); + }); + + describe('Testing validate-url', function () { + it('validate-url', function () { + expect($.validator.methods['validate-url'] + .call($.validator.prototype, '')).toEqual(true); + expect($.validator.methods['validate-url'] + .call($.validator.prototype, null)).toEqual(true); + expect($.validator.methods['validate-url'] + .call($.validator.prototype, undefined)).toEqual(true); + expect($.validator.methods['validate-url'] + .call($.validator.prototype, ' ')).toEqual(false); + expect($.validator.methods['validate-url'] + .call($.validator.prototype, 'http://www.google.com')).toEqual(true); + expect($.validator.methods['validate-url'] + .call($.validator.prototype, 'http://127.0.0.1:8080/index.php')).toEqual(true); + expect($.validator.methods['validate-url'] + .call($.validator.prototype, 'http://app-spot.com/index.php')).toEqual(true); + expect($.validator.methods['validate-url'] + .call($.validator.prototype, 'http://app-spot_space.com/index.php')).toEqual(true); + }); + }); + + describe('Testing validate-clean-url', function () { + it('validate-clean-url', function () { + expect($.validator.methods['validate-clean-url'] + .call($.validator.prototype, '')).toEqual(true); + expect($.validator.methods['validate-clean-url'] + .call($.validator.prototype, null)).toEqual(true); + expect($.validator.methods['validate-clean-url'] + .call($.validator.prototype, undefined)).toEqual(true); + expect($.validator.methods['validate-clean-url'] + .call($.validator.prototype, ' ')).toEqual(false); + expect($.validator.methods['validate-clean-url'] + .call($.validator.prototype, 'http://www.google.com')).toEqual(true); + expect($.validator.methods['validate-clean-url'] + .call($.validator.prototype, 'http://127.0.0.1:8080/index.php')).toEqual(false); + expect($.validator.methods['validate-clean-url'] + .call($.validator.prototype, 'http://127.0.0.1:8080')).toEqual(false); + expect($.validator.methods['validate-clean-url'] + .call($.validator.prototype, 'http://127.0.0.1')).toEqual(false); + }); + }); + + describe('Testing validate-xml-identifier', function () { + it('validate-xml-identifier', function () { + expect($.validator.methods['validate-xml-identifier'] + .call($.validator.prototype, '')).toEqual(true); + expect($.validator.methods['validate-xml-identifier'] + .call($.validator.prototype, null)).toEqual(true); + expect($.validator.methods['validate-xml-identifier'] + .call($.validator.prototype, undefined)).toEqual(true); + expect($.validator.methods['validate-xml-identifier'] + .call($.validator.prototype, ' ')).toEqual(false); + expect($.validator.methods['validate-xml-identifier'] + .call($.validator.prototype, 'abc')).toEqual(true); + expect($.validator.methods['validate-xml-identifier'] + .call($.validator.prototype, 'abc_123')).toEqual(true); + expect($.validator.methods['validate-xml-identifier'] + .call($.validator.prototype, 'abc-123')).toEqual(true); + expect($.validator.methods['validate-xml-identifier'] + .call($.validator.prototype, '123-abc')).toEqual(false); + }); + }); + + describe('Testing validate-ssn', function () { + it('validate-ssn', function () { + expect($.validator.methods['validate-ssn'] + .call($.validator.prototype, '')).toEqual(true); + expect($.validator.methods['validate-ssn'] + .call($.validator.prototype, null)).toEqual(true); + expect($.validator.methods['validate-ssn'] + .call($.validator.prototype, undefined)).toEqual(true); + expect($.validator.methods['validate-ssn'] + .call($.validator.prototype, ' ')).toEqual(false); + expect($.validator.methods['validate-ssn'] + .call($.validator.prototype, 'abc')).toEqual(false); + expect($.validator.methods['validate-ssn'] + .call($.validator.prototype, '123-13-1234')).toEqual(true); + expect($.validator.methods['validate-ssn'] + .call($.validator.prototype, '012-12-1234')).toEqual(true); + expect($.validator.methods['validate-ssn'] + .call($.validator.prototype, '23-12-1234')).toEqual(false); + }); + }); + + describe('Testing validate-zip-us', function () { + it('validate-zip-us', function () { + expect($.validator.methods['validate-zip-us'] + .call($.validator.prototype, '')).toEqual(true); + expect($.validator.methods['validate-zip-us'] + .call($.validator.prototype, null)).toEqual(true); + expect($.validator.methods['validate-zip-us'] + .call($.validator.prototype, undefined)).toEqual(true); + expect($.validator.methods['validate-zip-us'] + .call($.validator.prototype, ' ')).toEqual(false); + expect($.validator.methods['validate-zip-us'] + .call($.validator.prototype, '12345-1234')).toEqual(true); + expect($.validator.methods['validate-zip-us'] + .call($.validator.prototype, '02345')).toEqual(true); + expect($.validator.methods['validate-zip-us'] + .call($.validator.prototype, '1234')).toEqual(false); + expect($.validator.methods['validate-zip-us'] + .call($.validator.prototype, '1234-1234')).toEqual(false); + }); + }); + + describe('Testing validate-date-au', function () { + it('validate-date-au', function () { + expect($.validator.methods['validate-date-au'] + .call($.validator.prototype, '')).toEqual(true); + expect($.validator.methods['validate-date-au'] + .call($.validator.prototype, null)).toEqual(true); + expect($.validator.methods['validate-date-au'] + .call($.validator.prototype, undefined)).toEqual(true); + expect($.validator.methods['validate-date-au'] + .call($.validator.prototype, ' ')).toEqual(false); + expect($.validator.methods['validate-date-au'] + .call($.validator.prototype, '01/01/2012')).toEqual(true); + expect($.validator.methods['validate-date-au'] + .call($.validator.prototype, '30/01/2012')).toEqual(true); + expect($.validator.methods['validate-date-au'] + .call($.validator.prototype, '01/30/2012')).toEqual(false); + expect($.validator.methods['validate-date-au'] + .call($.validator.prototype, '1/1/2012')).toEqual(false); + }); + }); + + describe('Testing validate-currency-dollar', function () { + it('validate-currency-dollar', function () { + expect($.validator.methods['validate-currency-dollar'] + .call($.validator.prototype, '')).toEqual(true); + expect($.validator.methods['validate-currency-dollar'] + .call($.validator.prototype, null)).toEqual(true); + expect($.validator.methods['validate-currency-dollar'] + .call($.validator.prototype, undefined)).toEqual(true); + expect($.validator.methods['validate-currency-dollar'] + .call($.validator.prototype, ' ')).toEqual(false); + expect($.validator.methods['validate-currency-dollar'] + .call($.validator.prototype, '$123')).toEqual(true); + expect($.validator.methods['validate-currency-dollar'] + .call($.validator.prototype, '$1,123.00')).toEqual(true); + expect($.validator.methods['validate-currency-dollar'] + .call($.validator.prototype, '$1234')).toEqual(true); + expect($.validator.methods['validate-currency-dollar'] + .call($.validator.prototype, '$1234.1234')).toEqual(false); + }); + }); + + describe('Testing validate-not-negative-number', function () { + it('validate-not-negative-number', function () { + expect($.validator.methods['validate-not-negative-number'] + .call($.validator.prototype, '')).toEqual(true); + expect($.validator.methods['validate-not-negative-number'] + .call($.validator.prototype, null)).toEqual(true); + expect($.validator.methods['validate-not-negative-number'] + .call($.validator.prototype, undefined)).toEqual(true); + expect($.validator.methods['validate-not-negative-number'] + .call($.validator.prototype, ' ')).toEqual(false); + expect($.validator.methods['validate-not-negative-number'] + .call($.validator.prototype, '0')).toEqual(true); + expect($.validator.methods['validate-not-negative-number'] + .call($.validator.prototype, '1')).toEqual(true); + expect($.validator.methods['validate-not-negative-number'] + .call($.validator.prototype, '1234')).toEqual(true); + expect($.validator.methods['validate-not-negative-number'] + .call($.validator.prototype, '1,234.1234')).toEqual(true); + expect($.validator.methods['validate-not-negative-number'] + .call($.validator.prototype, '-1')).toEqual(false); + expect($.validator.methods['validate-not-negative-number'] + .call($.validator.prototype, '-1e')).toEqual(false); + expect($.validator.methods['validate-not-negative-number'] + .call($.validator.prototype, '-1,234.1234')).toEqual(false); + }); + }); + + describe('Testing validate-greater-than-zero', function () { + it('validate-greater-than-zero', function () { + expect($.validator.methods['validate-greater-than-zero'] + .call($.validator.prototype, '')).toEqual(true); + expect($.validator.methods['validate-greater-than-zero'] + .call($.validator.prototype, null)).toEqual(true); + expect($.validator.methods['validate-greater-than-zero'] + .call($.validator.prototype, undefined)).toEqual(true); + expect($.validator.methods['validate-greater-than-zero'] + .call($.validator.prototype, ' ')).toEqual(false); + expect($.validator.methods['validate-greater-than-zero'] + .call($.validator.prototype, '0')).toEqual(false); + expect($.validator.methods['validate-greater-than-zero'] + .call($.validator.prototype, '1')).toEqual(true); + expect($.validator.methods['validate-greater-than-zero'] + .call($.validator.prototype, '1234')).toEqual(true); + expect($.validator.methods['validate-greater-than-zero'] + .call($.validator.prototype, '1,234.1234')).toEqual(true); + expect($.validator.methods['validate-greater-than-zero'] + .call($.validator.prototype, '-1')).toEqual(false); + expect($.validator.methods['validate-greater-than-zero'] + .call($.validator.prototype, '-1e')).toEqual(false); + expect($.validator.methods['validate-greater-than-zero'] + .call($.validator.prototype, '-1,234.1234')).toEqual(false); + }); + }); + + describe('Testing validate-css-length', function () { + it('validate-css-length', function () { + expect($.validator.methods['validate-css-length'] + .call($.validator.prototype, '')).toEqual(true); + expect($.validator.methods['validate-css-length'] + .call($.validator.prototype, null)).toEqual(false); + expect($.validator.methods['validate-css-length'] + .call($.validator.prototype, undefined)).toEqual(false); + expect($.validator.methods['validate-css-length'] + .call($.validator.prototype, ' ')).toEqual(false); + expect($.validator.methods['validate-css-length'] + .call($.validator.prototype, '0')).toEqual(true); + expect($.validator.methods['validate-css-length'] + .call($.validator.prototype, '1')).toEqual(true); + expect($.validator.methods['validate-css-length'] + .call($.validator.prototype, '1234')).toEqual(true); + expect($.validator.methods['validate-css-length'] + .call($.validator.prototype, '1,234.1234')).toEqual(false); + expect($.validator.methods['validate-css-length'] + .call($.validator.prototype, '-1')).toEqual(false); + expect($.validator.methods['validate-css-length'] + .call($.validator.prototype, '-1e')).toEqual(false); + expect($.validator.methods['validate-css-length'] + .call($.validator.prototype, '-1,234.1234')).toEqual(false); + }); + }); + + describe('Testing validate-data', function () { + it('validate-data', function () { + expect($.validator.methods['validate-data'] + .call($.validator.prototype, '')).toEqual(true); + expect($.validator.methods['validate-data'] + .call($.validator.prototype, null)).toEqual(true); + expect($.validator.methods['validate-data'] + .call($.validator.prototype, undefined)).toEqual(true); + expect($.validator.methods['validate-data'] + .call($.validator.prototype, ' ')).toEqual(false); + expect($.validator.methods['validate-data'] + .call($.validator.prototype, '123abc')).toEqual(false); + expect($.validator.methods['validate-data'] + .call($.validator.prototype, 'abc')).toEqual(true); + expect($.validator.methods['validate-data'] + .call($.validator.prototype, ' abc')).toEqual(false); + expect($.validator.methods['validate-data'] + .call($.validator.prototype, 'abc123')).toEqual(true); + expect($.validator.methods['validate-data'] + .call($.validator.prototype, 'abc-123')).toEqual(false); + }); + }); + + describe('Testing validate-one-required-by-name', function () { + it('validate-one-required-by-name', function () { + var radio = $('<input type="radio" name="radio"/>'), + radio2 = $('<input type="radio" name="radio" checked/>'), + checkbox = $('<input type="checkbox" name="checkbox"/>'), + checkbox2 = $('<input type="checkbox" name="checkbox" checked/>'), + $test = $('<div id="test-block" />'), + prevForm = $.validator.prototype.currentForm; + + $.validator.prototype.currentForm = $test[0]; + + $test.append(radio); + expect($.validator.methods['validate-one-required-by-name'] + .call($.validator.prototype, null, radio[0], true)).toEqual(false); + $test.append(radio2); + expect($.validator.methods['validate-one-required-by-name'] + .call($.validator.prototype, null, radio2[0], true)).toEqual(true); + $test.append(checkbox); + expect($.validator.methods['validate-one-required-by-name'] + .call($.validator.prototype, null, checkbox[0], true)).toEqual(false); + $test.append(checkbox2); + expect($.validator.methods['validate-one-required-by-name'] + .call($.validator.prototype, null, checkbox2[0], true)).toEqual(true); + + $.validator.prototype.currentForm = prevForm; + }); + }); + + describe('Testing less-than-equals-to', function () { + it('less-than-equals-to', function () { + var elm1 = $('<input type="text" value="6" id="element1" />'), + elm2 = $('<input type="text" value="5" id="element2" />'), + elm3 = $('<input type="text" id="element3" />'), + elm4 = $('<input type="text" value=5 id="element4" />'), + elm5 = $('<input type="text" id="element6" />'), + elm6 = $('<input type="text" value=6 id="element5" />'), + elm7 = $('<input type="text" value=20 id="element7" />'), + elm8 = $('<input type="text" value=100 id="element8" />'); + + expect($.validator.methods['less-than-equals-to'] + .call($.validator.prototype, elm1[0].value, elm1, elm2)).toEqual(false); + elm1[0].value = 4; + expect($.validator.methods['less-than-equals-to'] + .call($.validator.prototype, elm1[0].value, elm1, elm2)).toEqual(true); + expect($.validator.methods['less-than-equals-to'] + .call($.validator.prototype, elm3[0].value, elm3, elm4)).toEqual(true); + expect($.validator.methods['less-than-equals-to'] + .call($.validator.prototype, elm5[0].value, elm5, elm6)).toEqual(true); + expect($.validator.methods['less-than-equals-to'] + .call($.validator.prototype, elm7[0].value, elm7, elm8)).toEqual(true); + }); + }); + + describe('Testing greater-than-equals-to', function () { + it('greater-than-equals-to', function () { + var elm1 = $('<input type="text" value=6 id="element1" />'), + elm2 = $('<input type="text" value=7 id="element2" />'), + elm3 = $('<input type="text" id="element3" />'), + elm4 = $('<input type="text" value=5 id="element4" />'), + elm5 = $('<input type="text" id="element6" />'), + elm6 = $('<input type="text" value=6 id="element5" />'), + elm7 = $('<input type="text" value=100 id="element7" />'), + elm8 = $('<input type="text" value=20 id="element8" />'); + + expect($.validator.methods['greater-than-equals-to'] + .call($.validator.prototype, elm1[0].value, elm1, elm2)).toEqual(false); + elm1[0].value = 9; + expect($.validator.methods['greater-than-equals-to'] + .call($.validator.prototype, elm1[0].value, elm1, elm2)).toEqual(true); + expect($.validator.methods['greater-than-equals-to'] + .call($.validator.prototype, elm3[0].value, elm3, elm4)).toEqual(true); + expect($.validator.methods['greater-than-equals-to'] + .call($.validator.prototype, elm5[0].value, elm5, elm6)).toEqual(true); + expect($.validator.methods['greater-than-equals-to'] + .call($.validator.prototype, elm7[0].value, elm7, elm8)).toEqual(true); + }); + }); + + describe('Testing validate-cc-type-select', function () { + it('validate-cc-type-select', function () { + var visaValid = $('<input id="visa-valid" type="text" value="4916808263499650"/>'), + visaInvalid = $('<input id="visa-invalid" type="text" value="1234567890123456"/>'), + mcValid = $('<input id="mc-valid" type="text" value="5203731841177490"/>'), + mcInvalid = $('<input id="mc-invalid" type="text" value="1111222233334444"/>'), + aeValid = $('<input id="ae-valid" type="text" value="376244899619217"/>'), + aeInvalid = $('<input id="ae-invalid" type="text" value="123451234512345"/>'), + diValid = $('<input id="di-valid" type="text" value="6011050000000009"/>'), + diInvalid = $('<input id="di-invalid" type="text" value="6011199900000005"/>'), + dnValid = $('<input id="dn-valid" type="text" value="3095434000000001"/>'), + dnInvalid = $('<input id="dn-invalid" type="text" value="3799999900000003"/>'), + jcbValid = $('<input id="jcb-valid" type="text" value="3528000000000007"/>'), + jcbInvalid = $('<input id="jcb-invalid" type="text" value="359000001111118"/>'); + + expect($.validator.methods['validate-cc-type-select'] + .call($.validator.prototype, 'VI', null, visaValid)).toEqual(true); + expect($.validator.methods['validate-cc-type-select'] + .call($.validator.prototype, 'VI', null, visaInvalid)).toEqual(false); + expect($.validator.methods['validate-cc-type-select'] + .call($.validator.prototype, 'MC', null, mcValid)).toEqual(true); + expect($.validator.methods['validate-cc-type-select'] + .call($.validator.prototype, 'MC', null, mcInvalid)).toEqual(false); + expect($.validator.methods['validate-cc-type-select'] + .call($.validator.prototype, 'AE', null, aeValid)).toEqual(true); + expect($.validator.methods['validate-cc-type-select'] + .call($.validator.prototype, 'AE', null, aeInvalid)).toEqual(false); + expect($.validator.methods['validate-cc-type-select'] + .call($.validator.prototype, 'DI', null, diValid)).toEqual(true); + expect($.validator.methods['validate-cc-type-select'] + .call($.validator.prototype, 'DI', null, diInvalid)).toEqual(false); + expect($.validator.methods['validate-cc-type-select'] + .call($.validator.prototype, 'DN', null, dnValid)).toEqual(true); + expect($.validator.methods['validate-cc-type-select'] + .call($.validator.prototype, 'DN', null, dnInvalid)).toEqual(false); + expect($.validator.methods['validate-cc-type-select'] + .call($.validator.prototype, 'JCB', null, jcbValid)).toEqual(true); + expect($.validator.methods['validate-cc-type-select'] + .call($.validator.prototype, 'JCB', null, jcbInvalid)).toEqual(false); + }); + }); + + describe('Testing validate-cc-number', function () { + it('validate-cc-number', function () { + expect($.validator.methods['validate-cc-number'] + .call($.validator.prototype, '4916835098995909', null, null)).toEqual(true); + expect($.validator.methods['validate-cc-number'] + .call($.validator.prototype, '5265071363284878', null, null)).toEqual(true); + expect($.validator.methods['validate-cc-number'] + .call($.validator.prototype, '6011120623356953', null, null)).toEqual(true); + expect($.validator.methods['validate-cc-number'] + .call($.validator.prototype, '371293266574617', null, null)).toEqual(true); + expect($.validator.methods['validate-cc-number'] + .call($.validator.prototype, '4916835098995901', null, null)).toEqual(false); + expect($.validator.methods['validate-cc-number'] + .call($.validator.prototype, '5265071363284870', null, null)).toEqual(false); + expect($.validator.methods['validate-cc-number'] + .call($.validator.prototype, '6011120623356951', null, null)).toEqual(false); + expect($.validator.methods['validate-cc-number'] + .call($.validator.prototype, '371293266574619', null, null)).toEqual(false); + expect($.validator.methods['validate-cc-number'] + .call($.validator.prototype, '2221220000000003', null, null)).toEqual(true); + expect($.validator.methods['validate-cc-number'] + .call($.validator.prototype, '2721220000000008', null, null)).toEqual(true); + expect($.validator.methods['validate-cc-number'] + .call($.validator.prototype, '601109020000000003', null, null)).toEqual(true); + expect($.validator.methods['validate-cc-number'] + .call($.validator.prototype, '6011111144444444', null, null)).toEqual(true); + expect($.validator.methods['validate-cc-number'] + .call($.validator.prototype, '6011222233334444', null, null)).toEqual(true); + expect($.validator.methods['validate-cc-number'] + .call($.validator.prototype, '6011522233334447', null, null)).toEqual(true); + expect($.validator.methods['validate-cc-number'] + .call($.validator.prototype, '601174455555553', null, null)).toEqual(true); + expect($.validator.methods['validate-cc-number'] + .call($.validator.prototype, '6011745555555550', null, null)).toEqual(true); + expect($.validator.methods['validate-cc-number'] + .call($.validator.prototype, '601177455555556', null, null)).toEqual(true); + expect($.validator.methods['validate-cc-number'] + .call($.validator.prototype, '601182455555556', null, null)).toEqual(true); + expect($.validator.methods['validate-cc-number'] + .call($.validator.prototype, '601187999555558', null, null)).toEqual(true); + expect($.validator.methods['validate-cc-number'] + .call($.validator.prototype, '601287999555556', null, null)).toEqual(true); + expect($.validator.methods['validate-cc-number'] + .call($.validator.prototype, '6444444444444443', null, null)).toEqual(true); + expect($.validator.methods['validate-cc-number'] + .call($.validator.prototype, '6644444444444441', null, null)).toEqual(true); + expect($.validator.methods['validate-cc-number'] + .call($.validator.prototype, '3044444444444444', null, null)).toEqual(true); + expect($.validator.methods['validate-cc-number'] + .call($.validator.prototype, '3064444444444449', null, null)).toEqual(true); + expect($.validator.methods['validate-cc-number'] + .call($.validator.prototype, '3095444444444442', null, null)).toEqual(true); + expect($.validator.methods['validate-cc-number'] + .call($.validator.prototype, '3096444444444441', null, null)).toEqual(true); + expect($.validator.methods['validate-cc-number'] + .call($.validator.prototype, '3696444444444445', null, null)).toEqual(true); + expect($.validator.methods['validate-cc-number'] + .call($.validator.prototype, '3796444444444444', null, null)).toEqual(true); + expect($.validator.methods['validate-cc-number'] + .call($.validator.prototype, '3896444444444443', null, null)).toEqual(true); + expect($.validator.methods['validate-cc-number'] + .call($.validator.prototype, '3528444444444449', null, null)).toEqual(true); + expect($.validator.methods['validate-cc-number'] + .call($.validator.prototype, '3529444444444448', null, null)).toEqual(true); + expect($.validator.methods['validate-cc-number'] + .call($.validator.prototype, '6221262244444440', null, null)).toEqual(true); + expect($.validator.methods['validate-cc-number'] + .call($.validator.prototype, '6229981111111111', null, null)).toEqual(true); + expect($.validator.methods['validate-cc-number'] + .call($.validator.prototype, '6249981111111117', null, null)).toEqual(true); + expect($.validator.methods['validate-cc-number'] + .call($.validator.prototype, '6279981111111110', null, null)).toEqual(true); + expect($.validator.methods['validate-cc-number'] + .call($.validator.prototype, '6282981111111115', null, null)).toEqual(true); + expect($.validator.methods['validate-cc-number'] + .call($.validator.prototype, '6289981111111118', null, null)).toEqual(true); + }); + }); + + describe('Testing validate-cc-type', function () { + it('validate-cc-type', function () { + var select = $('<select id="cc-type">' + + '<option value="">' + + '</option><option value="VI">' + + '</option><option value="MC">' + + '</option><option value="AE">' + + '</option><option value="DI">' + + '</option><option value="DN">' + + '</option><option value="JCB">' + + '</option><option value="UP">' + + '</option>' + + '</select>'); + + select.val('VI'); + expect($.validator.methods['validate-cc-type'] + .call($.validator.prototype, '4916835098995909', null, select)).toEqual(true); + expect($.validator.methods['validate-cc-type'] + .call($.validator.prototype, '5265071363284878', null, select)).toEqual(false); + + select.val('MC'); + expect($.validator.methods['validate-cc-type'] + .call($.validator.prototype, '5265071363284878', null, select)).toEqual(true); + expect($.validator.methods['validate-cc-type'] + .call($.validator.prototype, '4916835098995909', null, select)).toEqual(false); + + select.val('AE'); + expect($.validator.methods['validate-cc-type'] + .call($.validator.prototype, '371293266574617', null, select)).toEqual(true); + expect($.validator.methods['validate-cc-type'] + .call($.validator.prototype, '5265071363284878', null, select)).toEqual(false); + + select.val('DI'); + expect($.validator.methods['validate-cc-type'] + .call($.validator.prototype, '6011050000000009', null, select)).toEqual(true); + expect($.validator.methods['validate-cc-type'] + .call($.validator.prototype, '371293266574617', null, select)).toEqual(false); + + select.val('DN'); + expect($.validator.methods['validate-cc-type'] + .call($.validator.prototype, '3095434000000001', null, select)).toEqual(true); + expect($.validator.methods['validate-cc-type'] + .call($.validator.prototype, '6011050000000009', null, select)).toEqual(false); + + select.val('JCB'); + expect($.validator.methods['validate-cc-type'] + .call($.validator.prototype, '3528000000000007', null, select)).toEqual(true); + expect($.validator.methods['validate-cc-type'] + .call($.validator.prototype, '3095434000000001', null, select)).toEqual(false); + }); + }); + + describe('Testing validate-cc-exp', function () { + it('validate-cc-exp', function () { + var year = $('<input id="year" type="text" value="4916808263499650"/>'), + currentTime = new Date(), + currentMonth = currentTime.getMonth() + 1, + currentYear = currentTime.getFullYear(); + + year.val(currentYear); + + if (currentMonth > 1) { + expect($.validator.methods['validate-cc-exp'] + .call($.validator.prototype, currentMonth - 1, null, year)).toEqual(false); + } + expect($.validator.methods['validate-cc-exp'] + .call($.validator.prototype, currentMonth, null, year)).toEqual(true); + year.val(currentYear + 1); + expect($.validator.methods['validate-cc-exp'] + .call($.validator.prototype, currentMonth, null, year)).toEqual(true); + }); + }); + + describe('Testing validate-cc-cvn', function () { + it('validate-cc-cvn', function () { + var ccType = $('<select id="cc-type">' + + '<option value=""></option>' + + '<option value="VI"></option>' + + '<option value="MC"></option>' + + '<option value="AE"></option>' + + '<option value="DI"></option>' + + '</select>'); + + ccType.val('VI'); + expect($.validator.methods['validate-cc-cvn'] + .call($.validator.prototype, '123', null, ccType)).toEqual(true); + expect($.validator.methods['validate-cc-cvn'] + .call($.validator.prototype, '1234', null, ccType)).toEqual(false); + + ccType.val('MC'); + expect($.validator.methods['validate-cc-cvn'] + .call($.validator.prototype, '123', null, ccType)).toEqual(true); + expect($.validator.methods['validate-cc-cvn'] + .call($.validator.prototype, '1234', null, ccType)).toEqual(false); + + ccType.val('AE'); + expect($.validator.methods['validate-cc-cvn'] + .call($.validator.prototype, '1234', null, ccType)).toEqual(true); + expect($.validator.methods['validate-cc-cvn'] + .call($.validator.prototype, '123', null, ccType)).toEqual(false); + + ccType.val('DI'); + expect($.validator.methods['validate-cc-cvn'] + .call($.validator.prototype, '123', null, ccType)).toEqual(true); + expect($.validator.methods['validate-cc-cvn'] + .call($.validator.prototype, '1234', null, ccType)).toEqual(false); + }); + }); + + describe('Testing validate-number-range', function () { + it('validate-number-range', function () { + var el1 = $('<input type="text" value="" ' + + 'class="validate-number-range number-range-10-20 number-range-10-100.20">').get(0); + + expect($.validator.methods['validate-number-range'] + .call($.validator.prototype, '-1', null, null)).toEqual(true); + expect($.validator.methods['validate-number-range'] + .call($.validator.prototype, '1', null, null)).toEqual(true); + expect($.validator.methods['validate-number-range'] + .call($.validator.prototype, '', null, null)).toEqual(true); + expect($.validator.methods['validate-number-range'] + .call($.validator.prototype, null, null, null)).toEqual(true); + expect($.validator.methods['validate-number-range'] + .call($.validator.prototype, '0', null, null)).toEqual(true); + expect($.validator.methods['validate-number-range'] + .call($.validator.prototype, 'asds', null, null)).toEqual(false); + expect($.validator.methods['validate-number-range'] + .call($.validator.prototype, '10', null, '10-20.06')).toEqual(true); + expect($.validator.methods['validate-number-range'] + .call($.validator.prototype, '15', null, '10-20.06')).toEqual(true); + expect($.validator.methods['validate-number-range'] + .call($.validator.prototype, '1', null, '10-20.06')).toEqual(false); + expect($.validator.methods['validate-number-range'] + .call($.validator.prototype, '30', null, '10-20.06')).toEqual(false); + expect($.validator.methods['validate-number-range'] + .call($.validator.prototype, '10', el1, null)).toEqual(true); + expect($.validator.methods['validate-number-range'] + .call($.validator.prototype, '15', el1, null)).toEqual(true); + expect($.validator.methods['validate-number-range'] + .call($.validator.prototype, '1', el1, null)).toEqual(false); + expect($.validator.methods['validate-number-range'] + .call($.validator.prototype, '30', el1, null)).toEqual(true); + }); + }); + + describe('Testing validate-digits-range', function () { + it('validate-digits-range', function () { + var el1 = $('<input type="text" value="" ' + + 'class="validate-digits-range digits-range-10-20 digits-range-10-100.20">').get(0); + + expect($.validator.methods['validate-digits-range'] + .call($.validator.prototype, '-1', null, null)).toEqual(true); + expect($.validator.methods['validate-digits-range'] + .call($.validator.prototype, '1', null, null)).toEqual(true); + expect($.validator.methods['validate-digits-range'] + .call($.validator.prototype, '', null, null)).toEqual(true); + expect($.validator.methods['validate-digits-range'] + .call($.validator.prototype, null, null, null)).toEqual(true); + expect($.validator.methods['validate-digits-range'] + .call($.validator.prototype, '0', null, null)).toEqual(true); + expect($.validator.methods['validate-digits-range'] + .call($.validator.prototype, 'asds', null, null)).toEqual(false); + expect($.validator.methods['validate-digits-range'] + .call($.validator.prototype, '10', null, '10-20')).toEqual(true); + expect($.validator.methods['validate-digits-range'] + .call($.validator.prototype, '15', null, '10-20')).toEqual(true); + expect($.validator.methods['validate-digits-range'] + .call($.validator.prototype, '1', null, '10-20')).toEqual(false); + expect($.validator.methods['validate-digits-range'] + .call($.validator.prototype, '30', null, '10-20')).toEqual(false); + expect($.validator.methods['validate-digits-range'] + .call($.validator.prototype, '30', null, '10-20.06')).toEqual(false); + expect($.validator.methods['validate-digits-range'] + .call($.validator.prototype, '10', el1, null)).toEqual(true); + expect($.validator.methods['validate-digits-range'] + .call($.validator.prototype, '15', el1, null)).toEqual(true); + expect($.validator.methods['validate-digits-range'] + .call($.validator.prototype, '1', el1, null)).toEqual(false); + expect($.validator.methods['validate-digits-range'] + .call($.validator.prototype, '30', el1, null)).toEqual(false); + }); + }); }); diff --git a/lib/web/jquery/jstree/jquery.jstree.js b/lib/web/jquery/jstree/jquery.jstree.js index e2f6330ba45eb0ea6d74ed49a065d6745dac3c6c..4671256b4207bc09e4c9e5d993cd59109145ac4e 100644 --- a/lib/web/jquery/jstree/jquery.jstree.js +++ b/lib/web/jquery/jstree/jquery.jstree.js @@ -28,7 +28,7 @@ "use strict"; // top wrapper to prevent multiple inclusion (is this OK?) -(function () { if(jQuery && jQuery.jstree) { return; } +(function () { var is_ie6 = false, is_ie7 = false, is_ff2 = false; /* diff --git a/lib/web/mage/collapsible.js b/lib/web/mage/collapsible.js index 0d8cf836c198e1019203913f4efbdc0e67f5763c..267734605f141a0e13d5b8106b9cd02fff9ce236 100644 --- a/lib/web/mage/collapsible.js +++ b/lib/web/mage/collapsible.js @@ -243,7 +243,7 @@ define([ }); // For collapsible widget only (not tabs or accordion) - if (this.header.parent().attr('role') != 'presentation') { //eslint-disable-line eqeqeq + if (this.header.parent().attr('role') !== 'presentation') { this.header .parent() .attr('role', 'tablist'); @@ -316,9 +316,9 @@ define([ * Disable. */ disable: function () { + this.options.disabled = true; this._off(this.trigger); this.forceDeactivate(); - this.options.disabled = true; if (this.options.disabledState) { this.element.addClass(this.options.disabledState); @@ -330,12 +330,14 @@ define([ * Enable. */ enable: function () { - this._on(this.trigger, this.events); this.options.disabled = false; + this._on(this.trigger, this.events); + this.forceActivate(); if (this.options.disabledState) { this.element.removeClass(this.options.disabledState); } + this.trigger.attr('tabIndex', 0); }, /** @@ -517,7 +519,7 @@ define([ that = this; if (url) { - this.xhr = $.get({ + that.xhr = $.get({ url: url, dataType: 'html' }, function () { @@ -533,7 +535,8 @@ define([ setTimeout(function () { that.content.html(response); }, 1); - }).complete(function (jqXHR, status) { + }); + that.xhr.complete(function (jqXHR, status) { setTimeout(function () { if (status === 'abort') { that.content.stop(false, true); diff --git a/lib/web/mage/validation.js b/lib/web/mage/validation.js index 2b5aaff8385025d2caf3a5fa505034feee5ca6c5..ac99b04ad1b7a3f4d82d1dc0a4b41ea3780c5a85 100644 --- a/lib/web/mage/validation.js +++ b/lib/web/mage/validation.js @@ -845,11 +845,13 @@ result = true; range = param; - if (typeof range === 'object') { + if (typeof range === 'string') { m = dataAttrRange.exec(range); if (m) { result = result && $.mage.isBetween(numValue, m[1], m[2]); + } else { + result = false; } } else if (elm && elm.className) { classes = elm.className.split(' '); @@ -896,11 +898,13 @@ result = true; range = param; - if (typeof range === 'object') { + if (typeof range === 'string') { m = dataAttrRange.exec(range); if (m) { result = result && $.mage.isBetween(numValue, m[1], m[2]); + } else { + result = false; } } else if (elm && elm.className) { classes = elm.className.split(' ');