mediawiki-skins-MinervaNeue/tests/qunit/skins.minerva.notifications.badge/test_NotificationBadge.js
Ed Sanders 04a2b27d7f build: Update linters
This exposes two broken tests:

* #setCount (Eastern Arabic numerals)
* clicking on the product of createBanner() should trigger a custom event

that were previously passing due to buggy assertions.

Change-Id: If18ad1ff9363fff65d3e347c01ce4bc0669b2a0e
2018-09-11 13:42:11 -07:00

69 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', {
beforeEach: 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,
notificationCountRaw: 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.strictEqual( badge.$el.find( '.zero' ).length, 1, 'A zero class is present on the badge' );
badge.setCount( 105 );
assert.strictEqual( badge.options.notificationCountRaw, 100, 'Number is capped to 100.' );
} );
QUnit.skip( '#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 data-notification-count="2">۲</span></div></a></div>' )
} );
assert.strictEqual( badge.options.notificationCountRaw, 2,
'Number is parsed from Eastern Arabic numerals' );
assert.strictEqual( badge.options.notificationCountString, '۲',
'Number will be rendered in Eastern Arabic numerals' );
badge.setCount( 5 );
assert.strictEqual( badge.options.notificationCountString, '۵',
'Number will be rendered in Eastern Arabic numerals' );
} );
QUnit.test( '#render [hasUnseenNotifications]', function ( assert ) {
var badge = new NotificationBadge( {
notificationCountRaw: 0,
overlayManager: this.OverlayManager,
hasNotifications: false,
hasUnseenNotifications: false
} );
assert.strictEqual( badge.$el.find( '.mw-ui-icon' ).length, 1, 'A bell icon is visible' );
} );
QUnit.test( '#markAsSeen', function ( assert ) {
var badge = new NotificationBadge( {
notificationCountRaw: 2,
overlayManager: this.OverlayManager,
hasNotifications: true,
hasUnseenNotifications: true
} );
// Badge resets counter to zero
badge.setCount( 0 );
assert.strictEqual( badge.$el.find( '.mw-ui-icon' ).length, 0, 'The bell icon is not visible' );
badge.markAsSeen();
assert.strictEqual( badge.$el.find( '.notification-unseen' ).length, 0,
'Unseen class disappears after markAsSeen called.' );
} );
}( mw.mobileFrontend ) );