OaiTest
extends MinkTestCase
in package
Uses
HttpRequestTrait
OAI-PMH test class.
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
- $defaultOaiConfig : array<string|int, mixed>
- Default OAI config settings
- $firstOpenDropdownMenuItemSelector : string
- Selector for first item in a dropdown menu
- $httpService : HttpService|null
- HTTP service
- $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)
- serverProvider() : array<string|int, array<string|int, mixed>>
- Data provider describing OAI servers.
- setUp() : void
- Standard setup method.
- tearDown() : void
- Standard teardown method.
- tearDownAfterClass() : void
- Standard tear-down.
- testDisabledByDefault() : void
- Test that OAI-PMH is disabled by default.
- testIdentifyResponseRepositoryName() : void
- Test that an identify response is provided and includes an appropriate repository name.
- testListRecords() : void
- Test the ListRecords verb.
- testVerbRequired() : void
- Test that a verb is required when enabled.
- 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
- getExtraVuFindHttpRequestHeaders() : array<string|int, mixed>
- Get extra HTTP headers to support testing.
- getFirstMethodAttributeValue() : mixed
- Extract the first parameter of the first attribute matching the specified criteria.
- getHttpService() : HttpService
- Get HTTP service.
- 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
- httpGet() : Response
- Perform an HTTP GET operation with coverage awareness.
- httpPost() : Response
- Perform an HTTP POST operation with coverage awareness.
- logWarning() : void
- Log a warning message
- 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
$defaultOaiConfig
Default OAI config settings
protected
array<string|int, mixed>
$defaultOaiConfig
= ['OAI' => ['identifier' => 'vufind.org', 'repository_name' => 'test repo', 'page_size' => 15]]
$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
$httpService
HTTP service
protected
HttpService|null
$httpService
= null
$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 —serverProvider()
Data provider describing OAI servers.
public
static serverProvider() : array<string|int, array<string|int, mixed>>
Return values
array<string|int, array<string|int, mixed>> —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 —testDisabledByDefault()
Test that OAI-PMH is disabled by default.
public
testDisabledByDefault(string $path) : void
Parameters
- $path : string
-
URL path to OAI-PMH server.
Tags
Return values
void —testIdentifyResponseRepositoryName()
Test that an identify response is provided and includes an appropriate repository name.
public
testIdentifyResponseRepositoryName(string $path) : void
Parameters
- $path : string
-
URL path to OAI-PMH server.
Tags
Return values
void —testListRecords()
Test the ListRecords verb.
public
testListRecords() : void
Return values
void —testVerbRequired()
Test that a verb is required when enabled.
public
testVerbRequired(string $path) : void
Parameters
- $path : string
-
URL path to OAI-PMH server.
Tags
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 —getExtraVuFindHttpRequestHeaders()
Get extra HTTP headers to support testing.
protected
getExtraVuFindHttpRequestHeaders() : array<string|int, mixed>
Return values
array<string|int, mixed> —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 —getHttpService()
Get HTTP service.
protected
getHttpService() : HttpService
Return values
HttpService —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 —httpGet()
Perform an HTTP GET operation with coverage awareness.
protected
httpGet(string $url[, array<string|int, mixed> $params = [] ][, float $timeout = null ][, array<string|int, mixed> $headers = [] ]) : Response
Parameters
- $url : string
-
Request URL
- $params : array<string|int, mixed> = []
-
Request parameters
- $timeout : float = null
-
Request timeout in seconds
- $headers : array<string|int, mixed> = []
-
Request headers
Return values
Response —httpPost()
Perform an HTTP POST operation with coverage awareness.
protected
httpPost(string $url[, mixed $body = null ][, string $type = 'application/octet-stream' ][, float $timeout = null ][, array<string|int, mixed> $headers = [] ]) : Response
Parameters
- $url : string
-
Request URL
- $body : mixed = null
-
Request body document
- $type : string = 'application/octet-stream'
-
Request body content type
- $timeout : float = null
-
Request timeout in seconds
- $headers : array<string|int, mixed> = []
-
Request http-headers
Return values
Response —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 —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)