FileLogTest.php 4.5 KB

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