Blame view

framework/tests/dev/DeprecationTest.php 3.22 KB
0084d336   Administrator   Importers CRUD
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
  <?php
  
  class DeprecationTest_Deprecation extends Deprecation {
  	public static function get_module() {
  		return self::get_calling_module_from_trace(debug_backtrace(0));
  	}
  
  	public static function get_method() {
  		return self::get_called_method_from_trace(debug_backtrace(0));
  	}
  }
  
  class DeprecationTest extends SapphireTest {
  
  	static $originalVersionInfo;
  
  	public function setUp() {
  		self::$originalVersionInfo = Deprecation::dump_settings();
  		Deprecation::$notice_level = E_USER_NOTICE;
  	}
  
  	public function tearDown() {
  		Deprecation::restore_settings(self::$originalVersionInfo);
  	}
  
  	public function testLesserVersionTriggersNoNotice() {
  		Deprecation::notification_version('1.0.0');
  		$this->assertNull(Deprecation::notice('2.0', 'Deprecation test failed'));
  	}
  
  	/**
       * @expectedException PHPUnit_Framework_Error
  	 */
  	public function testEqualVersionTriggersNotice() {
  		Deprecation::notification_version('2.0.0');
  		Deprecation::notice('2.0.0', 'Deprecation test passed');
  	}
  
  	public function testBetaVersionDoesntTriggerNoticeWhenDeprecationDoesntSpecifyReleasenum() {
  		Deprecation::notification_version('2.0.0-beta1');
  		$this->assertNull(Deprecation::notice('2.0', 'Deprecation test failed'));
  		$this->assertNull(Deprecation::notice('2.0.0', 'Deprecation test failed'));
  	}
  
  	/**
      * @expectedException PHPUnit_Framework_Error
  	 */
  	public function testGreaterVersionTriggersNotice() {
  		Deprecation::notification_version('3.0.0');
  		Deprecation::notice('2.0', 'Deprecation test passed');
  	}
  
  	public function testNonMatchingModuleNotifcationVersionDoesntAffectNotice() {
  		Deprecation::notification_version('1.0.0');
  		global $project;
  		Deprecation::notification_version('3.0.0', $project);
  		$this->callThatOriginatesFromFramework();
  	}
  
  	/**
      * @expectedException PHPUnit_Framework_Error
  	 */
  	public function testMatchingModuleNotifcationVersionAffectsNotice() {
  		Deprecation::notification_version('1.0.0');
  		Deprecation::notification_version('3.0.0', FRAMEWORK_DIR);
  		$this->callThatOriginatesFromFramework();
  	}
  
  	public function testMethodNameCalculation() {
  		$this->assertEquals(DeprecationTest_Deprecation::get_method(), 'DeprecationTest->testMethodNameCalculation');
  	}
  
  	/**
  	 * @expectedException PHPUnit_Framework_Error
  	 * @expectedExceptionMessage DeprecationTest->testScopeMethod is deprecated. Method scope
  	 */
  	public function testScopeMethod() {
  		Deprecation::notification_version('2.0.0');
  		Deprecation::notice('2.0.0', 'Method scope', Deprecation::SCOPE_METHOD);
  	}
  
  	/**
  	 * @expectedException PHPUnit_Framework_Error
  	 * @expectedExceptionMessage DeprecationTest is deprecated. Class scope
  	 */
  	public function testScopeClass() {
  		Deprecation::notification_version('2.0.0');
  		Deprecation::notice('2.0.0', 'Class scope', Deprecation::SCOPE_CLASS);
  	}
  
  	/**
  	 * @expectedException PHPUnit_Framework_Error
  	 * @expectedExceptionMessage Global scope
  	 */
  	public function testScopeGlobal() {
  		Deprecation::notification_version('2.0.0');
  		Deprecation::notice('2.0.0', 'Global scope', Deprecation::SCOPE_GLOBAL);
  	}
  
  	protected function callThatOriginatesFromFramework() {
  		$this->assertEquals(DeprecationTest_Deprecation::get_module(), FRAMEWORK_DIR);
  		$this->assertNull(Deprecation::notice('2.0', 'Deprecation test passed'));
  	}
  
  }