/
TestBaseClass.php
130 lines (107 loc) · 3.24 KB
/
TestBaseClass.php
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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
<?php
namespace LimeSurvey\tests;
use PHPUnit\Framework\TestCase;
class TestBaseClass extends TestCase
{
/**
* @var TestHelper
*/
protected static $testHelper = null;
/** @var string $tempFolder*/
protected static $tempFolder;
/** @var string $screenshotsFolder */
protected static $screenshotsFolder;
/** @var string $surveysFolder */
protected static $surveysFolder;
/** @var string $dataFolder */
protected static $dataFolder;
/** @var string $viewsFolder */
protected static $viewsFolder;
/** @var \Survey */
protected static $testSurvey;
/** @var integer */
protected static $surveyId;
public static function setUpBeforeClass()
{
self::$testHelper = new TestHelper();
self::$dataFolder = self::getDataFolder();
self::$viewsFolder = self::getViewsFolder();
self::$surveysFolder = self::getSurveysFolder();
self::$tempFolder = self::getTempFolder();
self::$screenshotsFolder = self::getScreenShotsFolder();
self::$testHelper->importAll();
parent::setUpBeforeClass();
}
// the folder getter can be used in @dataProvider methods since the setUpBeforeClass will run after them
/**
* @return string
*/
public static function getDataFolder(){
return __DIR__."/resources";
}
/**
* @return string
*/
public static function getViewsFolder(){
return self::getDataFolder().DIRECTORY_SEPARATOR.'views';
}
/**
* @return string
*/
public static function getSurveysFolder(){
return self::getDataFolder().DIRECTORY_SEPARATOR.'surveys';
}
/**
* @return string
*/
public static function getTempFolder(){
return __DIR__."/tmp";
}
/**
* @return string
*/
public static function getScreenShotsFolder(){
return self::getTempFolder().DIRECTORY_SEPARATOR.'screenshots';
}
/**
* @param string $fileName
* @return void
*/
protected static function importSurvey($fileName)
{
\Yii::app()->session['loginID'] = 1;
$surveyFile = $fileName;
if (!file_exists($surveyFile)) {
echo 'Fatal error: found no survey file';
exit(1);
}
$translateLinksFields = false;
$newSurveyName = null;
$result = \importSurveyFile(
$surveyFile,
$translateLinksFields,
$newSurveyName,
null
);
if ($result) {
self::$testSurvey = \Survey::model()->findByPk($result['newsid']);
self::$surveyId = $result['newsid'];
} else {
echo 'Fatal error: Could not import survey';
exit(2);
}
}
public static function tearDownAfterClass()
{
parent::tearDownAfterClass();
// Make sure we have permission to delete survey.
\Yii::app()->session['loginID'] = 1;
if (self::$testSurvey) {
if (!self::$testSurvey->delete()) {
echo 'Fatal error: Could not clean up survey ' . self::$testSurvey->sid . '; errors: ' . json_encode(self::$testSurvey->errors);
exit(3);
}
self::$testSurvey = null;
}
}
}