FileLogTest.php 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  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. private const TEST_FILENAME_ARRAY2 = 'array_file2';
  31. private const TEST_FILEPATH_ARRAY2 = LOGS . self::TEST_FILENAME_ARRAY2 . '.log';
  32. /**
  33. * Filename with path to use in object test case.
  34. *
  35. * @var string
  36. */
  37. private const TEST_FILENAME_OBJECT = 'object';
  38. private const TEST_FILEPATH_OBJECT = LOGS . self::TEST_FILENAME_OBJECT . '.log';
  39. /**
  40. * setUp method
  41. *
  42. * @return void
  43. */
  44. public function setUp(): void {
  45. parent::setUp();
  46. }
  47. /**
  48. * testLogsStringData method
  49. *
  50. * @return void
  51. */
  52. public function testLogsStringData(): void {
  53. if (file_exists(static::TEST_FILEPATH_STRING)) {
  54. unlink(static::TEST_FILEPATH_STRING);
  55. }
  56. $result = FileLog::write('It works!', static::TEST_FILENAME_STRING);
  57. $this->assertTrue($result);
  58. $this->assertFileExists(static::TEST_FILEPATH_STRING);
  59. $this->assertRegExp(
  60. '/^2[0-9]{3}-[0-9]+-[0-9]+ [0-9]+:[0-9]+:[0-9]+ Debug: It works!/',
  61. file_get_contents(static::TEST_FILEPATH_STRING)
  62. );
  63. unlink(static::TEST_FILEPATH_STRING);
  64. }
  65. /**
  66. * testLogsArray method
  67. *
  68. * @return void
  69. */
  70. public function testLogsArray(): void {
  71. if (file_exists(static::TEST_FILEPATH_ARRAY1)) {
  72. unlink(static::TEST_FILEPATH_ARRAY1);
  73. }
  74. if (file_exists(static::TEST_FILEPATH_ARRAY2)) {
  75. unlink(static::TEST_FILEPATH_ARRAY2);
  76. }
  77. $result1 = FileLog::write(
  78. [
  79. 'user' => [
  80. 'id' => 1,
  81. 'firstname' => 'John Doe',
  82. 'email' => 'john.doe@example.com',
  83. ],
  84. ],
  85. static::TEST_FILENAME_ARRAY1
  86. );
  87. $result2 = FileLog::write(
  88. [
  89. 'user' => [
  90. 'id' => 2,
  91. 'firstname' => 'Jane Doe',
  92. 'email' => 'jane.doe@example.com',
  93. ],
  94. ],
  95. static::TEST_FILENAME_ARRAY2
  96. );
  97. // Assert for `TEST_FILENAME_ARRAY1`
  98. $this->assertTrue($result1);
  99. $this->assertFileExists(static::TEST_FILEPATH_ARRAY1);
  100. $fileContents = file_get_contents(static::TEST_FILEPATH_ARRAY1);
  101. $this->assertRegExp(
  102. '/^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/',
  103. $fileContents
  104. );
  105. // Assert for `TEST_FILENAME_ARRAY2`
  106. $this->assertTrue($result2);
  107. $this->assertFileExists(static::TEST_FILEPATH_ARRAY2);
  108. $fileContents = file_get_contents(static::TEST_FILEPATH_ARRAY2);
  109. $this->assertRegExp(
  110. '/^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/',
  111. $fileContents
  112. );
  113. unlink(static::TEST_FILEPATH_ARRAY1);
  114. unlink(static::TEST_FILEPATH_ARRAY2);
  115. }
  116. /**
  117. * testLogsObject method
  118. *
  119. * @return void
  120. */
  121. public function testLogsObject(): void {
  122. if (file_exists(static::TEST_FILEPATH_OBJECT)) {
  123. unlink(static::TEST_FILEPATH_OBJECT);
  124. }
  125. $result = FileLog::write(
  126. $this->getTableLocator()->get('Posts'),
  127. static::TEST_FILENAME_OBJECT
  128. );
  129. $this->assertTrue($result);
  130. $this->assertFileExists(static::TEST_FILEPATH_OBJECT);
  131. $this->assertRegExp(
  132. '/^2[0-9]{3}-[0-9]+-[0-9]+ [0-9]+:[0-9]+:[0-9]+ Debug: TestApp.Model.Table.PostsTable Object/',
  133. file_get_contents(static::TEST_FILEPATH_OBJECT)
  134. );
  135. unlink(static::TEST_FILEPATH_OBJECT);
  136. }
  137. /**
  138. * testLogsIntoDefaultFile method
  139. *
  140. * @return void
  141. */
  142. public function testLogsIntoDefaultFile(): void {
  143. if (file_exists(static::TEST_DEFAULT_FILEPATH_STRING)) {
  144. unlink(static::TEST_DEFAULT_FILEPATH_STRING);
  145. }
  146. $result = FileLog::write('It works with default too!');
  147. $this->assertTrue($result);
  148. $this->assertFileExists(static::TEST_DEFAULT_FILEPATH_STRING);
  149. $this->assertRegExp(
  150. '/^2[0-9]{3}-[0-9]+-[0-9]+ [0-9]+:[0-9]+:[0-9]+ Debug: It works with default too!/',
  151. file_get_contents(static::TEST_DEFAULT_FILEPATH_STRING)
  152. );
  153. unlink(static::TEST_DEFAULT_FILEPATH_STRING);
  154. }
  155. }