From b5f505d3dda34e5e38e1802b978412cfbd05636d Mon Sep 17 00:00:00 2001 From: Aaron Jorbin Date: Mon, 27 Jul 2015 22:07:27 +0000 Subject: [PATCH] Add Initial JS Unit Tests for Menu Customizer While these two tests will help ensure we don't repeat our mistakes, they mostly help lay the foundation for more tests that still need to be written. See #32688 Props adamsilverstein, jorbin git-svn-id: https://develop.svn.wordpress.org/trunk@33451 602fd350-edb4-49c9-b593-d223f7449a82 --- tests/qunit/fixtures/customize-menus.js | 123 ++++++++++++++++++ tests/qunit/index.html | 4 + .../qunit/wp-admin/js/customize-nav-menus.js | 43 ++++++ 3 files changed, 170 insertions(+) create mode 100755 tests/qunit/fixtures/customize-menus.js create mode 100755 tests/qunit/wp-admin/js/customize-nav-menus.js diff --git a/tests/qunit/fixtures/customize-menus.js b/tests/qunit/fixtures/customize-menus.js new file mode 100755 index 0000000000..b2d85e4f97 --- /dev/null +++ b/tests/qunit/fixtures/customize-menus.js @@ -0,0 +1,123 @@ +window._wpCustomizeNavMenusSettings = { + 'nonce': 'yo', + 'phpIntMax': '2147483647', + 'menuItemTransport': 'postMessage', + 'allMenus': [{ + 'term_id': '2', + 'name': 'Awesome menu', + 'slug': 'awesome-menu', + 'term_group': '0', + 'term_taxonomy_id': '2', + 'taxonomy': 'nav_menu', + 'description': '', + 'parent': '0', + 'count': '0' + }, { + 'term_id': '3', + 'name': 'Cool Menu', + 'slug': 'cool-menu', + 'term_group': '0', + 'term_taxonomy_id': '3', + 'taxonomy': 'nav_menu', + 'description': '', + 'parent': '0', + 'count': '0' + }], + 'defaultSettingValues': { + 'nav_menu': { + 'name': '', + 'description': '', + 'parent': 0, + 'auto_add': false + }, + 'nav_menu_item': { + 'object_id': 0, + 'object': '', + 'menu_item_parent': 0, + 'position': 0, + 'type': 'custom', + 'title': '', + 'url': '', + 'target': '', + 'attr_title': '', + 'description': '', + 'classes': '', + 'xfn': '', + 'status': 'publish', + 'original_title': '', + 'nav_menu_term_id': 0 + } + }, + 'itemTypes': { + 'postTypes': { + 'page': { + 'label': 'Page' + }, + 'post': { + 'label': 'Post' + } + }, + 'taxonomies': { + 'post_tag': { + 'label': 'Tag' + }, + 'post_format': { + 'label': 'Format' + }, + 'category': { + 'label': 'Category' + } + } + }, + 'l10n': { + 'custom_label': 'Custom Link', + 'customizingMenus': 'Customizing ▸ Menus', + 'invalidTitleTpl': '%s (Invalid)', + 'itemAdded': 'Menu item added', + 'itemDeleted': 'Menu item deleted', + 'itemsFound': 'Number of items found: %d', + 'itemsFoundMore': 'Additional items found: %d', + 'itemsLoadingMore': 'Loading more results... please wait.', + 'menuAdded': 'Menu created', + 'menuDeleted': 'Menu deleted', + 'menuLocation': '(Currently set to: %s)', + 'menuNameLabel': 'Menu Name', + 'movedDown': 'Menu item moved down', + 'movedLeft': 'Menu item moved out of submenu', + 'movedRight': 'Menu item is now a sub-item', + 'movedUp': 'Menu item moved up', + 'pendingTitleTpl': '%s (Pending)', + 'postTypeLabel': 'Post Type', + 'reorderLabelOff': 'Close reorder mode', + 'reorderLabelOn': 'Reorder menu items', + 'reorderModeOff': 'Reorder mode closed', + 'reorderModeOn': 'Reorder mode enabled', + 'taxonomyTermLabel': 'Taxonomy', + 'unnamed': '(unnamed)', + 'untitled': '(no label)' + } +}; + +window._wpCustomizeSettings.panels.nav_menus = { + 'id': 'nav_menus', + 'description': '

This panel is used for managing navigation menus for content you have already published on your site. You can create menus and add items for existing content such as pages, posts, categories, tags, formats, or custom links.

Menus can be displayed in locations defined by your theme or in widget areas by adding a “Custom Menu” widget.

', + 'priority': 100, + 'type': 'nav_menus', + 'title': 'Menus', + 'content': '', + 'active': true, + 'instanceNumber': 2 +}; + +window.wpNavMenu = { + 'options': { + 'menuItemDepthPerLevel': 30, + 'globalMaxDepth': 11, + 'sortableItems': '> *', + 'targetTolerance': 0 + }, + 'menusChanged': false, + 'isRTL': false, + 'negateIfRTL': 1 +}; + diff --git a/tests/qunit/index.html b/tests/qunit/index.html index 347d8abf2a..ba9b0cf9d9 100644 --- a/tests/qunit/index.html +++ b/tests/qunit/index.html @@ -8,6 +8,7 @@ + @@ -23,6 +24,7 @@
+

TinyMCE tests

@@ -32,6 +34,7 @@ + @@ -41,6 +44,7 @@ + diff --git a/tests/qunit/wp-admin/js/customize-nav-menus.js b/tests/qunit/wp-admin/js/customize-nav-menus.js new file mode 100755 index 0000000000..ba50106fc4 --- /dev/null +++ b/tests/qunit/wp-admin/js/customize-nav-menus.js @@ -0,0 +1,43 @@ +/* global wp */ +jQuery( function( ) { + + var api = wp.customize, + settings = window._wpCustomizeNavMenusSettings, + navMenu = window.wpNavMenu; + + module( 'Customize Nav Menus', { + setup: function() { + window._wpCustomizeNavMenusSettings = settings; + window.wpNavMenu = navMenu; + }, + teardown: function() { + // restore defaults + window._wpCustomizeNavMenusSettings = settings; + window.wpNavMenu = navMenu; + } + + }); + + + /** + * Generate 20 ids and verify they are all unique. + */ + test( 'generatePlaceholderAutoIncrementId generates unique IDs', function() { + var testIterations = 20, + ids = [ api.Menus.generatePlaceholderAutoIncrementId() ]; + + while( testIterations-- > 0 ) { + var placeholderID = api.Menus.generatePlaceholderAutoIncrementId(); + + ok( -1 === ids.indexOf( placeholderID ) ); + ids.push( placeholderID ); + } + + } ); + + test( 'it should parse _wpCustomizeMenusSettings.defaults into itself', function() { + deepEqual( window._wpCustomizeNavMenusSettings, api.Menus.data ); + }); + + +});