Merge "Embrace packageFiles"

This commit is contained in:
jenkins-bot 2019-07-16 21:21:42 +00:00 committed by Gerrit Code Review
commit 6076c61772
41 changed files with 198 additions and 186 deletions

View File

@ -15,6 +15,10 @@
"rules": {
"no-restricted-properties": [
"error",
{
"property": "define",
"message": "The method `define` if used with mw.mobileFrontend is deprecated. Please use `module.exports`."
},
{
"property": "done",
"message": "The method `done` if used with Deferred objects is incompatible with ES6 Promises. Please use `then`."

View File

@ -1,4 +1,4 @@
( function ( M ) {
( function () {
var
/** The component selector. */
selector = '.toggle-list',
@ -91,9 +91,9 @@
checkbox.setAttribute( 'aria-expanded', ( !!checkbox.checked ).toString() );
}
M.define( 'skins.minerva.scripts/ToggleList', Object.freeze( {
module.exports = Object.freeze( {
selector: selector,
render: render,
bind: bind
} ) );
}( mw.mobileFrontend ) );
} );
}() );

View File

@ -111,17 +111,19 @@ class MinervaHooks {
$testModule = [
'dependencies' => [
'mobile.startup',
'skins.minerva.notifications.badge',
'mediawiki.user',
'mediawiki.experiments'
],
'templates' => [
"badge.mustache" => "includes/skins/userNotifications.mustache",
],
'localBasePath' => dirname( __DIR__ ),
'remoteSkinPath' => 'MinervaNeue',
'targets' => [ 'mobile', 'desktop' ],
'scripts' => [
'packageFiles' => [
// additional scaffolding (minus initialisation scripts)
'tests/qunit/skins.minerva.scripts/stubs.js',
'tests/qunit/skins.minerva.scripts/index.js',
'resources/skins.minerva.scripts/NotificationBadge.js',
'resources/skins.minerva.scripts/page-issues/parser.js',
'resources/skins.minerva.scripts/downloadPageAction.js',
'resources/skins.minerva.scripts/AB.js',
@ -136,12 +138,12 @@ class MinervaHooks {
'resources/skins.minerva.scripts/TitleUtil.js',
// test files
'tests/qunit/skins.minerva.scripts/downloadPageAction.test.js',
'tests/qunit/skins.minerva.scripts/pageIssuesParser.test.js',
'tests/qunit/skins.minerva.scripts/page-issues/parser.test.js',
'tests/qunit/skins.minerva.scripts/AB.test.js',
'tests/qunit/skins.minerva.scripts/pageIssues.test.js',
'tests/qunit/skins.minerva.scripts/page-issues/index.test.js',
'tests/qunit/skins.minerva.scripts/UriUtil.test.js',
'tests/qunit/skins.minerva.scripts/TitleUtil.test.js',
'tests/qunit/skins.minerva.notifications.badge/NotificationBadge.test.js'
'tests/qunit/skins.minerva.scripts/NotificationBadge.test.js'
],
];

View File

@ -825,10 +825,6 @@ class SkinMinerva extends SkinTemplate {
$modules[] = 'skins.minerva.watchstar';
}
if ( $user->isLoggedIn() && $this->useEcho() ) {
$modules[] = 'skins.minerva.notifications';
}
// TalkOverlay feature
if (
$this->getUserPageHelper()->isUserPage() ||

View File

@ -4,7 +4,7 @@ module.exports = function () {
mobile = M.require( 'mobile.startup' ),
loader = mobile.rlModuleLoader,
features = mw.config.get( 'wgMinervaFeatures', {} ),
overlayManager = M.require( 'skins.minerva.scripts/overlayManager' ),
overlayManager = require( 'skins.minerva.scripts' ).overlayManager,
eventBus = mobile.eventBusSingleton,
isAnon = mw.user.isAnon();

View File

@ -73,5 +73,5 @@
};
}
M.define( 'skins.minerva.scripts/AB', AB );
module.exports = AB;
}( mw.mobileFrontend, mw.experiments ) );

View File

@ -58,7 +58,7 @@
}
mfExtend( NotificationBadge, View, {
template: mw.template.get( 'skins.minerva.notifications.badge', 'badge.mustache' ),
template: mw.template.get( 'skins.minerva.scripts', 'badge.mustache' ),
/**
* Update the notification count
* @memberof NotificationBadge
@ -88,5 +88,5 @@
}
} );
M.define( 'skins.minerva.notifications/NotificationBadge', NotificationBadge );
module.exports = NotificationBadge;
}( mw.mobileFrontend ) );

View File

@ -3,8 +3,8 @@
// of a SiteInfo, it still becomes a public API. If it lives where used, it becomes a copy and paste
// implementation where each copy can deviate but deletion is easy. See additional discussion in
// T218358 and I95b08e77eece5cd4dae62f6f237d492d6b0fe42b.
( function ( M ) {
var UriUtil = M.require( 'skins.minerva.scripts/UriUtil' );
( function () {
var UriUtil = require( './UriUtil.js' );
/**
* Returns the decoded wiki page title referenced by the passed link as a string when parsable.
@ -132,7 +132,7 @@
return length === ( ( 'oldid' in uri.query ? 1 : 0 ) + ( 'title' in uri.query ? 1 : 0 ) );
}
M.define( 'skins.minerva.scripts/TitleUtil', {
module.exports = {
newFromUri: newFromUri
} );
}( mw.mobileFrontend ) );
};
}() );

View File

@ -1,8 +1,8 @@
( function ( M ) {
var
mobile = M.require( 'mobile.startup' ),
ToggleList = M.require( 'skins.minerva.scripts/ToggleList' ),
downloadPageAction = M.require( 'skins.minerva.scripts/downloadPageAction' ),
ToggleList = require( '../../components/ToggleList/ToggleList.js' ),
downloadPageAction = require( './downloadPageAction.js' ).downloadPageAction,
Icon = mobile.Icon,
skin = M.require( 'mobile.init/skin' ),
/** The top level menu. */
@ -105,9 +105,9 @@
}
}
M.define( 'skins.minerva.scripts/Toolbar', {
module.exports = {
selector: toolbarSelector,
bind: bind,
render: render
} );
};
}( mw.mobileFrontend ) );

View File

@ -1,4 +1,4 @@
( function ( M ) {
( function () {
/**
* Compares the default Uri host, usually `window.location.host`, and `mw.Uri.host`. Equivalence
* tests internal linkage, a mismatch may indicate an external link. Interwiki links are
@ -28,7 +28,7 @@
return uri.host === mw.Uri().host;
}
M.define( 'skins.minerva.scripts/UriUtil', {
module.exports = {
isInternal: isInternal
} );
}( mw.mobileFrontend ) );
};
}() );

View File

@ -158,7 +158,11 @@
}
}
M.define( 'skins.minerva.scripts/test/getOnClickHandler', getOnClickHandler );
M.define( 'skins.minerva.scripts/test/isAvailable', isAvailable );
M.define( 'skins.minerva.scripts/downloadPageAction', downloadPageAction );
module.exports = {
downloadPageAction: downloadPageAction,
test: {
isAvailable: isAvailable,
getOnClickHandler: getOnClickHandler
}
};
}( mw.mobileFrontend, mw.track, mw.msg ) );

View File

@ -4,15 +4,20 @@
PageGateway = mobile.PageGateway,
toast = mobile.toast,
time = mobile.time,
TitleUtil = M.require( 'skins.minerva.scripts/TitleUtil' ),
issues = M.require( 'skins.minerva.scripts/pageIssues' ),
Toolbar = M.require( 'skins.minerva.scripts/Toolbar' ),
notifications = require( './notifications.js' ),
preInit = require( './preInit.js' ),
initLogging = require( './initLogging.js' ),
mobileRedirect = require( './mobileRedirect.js' ),
search = require( './search.js' ),
references = require( './references.js' ),
TitleUtil = require( './TitleUtil.js' ),
issues = require( './page-issues/index.js' ),
Toolbar = require( './Toolbar.js' ),
router = require( 'mediawiki.router' ),
OverlayManager = mobile.OverlayManager,
CtaDrawer = mobile.CtaDrawer,
Button = mobile.Button,
Anchor = mobile.Anchor,
overlayManager = OverlayManager.getSingleton(),
overlayManager = require( './overlayManager.js' ),
currentPage = mobile.currentPage(),
currentPageHTMLParser = mobile.currentPageHTMLParser(),
$redLinks = currentPageHTMLParser.getRedLinks(),
@ -334,6 +339,18 @@
$( function () {
var toolbarElement = document.querySelector( Toolbar.selector );
// Init:
// - main menu closes when you click outside of it
// - redirects show a toast.
preInit();
// - logging
initLogging();
// - references
references();
// - search
search();
// - mobile redirect
mobileRedirect();
// Update anything else that needs enhancing (e.g. watchlist)
initModifiedInfo();
initRegistrationInfo();
@ -351,7 +368,12 @@
if ( !currentPage.isMissing ) {
issues.init( overlayManager, currentPageHTMLParser );
}
// If Echo is installed (using config as a proxy) and user is logged in init notifications
if ( !mw.user.isAnon() && mw.config.get( 'wgEchoMaxNotificationCount' ) !== undefined ) {
notifications();
}
} );
M.define( 'skins.minerva.scripts/overlayManager', overlayManager );
module.exports = {
overlayManager: overlayManager
};
}( mw.mobileFrontend ) );

View File

@ -1,9 +1,7 @@
// This initialises EventLogging for main menu and some prominent links in the UI.
// This code should only be loaded on the Minerva skin, it does not apply to other skins.
( function ( M ) {
var mainMenu = M.require( 'skins.minerva.scripts/mainMenu' );
var mainMenu = require( './menu.js' );
$( function () {
mainMenu.enableLogging();
} );
}( mw.mobileFrontend ) );
module.exports = function () {
mainMenu.enableLogging();
};

View File

@ -1,34 +1,31 @@
( function ( M ) {
var MainMenu = M.require( 'skins.minerva.scripts/MainMenu' ),
mainMenu = createMainMenu();
var MainMenu = require( './menu/MainMenu.js' ),
mainMenu = createMainMenu();
/**
* Creates an instance of the `MainMenu`, using the `wgMinervaMenuData` for configuration.
*
* N.B. that the activator - the UI element that the user must click in order to open the main
* menu - is always `.header .main-menu-button`.
*
* @return {MainMenu}
*
* @ignore
*/
function createMainMenu() {
// Failsafe in case this is not defined e.g. T225423
var options = mw.config.get( 'wgMinervaMenuData', {} );
/**
* Creates an instance of the `MainMenu`, using the `wgMinervaMenuData` for configuration.
*
* N.B. that the activator - the UI element that the user must click in order to open the main
* menu - is always `.header .main-menu-button`.
*
* @return {MainMenu}
*
* @ignore
*/
function createMainMenu() {
var options = mw.config.get( 'wgMinervaMenuData', {} );
options.activator = '.header .main-menu-button';
options.activator = '.header .main-menu-button';
return new MainMenu( options );
return new MainMenu( options );
}
$( function () {
// eslint-disable-next-line no-jquery/no-global-selector
if ( !$( '#mw-mf-page-left' ).find( '.menu' ).length ) {
// Now we have a main menu button register it.
mainMenu.registerClickEvents();
mainMenu.appendTo( '#mw-mf-page-left' );
}
} );
$( function () {
// eslint-disable-next-line no-jquery/no-global-selector
if ( !$( '#mw-mf-page-left' ).find( '.menu' ).length ) {
// Now we have a main menu button register it.
mainMenu.registerClickEvents();
mainMenu.appendTo( '#mw-mf-page-left' );
}
} );
M.define( 'skins.minerva.scripts/mainMenu', mainMenu );
}( mw.mobileFrontend ) );
module.exports = mainMenu;

View File

@ -131,6 +131,6 @@
}
} );
M.define( 'skins.minerva.scripts/MainMenu', MainMenu );
module.exports = MainMenu;
}( mw.mobileFrontend ) );

View File

@ -1,11 +1,7 @@
/*
* Warn people if they're trying to switch to desktop but have cookies disabled.
*/
( function ( M ) {
var popup = M.require( 'mobile.startup' ).toast;
module.exports = function () {
/**
* Checks whether cookies are enabled
* @method
@ -36,7 +32,7 @@
*/
function desktopViewClick() {
if ( !cookiesEnabled() ) {
popup.show(
mw.notify(
mw.msg( 'mobile-frontend-cookies-required' ),
{ type: 'error' }
);
@ -47,5 +43,4 @@
// eslint-disable-next-line no-jquery/no-global-selector
$( '#mw-mf-display-toggle' ).on( 'click', desktopViewClick );
}( mw.mobileFrontend ) );
};

View File

@ -2,14 +2,15 @@
* This code loads the necessary modules for the notifications overlay, not to be confused
* with the Toast notifications defined by common/toast.js.
*/
( function ( M ) {
module.exports = function () {
var badge,
mainMenu = M.require( 'skins.minerva.scripts/mainMenu' ),
M = mw.mobileFrontend,
mainMenu = require( './menu.js' ),
router = require( 'mediawiki.router' ),
mobile = M.require( 'mobile.startup' ),
util = mobile.util,
NotificationBadge = M.require( 'skins.minerva.notifications/NotificationBadge' ),
overlayManager = M.require( 'skins.minerva.scripts/overlayManager' ),
NotificationBadge = require( './NotificationBadge.js' ),
overlayManager = require( './overlayManager.js' ),
initialized = false;
function showNotificationOverlay() {
@ -106,4 +107,4 @@
} );
} );
}( mw.mobileFrontend ) );
};

View File

@ -0,0 +1,6 @@
var
mobile = mw.mobileFrontend.require( 'mobile.startup' ),
OverlayManager = mobile.OverlayManager,
overlayManager = OverlayManager.getSingleton();
module.exports = overlayManager;

View File

@ -9,9 +9,9 @@
NS_CATEGORY = 14,
CURRENT_NS = config.get( 'wgNamespaceNumber' ),
features = mw.config.get( 'wgMinervaFeatures', {} ),
pageIssuesParser = M.require( 'skins.minerva.scripts/pageIssuesParser' ),
pageIssuesOverlay = M.require( 'skins.minerva.scripts/pageIssuesOverlay' ),
pageIssueFormatter = M.require( 'skins.minerva.scripts/page-issues/page/pageIssueFormatter' ),
pageIssuesParser = require( './parser.js' ),
pageIssuesOverlay = require( './overlay/pageIssuesOverlay.js' ),
pageIssueFormatter = require( './page/pageIssueFormatter.js' ),
// When the query string flag is set force on new treatment.
// When wgMinervaPageIssuesNewTreatment is the default this line can be removed.
QUERY_STRING_FLAG = mw.util.getParamValue( 'minerva-issues' ),
@ -194,11 +194,11 @@
} );
}
M.define( 'skins.minerva.scripts/pageIssues', {
module.exports = {
init: initPageIssues,
test: {
insertBannersOrNotice: insertBannersOrNotice
}
} );
};
}( mw.mobileFrontend ) );

View File

@ -3,7 +3,7 @@
mobile = M.require( 'mobile.startup' ),
mfExtend = mobile.mfExtend,
View = mobile.View,
IssueNotice = M.require( 'skins.minerva.scripts/IssueNotice' );
IssueNotice = require( './IssueNotice.js' );
/**
* IssueList
@ -29,5 +29,5 @@
}
} );
M.define( 'skins.minerva.scripts/IssueList', IssueList );
module.exports = IssueList;
}( mw.mobileFrontend ) );

View File

@ -22,5 +22,5 @@
this.$el.find( '.issue-notice' ).prepend( this.options.issue.icon.$el );
}
} );
M.define( 'skins.minerva.scripts/IssueNotice', IssueNotice );
module.exports = IssueNotice;
}( mw.mobileFrontend ) );

View File

@ -1,7 +1,7 @@
( function ( M, mwMsg ) {
var
Overlay = M.require( 'mobile.startup' ).Overlay,
IssueList = M.require( 'skins.minerva.scripts/IssueList' ),
IssueList = require( './IssueList.js' ),
KEYWORD_ALL_SECTIONS = 'all',
NS_MAIN = 0,
NS_TALK = 1,
@ -53,5 +53,5 @@
}
}
M.define( 'skins.minerva.scripts/pageIssuesOverlay', pageIssuesOverlay );
module.exports = pageIssuesOverlay;
}( mw.mobileFrontend, mw.msg ) );

View File

@ -1,4 +1,4 @@
( function ( M ) {
( function () {
/**
* Creates a "read more" button with given text.
* @param {string} msg
@ -10,5 +10,5 @@
.text( msg );
}
M.define( 'skins.minerva.scripts/page-issues/page/PageIssueLearnMoreLink', newPageIssueLearnMoreLink );
}( mw.mobileFrontend ) );
module.exports = newPageIssueLearnMoreLink;
}() );

View File

@ -1,4 +1,4 @@
( function ( M ) {
( function () {
/**
* Create a link element that opens the issues overlay.
*
@ -9,5 +9,5 @@
return $( '<a>' ).addClass( 'cleanup mw-mf-cleanup' ).text( labelText );
}
M.define( 'skins.minerva.scripts/page-issues/page/PageIssueLink', newPageIssueLink );
}( mw.mobileFrontend ) );
module.exports = newPageIssueLink;
}() );

View File

@ -1,7 +1,7 @@
( function ( M ) {
( function () {
var
newPageIssueLink = M.require( 'skins.minerva.scripts/page-issues/page/PageIssueLink' ),
newPageIssueLearnMoreLink = M.require( 'skins.minerva.scripts/page-issues/page/PageIssueLearnMoreLink' );
newPageIssueLink = require( './PageIssueLink.js' ),
newPageIssueLearnMoreLink = require( './PageIssueLearnMoreLink.js' );
/**
* Modifies the `issue` DOM to create a banner designed for single / multiple issue templates,
@ -44,8 +44,8 @@
$link.insertAfter( $( 'h1#section_0' ) );
}
M.define( 'skins.minerva.scripts/page-issues/page/pageIssueFormatter', {
module.exports = {
insertPageIssueBanner: insertPageIssueBanner,
insertPageIssueNotice: insertPageIssueNotice
} );
}( mw.mobileFrontend ) );
};
}() );

View File

@ -217,7 +217,7 @@
/**
* @module skins.minerva.scripts/utils
*/
M.define( 'skins.minerva.scripts/pageIssuesParser', {
module.exports = {
extract: extract,
parse: parse,
maxSeverity: maxSeverity,
@ -227,6 +227,6 @@
parseType: parseType,
parseGroup: parseGroup
}
} );
};
}( mw.mobileFrontend ) );

View File

@ -5,14 +5,12 @@
* @class mw.mobileFrontend
* @singleton
*/
( function ( M ) {
var skin = M.require( 'mobile.init/skin' ),
mainMenu = M.require( 'skins.minerva.scripts/mainMenu' ),
module.exports = function () {
var M = mw.mobileFrontend,
skin = M.require( 'mobile.init/skin' ),
mainMenu = require( './menu.js' ),
toast = M.require( 'mobile.startup' ).toast;
// Proxy to MobileFrontend defined skin
M.define( 'skins.minerva.scripts/skin', skin );
/**
* Close navigation if skin is tapped
* @param {JQuery.Event} ev
@ -55,4 +53,4 @@
}
}( mw.config.get( 'wgRedirectedFrom' ) ) );
/* eslint-enable no-console */
}( mw.mobileFrontend ) );
};

View File

@ -1,5 +1,6 @@
( function ( M ) {
module.exports = function () {
var drawer,
M = mw.mobileFrontend,
router = require( 'mediawiki.router' ),
mobile = M.require( 'mobile.startup' ),
currentPage = mobile.currentPage(),
@ -93,4 +94,4 @@
}
init();
}( mw.mobileFrontend ) );
};

View File

@ -1,9 +1,10 @@
( function ( M ) {
module.exports = function () {
var
M = mw.mobileFrontend,
mobile = M.require( 'mobile.startup' ),
SearchOverlay = mobile.search.SearchOverlay,
SearchGateway = mobile.search.SearchGateway,
overlayManager = M.require( 'skins.minerva.scripts/overlayManager' ),
overlayManager = require( './overlayManager.js' ),
searchLogger = mobile.search.MobileWebSearchLogger,
// eslint-disable-next-line no-jquery/no-global-selector
$searchInput = $( '#searchInput' ),
@ -75,4 +76,4 @@
getSearchOverlay().showKeyboard();
} );
}( mw.mobileFrontend ) );
};

View File

@ -11,8 +11,9 @@
$talk = $( '.talk, [rel="discussion"]' ),
// use the plain return value here - T128273
title = $talk.attr( 'data-title' ),
overlayManager = M.require( 'skins.minerva.scripts/overlayManager' ),
skin = M.require( 'skins.minerva.scripts/skin' ),
overlayManager = require( 'skins.minerva.scripts' ).overlayManager,
// FIXME: This dependency shouldn't exist
skin = M.require( 'mobile.init/skin' ),
inTalkNamespace = false,
pageTitle, talkTitle, talkNs, pageNs;

View File

@ -463,6 +463,7 @@
"desktop"
],
"dependencies": [
"mediawiki.ui.anchor",
"wikimedia.ui",
"skins.minerva.mainMenu.icons",
"skins.minerva.mainMenu.styles",
@ -480,6 +481,8 @@
"mediawiki.experiments"
],
"messages": [
"echo-badge-count",
"mobile-frontend-notifications-filter",
"skin-minerva-issue-learn-more",
"mobile-frontend-meta-data-issues",
"minerva-meta-data-issues-section-header",
@ -500,11 +503,16 @@
"resources/skins.minerva.scripts/page-issues/overlay/pageIssuesOverlay.less"
],
"templates": {
"badge.mustache": "includes/skins/userNotifications.mustache",
"IssueNotice.mustache": "resources/skins.minerva.scripts/page-issues/overlay/IssueNotice.mustache",
"menu.mustache": "resources/skins.minerva.scripts/menu/menu.mustache",
"menuGroup.mustache": "resources/skins.minerva.scripts/menu/menuGroup.mustache"
},
"scripts": [
"packageFiles": [
"resources/skins.minerva.scripts/init.js",
"resources/skins.minerva.scripts/NotificationBadge.js",
"resources/skins.minerva.scripts/notifications.js",
"resources/skins.minerva.scripts/overlayManager.js",
"resources/skins.minerva.scripts/menu/schema.js",
"resources/skins.minerva.scripts/menu/MainMenu.js",
"resources/skins.minerva.scripts/menu.js",
@ -524,7 +532,6 @@
"resources/skins.minerva.scripts/TitleUtil.js",
"components/ToggleList/ToggleList.js",
"resources/skins.minerva.scripts/Toolbar.js",
"resources/skins.minerva.scripts/init.js",
"resources/skins.minerva.scripts/initLogging.js",
"resources/skins.minerva.scripts/mobileRedirect.js",
"resources/skins.minerva.scripts/search.js",
@ -532,42 +539,6 @@
"resources/skins.minerva.scripts/toc.js"
]
},
"skins.minerva.notifications.badge": {
"messages": [
"echo-badge-count"
],
"dependencies": [
"mediawiki.router",
"mobile.startup"
],
"scripts": [
"resources/skins.minerva.notifications.badge/NotificationBadge.js"
],
"templates": {
"badge.mustache": "includes/skins/userNotifications.mustache"
},
"targets": [
"mobile",
"desktop"
]
},
"skins.minerva.notifications": {
"dependencies": [
"skins.minerva.notifications.badge",
"mediawiki.ui.anchor",
"skins.minerva.scripts"
],
"scripts": [
"resources/skins.minerva.notifications/init.js"
],
"messages": [
"mobile-frontend-notifications-filter"
],
"targets": [
"mobile",
"desktop"
]
},
"skins.minerva.options.share.icon": {
"class": "ResourceLoaderImageModule",
"selector": ".mw-ui-icon-minerva-{name}:before",

View File

@ -1,6 +1,6 @@
( function ( M ) {
var AB = M.require( 'skins.minerva.scripts/AB' ),
var AB = require( '../../../resources/skins.minerva.scripts/AB.js' ),
util = M.require( 'mobile.startup' ).util,
defaultConfig = {
testName: 'WME.MinervaABTest',

View File

@ -1,6 +1,6 @@
( function ( M ) {
var OverlayManager = M.require( 'mobile.startup' ).OverlayManager,
NotificationBadge = M.require( 'skins.minerva.notifications/NotificationBadge' );
NotificationBadge = require( '../../../resources/skins.minerva.scripts/NotificationBadge.js' );
QUnit.module( 'Minerva NotificationBadge', {
beforeEach: function () {
@ -32,6 +32,9 @@
this.sandbox.stub( mw.language, 'convertNumber' )
.withArgs( 2 ).returns( '۲' )
.withArgs( 5 ).returns( '۵' );
this.sandbox.stub( mw, 'message' )
.withArgs( 'echo-badge-count', '۵' ).returns( { text: function () { return '۵'; } } )
.withArgs( 'echo-badge-count', '۲' ).returns( { text: function () { return '۲'; } } );
badge = new NotificationBadge( {
overlayManager: this.OverlayManager,

View File

@ -1,5 +1,5 @@
( function ( M ) {
var TitleUtil = M.require( 'skins.minerva.scripts/TitleUtil' );
( function () {
var TitleUtil = require( '../../../resources/skins.minerva.scripts/TitleUtil.js' );
QUnit.module( 'Minerva TitleUtil', QUnit.newMwEnvironment( {
setup: function () {
@ -226,4 +226,4 @@
'mismatching host (2)'
);
} );
}( mw.mobileFrontend ) );
}() );

View File

@ -1,5 +1,5 @@
( function ( M ) {
var UriUtil = M.require( 'skins.minerva.scripts/UriUtil' );
( function () {
var UriUtil = require( '../../../resources/skins.minerva.scripts/UriUtil.js' );
QUnit.module( 'Minerva UriUtil', QUnit.newMwEnvironment( {
setup: function () {
@ -44,4 +44,4 @@
'differing subdomains are not internal'
);
} );
}( mw.mobileFrontend ) );
}() );

View File

@ -7,8 +7,9 @@
windowChrome = { chrome: true },
downloadIcon = icons.spinner(),
windowNotChrome = {},
getOnClickHandler = M.require( 'skins.minerva.scripts/test/getOnClickHandler' ),
isAvailable = M.require( 'skins.minerva.scripts/test/isAvailable' ),
downloadAction = require( '../../../resources/skins.minerva.scripts/downloadPageAction.js' ),
getOnClickHandler = downloadAction.test.getOnClickHandler,
isAvailable = downloadAction.test.isAvailable,
browser = mobile.Browser.getSingleton(),
lazyImageLoader = mobile.lazyImages.lazyImageLoader,
Page = mobile.Page;

View File

@ -0,0 +1,15 @@
// Since tests.minerva.scripts does
// not pull in the entire module skins.minerva.scripts
// we have to stub certain templates to make it appear like its been loaded.
mw.template.add( 'skins.minerva.scripts', 'IssueNotice.mustache', '' );
mw.template.add( 'skins.minerva.scripts', 'badge.mustache',
mw.template.get( 'tests.skins.minerva', 'badge.mustache' ).getSource() );
module.exports = [
require( './NotificationBadge.test.js' ),
require( './downloadPageAction.test.js' ),
require( './page-issues/parser.test.js' ),
require( './AB.test.js' ),
require( './page-issues/index.test.js' ),
require( './UriUtil.test.js' ),
require( './TitleUtil.test.js' )
];

View File

@ -1,7 +1,7 @@
( function ( M ) {
var
mobile = M.require( 'mobile.startup' ),
pageIssues = M.require( 'skins.minerva.scripts/pageIssues' ),
pageIssues = require( '../../../../resources/skins.minerva.scripts/page-issues/index.js' ),
insertBannersOrNotice = pageIssues.test.insertBannersOrNotice,
OverlayManager = mobile.OverlayManager,
PageHTMLParser = mobile.PageHTMLParser,

View File

@ -1,6 +1,6 @@
( function ( M ) {
( function () {
var icon = {},
pageIssuesParser = M.require( 'skins.minerva.scripts/pageIssuesParser' ),
pageIssuesParser = require( '../../../../resources/skins.minerva.scripts/page-issues/parser.js' ),
extractMessage = pageIssuesParser.extract;
QUnit.module( 'Minerva pageIssuesParser' );
@ -188,4 +188,4 @@
} );
} );
}( mw.mobileFrontend ) );
}() );

View File

@ -1,4 +0,0 @@
// Since tests.minerva.scripts does
// not pull in the entire module skins.minerva.scripts
// we have to stub certain templates to make it appear like its been loaded.
mw.template.add( 'skins.minerva.scripts', 'IssueNotice.mustache', '' );

View File

@ -9,7 +9,7 @@ const iHaveNoNotifications = () => {
};
const iClickOnTheNotificationIcon = () => {
ArticlePage.waitUntilResourceLoaderModuleReady( 'skins.minerva.notifications' );
ArticlePage.waitUntilResourceLoaderModuleReady( 'skins.minerva.scripts' );
ArticlePage.notifications_button_element.click();
};