/protected/tests/unit/ReportTest.php

https://bitbucket.org/kramx7/dc-portal · PHP · 401 lines · 192 code · 125 blank · 84 comment · 44 complexity · a14f37aa8e8c3ce038298fa05f0a04a0 MD5 · raw file

  1. <?php
  2. /*
  3. * To change this template, choose Tools | Templates
  4. * and open the template in the editor.
  5. */
  6. /**
  7. * Description of NoticeboardTest
  8. *
  9. * @author kramx7
  10. */
  11. class ReportTest extends CDbTestCase {
  12. //put your code here
  13. public $fixtures = array(
  14. 'users' => 'User',
  15. 'notices' => 'Noticeboard',
  16. 'authassignments' => 'AuthAssignment',
  17. 'authitemchilds' => 'AuthItemChild',
  18. 'authitems' => 'AuthItem',
  19. );
  20. public function testPowerGraph() {
  21. // get the first AR instance from fixture
  22. $user = User::model()->findByPk(1);
  23. Yii::app()->user->id = $user->id;
  24. // get the id of current login user
  25. $id = Yii::app()->user->id;
  26. // set graph form
  27. $model = new GraphForm;
  28. // test for kw, total
  29. $code = 'kW';
  30. // set type
  31. $model->type = $code;
  32. // get user clients
  33. $model->clients = User::model()->getUserClients($id);
  34. // get facilities
  35. $model->facilities = UserTaskFacility::model()->getAssignFacilitiesByUserIdAndTask($id, 'ReadReports','ReadAllReports');
  36. $this->assertTrue(count($model->facilities) > 0);
  37. reset($model->facilities);
  38. $model->facility_id = key($model->facilities);
  39. // set default facility
  40. $model->default_facility = $model->facility_id;
  41. // get power meters
  42. if ($model->facility_id == 0) {
  43. // get all meters to all the facilities
  44. //$meters = PowerStatistics::model()->getMetersByClientId($client_id);
  45. $meters = PowerStatistics::model()->getMetersByAllFacilitiesAndClients($model->facilities, $model->clients);
  46. } else {
  47. // get all meters to for specific facility
  48. $meters = PowerStatistics::model()->getMetersByFacilityIdAndClients($model->facility_id, $model->clients);
  49. }
  50. $this->assertTrue(count($meters) > 0);
  51. $model->meters = $meters;
  52. // set dates
  53. $model->from_date = '16/04/2013';
  54. $model->to_date = '17/04/2013';
  55. // set dates to timestamp for db comparison
  56. $model->setDatesToTimestamp();
  57. //check dates are properly converted to timestamp;
  58. $this->assertTrue($model->from_date > strtotime('2013-01-01'));
  59. $this->assertTrue($model->to_date > strtotime('2013-01-01'));
  60. // get power statistics
  61. $power_statistics = array();
  62. if ($model->target_id != 0) {
  63. if ($model->type == 'kW') {
  64. $power_statistics = PowerStatistics::model()->getKwByFacilityIdAndDatesAndTargetIdAndClients($model->facility_id, $model->from_date, $model->to_date, $model->target_id, $model->clients);
  65. } else {
  66. $power_statistics = PowerStatisticsSummary::model()->getKwhByFacilityIdAndDatesAndTargetIdAndClients($model->facility_id, $model->from_date, $model->to_date, $model->target_id, $model->clients);
  67. }
  68. } else {
  69. if ($model->type == 'kW') {
  70. $power_statistics = PowerStatistics::model()->getKwByFacilityIdAndDatesAndClients($model->facility_id, $model->from_date, $model->to_date, $model->clients);
  71. } else {
  72. $power_statistics = PowerStatisticsSummary::model()->getKwhByFacilityIdAndDatesAndClients($model->facility_id, $model->from_date, $model->to_date, $model->clients);
  73. }
  74. }
  75. $this->assertTrue(count($power_statistics) > 0);
  76. //var_dump($power_statistics);
  77. // set xdata and ydata
  78. $graph = new GraphComponent;
  79. $graph->setData($power_statistics, $model->from_date, $model->to_date, $model->type, $model->target_id);
  80. // set title
  81. $meter_name = PowerStatistics::model()->getMeterName($model->target_id);
  82. $graph->setTitle($meter_name);
  83. $this->assertTrue($graph->title != '');
  84. // get client id and name
  85. $client_id = ClientFacility::model()->getClientIdByFacilityId($model->facility_id);
  86. $client = Client::model()->getClientById($client_id);
  87. // get facility name
  88. $facility_name = $model->facilities[$model->facility_id];
  89. // set subtitle
  90. $graph->setSubTitle($client->client_name, $facility_name);
  91. $this->assertTrue($graph->subtitle != '');
  92. // plot/draw graph
  93. $graph->plotGraph();
  94. //echo '<br>',$graph->directory;
  95. $this->assertTrue($graph->directory != '');
  96. // test for kwh , total
  97. $code = 'kWh';
  98. // set type
  99. $model->type = $code;
  100. // get user clients
  101. $model->clients = User::model()->getUserClients($id);
  102. // get facilities
  103. $model->facilities = UserTaskFacility::model()->getAssignFacilitiesByUserIdAndTask($id, 'ReadReports','ReadAllReports');
  104. $this->assertTrue(count($model->facilities) > 0);
  105. reset($model->facilities);
  106. $model->facility_id = key($model->facilities);
  107. // set default facility
  108. $model->default_facility = $model->facility_id;
  109. // get power meters
  110. if ($model->facility_id == 0) {
  111. // get all meters to all the facilities
  112. //$meters = PowerStatistics::model()->getMetersByClientId($client_id);
  113. $meters = PowerStatistics::model()->getMetersByAllFacilitiesAndClients($model->facilities, $model->clients);
  114. } else {
  115. // get all meters to for specific facility
  116. $meters = PowerStatistics::model()->getMetersByFacilityIdAndClients($model->facility_id, $model->clients);
  117. }
  118. $this->assertTrue(count($meters) > 0);
  119. $model->meters = $meters;
  120. // set dates
  121. $model->from_date = '16/03/2013';
  122. $model->to_date = '17/04/2013';
  123. // set dates to timestamp for db comparison
  124. $model->setDatesToTimestamp();
  125. //check dates are properly converted to timestamp;
  126. $this->assertTrue($model->from_date > strtotime('2013-01-01'));
  127. $this->assertTrue($model->to_date > strtotime('2013-01-01'));
  128. // get power statistics
  129. $power_statistics = array();
  130. if ($model->target_id != 0) {
  131. if ($model->type == 'kW') {
  132. $power_statistics = PowerStatistics::model()->getKwByFacilityIdAndDatesAndTargetIdAndClients($model->facility_id, $model->from_date, $model->to_date, $model->target_id, $model->clients);
  133. } else {
  134. $power_statistics = PowerStatisticsSummary::model()->getKwhByFacilityIdAndDatesAndTargetIdAndClients($model->facility_id, $model->from_date, $model->to_date, $model->target_id, $model->clients);
  135. }
  136. } else {
  137. if ($model->type == 'kW') {
  138. $power_statistics = PowerStatistics::model()->getKwByFacilityIdAndDatesAndClients($model->facility_id, $model->from_date, $model->to_date, $model->clients);
  139. } else {
  140. $power_statistics = PowerStatisticsSummary::model()->getKwhByFacilityIdAndDatesAndClients($model->facility_id, $model->from_date, $model->to_date, $model->clients);
  141. }
  142. }
  143. $this->assertTrue(count($power_statistics) > 0);
  144. //var_dump($power_statistics);
  145. // set xdata and ydata
  146. $graph = new GraphComponent;
  147. $graph->setData($power_statistics, $model->from_date, $model->to_date, $model->type, $model->target_id);
  148. // set title
  149. $meter_name = PowerStatistics::model()->getMeterName($model->target_id);
  150. $graph->setTitle($meter_name);
  151. $this->assertTrue($graph->title != '');
  152. // get client id and name
  153. $client_id = ClientFacility::model()->getClientIdByFacilityId($model->facility_id);
  154. $client = Client::model()->getClientById($client_id);
  155. // get facility name
  156. $facility_name = $model->facilities[$model->facility_id];
  157. // set subtitle
  158. $graph->setSubTitle($client->client_name, $facility_name);
  159. $this->assertTrue($graph->subtitle != '');
  160. // plot/draw graph
  161. $graph->plotGraph();
  162. //echo '<br>',$graph->directory;
  163. $this->assertTrue($graph->directory != '');
  164. }
  165. public function TestEnvironmentGraph() {
  166. // get the first AR instance from fixture
  167. $user = User::model()->findByPk(1);
  168. Yii::app()->user->id = $user->id;
  169. // get the id of current login user
  170. $id = Yii::app()->user->id;
  171. // set graph form
  172. $model = new GraphForm;
  173. // test for temperature type or graph
  174. $code = 'Temperature';
  175. // set type
  176. $model->type = $code;
  177. // get user clients
  178. $model->clients = User::model()->getUserClients($id);
  179. // get facilities
  180. $model->facilities = UserTaskFacility::model()->getAssignFacilitiesByUserIdAndTask($id, 'ReadReports','ReadAllReports');
  181. $this->assertTrue(count($model->facilities) > 0);
  182. reset($model->facilities);
  183. $model->facility_id = key($model->facilities);
  184. // set default facility
  185. $model->default_facility = $model->facility_id;
  186. // get sensors
  187. if ($model->facility_id == 0) {
  188. // get all meters to all the facilities
  189. $sensors = Sensor::model()->getSensorsByAllFacilitiesAndClients($model->facilities, $model->clients);
  190. } else {
  191. // get all meters to for specific facility
  192. $sensors = Sensor::model()->getSensorsByFacilityIdAndClients($model->facility_id, $model->clients);
  193. }
  194. $this->assertTrue(count($sensors) > 0);
  195. $model->sensors = $sensors;
  196. // set choosen sensor, first sensor
  197. reset($model->sensors);
  198. $model->sensor = key($model->sensors);
  199. // set dates
  200. $model->from_date = '16/04/2013';
  201. $model->to_date = '17/04/2013';
  202. // set dates to timestamp for db comparison
  203. $model->setDatesToTimestamp();
  204. //check dates are properly converted to timestamp;
  205. $this->assertTrue($model->from_date > strtotime('2013-01-01'));
  206. $this->assertTrue($model->to_date > strtotime('2013-01-01'));
  207. // get power statistics
  208. $statistics = array();
  209. if ($model->sensor != 0) {
  210. if ($model->type == 'Temperature') {
  211. $statistics = EnvironmentStatistics::model()->getTemperatureBySensorIdAndDatesAndClients($model->sensor, $model->from_date, $model->to_date, $model->clients);
  212. } else {
  213. $statistics = EnvironmentStatistics::model()->getHumidityBySensorIdAndDatesAndClients($model->sensor, $model->from_date, $model->to_date, $model->clients);
  214. }
  215. }
  216. $this->assertTrue(count($statistics) > 0);
  217. //var_dump($power_statistics);
  218. // set xdata and ydata
  219. $graph = new GraphComponent;
  220. $graph->setData($statistics, $model->from_date, $model->to_date, $model->type, $model->target_id);
  221. // set title
  222. $sensor_name = $model->sensors[$model->sensor];
  223. $graph->setTitle($sensor_name);
  224. $this->assertTrue($graph->title != '');
  225. // get client id and name
  226. $client_id = ClientFacility::model()->getClientIdByFacilityId($model->facility_id);
  227. $client = Client::model()->getClientById($client_id);
  228. // get facility name
  229. $facility_name = $model->facilities[$model->facility_id];
  230. // set subtitle
  231. $graph->setSubTitle($client->client_name, $facility_name);
  232. $this->assertTrue($graph->subtitle != '');
  233. // plot/draw graph
  234. $graph->plotGraph();
  235. //echo '<br>',$graph->directory;
  236. $this->assertTrue($graph->directory != '');
  237. }
  238. public function testNger() {
  239. // get the first AR instance from fixture
  240. $user = User::model()->findByPk(1);
  241. Yii::app()->user->id = $user->id;
  242. // get the id of current login user
  243. $id = Yii::app()->user->id;
  244. // set graph form
  245. $model = new GraphForm;
  246. $facility_id = 5;
  247. $fiscal_year = 2012;
  248. // get user clients
  249. $model->clients = User::model()->getUserClients($id);
  250. $years = PowerStatistics::model()->getNGERYearByFacilityIdAndClients($facility_id, $model->clients);
  251. $this->assertTrue(count($years) > 0);
  252. $today = getdate();
  253. $current_year = $today['year']; // current year
  254. $year = $current_year - 1;
  255. $str_sdate = "1 July " . $year;
  256. $start = strtotime($str_sdate);
  257. if ($year == $current_year) {
  258. $end = $today[0];
  259. } else {
  260. $end = $start + 365 * 24 * 60 * 60;
  261. }
  262. //get kw for facility
  263. $powers = PowerStatisticsSummary::model()->getPowerByFacilityIdAndDatesAndClients($facility_id, $start, $end, $model->clients);
  264. $this->assertTrue(count($powers) > 0);
  265. $pues = FacilityPue::model()->getPueByPowerDatesAndFacilityId($powers, $facility_id);
  266. $this->assertTrue(count($pues) > 0);
  267. $carbons = Facility::model()->getCarbonByPowerDatesAndFacilityId($powers, $facility_id);
  268. $this->assertTrue(count($carbons) > 0);
  269. $model->computeNGER($powers, $pues, $carbons);
  270. $this->assertTrue($model->sum_kwh > 0 );
  271. $this->assertTrue($model->average_pue > 0 );
  272. $this->assertTrue($model->sum_total_kwh > 0 );
  273. $this->assertTrue($model->sum_carbon > 0 );
  274. }
  275. }
  276. ?>