Page Menu
Home
WickedGov Phorge
Search
Configure Global Search
Log In
Files
F5968375
promisedView.test.js
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
2 KB
Referenced Files
None
Subscribers
None
promisedView.test.js
View Options
let
promisedView
,
View
,
sandbox
,
happyView
;
const
util
=
require
(
'../../../src/mobile.startup/util'
),
jQuery
=
require
(
'../utils/jQuery'
),
dom
=
require
(
'../utils/dom'
),
oo
=
require
(
'../utils/oo'
),
mediaWiki
=
require
(
'../utils/mw'
),
mustache
=
require
(
'../utils/mustache'
),
sinon
=
require
(
'sinon'
);
QUnit
.
module
(
'MobileFrontend promisedView.js'
,
{
beforeEach
:
function
()
{
sandbox
=
sinon
.
sandbox
.
create
();
dom
.
setUp
(
sandbox
,
global
);
jQuery
.
setUp
(
sandbox
,
global
);
oo
.
setUp
(
sandbox
,
global
);
mediaWiki
.
setUp
(
sandbox
,
global
);
mustache
.
setUp
(
sandbox
,
global
);
View
=
require
(
'./../../../src/mobile.startup/View'
);
promisedView
=
require
(
'./../../../src/mobile.startup/promisedView'
);
happyView
=
new
View
(
{
isBorderBox
:
false
,
className
:
'test'
}
);
happyView
.
append
(
'😃'
);
sandbox
.
stub
(
mw
,
'msg'
).
withArgs
(
'mobile-frontend-loading-message'
).
returns
(
'⌛'
);
},
afterEach
:
function
()
{
jQuery
.
tearDown
();
sandbox
.
restore
();
}
}
);
QUnit
.
test
(
'#constructor happyView'
,
function
(
assert
)
{
const
promise
=
util
.
Deferred
(),
viewSuccess
=
promisedView
(
promise
);
assert
.
strictEqual
(
viewSuccess
.
$el
.
text
().
trim
(),
'⌛'
,
'the view is waiting to resolve'
);
assert
.
true
(
viewSuccess
.
$el
.
hasClass
(
'promised-view'
),
'parent element has loading class when loading'
);
promise
.
resolve
(
happyView
);
return
promise
.
then
(
function
()
{
assert
.
strictEqual
(
viewSuccess
.
$el
.
attr
(
'class'
),
'test'
,
'fully replaces its parent element with happyView\'s parent element'
);
assert
.
strictEqual
(
viewSuccess
.
$el
.
text
(),
'😃'
,
'the view resolved correctly'
);
}
);
}
);
QUnit
.
test
(
'#constructor when promise rejects but not to a sadView'
,
function
(
assert
)
{
const
promise
=
util
.
Deferred
().
reject
(
new
Error
(
'fake test error'
)
),
viewFailure
=
promisedView
(
promise
);
assert
.
strictEqual
(
viewFailure
.
$el
.
text
().
trim
(),
'⌛'
,
'the view is waiting to resolve'
);
assert
.
true
(
viewFailure
.
$el
.
hasClass
(
'promised-view'
),
'parent element has loading class when loading'
);
return
promise
.
catch
(
function
()
{
assert
.
strictEqual
(
viewFailure
.
$el
.
text
().
trim
(),
'⌛'
,
'the view still shows the loading icon'
);
}
);
}
);
QUnit
.
test
(
'#constructor when promise rejects to a sadView'
,
function
(
assert
)
{
const
sadView
=
new
View
(
{
isBorderBox
:
false
,
className
:
'error'
}
),
promise
=
util
.
Deferred
().
reject
(
sadView
),
viewFailure
=
promisedView
(
promise
);
sadView
.
append
(
'😭'
);
assert
.
strictEqual
(
viewFailure
.
$el
.
text
().
trim
(),
'⌛'
,
'the view is waiting to resolve'
);
assert
.
true
(
viewFailure
.
$el
.
hasClass
(
'promised-view'
),
'parent element has loading class when loading'
);
return
promise
.
catch
(
function
()
{
assert
.
strictEqual
(
viewFailure
.
$el
.
attr
(
'class'
),
'error'
,
'fully replaces its parent element with sadView\'s parent element'
);
assert
.
strictEqual
(
viewFailure
.
$el
.
text
(),
'😭'
,
'the view resolved correctly'
);
}
);
}
);
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sat, Oct 3, 13:01 (2 d, 7 h ago)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
b0/58/900bc83dfaae99a384ab4532c62c
Default Alt Text
promisedView.test.js (2 KB)
Attached To
Mode
rMWPROD MediaWiki Production
Attached
Detach File
Event Timeline
Log In to Comment