ApiTest
extends MinkTestCase
in package
Mink test class for the VuFind APIs.
Tags
Table of Contents
- DEFAULT_TIMEOUT = 5000
- $hasLiveDetectionTrait : bool
- Flag to allow other traits to test for the presence of this one (to enforce dependencies).
- $activeRecordTabSelector : string
- Selector for active record tab
- $btnGroupDropdownMenuSelector : string
- Selector for an open button group dropdown menu
- $firstOpenDropdownMenuItemSelector : string
- Selector for first item in a dropdown menu
- $modifiedConfigs : array<string|int, mixed>
- Modified configurations
- $modifiedYamlConfigs : array<string|int, mixed>
- Modified yaml configurations
- $openModalButtonLinkSelector : string
- Selector for a button link in an open modal dialog
- $openModalSelector : string
- Selector for an open modal dialog
- $openModalUsernameFieldSelector : string
- Selector for a username field in open modal dialog
- $pageNextSelector : string
- Selector for next page link
- $pagePrevSelector : string
- Selector for previous page link
- $pathResolver : PathResolver
- Configuration file path resolver
- $popoverContentSelector : string
- Selector for popover content
- $session : Session
- Mink session
- continuousIntegrationRunning() : bool
- Is this test running in a continuous integration context?
- getRemoteCoverageDirectory() : string|null
- Get the remote coverage directory (or return null if remote coverage disabled)
- setUp() : void
- Standard setup method.
- tearDown() : void
- Standard teardown method.
- tearDownAfterClass() : void
- Standard tear-down.
- testApiDisabledByDefault() : void
- Test that the API is disabled by default.
- testEnabledRecordApi() : void
- Test that the API can be turned on and accessed via Swagger UI.
- addPathResolverToContainer() : void
- Add PathResolverFactory to a mock container
- assertEqualsWithTimeout() : void
- Wait for a callback to return the expected value
- assertLightboxTitle() : void
- Verify that lightbox title contains the expected value
- assertLightboxWarning() : void
- Mink support function: assert a warning message in the lightbox.
- assertStringContainsStringWithTimeout() : void
- Wait for a callback to return a string containing the expected value
- assertWithTimeout() : void
- Wait for a callback to return the expected value
- changeConfigFile() : void
- Support method for changeConfig; act on a single file.
- changeConfigs() : void
- Reconfigure VuFind for the current test.
- changeYamlConfigFile() : void
- Support method for changeYamlConfig; act on a single file.
- changeYamlConfigs() : void
- Reconfigure VuFind for the current test.
- checkVisibility() : bool
- Test an element for visibility.
- clickCss() : mixed
- Click on a CSS element.
- closeLightbox() : void
- Verify that lightbox title contains the expected value
- findAndAssertLink() : mixed
- Retrieve a link and assert that it exists before returning it.
- findCss() : mixed
- Wait for an element to exist, then retrieve it.
- findCssAndCallMethod() : string
- Return value of a method of an element selected via CSS; retry if it fails due to DOM change.
- findCssAndGetHtml() : string
- Get text of an element selected via CSS; retry if it fails due to DOM change.
- findCssAndGetText() : string
- Get text of an element selected via CSS; retry if it fails due to DOM change.
- findCssAndGetValue() : string
- Get value of an element selected via CSS; retry if it fails due to DOM change.
- findCssAndSetValue() : mixed
- Set a value within an element selected via CSS; retry if set fails due to browser bugs.
- getCurrentQueryString() : string
- Get query string for the current page
- getCurrentUrlWithoutSid() : string
- Get current URL without any sid parameter in the query string
- getDefaultTimeout() : int
- Get the default timeout in milliseconds
- getFirstMethodAttributeValue() : mixed
- Extract the first parameter of the first attribute matching the specified criteria.
- getMinkDriver() : Selenium2Driver
- Get the Mink driver, initializing it if necessary.
- getMinkSession() : Session
- Get a Mink session.
- getPathResolver() : PathResolver
- Get a config file path resolver
- getSearchHomePage() : Element
- Load the Search/Home page as a foundation for searching.
- getSnoozeMultiplier() : float
- Get the snooze multiplier.
- getTestName() : string
- Get name of the current test
- getVuFindUrl() : string
- Get base URL of running VuFind instance.
- hasElementsMatchingText() : bool
- Check whether an element containing the specified text exists.
- htmlValidationMsgToStr() : string
- Convert a NU HTML Validator message to a string
- logWarning() : void
- Log a warning message
- makeRecordApiCall() : Element
- Make a record retrieval API call and return the resulting page object.
- outputHtmlValidationMessages() : void
- Output HTML validation messages to log file and/or console
- performSearch() : Element
- Search for the specified query.
- restoreConfigs() : void
- Restore configurations to the state they were in prior to a call to changeConfig().
- snooze() : void
- Sleep if necessary.
- stopMinkSession() : void
- Shut down the Mink session.
- submitSearchForm() : void
- Submit a search on the provided page.
- unFindCss() : void
- Wait for an element to NOT exist.
- validateHtml() : void
- Validate current page HTML if validation is enabled and a session exists
- waitForLightboxHidden() : void
- Wait for Lightbox to become hidden if it isn't already.
- waitForPageLoad() : void
- Wait for page load (full page or any element) to complete
- waitStatement() : mixed
- Wait for a JavaScript statement to result in true.
Constants
DEFAULT_TIMEOUT
public
mixed
DEFAULT_TIMEOUT
= 5000
Properties
$hasLiveDetectionTrait
Flag to allow other traits to test for the presence of this one (to enforce dependencies).
public
bool
$hasLiveDetectionTrait
= true
$activeRecordTabSelector
Selector for active record tab
protected
string
$activeRecordTabSelector
= 'li.record-tab.active, li.record-tab a.active'
First for Bootstrap 3, second for Bootstrap 5
$btnGroupDropdownMenuSelector
Selector for an open button group dropdown menu
protected
string
$btnGroupDropdownMenuSelector
= '.btn-group.open .dropdown-menu, .btn-group .dropdown-menu.show'
First for Bootstrap 3, second for Bootstrap 5
$firstOpenDropdownMenuItemSelector
Selector for first item in a dropdown menu
protected
string
$firstOpenDropdownMenuItemSelector
= '.mainbody .open .dropdown-menu li:nth-child(2) a, .mainbody .dropdown-menu.show li:nth-child(2) a'
First for Bootstrap 3, second for Bootstrap 5
$modifiedConfigs
Modified configurations
protected
array<string|int, mixed>
$modifiedConfigs
= []
$modifiedYamlConfigs
Modified yaml configurations
protected
array<string|int, mixed>
$modifiedYamlConfigs
= []
$openModalButtonLinkSelector
Selector for a button link in an open modal dialog
protected
string
$openModalButtonLinkSelector
= '#modal.in a.btn, #modal.show a.btn'
First for Bootstrap 3, second for Bootstrap 5
$openModalSelector
Selector for an open modal dialog
protected
string
$openModalSelector
= '#modal.in, #modal.show'
First for Bootstrap 3, second for Bootstrap 5
$openModalUsernameFieldSelector
Selector for a username field in open modal dialog
protected
string
$openModalUsernameFieldSelector
= '#modal.in [name="username"], #modal.show [name="username"]'
First for Bootstrap 3, second for Bootstrap 5
$pageNextSelector
Selector for next page link
protected
string
$pageNextSelector
= 'a.page-next, .page-next a'
First for Bootstrap 3, second for Bootstrap 5
$pagePrevSelector
Selector for previous page link
protected
string
$pagePrevSelector
= 'a.page-prev, .page-prev a'
First for Bootstrap 3, second for Bootstrap 5
$pathResolver
Configuration file path resolver
protected
PathResolver
$pathResolver
$popoverContentSelector
Selector for popover content
protected
string
$popoverContentSelector
= '.popover-body, .popover-content'
First for Bootstrap 3, second for Bootstrap 5
$session
Mink session
protected
Session
$session
Methods
continuousIntegrationRunning()
Is this test running in a continuous integration context?
public
continuousIntegrationRunning() : bool
Return values
bool —getRemoteCoverageDirectory()
Get the remote coverage directory (or return null if remote coverage disabled)
public
getRemoteCoverageDirectory() : string|null
Return values
string|null —setUp()
Standard setup method.
public
setUp() : void
Return values
void —tearDown()
Standard teardown method.
public
tearDown() : void
Return values
void —tearDownAfterClass()
Standard tear-down.
public
static tearDownAfterClass() : void
Return values
void —testApiDisabledByDefault()
Test that the API is disabled by default.
public
testApiDisabledByDefault() : void
Return values
void —testEnabledRecordApi()
Test that the API can be turned on and accessed via Swagger UI.
public
testEnabledRecordApi() : void
Return values
void —addPathResolverToContainer()
Add PathResolverFactory to a mock container
protected
addPathResolverToContainer(MockContainer $container) : void
Parameters
- $container : MockContainer
-
Mock Container
Return values
void —assertEqualsWithTimeout()
Wait for a callback to return the expected value
protected
assertEqualsWithTimeout(mixed $expected, callable $callback[, int $timeout = null ]) : void
Parameters
- $expected : mixed
-
Expected value
- $callback : callable
-
Callback
- $timeout : int = null
-
Wait timeout (in ms)
Return values
void —assertLightboxTitle()
Verify that lightbox title contains the expected value
protected
assertLightboxTitle(Element $page, string $title) : void
Parameters
- $page : Element
-
Page element
- $title : string
-
Expected title
Return values
void —assertLightboxWarning()
Mink support function: assert a warning message in the lightbox.
protected
assertLightboxWarning(Element $page, string $message) : void
Parameters
- $page : Element
-
Page element
- $message : string
-
Expected message
Return values
void —assertStringContainsStringWithTimeout()
Wait for a callback to return a string containing the expected value
protected
assertStringContainsStringWithTimeout(string $expected, callable $callback[, int $timeout = null ]) : void
Parameters
- $expected : string
-
Expected value
- $callback : callable
-
Callback
- $timeout : int = null
-
Wait timeout (in ms)
Return values
void —assertWithTimeout()
Wait for a callback to return the expected value
protected
assertWithTimeout(mixed $expected, callable $callback, callable $compareFunc, callable $assertion[, int $timeout = null ]) : void
Parameters
- $expected : mixed
-
Expected value
- $callback : callable
-
Callback used to get the results
- $compareFunc : callable
-
Callback used to compare the results
- $assertion : callable
-
Assertion to make
- $timeout : int = null
-
Wait timeout (in ms)
Return values
void —changeConfigFile()
Support method for changeConfig; act on a single file.
protected
changeConfigFile(string $configName, array<string|int, mixed> $settings[, bool $replace = false ]) : void
Parameters
- $configName : string
-
Configuration to modify.
- $settings : array<string|int, mixed>
-
Settings to change.
- $replace : bool = false
-
Should we replace the existing config entirely (as opposed to extending it with new settings)?
Return values
void —changeConfigs()
Reconfigure VuFind for the current test.
protected
changeConfigs(array<string|int, mixed> $configs[, array<string|int, mixed> $replace = [] ]) : void
Parameters
- $configs : array<string|int, mixed>
-
Array of settings to change. Top-level keys correspond with config filenames (i.e. use 'config' for config.ini, etc.); within each file's array, top-level key is config section. Within each section's array are key-value configuration pairs.
- $replace : array<string|int, mixed> = []
-
Array of config files to completely override (as opposed to modifying); if a config file from $configs is included in this array, the $configs setting will be used as the entire configuration, and the defaults from the config/vufind directory will be ignored.
Return values
void —changeYamlConfigFile()
Support method for changeYamlConfig; act on a single file.
protected
changeYamlConfigFile(string $configName, array<string|int, mixed> $settings[, bool $replace = false ]) : void
Parameters
- $configName : string
-
Configuration to modify.
- $settings : array<string|int, mixed>
-
Settings to change.
- $replace : bool = false
-
Should we replace the existing config entirely (as opposed to extending it with new settings)?
Return values
void —changeYamlConfigs()
Reconfigure VuFind for the current test.
protected
changeYamlConfigs(array<string|int, mixed> $configs[, array<string|int, mixed> $replace = [] ]) : void
Parameters
- $configs : array<string|int, mixed>
-
Array of settings to change. Top-level keys correspond with yaml config filenames (i.e. use 'searchspecs' for searchspecs.yaml, etc.);
- $replace : array<string|int, mixed> = []
-
Array of config files to completely override (as opposed to modifying); if a config file from $configs is included in this array, the $configs setting will be used as the entire configuration, and the defaults from the config/vufind directory will be ignored.
Return values
void —checkVisibility()
Test an element for visibility.
protected
checkVisibility(Element $element) : bool
Parameters
- $element : Element
-
Element to test
Return values
bool —clickCss()
Click on a CSS element.
protected
clickCss(Element $page, string $selector[, int $timeout = null ], int $index) : mixed
Parameters
- $page : Element
-
Page element
- $selector : string
-
CSS selector
- $timeout : int = null
-
Wait timeout (in ms)
- $index : int
-
Index of the element (0-based)
Return values
mixed —closeLightbox()
Verify that lightbox title contains the expected value
protected
closeLightbox(Element $page[, bool $closeButton = false ]) : void
Parameters
- $page : Element
-
Page element
- $closeButton : bool = false
-
Whether there should be a close button in the modal body
Return values
void —findAndAssertLink()
Retrieve a link and assert that it exists before returning it.
protected
findAndAssertLink(Element $page, string $text) : mixed
Parameters
- $page : Element
-
Page element
- $text : string
-
Link text to match
Return values
mixed —findCss()
Wait for an element to exist, then retrieve it.
protected
findCss(Element $page, string $selector[, int $timeout = null ], int $index) : mixed
Parameters
- $page : Element
-
Page element
- $selector : string
-
CSS selector
- $timeout : int = null
-
Wait timeout (in ms)
- $index : int
-
Index of the element (0-based)
Return values
mixed —findCssAndCallMethod()
Return value of a method of an element selected via CSS; retry if it fails due to DOM change.
protected
findCssAndCallMethod(Element $page, string $selector, string $method[, int $timeout = null ], int $index[, int $retries = 6 ]) : string
Parameters
- $page : Element
-
Page element
- $selector : string
-
CSS selector
- $method : string
-
Method to call
- $timeout : int = null
-
Wait timeout for CSS selection (in ms)
- $index : int
-
Index of the element (0-based)
- $retries : int = 6
-
Retry count for set loop
Return values
string —findCssAndGetHtml()
Get text of an element selected via CSS; retry if it fails due to DOM change.
protected
findCssAndGetHtml(Element $page, string $selector[, int $timeout = null ], int $index[, int $retries = 6 ]) : string
Parameters
- $page : Element
-
Page element
- $selector : string
-
CSS selector
- $timeout : int = null
-
Wait timeout for CSS selection (in ms)
- $index : int
-
Index of the element (0-based)
- $retries : int = 6
-
Retry count for set loop
Return values
string —findCssAndGetText()
Get text of an element selected via CSS; retry if it fails due to DOM change.
protected
findCssAndGetText(Element $page, string $selector[, int $timeout = null ], int $index[, int $retries = 6 ]) : string
Parameters
- $page : Element
-
Page element
- $selector : string
-
CSS selector
- $timeout : int = null
-
Wait timeout for CSS selection (in ms)
- $index : int
-
Index of the element (0-based)
- $retries : int = 6
-
Retry count for set loop
Return values
string —findCssAndGetValue()
Get value of an element selected via CSS; retry if it fails due to DOM change.
protected
findCssAndGetValue(Element $page, string $selector[, int $timeout = null ], int $index[, int $retries = 6 ]) : string
Parameters
- $page : Element
-
Page element
- $selector : string
-
CSS selector
- $timeout : int = null
-
Wait timeout for CSS selection (in ms)
- $index : int
-
Index of the element (0-based)
- $retries : int = 6
-
Retry count for set loop
Return values
string —findCssAndSetValue()
Set a value within an element selected via CSS; retry if set fails due to browser bugs.
protected
findCssAndSetValue(Element $page, string $selector, string $value[, int $timeout = null ][, int $retries = 6 ][, bool $verifyValue = true ][, bool $reFocus = false ]) : mixed
Parameters
- $page : Element
-
Page element
- $selector : string
-
CSS selector
- $value : string
-
Value to set
- $timeout : int = null
-
Wait timeout for CSS selection (in ms)
- $retries : int = 6
-
Retry count for set loop
- $verifyValue : bool = true
-
Whether to verify that the value was written
- $reFocus : bool = false
-
Whether to focus the element when done setting the value
Return values
mixed —getCurrentQueryString()
Get query string for the current page
protected
getCurrentQueryString([bool $excludeSid = false ]) : string
Parameters
- $excludeSid : bool = false
-
Whether to remove any sid from the query string
Return values
string —getCurrentUrlWithoutSid()
Get current URL without any sid parameter in the query string
protected
getCurrentUrlWithoutSid() : string
Return values
string —getDefaultTimeout()
Get the default timeout in milliseconds
protected
getDefaultTimeout() : int
Return values
int —getFirstMethodAttributeValue()
Extract the first parameter of the first attribute matching the specified criteria.
protected
getFirstMethodAttributeValue(string $method, string $attribute[, mixed $default = null ]) : mixed
Parameters
- $method : string
-
Method name to check for attributes
- $attribute : string
-
Attribute class name to look up
- $default : mixed = null
-
Default value to use if no match found
Tags
Return values
mixed —getMinkDriver()
Get the Mink driver, initializing it if necessary.
protected
getMinkDriver() : Selenium2Driver
Return values
Selenium2Driver —getMinkSession()
Get a Mink session.
protected
getMinkSession() : Session
Return values
Session —getPathResolver()
Get a config file path resolver
protected
getPathResolver([string|null $baseDirectory = null ]) : PathResolver
Parameters
- $baseDirectory : string|null = null
-
Optional directory to override APPLICATION_PATH
Return values
PathResolver —getSearchHomePage()
Load the Search/Home page as a foundation for searching.
protected
getSearchHomePage([Session|null $session = null ]) : Element
Parameters
- $session : Session|null = null
-
Mink session (will be automatically established if not provided).
Return values
Element —getSnoozeMultiplier()
Get the snooze multiplier.
protected
getSnoozeMultiplier() : float
Return values
float —getTestName()
Get name of the current test
protected
getTestName() : string
Return values
string —getVuFindUrl()
Get base URL of running VuFind instance.
protected
getVuFindUrl([string $path = '' ]) : string
Parameters
- $path : string = ''
-
Relative path to add to base URL.
Return values
string —hasElementsMatchingText()
Check whether an element containing the specified text exists.
protected
hasElementsMatchingText(Element $page, string $selector, string $text) : bool
Parameters
- $page : Element
-
Page element
- $selector : string
-
CSS selector
- $text : string
-
Expected text
Return values
bool —htmlValidationMsgToStr()
Convert a NU HTML Validator message to a string
protected
htmlValidationMsgToStr(array<string|int, mixed> $message) : string
Parameters
- $message : array<string|int, mixed>
-
Validation message
Return values
string —logWarning()
Log a warning message
protected
logWarning(string $consoleMsg[, string $logMsg = '' ]) : void
Parameters
- $consoleMsg : string
-
Message to output to console
- $logMsg : string = ''
-
Message to output to PHP error log
Return values
void —makeRecordApiCall()
Make a record retrieval API call and return the resulting page object.
protected
makeRecordApiCall([string $id = 'testbug2' ]) : Element
Parameters
- $id : string = 'testbug2'
-
Record ID to retrieve.
Return values
Element —outputHtmlValidationMessages()
Output HTML validation messages to log file and/or console
protected
outputHtmlValidationMessages(array<string|int, mixed> $messages, string $level, string $logFile, bool $quiet) : void
Parameters
- $messages : array<string|int, mixed>
-
Messages
- $level : string
-
Message level (info or error)
- $logFile : string
-
Log file name
- $quiet : bool
-
Whether the console output should be quiet
Return values
void —performSearch()
Search for the specified query.
protected
performSearch(string $query[, string $handler = null ][, string $path = '/Search' ]) : Element
Parameters
- $query : string
-
Search term(s)
- $handler : string = null
-
Search type (optional)
- $path : string = '/Search'
-
Path to use as search starting point (optional)
Return values
Element —restoreConfigs()
Restore configurations to the state they were in prior to a call to changeConfig().
protected
restoreConfigs() : void
Return values
void —snooze()
Sleep if necessary.
protected
snooze([int $secs = 1 ]) : void
Parameters
- $secs : int = 1
-
Seconds to sleep
Return values
void —stopMinkSession()
Shut down the Mink session.
protected
stopMinkSession() : void
Return values
void —submitSearchForm()
Submit a search on the provided page.
protected
submitSearchForm(Element $page, string $query[, string $handler = null ]) : void
Parameters
- $page : Element
-
Current page object
- $query : string
-
Search term(s)
- $handler : string = null
-
Search type (optional)
Tags
Return values
void —unFindCss()
Wait for an element to NOT exist.
protected
unFindCss(Element $page, string $selector[, int $timeout = null ], int $index) : void
Parameters
- $page : Element
-
Page element
- $selector : string
-
CSS selector
- $timeout : int = null
-
Wait timeout (in ms)
- $index : int
-
Index of the element (0-based)
Return values
void —validateHtml()
Validate current page HTML if validation is enabled and a session exists
protected
validateHtml([Element|null $page = null ]) : void
Parameters
- $page : Element|null = null
-
Page to check (optional; uses the page from session by default)
Tags
Return values
void —waitForLightboxHidden()
Wait for Lightbox to become hidden if it isn't already.
protected
waitForLightboxHidden() : void
Return values
void —waitForPageLoad()
Wait for page load (full page or any element) to complete
protected
waitForPageLoad(Element $page[, int $timeout = null ]) : void
Parameters
- $page : Element
-
Page element
- $timeout : int = null
-
Wait timeout (in ms)
Return values
void —waitStatement()
Wait for a JavaScript statement to result in true.
protected
waitStatement(string $statement[, int $timeout = null ]) : mixed
Includes a check for $ to be available to make sure jQuery has been loaded.
Parameters
- $statement : string
-
JavaScript statement to evaluate
- $timeout : int = null
-
Wait timeout (in ms)