180 lines
6.8 KiB
JavaScript
180 lines
6.8 KiB
JavaScript
/*global QUnit, wp, sinon */
|
|
jQuery( function( $ ) {
|
|
|
|
QUnit.module( 'wp.updates' );
|
|
|
|
QUnit.test( 'Initially, the update lock should be false', function( assert ) {
|
|
assert.strictEqual( wp.updates.ajaxLocked, false );
|
|
});
|
|
|
|
QUnit.test( 'The nonce should be set correctly', function( assert ) {
|
|
assert.equal( wp.updates.ajaxNonce, window._wpUpdatesSettings.ajax_nonce );
|
|
});
|
|
|
|
QUnit.test( 'decrementCount correctly decreases the update number', function( assert ) {
|
|
var menuItemCount = $( '#menu-plugins' ).find( '.plugin-count' ).eq( 0 ).text();
|
|
var screenReaderItemCount = $( '#wp-admin-bar-updates' ).find( '.screen-reader-text' ).text();
|
|
var adminItemCount = $( '#wp-admin-bar-updates' ).find( '.ab-label' ).text();
|
|
assert.equal( menuItemCount, 2, 'Intial value is correct' );
|
|
assert.equal( screenReaderItemCount, '2 Plugin Updates', 'Intial value is correct' );
|
|
assert.equal( adminItemCount, 2, 'Intial value is correct' );
|
|
|
|
wp.updates.decrementCount( 'plugin' );
|
|
|
|
// Re-read these values.
|
|
menuItemCount = $( '#menu-plugins' ).find( '.plugin-count' ).eq( 0 ).text();
|
|
screenReaderItemCount = $( '#wp-admin-bar-updates' ).find( '.screen-reader-text' ).text();
|
|
adminItemCount = $( '#wp-admin-bar-updates' ).find( '.ab-label' ).text();
|
|
assert.equal( menuItemCount, 1 );
|
|
|
|
// @todo: Update screen reader count.
|
|
// Should the screenReader count change? Is that announced to the user?
|
|
// assert.equal( screenReaderItemCount, '1 Plugin Update' );
|
|
assert.equal( adminItemCount, 1 );
|
|
});
|
|
|
|
QUnit.test( '`beforeunload` should only fire when locked', function( assert ) {
|
|
wp.updates.ajaxLocked = false;
|
|
assert.notOk( wp.updates.beforeunload(), '`beforeunload` should not fire.' );
|
|
wp.updates.ajaxLocked = true;
|
|
assert.equal( wp.updates.beforeunload(), window._wpUpdatesSettings.l10n.beforeunload, '`beforeunload` should equal the localized `beforeunload` string.' );
|
|
wp.updates.ajaxLocked = false;
|
|
});
|
|
|
|
// FTP creds... exist?
|
|
// Admin notice?
|
|
|
|
QUnit.module( 'wp.updates.plugins', {
|
|
beforeEach: function() {
|
|
this.oldPagenow = window.pagenow;
|
|
window.pagenow = 'plugins';
|
|
sinon.spy( jQuery, 'ajax' );
|
|
},
|
|
afterEach: function() {
|
|
window.pagenow = this.oldPagenow;
|
|
wp.updates.ajaxLocked = false;
|
|
wp.updates.queue = [];
|
|
jQuery.ajax.restore();
|
|
}
|
|
} );
|
|
|
|
QUnit.test( 'Update lock is set when plugins are updating', function( assert ) {
|
|
wp.updates.updatePlugin( {
|
|
plugin: 'test/test.php',
|
|
slug: 'test'
|
|
} );
|
|
assert.strictEqual( wp.updates.ajaxLocked, true );
|
|
});
|
|
|
|
QUnit.test( 'Plugins are queued when the lock is set', function( assert ) {
|
|
var value = [
|
|
{
|
|
action: 'update-plugin',
|
|
data: {
|
|
plugin: 'test/test.php',
|
|
slug: 'test',
|
|
success: null,
|
|
error: null
|
|
}
|
|
}
|
|
];
|
|
|
|
wp.updates.ajaxLocked = true;
|
|
wp.updates.updatePlugin( {
|
|
plugin: 'test/test.php',
|
|
slug: 'test',
|
|
success: null,
|
|
error: null
|
|
} );
|
|
|
|
assert.deepEqual( wp.updates.queue, value );
|
|
});
|
|
|
|
QUnit.test( 'If plugins are installing (lock is set), the beforeUnload function should fire', function( assert ) {
|
|
wp.updates.updatePlugin( {
|
|
plugin: 'test/test.php',
|
|
slug: 'test'
|
|
} );
|
|
assert.equal( wp.updates.beforeunload(), window._wpUpdatesSettings.l10n.beforeunload );
|
|
} );
|
|
|
|
QUnit.test( 'Starting a plugin update should call the update API', function( assert ) {
|
|
wp.updates.updatePlugin( {
|
|
plugin: 'test/test.php',
|
|
slug: 'test'
|
|
} );
|
|
assert.ok( jQuery.ajax.calledOnce );
|
|
assert.equal( jQuery.ajax.getCall( 0 ).args[0].url, '/wp-admin/admin-ajax.php' );
|
|
assert.equal( jQuery.ajax.getCall( 0 ).args[0].data.action, 'update-plugin' );
|
|
assert.equal( jQuery.ajax.getCall( 0 ).args[0].data.slug, 'test' );
|
|
} );
|
|
QUnit.test( 'Installing a plugin should call the API', function( assert ) {
|
|
wp.updates.installPlugin( { slug: 'jetpack' } );
|
|
assert.ok( jQuery.ajax.calledOnce );
|
|
assert.equal( jQuery.ajax.getCall( 0 ).args[0].url, '/wp-admin/admin-ajax.php' );
|
|
assert.equal( jQuery.ajax.getCall( 0 ).args[0].data.action, 'install-plugin' );
|
|
assert.equal( jQuery.ajax.getCall( 0 ).args[0].data.slug, 'jetpack' );
|
|
} );
|
|
QUnit.test( 'Deleting a plugin should call the API', function( assert ) {
|
|
wp.updates.deletePlugin( { slug: 'jetpack', plugin: 'jetpack/jetpack.php' } );
|
|
assert.ok( jQuery.ajax.calledOnce );
|
|
assert.equal( jQuery.ajax.getCall( 0 ).args[0].url, '/wp-admin/admin-ajax.php' );
|
|
assert.equal( jQuery.ajax.getCall( 0 ).args[0].data.action, 'delete-plugin' );
|
|
assert.equal( jQuery.ajax.getCall( 0 ).args[0].data.slug, 'jetpack' );
|
|
} );
|
|
|
|
// QUnit.test( 'A successful update changes the message?', function( assert ) {} );
|
|
// QUnit.test( 'A failed update changes the message?', function( assert ) {} );
|
|
|
|
QUnit.module( 'wp.updates.themes', {
|
|
beforeEach: function() {
|
|
this.oldPagenow = window.pagenow;
|
|
window.pagenow = 'themes';
|
|
sinon.spy( jQuery, 'ajax' );
|
|
},
|
|
afterEach: function() {
|
|
window.pagenow = this.oldPagenow;
|
|
wp.updates.ajaxLocked = false;
|
|
wp.updates.queue = [];
|
|
jQuery.ajax.restore();
|
|
}
|
|
} );
|
|
|
|
QUnit.test( 'Update lock is set when themes are updating', function( assert ) {
|
|
wp.updates.updateTheme( 'twentyeleven' );
|
|
assert.strictEqual( wp.updates.ajaxLocked, true );
|
|
});
|
|
|
|
QUnit.test( 'If themes are installing (lock is set), the beforeUnload function should fire', function( assert ) {
|
|
wp.updates.updateTheme( { slug: 'twentyeleven' } );
|
|
assert.equal( wp.updates.beforeunload(), window._wpUpdatesSettings.l10n.beforeunload );
|
|
} );
|
|
|
|
QUnit.test( 'Starting a theme update should call the update API', function( assert ) {
|
|
wp.updates.updateTheme( { slug: 'twentyeleven' } );
|
|
assert.ok( jQuery.ajax.calledOnce );
|
|
assert.equal( jQuery.ajax.getCall( 0 ).args[0].url, '/wp-admin/admin-ajax.php' );
|
|
assert.equal( jQuery.ajax.getCall( 0 ).args[0].data.action, 'update-theme' );
|
|
assert.equal( jQuery.ajax.getCall( 0 ).args[0].data.slug, 'twentyeleven' );
|
|
} );
|
|
|
|
QUnit.test( 'Installing a theme should call the API', function( assert ) {
|
|
wp.updates.installTheme( { slug: 'twentyeleven' } );
|
|
assert.ok( jQuery.ajax.calledOnce );
|
|
assert.equal( jQuery.ajax.getCall( 0 ).args[0].url, '/wp-admin/admin-ajax.php' );
|
|
assert.equal( jQuery.ajax.getCall( 0 ).args[0].data.action, 'install-theme' );
|
|
assert.equal( jQuery.ajax.getCall( 0 ).args[0].data.slug, 'twentyeleven' );
|
|
} );
|
|
|
|
QUnit.test( 'Deleting a theme should call the API', function( assert ) {
|
|
wp.updates.deleteTheme( { slug: 'twentyeleven' } );
|
|
assert.ok( jQuery.ajax.calledOnce );
|
|
assert.equal( jQuery.ajax.getCall( 0 ).args[0].url, '/wp-admin/admin-ajax.php' );
|
|
assert.equal( jQuery.ajax.getCall( 0 ).args[0].data.action, 'delete-theme' );
|
|
assert.equal( jQuery.ajax.getCall( 0 ).args[0].data.slug, 'twentyeleven' );
|
|
} );
|
|
|
|
// QUnit.test( 'A successful update changes the message?', function( assert ) {} );
|
|
// QUnit.test( 'A failed update changes the message?', function( assert ) {} );
|
|
});
|