OperationLogTest.php 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. <?php
  2. namespace Tests\Browser;
  3. use Dcat\Admin\Models\OperationLog;
  4. use Laravel\Dusk\Browser;
  5. use Tests\Browser\Components\Grid\BatchActions;
  6. use Tests\Browser\Components\Grid\RowSelector;
  7. use Tests\TestCase;
  8. /**
  9. * 操作日志功能测试.
  10. *
  11. * @group log
  12. */
  13. class OperationLogTest extends TestCase
  14. {
  15. public function testOperationLogIndex()
  16. {
  17. $this->browse(function (Browser $browser) {
  18. $browser->visit(test_admin_path('auth/menu'))
  19. ->assertPathIs(test_admin_path('auth/menu'))
  20. ->visit(test_admin_path('auth/logs'))
  21. ->assertSee(__('admin.operation_log'))
  22. ->assertSee(__('admin.list'))
  23. ->assertSee(__('admin.refresh'))
  24. ->assertSee(__('admin.filter'))
  25. ->assertSee('ID')
  26. ->assertSee(__('admin.user'))
  27. ->assertSee(__('admin.method'))
  28. ->assertSee(__('admin.uri'))
  29. ->assertSee('IP')
  30. ->assertSee(__('admin.input'))
  31. ->assertSee(__('admin.created_at'))
  32. ->assertSee(__('admin.action'))
  33. ->waitForText(__('admin.responsive.display'), 2)
  34. ->assertSee(__('admin.responsive.display_all'));
  35. });
  36. }
  37. public function testGenerateLogs()
  38. {
  39. $this->browse(function (Browser $browser) {
  40. $table = config('admin.database.operation_log_table');
  41. $browser->visit(test_admin_path('auth/menu'))
  42. ->assertPathIs(test_admin_path('auth/menu'))
  43. ->visit(test_admin_path('auth/users'))
  44. ->assertPathIs(test_admin_path('auth/users'))
  45. ->visit(test_admin_path('auth/permissions'))
  46. ->assertPathIs(test_admin_path('auth/permissions'))
  47. ->visit(test_admin_path('auth/roles'))
  48. ->assertPathIs(test_admin_path('auth/roles'))
  49. ->visit(test_admin_path('auth/logs'))
  50. ->assertPathIs(test_admin_path('auth/logs'));
  51. $this->seeInDatabase($table, ['path' => trim(test_admin_path('auth/menu'), '/'), 'method' => 'GET'])
  52. ->seeInDatabase($table, ['path' => trim(test_admin_path('auth/users'), '/'), 'method' => 'GET'])
  53. ->seeInDatabase($table, ['path' => trim(test_admin_path('auth/permissions'), '/'), 'method' => 'GET'])
  54. ->seeInDatabase($table, ['path' => trim(test_admin_path('auth/roles'), '/'), 'method' => 'GET']);
  55. });
  56. $this->assertSame(4, OperationLog::count());
  57. }
  58. public function testDeleteLogs()
  59. {
  60. $this->browse(function (Browser $browser) {
  61. $table = config('admin.database.operation_log_table');
  62. $this->assertEquals(0, OperationLog::count());
  63. $browser->visit(test_admin_path('auth/users'));
  64. $this->seeInDatabase($table, ['path' => trim(test_admin_path('auth/users'), '/'), 'method' => 'GET']);
  65. $browser->visit(test_admin_path('auth/logs'))
  66. ->assertPathIs(test_admin_path('auth/logs'))
  67. ->pause(500);
  68. $browser->script("$('a[data-action=delete]').first().click()");
  69. $browser->waitForText(__('admin.delete_confirm'), 3);
  70. $browser->script("$('.swal2-confirm').first().click()");
  71. $browser->waitForText(__('admin.delete_succeeded'), 3);
  72. $this->assertEquals(0, OperationLog::count());
  73. });
  74. }
  75. public function testDeleteMultipleLogs()
  76. {
  77. $this->browse(function (Browser $browser) {
  78. $table = config('admin.database.operation_log_table');
  79. $browser->visit(test_admin_path('auth/menu'))
  80. ->visit(test_admin_path('auth/users'))
  81. ->visit(test_admin_path('auth/permissions'))
  82. ->visit(test_admin_path('auth/roles'));
  83. $number = 4;
  84. $this->seeInDatabase($table, ['path' => trim(test_admin_path('auth/menu'), '/'), 'method' => 'GET'])
  85. ->seeInDatabase($table, ['path' => trim(test_admin_path('auth/users'), '/'), 'method' => 'GET'])
  86. ->seeInDatabase($table, ['path' => trim(test_admin_path('auth/permissions'), '/'), 'method' => 'GET'])
  87. ->seeInDatabase($table, ['path' => trim(test_admin_path('auth/roles'), '/'), 'method' => 'GET'])
  88. ->assertEquals($number, OperationLog::count());
  89. $browser->visit(test_admin_path('auth/logs'))
  90. ->assertPathIs(test_admin_path('auth/logs'));
  91. $browser->with(new RowSelector(), function (Browser $browser) {
  92. $browser->selectAll();
  93. });
  94. $browser->with(new BatchActions(), function (Browser $browser) use ($number) {
  95. $browser->shown($number);
  96. $browser->open();
  97. $browser->choose(__('admin.delete'));
  98. });
  99. // $browser->waitForText(__('admin.delete_confirm'), 3);
  100. // $browser->script("$('.swal2-confirm').first().click()");
  101. // $browser->waitForText(__('admin.delete_succeeded'), 3);
  102. //
  103. // $this->notSeeInDatabase($table, ['path' => trim(test_admin_path('auth/menu'), '/'), 'method' => 'GET'])
  104. // ->notSeeInDatabase($table, ['path' => trim(test_admin_path('auth/users'), '/'), 'method' => 'GET'])
  105. // ->notSeeInDatabase($table, ['path' => trim(test_admin_path('auth/permissions'), '/'), 'method' => 'GET'])
  106. // ->notSeeInDatabase($table, ['path' => trim(test_admin_path('auth/roles'), '/'), 'method' => 'GET'])
  107. // ->assertEquals(0, OperationLog::count());
  108. });
  109. }
  110. }