Skip to content

Commit b5f505d

Browse files
committed
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
1 parent 68ff8b1 commit b5f505d

3 files changed

Lines changed: 170 additions & 0 deletions

File tree

Lines changed: 123 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,123 @@
1+
window._wpCustomizeNavMenusSettings = {
2+
'nonce': 'yo',
3+
'phpIntMax': '2147483647',
4+
'menuItemTransport': 'postMessage',
5+
'allMenus': [{
6+
'term_id': '2',
7+
'name': 'Awesome menu',
8+
'slug': 'awesome-menu',
9+
'term_group': '0',
10+
'term_taxonomy_id': '2',
11+
'taxonomy': 'nav_menu',
12+
'description': '',
13+
'parent': '0',
14+
'count': '0'
15+
}, {
16+
'term_id': '3',
17+
'name': 'Cool Menu',
18+
'slug': 'cool-menu',
19+
'term_group': '0',
20+
'term_taxonomy_id': '3',
21+
'taxonomy': 'nav_menu',
22+
'description': '',
23+
'parent': '0',
24+
'count': '0'
25+
}],
26+
'defaultSettingValues': {
27+
'nav_menu': {
28+
'name': '',
29+
'description': '',
30+
'parent': 0,
31+
'auto_add': false
32+
},
33+
'nav_menu_item': {
34+
'object_id': 0,
35+
'object': '',
36+
'menu_item_parent': 0,
37+
'position': 0,
38+
'type': 'custom',
39+
'title': '',
40+
'url': '',
41+
'target': '',
42+
'attr_title': '',
43+
'description': '',
44+
'classes': '',
45+
'xfn': '',
46+
'status': 'publish',
47+
'original_title': '',
48+
'nav_menu_term_id': 0
49+
}
50+
},
51+
'itemTypes': {
52+
'postTypes': {
53+
'page': {
54+
'label': 'Page'
55+
},
56+
'post': {
57+
'label': 'Post'
58+
}
59+
},
60+
'taxonomies': {
61+
'post_tag': {
62+
'label': 'Tag'
63+
},
64+
'post_format': {
65+
'label': 'Format'
66+
},
67+
'category': {
68+
'label': 'Category'
69+
}
70+
}
71+
},
72+
'l10n': {
73+
'custom_label': 'Custom Link',
74+
'customizingMenus': 'Customizing ▸ Menus',
75+
'invalidTitleTpl': '%s (Invalid)',
76+
'itemAdded': 'Menu item added',
77+
'itemDeleted': 'Menu item deleted',
78+
'itemsFound': 'Number of items found: %d',
79+
'itemsFoundMore': 'Additional items found: %d',
80+
'itemsLoadingMore': 'Loading more results... please wait.',
81+
'menuAdded': 'Menu created',
82+
'menuDeleted': 'Menu deleted',
83+
'menuLocation': '(Currently set to: %s)',
84+
'menuNameLabel': 'Menu Name',
85+
'movedDown': 'Menu item moved down',
86+
'movedLeft': 'Menu item moved out of submenu',
87+
'movedRight': 'Menu item is now a sub-item',
88+
'movedUp': 'Menu item moved up',
89+
'pendingTitleTpl': '%s (Pending)',
90+
'postTypeLabel': 'Post Type',
91+
'reorderLabelOff': 'Close reorder mode',
92+
'reorderLabelOn': 'Reorder menu items',
93+
'reorderModeOff': 'Reorder mode closed',
94+
'reorderModeOn': 'Reorder mode enabled',
95+
'taxonomyTermLabel': 'Taxonomy',
96+
'unnamed': '(unnamed)',
97+
'untitled': '(no label)'
98+
}
99+
};
100+
101+
window._wpCustomizeSettings.panels.nav_menus = {
102+
'id': 'nav_menus',
103+
'description': '<p>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.</p><p>Menus can be displayed in locations defined by your theme or in <a href="javascript:wp.customize.panel( "widgets" ).focus();">widget areas</a> by adding a &#8220;Custom Menu&#8221; widget.</p>',
104+
'priority': 100,
105+
'type': 'nav_menus',
106+
'title': 'Menus',
107+
'content': '',
108+
'active': true,
109+
'instanceNumber': 2
110+
};
111+
112+
window.wpNavMenu = {
113+
'options': {
114+
'menuItemDepthPerLevel': 30,
115+
'globalMaxDepth': 11,
116+
'sortableItems': '> *',
117+
'targetTolerance': 0
118+
},
119+
'menusChanged': false,
120+
'isRTL': false,
121+
'negateIfRTL': 1
122+
};
123+

tests/qunit/index.html

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
<script src="../../src/wp-includes/js/jquery/ui/core.js"></script>
99
<script src="../../src/wp-includes/js/underscore.min.js"></script>
1010
<script src="../../src/wp-includes/js/backbone.min.js"></script>
11+
<script src="../../src/wp-includes/js/wp-backbone.js"></script>
1112
<script src="../../src/wp-includes/js/zxcvbn.min.js"></script>
1213
<script src="../../src/wp-includes/js/wp-util.js"></script>
1314

@@ -23,6 +24,7 @@
2324
<div id="qunit-fixture">
2425
<script src="fixtures/customize-header.js"></script>
2526
<script src="fixtures/customize-settings.js"></script>
27+
<script src="fixtures/customize-menus.js"></script>
2628
</div>
2729
<p><a href="editor">TinyMCE tests</a></p>
2830

@@ -32,6 +34,7 @@
3234
<script src="../../src/wp-includes/js/customize-models.js"></script>
3335
<script src="../../src/wp-includes/js/shortcode.js"></script>
3436
<script src="../../src/wp-admin/js/customize-controls.js"></script>
37+
<script src="../../src/wp-admin/js/customize-nav-menus.js"></script>
3538
<script src="../../src/wp-admin/js/word-count.js"></script>
3639

3740
<!-- Unit tests -->
@@ -41,6 +44,7 @@
4144
<script src="wp-includes/js/shortcode.js"></script>
4245
<script src="wp-admin/js/customize-controls.js"></script>
4346
<script src="wp-admin/js/customize-controls-utils.js"></script>
47+
<script src="wp-admin/js/customize-nav-menus.js"></script>
4448
<script src="wp-admin/js/word-count.js"></script>
4549

4650
<!-- Customizer templates for sections -->
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
/* global wp */
2+
jQuery( function( ) {
3+
4+
var api = wp.customize,
5+
settings = window._wpCustomizeNavMenusSettings,
6+
navMenu = window.wpNavMenu;
7+
8+
module( 'Customize Nav Menus', {
9+
setup: function() {
10+
window._wpCustomizeNavMenusSettings = settings;
11+
window.wpNavMenu = navMenu;
12+
},
13+
teardown: function() {
14+
// restore defaults
15+
window._wpCustomizeNavMenusSettings = settings;
16+
window.wpNavMenu = navMenu;
17+
}
18+
19+
});
20+
21+
22+
/**
23+
* Generate 20 ids and verify they are all unique.
24+
*/
25+
test( 'generatePlaceholderAutoIncrementId generates unique IDs', function() {
26+
var testIterations = 20,
27+
ids = [ api.Menus.generatePlaceholderAutoIncrementId() ];
28+
29+
while( testIterations-- > 0 ) {
30+
var placeholderID = api.Menus.generatePlaceholderAutoIncrementId();
31+
32+
ok( -1 === ids.indexOf( placeholderID ) );
33+
ids.push( placeholderID );
34+
}
35+
36+
} );
37+
38+
test( 'it should parse _wpCustomizeMenusSettings.defaults into itself', function() {
39+
deepEqual( window._wpCustomizeNavMenusSettings, api.Menus.data );
40+
});
41+
42+
43+
});

0 commit comments

Comments
 (0)