Page Menu
Home
WickedGov Phorge
Search
Configure Global Search
Log In
Files
F4143174
preview.test.js
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
5 KB
Referenced Files
None
Subscribers
None
preview.test.js
View Options
import
preview
from
'../../../src/reducers/preview'
;
import
actionTypes
from
'../../../src/actionTypes'
;
import
{
createNullModel
}
from
'../../../src/preview/model'
;
QUnit
.
module
(
'ext.popups/reducers#preview'
,
{
beforeEach
()
{
this
.
el
=
'active link'
;
}
}
);
QUnit
.
test
(
'@@INIT'
,
(
assert
)
=>
{
const
state
=
preview
(
undefined
,
{
type
:
'@@INIT'
}
);
assert
.
deepEqual
(
state
,
{
enabled
:
{},
activeLink
:
undefined
,
previewType
:
undefined
,
measures
:
undefined
,
activeToken
:
''
,
shouldShow
:
false
,
isUserDwelling
:
false
,
wasClicked
:
false
},
'The initial state is correct.'
);
}
);
QUnit
.
test
(
'BOOT'
,
(
assert
)
=>
{
const
action
=
{
type
:
actionTypes
.
BOOT
,
initiallyEnabled
:
{
page
:
true
}
};
assert
.
deepEqual
(
preview
(
{},
action
),
{
enabled
:
{
page
:
true
}
},
'It should set whether or not previews are enabled.'
);
}
);
QUnit
.
test
(
'SETTINGS_CHANGE'
,
(
assert
)
=>
{
const
action
=
{
type
:
actionTypes
.
SETTINGS_CHANGE
,
newValue
:
{
page
:
true
}
};
assert
.
deepEqual
(
preview
(
{
enabled
:
{}
},
action
),
{
enabled
:
{
page
:
true
}
},
'It should set whether or not previews are enabled when settings change.'
);
}
);
QUnit
.
test
(
'LINK_DWELL initializes the state for a new link'
,
function
(
assert
)
{
const
promise
=
$
.
Deferred
().
promise
();
const
action
=
{
type
:
actionTypes
.
LINK_DWELL
,
el
:
this
.
el
,
previewType
:
'page'
,
event
:
{},
token
:
'1234567890'
,
promise
};
assert
.
deepEqual
(
preview
(
{},
action
),
{
activeLink
:
action
.
el
,
previewType
:
'page'
,
measures
:
action
.
measures
,
activeToken
:
action
.
token
,
shouldShow
:
false
,
isUserDwelling
:
true
,
promise
},
'It should set active link and event as well as interaction info and hide the preview.'
);
}
);
QUnit
.
test
(
'LINK_DWELL on an active link only updates dwell state'
,
function
(
assert
)
{
const
action
=
{
type
:
actionTypes
.
LINK_DWELL
,
el
:
this
.
el
,
event
:
{},
token
:
'1234567890'
},
state
=
{
activeLink
:
this
.
el
,
isUserDwelling
:
false
};
assert
.
deepEqual
(
preview
(
state
,
action
),
{
activeLink
:
this
.
el
,
isUserDwelling
:
true
},
'It should only set isUserDwelling to true'
);
}
);
QUnit
.
test
(
'ABANDON_END'
,
(
assert
)
=>
{
const
action
=
{
type
:
actionTypes
.
ABANDON_END
,
token
:
'bananas'
};
let
state
=
{
activeToken
:
'bananas'
,
isUserDwelling
:
false
};
assert
.
deepEqual
(
preview
(
state
,
action
),
{
activeLink
:
undefined
,
previewType
:
undefined
,
activeToken
:
undefined
,
measures
:
undefined
,
fetchResponse
:
undefined
,
isUserDwelling
:
false
,
shouldShow
:
false
},
'ABANDON_END should hide the preview and reset the interaction info.'
);
// ---
state
=
{
activeToken
:
'apples'
,
isUserDwelling
:
true
};
assert
.
strictEqual
(
preview
(
state
,
action
),
state
,
'ABANDON_END should NOOP if the current interaction has changed.'
);
// ---
state
=
{
activeToken
:
'bananas'
,
isUserDwelling
:
true
};
assert
.
strictEqual
(
preview
(
state
,
action
),
state
,
'ABANDON_END should NOOP if the user is dwelling on the preview.'
);
}
);
QUnit
.
test
(
'FETCH_COMPLETE'
,
(
assert
)
=>
{
const
token
=
'1234567890'
;
let
state
=
{
activeToken
:
token
,
isUserDwelling
:
true
},
action
=
{
type
:
actionTypes
.
FETCH_COMPLETE
,
token
,
result
:
{}
};
assert
.
deepEqual
(
preview
(
state
,
action
),
{
// Previous state.
activeToken
:
state
.
activeToken
,
isUserDwelling
:
true
,
fetchResponse
:
action
.
result
,
shouldShow
:
true
},
'It should store the result and signal that a preview should be rendered.'
);
// ---
state
=
preview
(
state
,
{
type
:
actionTypes
.
ABANDON_START
,
token
}
);
assert
.
deepEqual
(
preview
(
state
,
action
),
{
activeToken
:
token
,
isUserDwelling
:
false
,
// Set when ABANDON_START is reduced.
wasClicked
:
false
,
fetchResponse
:
action
.
result
,
shouldShow
:
false
},
'It shouldn\'t signal that a preview should be rendered if the user has abandoned the link since the gateway request was made.'
);
// ---
action
=
{
type
:
actionTypes
.
FETCH_COMPLETE
,
token
:
'banana'
,
result
:
{}
};
assert
.
deepEqual
(
preview
(
state
,
action
),
state
,
'It should NOOP if the user has interacted with another link since the gateway request was made.'
);
}
);
QUnit
.
test
(
actionTypes
.
FETCH_FAILED
,
(
assert
)
=>
{
const
token
=
'1234567890'
,
state
=
{
activeToken
:
token
,
isUserDwelling
:
true
};
let
action
=
{
type
:
actionTypes
.
FETCH_FAILED
,
token
};
assert
.
deepEqual
(
preview
(
state
,
action
),
{
activeToken
:
state
.
activeToken
,
isUserDwelling
:
true
},
'It should not transition states.'
);
// ---
action
=
{
type
:
actionTypes
.
FETCH_COMPLETE
,
token
,
result
:
{
title
:
createNullModel
(
'Title'
,
'/wiki/Title'
)
}
};
assert
.
deepEqual
(
preview
(
state
,
action
),
{
activeToken
:
state
.
activeToken
,
isUserDwelling
:
true
,
fetchResponse
:
action
.
result
,
shouldShow
:
true
},
'It should store the result and signal that an error preview should be rendered.'
);
}
);
QUnit
.
test
(
'PREVIEW_DWELL'
,
(
assert
)
=>
{
const
action
=
{
type
:
actionTypes
.
PREVIEW_DWELL
};
assert
.
deepEqual
(
preview
(
{},
action
),
{
isUserDwelling
:
true
},
'It should mark the preview as being dwelled on.'
);
}
);
QUnit
.
test
(
'ABANDON_START'
,
(
assert
)
=>
{
const
action
=
{
type
:
actionTypes
.
ABANDON_START
};
assert
.
deepEqual
(
preview
(
{},
action
),
{
isUserDwelling
:
false
,
wasClicked
:
false
},
'ABANDON_START should mark the preview having been abandoned.'
);
}
);
File Metadata
Details
Attached
Mime Type
text/x-java
Expires
Aug 19 2026, 16:43 (4 w, 3 d ago)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
f8/20/16c5fcd75985bf71089ee6a81a1f
Default Alt Text
preview.test.js (5 KB)
Attached To
Mode
rMWPROD MediaWiki Production
Attached
Detach File
Event Timeline
Log In to Comment