VuFind API Documentation

CombinedSearchTest extends MinkTestCase
in package

Mink test class for combined search.

Tags
category

VuFind

author

Demian Katz demian.katz@villanova.edu

license

http://opensource.org/licenses/gpl-2.0.php GNU General Public License

link

Main Page

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
ajaxCombinationsProvider()  : array<string|int, mixed>
Data provider for different combinations of AJAX columns
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.
testCombinedSearchResults()  : void
Test that combined results work in non-AJAX mode.
testCombinedSearchResultsAllAjax()  : void
Test that combined results work in AJAX mode.
testCombinedSearchResultsMixedAjax()  : void
Test that combined results work in mixed AJAX/non-AJAX mode.
testCombinedSearchResultsMixedAjaxDOIs()  : void
Test that DOI results work in various AJAX/non-AJAX modes.
testCombinedSearchResultsMixedAjaxWithExplain()  : void
Test that combined results work in mixed AJAX mode when Explain is turned on.
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.
assertResultsForDefaultQuery()  : void
Several different methods perform the same query against different configurations of the combined feature; this support method makes a standard set of assertions against the final results.
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.
getCombinedIniOverrides()  : array<string|int, mixed>
Get config settings for combined.ini.
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
outputHtmlValidationMessages()  : void
Output HTML validation messages to log file and/or console
performCombinedSearch()  : Element
Start a session, perform a combined search, and return the resulting page.
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

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(1) a, .mainbody .dropdown-menu.show li:nth-child(1) 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

$popoverContentSelector

Selector for popover content

protected string $popoverContentSelector = '.popover-body, .popover-content'

First for Bootstrap 3, second for Bootstrap 5

Methods

ajaxCombinationsProvider()

Data provider for different combinations of AJAX columns

public static ajaxCombinationsProvider() : array<string|int, mixed>
Return values
array<string|int, mixed>

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

testCombinedSearchResults()

Test that combined results work in non-AJAX mode.

public testCombinedSearchResults() : void
Return values
void

testCombinedSearchResultsAllAjax()

Test that combined results work in AJAX mode.

public testCombinedSearchResultsAllAjax() : void
Return values
void

testCombinedSearchResultsMixedAjax()

Test that combined results work in mixed AJAX/non-AJAX mode.

public testCombinedSearchResultsMixedAjax() : void
Return values
void

testCombinedSearchResultsMixedAjaxDOIs()

Test that DOI results work in various AJAX/non-AJAX modes.

public testCombinedSearchResultsMixedAjaxDOIs(bool $leftAjax, bool $rightAjax) : void
Parameters
$leftAjax : bool

Should left column load via AJAX?

$rightAjax : bool

Should right column load via AJAX?

Tags
dataProvider

ajaxCombinationsProvider

Return values
void

testCombinedSearchResultsMixedAjaxWithExplain()

Test that combined results work in mixed AJAX mode when Explain is turned on.

public testCombinedSearchResultsMixedAjaxWithExplain() : 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

assertResultsForDefaultQuery()

Several different methods perform the same query against different configurations of the combined feature; this support method makes a standard set of assertions against the final results.

protected assertResultsForDefaultQuery(Element $page) : void
Parameters
$page : Element

Page element.

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

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, callable $method[, int $timeout = null ], int $index[, int $retries = 6 ]) : string
Parameters
$page : Element

Page element

$selector : string

CSS selector

$method : callable

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 ]) : 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

Return values
mixed

getCombinedIniOverrides()

Get config settings for combined.ini.

protected getCombinedIniOverrides() : array<string|int, mixed>
Return values
array<string|int, 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
throws
ReflectionException
Return values
mixed

getMinkDriver()

Get the Mink driver, initializing it if necessary.

protected getMinkDriver() : Selenium2Driver
Return values
Selenium2Driver

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

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

performCombinedSearch()

Start a session, perform a combined search, and return the resulting page.

protected performCombinedSearch(string $query) : Element
Parameters
$query : string

Combined search query to perform.

Return values
Element

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
throws
Exception
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
throws
RuntimeException
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)

Return values
mixed

Search results