Issues (4868)

api/tests/AppTest.php (1 issue)

Severity
1
<?php
2
/**
3
 * EGroupware Api: Application test base class
4
 *
5
 * @link http://www.stylite.de
6
 * @package api
7
 * @subpackage test
8
 * @author Nathan Gray
9
 * @copyright (c) 2016 Nathan Gray
10
 * @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
11
 * @version $Id$
12
 */
13
14
namespace EGroupware\Api;
15
16
// test base providing Egw environment
17
require_once 'LoggedInTest.php';
18
19
use EGroupware\Api;
20
21
/**
22
 * Base class for application tests, loads the egroupware environment and provides
23
 * some handy helpers.
24
 *
25
 * Extend this class into <appname>/tests/ to test one
26
 * small aspect of an application.  For more basic (actual unit) tests that deal
27
 * with a single function, consider extending TestCase directly instead of this
28
 * class to avoid the overhead of creating the session.
29
 */
30
abstract class AppTest extends LoggedInTest
31
{
32
	/**
33
	 * Sets the tracking object to a mock object, so we don't try to send real
34
	 * notifications while testing.
35
	 *
36
	 * After calling this to mock the tracking object, you can set expectations
37
	 * for tracking:
38
	 * <code>
39
	 * $this->mockTracking($this->bo, 'app_tracker');
40
	 *
41
	 * // we do not expect track to get called for a new entry
42
	 * $this->bo->tracking->expects($this->never())
43
	 *		->method('track');
44
	 *
45
	 * $this->bo->save($entry);
46
	 * </code>
47
	 * @param Object $bo_object Instance of the BO object
48
	 * @param String $tracker_class The name of the tracker class to mock
49
	 */
50
	protected function mockTracking(&$bo_object, $tracker_class)
51
	{
52
		if(!is_object($bo_object))
53
		{
54
			throw new \BadMethodCallException('Invalid BO object');
55
		}
56
		if(!property_exists($bo_object, 'tracking'))
57
		{
58
			throw new \BadMethodCallException('Invalid BO object - needs tracking property');
59
		}
60
		$bo_object->tracking = $this->getMockBuilder($tracker_class)
61
			->disableOriginalConstructor()
62
			->setMethods(['track'])
63
			->getMock($bo_object);
0 ignored issues
show
The call to PHPUnit\Framework\MockOb...\MockBuilder::getMock() has too many arguments starting with $bo_object. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

63
			->/** @scrutinizer ignore-call */ getMock($bo_object);

This check compares calls to functions or methods with their respective definitions. If the call has more arguments than are defined, it raises an issue.

If a function is defined several times with a different number of parameters, the check may pick up the wrong definition and report false positives. One codebase where this has been known to happen is Wordpress. Please note the @ignore annotation hint above.

Loading history...
64
	}
65
}