Skip to content

Commit 7da7a09

Browse files
committed
Build/Test Tools: Add theme keyboard navigation tests.
Add the theme keyboard navigation test file that omitted from [60516]. Follow-up to [60516]. Props abcd95, jonsurrell, mukesh27. See #64225, #63126. git-svn-id: https://develop.svn.wordpress.org/trunk@61625 602fd350-edb4-49c9-b593-d223f7449a82
1 parent 98ae37f commit 7da7a09

1 file changed

Lines changed: 91 additions & 0 deletions

File tree

tests/qunit/wp-admin/js/theme.js

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
/**
2+
* Test theme keyboard navigation.
3+
*/
4+
( function( $ ) {
5+
'use strict';
6+
7+
QUnit.module( 'Theme Keyboard Navigation', function( hooks ) {
8+
var themePreview, nextCalled, prevCalled;
9+
10+
function createThemePreview() {
11+
return {
12+
nextTheme: function() { nextCalled++; },
13+
previousTheme: function() { prevCalled++; },
14+
keyEvent: function( event ) {
15+
if ( event.shiftKey || event.ctrlKey || event.altKey || event.metaKey ) {
16+
return;
17+
}
18+
19+
// Right arrow
20+
if ( event.keyCode === 39 ) {
21+
this.nextTheme();
22+
}
23+
// Left arrow
24+
else if ( event.keyCode === 37 ) {
25+
this.previousTheme();
26+
}
27+
}
28+
};
29+
}
30+
31+
hooks.beforeEach( function() {
32+
nextCalled = 0;
33+
prevCalled = 0;
34+
themePreview = createThemePreview();
35+
});
36+
37+
QUnit.test( 'Arrow keys without modifiers', function( assert ) {
38+
// Right arrow
39+
themePreview.keyEvent( $.Event( 'keydown', {
40+
keyCode: 39,
41+
shiftKey: false,
42+
ctrlKey: false
43+
}) );
44+
assert.equal( nextCalled, 1, 'Right arrow triggers nextTheme' );
45+
46+
// Left arrow
47+
themePreview.keyEvent( $.Event( 'keydown', {
48+
keyCode: 37,
49+
shiftKey: false,
50+
ctrlKey: false
51+
}) );
52+
assert.equal( prevCalled, 1, 'Left arrow triggers previousTheme' );
53+
} );
54+
55+
QUnit.test( 'Shift+Arrow keys do nothing', function( assert ) {
56+
// Shift + Right
57+
themePreview.keyEvent( $.Event( 'keydown', {
58+
keyCode: 39,
59+
shiftKey: true,
60+
ctrlKey: false
61+
}) );
62+
assert.equal( nextCalled, 0, 'Shift+Right does nothing' );
63+
64+
// Shift + Left
65+
themePreview.keyEvent( $.Event( 'keydown', {
66+
keyCode: 37,
67+
shiftKey: true,
68+
ctrlKey: false
69+
}) );
70+
assert.equal( prevCalled, 0, 'Shift+Left does nothing' );
71+
} );
72+
73+
QUnit.test( 'Ctrl+Arrow keys do nothing', function( assert ) {
74+
// Ctrl + Right
75+
themePreview.keyEvent( $.Event( 'keydown', {
76+
keyCode: 39,
77+
ctrlKey: true,
78+
shiftKey: false
79+
}) );
80+
assert.equal( nextCalled, 0, 'Ctrl+Right does nothing' );
81+
82+
// Ctrl + Left
83+
themePreview.keyEvent( $.Event( 'keydown', {
84+
keyCode: 37,
85+
ctrlKey: true,
86+
shiftKey: false
87+
}) );
88+
assert.equal( prevCalled, 0, 'Ctrl+Left does nothing' );
89+
} );
90+
} );
91+
})( jQuery );

0 commit comments

Comments
 (0)