let page, pageHTMLParser, referencesGateway, sandbox, Page, PageHTMLParser, ReferencesHtmlScraperGateway; const sinon = require( 'sinon' ), ReferencesGateway = require( './../../../../src/mobile.startup/references/ReferencesGateway' ), referencesPage = require( '../../utils/PageInputs.html' ).referencesPage, util = require( '../../../../src/mobile.startup/util' ), oo = require( '../../utils/oo' ), dom = require( '../../utils/dom' ), jQuery = require( '../../utils/jQuery' ), mediaWiki = require( '../../utils/mw' ); QUnit.module( 'MobileFrontend ReferencesHtmlScraperGateway.test.js', { beforeEach: function () { sandbox = sinon.sandbox.create(); dom.setUp( sandbox, global ); jQuery.setUp( sandbox, global ); oo.setUp( sandbox, global ); mediaWiki.setUp( sandbox, global ); Page = require( '../../../../src/mobile.startup/Page' ); PageHTMLParser = require( '../../../../src/mobile.startup/PageHTMLParser' ); ReferencesHtmlScraperGateway = require( './../../../../src/mobile.startup/references/ReferencesHtmlScraperGateway' ); page = new Page( { title: 'Reftest' } ); pageHTMLParser = new PageHTMLParser( util.parseHTML( '
' ).html( referencesPage ) ); referencesGateway = new ReferencesHtmlScraperGateway( new mw.Api() ); global.mw.util.percentDecodeFragment = function ( decoded ) { // We're not testing percentDecodeFragment here, so only test with decoded values return decoded; }; }, afterEach: function () { jQuery.tearDown(); sandbox.restore(); } } ); QUnit.test( 'getReference() checking good reference', function ( assert ) { return referencesGateway.getReference( '#cite_note-1', page, pageHTMLParser ).then( function ( ref ) { assert.strictEqual( ref.text, 'hello' ); } ); } ); QUnit.test( 'getReference() checking bad reference', function ( assert ) { return referencesGateway.getReference( '#cite_note-bad', page, pageHTMLParser ).catch( function ( err ) { assert.strictEqual( err, ReferencesGateway.ERROR_NOT_EXIST, 'When bad id given false returned.' ); } ); } ); QUnit.test( 'getReference() adds an extra class for external links', function ( assert ) { return referencesGateway.getReference( '#cite_note-2', page, pageHTMLParser ).then( function ( ref ) { assert.notStrictEqual( ref.text.indexOf( referencesGateway.EXTERNAL_LINK_CLASS ), -1 ); } ); } );