Page Menu
Home
WickedGov Phorge
Search
Configure Global Search
Log In
Files
F4129973
SourceEditorOverlay.test.js
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
5 KB
Referenced Files
None
Subscribers
None
SourceEditorOverlay.test.js
View Options
let
sandbox
,
messageStub
,
getContentStub
,
previewResolve
,
BlockMessageDetails
,
EditorGateway
,
SourceEditorOverlay
;
const
testUrl
=
'/w/index.php?title=User:Test'
,
jQuery
=
require
(
'../utils/jQuery'
),
sinon
=
require
(
'sinon'
),
util
=
require
(
'../../../src/mobile.startup/util'
),
oo
=
require
(
'../utils/oo'
),
dom
=
require
(
'../utils/dom'
),
mediaWiki
=
require
(
'../utils/mw'
),
mustache
=
require
(
'../utils/mustache'
);
QUnit
.
module
(
'MobileFrontend mobile.editor.overlay/SourceEditorOverlay'
,
{
beforeEach
:
function
()
{
/* eslint-disable-next-line camelcase */
global
.
__non_webpack_require__
=
require
(
'../webpackRequire.stub'
);
sandbox
=
sinon
.
sandbox
.
create
();
dom
.
setUp
(
sandbox
,
global
);
jQuery
.
setUp
(
sandbox
,
global
);
mediaWiki
.
setUp
(
sandbox
,
global
);
mustache
.
setUp
(
sandbox
,
global
);
oo
.
setUp
(
sandbox
,
global
);
global
.
OO
.
ui
.
MultilineTextInputWidget
=
function
()
{
return
{
$element
:
global
.
$
(
'<div>'
)
};
};
sandbox
.
stub
(
mw
,
'msg'
).
withArgs
(
'mobile-frontend-editor-continue'
).
returns
(
'Continue'
)
.
withArgs
(
'mobile-frontend-editor-save'
).
returns
(
'Save'
)
.
withArgs
(
'mobile-frontend-editor-publish'
).
returns
(
'Publish'
);
EditorGateway
=
require
(
'../../../src/mobile.editor.overlay/EditorGateway'
);
SourceEditorOverlay
=
require
(
'../../../src/mobile.editor.overlay/SourceEditorOverlay'
);
BlockMessageDetails
=
require
(
'../../../src/mobile.editor.overlay/BlockMessageDetails'
);
// prevent event logging requests
sandbox
.
stub
(
SourceEditorOverlay
.
prototype
,
'log'
).
returns
(
util
.
Deferred
().
resolve
()
);
messageStub
=
sandbox
.
stub
(
BlockMessageDetails
.
prototype
,
'initialize'
);
getContentStub
=
sandbox
.
stub
(
EditorGateway
.
prototype
,
'getContent'
);
sandbox
.
stub
(
mw
,
'confirmCloseWindow'
).
returns
(
{
release
:
function
()
{}
}
);
sandbox
.
stub
(
window
,
'scrollTo'
);
sandbox
.
stub
(
mw
.
util
,
'getUrl'
).
returns
(
'/w/index.php?title=User:Test'
);
sandbox
.
stub
(
mw
.
config
,
'get'
)
.
withArgs
(
'wgPageName'
).
returns
(
'User:Test'
)
.
withArgs
(
'wgRelevantPageName'
).
returns
(
'User:Test'
)
.
withArgs
(
'wgRevisionId'
).
returns
(
123
)
.
withArgs
(
'wgArticleId'
).
returns
(
321
)
.
withArgs
(
'wgNamespaceNumber'
).
returns
(
2
)
.
withArgs
(
'wgIsMainPage'
).
returns
(
false
)
.
withArgs
(
'wgFormattedNamespaces'
).
returns
(
{
2
:
'User'
}
)
.
withArgs
(
'wgNamespaceIds'
).
returns
(
{
user
:
2
}
)
.
withArgs
(
'wgVisualEditorConfig'
).
returns
(
{
namespaces
:
[
1
,
2
]
}
);
const
stubTitle
=
{
getUrl
:
function
()
{
return
'/w/index.php?title=User:Test'
;
},
getPrefixedText
:
function
()
{
return
'User:Test'
;
}
};
sandbox
.
stub
(
mw
.
Title
,
'makeTitle'
).
returns
(
stubTitle
);
sandbox
.
stub
(
mw
.
Title
,
'newFromText'
).
returns
(
stubTitle
);
getContentStub
.
returns
(
util
.
Deferred
().
resolve
(
{
text
:
'section 0'
,
blockinfo
:
null
}
)
);
previewResolve
=
util
.
Deferred
().
resolve
(
{
text
:
'\npreviewtest'
}
);
sandbox
.
stub
(
EditorGateway
.
prototype
,
'getPreview'
)
.
returns
(
previewResolve
);
},
afterEach
:
function
()
{
jQuery
.
tearDown
();
sandbox
.
restore
();
}
}
);
QUnit
.
test
(
'#initialize, blocked user'
,
function
(
assert
)
{
const
dBlockedContent
=
util
.
Deferred
().
resolve
(
{
text
:
'section 0'
,
blockinfo
:
{
blockedby
:
'Test'
,
blockexpiry
:
'infinity'
,
blockreason
:
'Testreason'
}
}
),
done
=
assert
.
async
();
sandbox
.
stub
(
mw
.
Api
.
prototype
,
'get'
).
returns
(
util
.
Deferred
().
resolve
(
{
parse
:
{
text
:
'Testreason'
}
}
)
);
new
SourceEditorOverlay
(
{
title
:
'test.css'
},
dBlockedContent
).
getLoadingPromise
().
then
(
()
=>
{},
function
()
{
done
();
assert
.
true
(
messageStub
.
calledWithMatch
(
{
partial
:
false
,
creator
:
{
name
:
'Test'
,
url
:
testUrl
},
expiry
:
null
,
duration
:
null
,
reason
:
'Testreason'
}
),
'There is a drawer notice, that i am blocked from editing'
);
}
);
}
);
QUnit
.
test
(
'#initialize, with given page and section'
,
function
(
assert
)
{
const
editorOverlay
=
new
SourceEditorOverlay
(
{
title
:
'test'
,
sectionId
:
'0'
}
);
// The gateway is initialized with the correct properties,
// particularly the correct section ID.
assert
.
strictEqual
(
editorOverlay
.
gateway
.
title
,
'test'
);
assert
.
strictEqual
(
editorOverlay
.
gateway
.
oldId
,
undefined
);
assert
.
strictEqual
(
editorOverlay
.
gateway
.
sectionId
,
'0'
);
return
editorOverlay
.
getLoadingPromise
().
then
(
function
()
{
assert
.
strictEqual
(
editorOverlay
.
$content
.
val
(),
'section 0'
,
'load correct section'
);
}
);
}
);
QUnit
.
test
(
'#initialize, without a section'
,
function
(
assert
)
{
const
editorOverlay
=
new
SourceEditorOverlay
(
{
title
:
'test.css'
}
);
return
getContentStub
().
then
(
function
()
{
assert
.
strictEqual
(
editorOverlay
.
gateway
.
title
,
'test.css'
);
assert
.
strictEqual
(
editorOverlay
.
gateway
.
oldId
,
undefined
);
assert
.
strictEqual
(
editorOverlay
.
gateway
.
sectionId
,
undefined
);
}
);
}
);
QUnit
.
test
(
'#preview'
,
function
(
assert
)
{
const
editorOverlay
=
new
SourceEditorOverlay
(
{
title
:
'test'
,
sectionId
:
'0'
}
);
editorOverlay
.
onStageChanges
();
return
previewResolve
.
then
(
function
()
{
assert
.
strictEqual
(
editorOverlay
.
$preview
.
text
(),
'\n\npreviewtest'
,
'preview loaded correctly'
);
}
);
}
);
QUnit
.
test
(
'#initialize, as anonymous'
,
function
(
assert
)
{
const
editorOverlay
=
new
SourceEditorOverlay
(
{
title
:
'Main_page'
,
isAnon
:
true
}
);
return
editorOverlay
.
getLoadingPromise
().
then
(
function
()
{
assert
.
true
(
editorOverlay
.
$anonWarning
.
length
>
0
,
'Editorwarning (IP will be saved) visible.'
);
assert
.
true
(
editorOverlay
.
$el
.
find
(
'.anonymous'
).
length
>
0
,
'Continue login has a second class.'
);
}
);
}
);
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Wed, Aug 19, 10:10 (2 w, 5 d ago)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
72/62/ecfd5575d8e176e0a12921a5bd4d
Default Alt Text
SourceEditorOverlay.test.js (5 KB)
Attached To
Mode
rMWPROD MediaWiki Production
Attached
Detach File
Event Timeline
Log In to Comment