mediawiki-skins-MinervaNeue/tests/qunit/skins.minerva.notifications.badge/test_NotificationBadge.js
jdlrobson 12b49a70ad Notification icon should not show NaN for persian Wikipedia
Bug: T172755
Change-Id: I2884c8daed3fe0e0d05c746ec6319956b7426957
2017-10-26 20:27:12 +00:00

70 lines
2.6 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

( function ( M ) {
var OverlayManager = M.require( 'mobile.startup/OverlayManager' ),
NotificationBadge = M.require( 'skins.minerva.notifications/NotificationBadge' );
QUnit.module( 'Minerva NotificationBadge', {
setup: function () {
this.router = require( 'mediawiki.router' );
this.OverlayManager = new OverlayManager( this.router );
}
} );
QUnit.test( '#setCount', function ( assert ) {
var initialClassExpectationsMet,
badge = new NotificationBadge( {
overlayManager: this.OverlayManager,
hasNotifications: true,
hasUnseenNotifications: true,
notificationCountRawRaw: 5
} );
initialClassExpectationsMet = badge.$el.find( '.mw-ui-icon' ).length === 0 &&
badge.$el.find( '.zero' ).length === 0;
badge.setCount( 0 );
assert.ok( initialClassExpectationsMet, 'No icon and no zero class' );
assert.ok( badge.$el.find( '.zero' ).length === 1, 'A zero class is present on the badge' );
badge.setCount( 105 );
assert.ok( badge.options.notificationCountRawRaw, 100,
'Number is capped to 100.' );
} );
QUnit.test( '#setCount (Eastern Arabic numerals)', function ( assert ) {
var badge = new NotificationBadge( {
overlayManager: this.OverlayManager,
el: $( '<div><a title="n" href="/" class="notification-unseen"><div class="circle"><span>۲</span></div></a></div>' )
} );
assert.ok( badge.options.notificationCountRawRaw, 2,
'Number is parsed from Eastern Arabic numerals' );
assert.ok( badge.options.notificationCountRawRawString, '۲',
'Number will be rendered in Eastern Arabic numerals' );
badge.setCount( 5 );
assert.ok( badge.options.notificationCountRawRawString, '۵',
'Number will be rendered in Eastern Arabic numerals' );
} );
QUnit.test( '#render [hasUnseenNotifications]', function ( assert ) {
var badge = new NotificationBadge( {
notificationCountRawRaw: 0,
overlayManager: this.OverlayManager,
hasNotifications: false,
hasUnseenNotifications: false
} );
assert.ok( badge.$el.find( '.mw-ui-icon' ).length === 1, 'A bell icon is visible' );
} );
QUnit.test( '#markAsSeen', function ( assert ) {
var badge = new NotificationBadge( {
notificationCountRawRaw: 2,
overlayManager: this.OverlayManager,
hasNotifications: true,
hasUnseenNotifications: true
} );
// Badge resets counter to zero
badge.setCount( 0 );
assert.ok( badge.$el.find( '.mw-ui-icon' ).length === 0, 'The bell icon is not visible' );
badge.markAsSeen();
assert.ok( badge.$el.find( '.notification-unseen' ).length === 0,
'Unseen class disappears after markAsSeen called.' );
} );
}( mw.mobileFrontend ) );