FileLogTest.php 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. <?php
  2. namespace Tools\Test\Utility;
  3. use Exception;
  4. use Shim\TestSuite\TestCase;
  5. use Tools\Utility\FileLog;
  6. /**
  7. * FileLogTest class
  8. */
  9. class FileLogTest extends TestCase {
  10. /**
  11. * Default filename with path to use in test case.
  12. *
  13. * @var string
  14. */
  15. private const TEST_DEFAULT_FILENAME_STRING = 'custom_log';
  16. private const TEST_DEFAULT_FILEPATH_STRING = LOGS . self::TEST_DEFAULT_FILENAME_STRING . '.log';
  17. /**
  18. * Filename with path to use in string test case.
  19. *
  20. * @var string
  21. */
  22. private const TEST_FILENAME_STRING = 'my_file';
  23. private const TEST_FILEPATH_STRING = LOGS . self::TEST_FILENAME_STRING . '.log';
  24. /**
  25. * Filename with path to use in array test case.
  26. *
  27. * @var string
  28. */
  29. private const TEST_FILENAME_ARRAY1 = 'array_file1';
  30. private const TEST_FILEPATH_ARRAY1 = LOGS . self::TEST_FILENAME_ARRAY1 . '.log';
  31. private const TEST_FILENAME_ARRAY2 = 'array_file2';
  32. private const TEST_FILEPATH_ARRAY2 = LOGS . self::TEST_FILENAME_ARRAY2 . '.log';
  33. /**
  34. * Filename with path to use in object test case.
  35. *
  36. * @var string
  37. */
  38. private const TEST_FILENAME_OBJECT = 'object';
  39. private const TEST_FILEPATH_OBJECT = LOGS . self::TEST_FILENAME_OBJECT . '.log';
  40. /**
  41. * setUp method
  42. *
  43. * @return void
  44. */
  45. public function setUp(): void {
  46. parent::setUp();
  47. }
  48. /**
  49. * testLogsStringData method
  50. *
  51. * @return void
  52. */
  53. public function testLogsStringData(): void {
  54. if (file_exists(static::TEST_FILEPATH_STRING)) {
  55. unlink(static::TEST_FILEPATH_STRING);
  56. }
  57. $result = FileLog::write('It works!', static::TEST_FILENAME_STRING);
  58. $this->assertTrue($result);
  59. $this->assertFileExists(static::TEST_FILEPATH_STRING);
  60. $this->assertRegExp(
  61. '/^2[0-9]{3}-[0-9]+-[0-9]+ [0-9]+:[0-9]+:[0-9]+ Debug: It works!/',
  62. file_get_contents(static::TEST_FILEPATH_STRING)
  63. );
  64. unlink(static::TEST_FILEPATH_STRING);
  65. }
  66. /**
  67. * testLogsArray method
  68. *
  69. * @return void
  70. */
  71. public function testLogsArray(): void {
  72. if (file_exists(static::TEST_FILEPATH_ARRAY1)) {
  73. unlink(static::TEST_FILEPATH_ARRAY1);
  74. }
  75. if (file_exists(static::TEST_FILEPATH_ARRAY2)) {
  76. unlink(static::TEST_FILEPATH_ARRAY2);
  77. }
  78. $result1 = FileLog::write(
  79. [
  80. 'user' => [
  81. 'id' => 1,
  82. 'firstname' => 'John Doe',
  83. 'email' => 'john.doe@example.com',
  84. ],
  85. ],
  86. static::TEST_FILENAME_ARRAY1
  87. );
  88. $result2 = FileLog::write(
  89. [
  90. 'user' => [
  91. 'id' => 2,
  92. 'firstname' => 'Jane Doe',
  93. 'email' => 'jane.doe@example.com',
  94. ],
  95. ],
  96. static::TEST_FILENAME_ARRAY2
  97. );
  98. // Assert for `TEST_FILENAME_ARRAY1`
  99. $this->assertTrue($result1);
  100. $this->assertFileExists(static::TEST_FILEPATH_ARRAY1);
  101. $fileContents = file_get_contents(static::TEST_FILEPATH_ARRAY1);
  102. $this->assertRegExp(
  103. '/^2[0-9]{3}-[0-9]+-[0-9]+ [0-9]+:[0-9]+:[0-9]+ Debug: Array([\s\S]*)\(([\s\S]*)[user]([\s\S]*)\[id\] => 1/',
  104. $fileContents
  105. );
  106. // Assert for `TEST_FILENAME_ARRAY2`
  107. $this->assertTrue($result2);
  108. $this->assertFileExists(static::TEST_FILEPATH_ARRAY2);
  109. $fileContents = file_get_contents(static::TEST_FILEPATH_ARRAY2);
  110. $this->assertRegExp(
  111. '/^2[0-9]{3}-[0-9]+-[0-9]+ [0-9]+:[0-9]+:[0-9]+ Debug: Array([\s\S]*)\(([\s\S]*)[user]([\s\S]*)\[id\] => 2/',
  112. $fileContents
  113. );
  114. unlink(static::TEST_FILEPATH_ARRAY1);
  115. unlink(static::TEST_FILEPATH_ARRAY2);
  116. }
  117. /**
  118. * testLogsObject method
  119. *
  120. * @return void
  121. */
  122. public function testLogsObject(): void {
  123. if (file_exists(static::TEST_FILEPATH_OBJECT)) {
  124. unlink(static::TEST_FILEPATH_OBJECT);
  125. }
  126. try {
  127. throw new Exception('Test', 1);
  128. } catch (Exception $exception) {
  129. // Do nothing
  130. }
  131. $result = FileLog::write($exception, static::TEST_FILENAME_OBJECT);
  132. $this->assertTrue($result);
  133. $this->assertFileExists(static::TEST_FILEPATH_OBJECT);
  134. $this->assertRegExp(
  135. '/^2[0-9]{3}-[0-9]+-[0-9]+ [0-9]+:[0-9]+:[0-9]+ Debug: Exception Object/',
  136. file_get_contents(static::TEST_FILEPATH_OBJECT)
  137. );
  138. unlink(static::TEST_FILEPATH_OBJECT);
  139. }
  140. /**
  141. * testLogsIntoDefaultFile method
  142. *
  143. * @return void
  144. */
  145. public function testLogsIntoDefaultFile(): void {
  146. if (file_exists(static::TEST_DEFAULT_FILEPATH_STRING)) {
  147. unlink(static::TEST_DEFAULT_FILEPATH_STRING);
  148. }
  149. $result = FileLog::write('It works with default too!');
  150. $this->assertTrue($result);
  151. $this->assertFileExists(static::TEST_DEFAULT_FILEPATH_STRING);
  152. $this->assertRegExp(
  153. '/^2[0-9]{3}-[0-9]+-[0-9]+ [0-9]+:[0-9]+:[0-9]+ Debug: It works with default too!/',
  154. file_get_contents(static::TEST_DEFAULT_FILEPATH_STRING)
  155. );
  156. unlink(static::TEST_DEFAULT_FILEPATH_STRING);
  157. }
  158. }