1<?php 2// (c) Copyright by authors of the Tiki Wiki CMS Groupware Project 3// 4// All Rights Reserved. See copyright.txt for details and a complete list of authors. 5// Licensed under the GNU LESSER GENERAL PUBLIC LICENSE. See license.txt for details. 6// $Id$ 7 8 9class TikiVersionTest extends PHPUnit_Framework_TestCase 10{ 11 function versions() 12 { 13 return [ 14 ['9.0', new Tiki_Version_Version(9, 0)], 15 ['9.1', new Tiki_Version_Version(9, 1)], 16 ['9.1beta2', new Tiki_Version_Version(9, 1, null, 'beta', 2)], 17 ['1.9.12.1beta2', new Tiki_Version_Version(1, 9, '12.1', 'beta', 2)], 18 ['9.0pre', new Tiki_Version_Version(9, 0, null, 'pre')], 19 ]; 20 } 21 22 /** 23 * @dataProvider versions 24 */ 25 function testParseVersions($string, $version) 26 { 27 $this->assertEquals($version, Tiki_Version_Version::get($string)); 28 } 29 30 /** 31 * @dataProvider versions 32 */ 33 function testWriteVersions($string, $version) 34 { 35 $this->assertEquals($string, (string) $version); 36 } 37 38 function testVerifyLatestVersion() 39 { 40 $checker = new Tiki_Version_Checker; 41 $checker->setCycle('regular'); 42 $checker->setVersion('9.0'); 43 44 $response = $checker->check( 45 function ($url) use (& $out) { 46 $out = $url; 47 return <<<O 489.0 498.4 506.7 51O; 52 } 53 ); 54 55 $this->assertEquals('http://tiki.org/regular.cycle', $out); 56 $this->assertEquals([], $response); 57 } 58 59 function testVerifyPastSupportedVersion() 60 { 61 $checker = new Tiki_Version_Checker; 62 $checker->setCycle('regular'); 63 $checker->setVersion('8.4'); 64 65 $response = $checker->check( 66 function ($url) use (& $out) { 67 $out = $url; 68 return <<<O 699.0 708.4 716.7 72O; 73 } 74 ); 75 76 $this->assertEquals( 77 [ 78 new Tiki_Version_Upgrade('8.4', '9.0', false), 79 ], 80 $response 81 ); 82 } 83 84 function testVerifyMinorUpdate() 85 { 86 $checker = new Tiki_Version_Checker; 87 $checker->setCycle('regular'); 88 $checker->setVersion('8.2'); 89 90 $response = $checker->check( 91 function ($url) use (& $out) { 92 $out = $url; 93 return <<<O 949.0 958.4 966.7 97O; 98 } 99 ); 100 101 $this->assertEquals( 102 [ 103 new Tiki_Version_Upgrade('8.2', '8.4', true), 104 new Tiki_Version_Upgrade('8.4', '9.0', false), 105 ], 106 $response 107 ); 108 } 109 110 function testVerifyUpgradePrerelease() 111 { 112 $checker = new Tiki_Version_Checker; 113 $checker->setCycle('regular'); 114 $checker->setVersion('8.4beta3'); 115 116 $response = $checker->check( 117 function ($url) use (& $out) { 118 $out = $url; 119 return <<<O 1209.0 1218.4 1226.7 123O; 124 } 125 ); 126 127 $this->assertEquals( 128 [ 129 new Tiki_Version_Upgrade('8.4beta3', '8.4', true), 130 new Tiki_Version_Upgrade('8.4', '9.0', false), 131 ], 132 $response 133 ); 134 } 135 136 function testUpgradeFromUnsupportedVersion() 137 { 138 $checker = new Tiki_Version_Checker; 139 $checker->setCycle('regular'); 140 $checker->setVersion('4.3'); 141 142 $response = $checker->check( 143 function ($url) use (& $out) { 144 $out = $url; 145 return <<<O 1468.4 1479.0 1486.7 149O; 150 } 151 ); 152 153 $this->assertEquals( 154 [ 155 new Tiki_Version_Upgrade('4.3', '9.0', true), 156 ], 157 $response 158 ); 159 } 160 161 function testCurrentVersionMoreRecent() 162 { 163 $checker = new Tiki_Version_Checker; 164 $checker->setCycle('regular'); 165 $checker->setVersion('10.0'); 166 167 $response = $checker->check( 168 function ($url) use (& $out) { 169 $out = $url; 170 return <<<O 1718.4 1729.0 1736.7 174O; 175 } 176 ); 177 178 $this->assertEquals([], $response); 179 } 180 181 /** 182 * @dataProvider upgradeMessages 183 */ 184 function testObtainMessages($string, $upgrade) 185 { 186 $this->assertEquals($string, $upgrade->getMessage()); 187 } 188 189 function upgradeMessages() 190 { 191 return [ 192 ['Version 8.2 is no longer supported. A minor upgrade to 8.4 is strongly recommended.', new Tiki_Version_Upgrade('8.2', '8.4', true)], 193 ['Version 4.3 is no longer supported. A major upgrade to 9.0 is strongly recommended.', new Tiki_Version_Upgrade('4.3', '9.0', true)], 194 ['Version 8.4 is still supported. However, a major upgrade to 9.0 is available.', new Tiki_Version_Upgrade('8.4', '9.0', false)], 195 ]; 196 } 197} 198