OperationLogTest.php 5.5 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\Actions\Delete;
  7. use Tests\Browser\Components\Grid\RowSelector;
  8. use Tests\TestCase;
  9. /**
  10. * 操作日志功能测试.
  11. *
  12. * @group log
  13. */
  14. class OperationLogTest extends TestCase
  15. {
  16. public function testOperationLogIndex()
  17. {
  18. $this->browse(function (Browser $browser) {
  19. $browser->visit(test_admin_path('auth/menu'))
  20. ->assertPathIs(test_admin_path('auth/menu'))
  21. ->visit(test_admin_path('auth/logs'))
  22. ->assertSee(__('admin.operation_log'))
  23. ->assertSee(__('admin.list'))
  24. ->assertSee(__('admin.refresh'))
  25. ->assertSee(__('admin.filter'))
  26. ->assertSee('ID')
  27. ->assertSee(__('admin.user'))
  28. ->assertSee(__('admin.method'))
  29. ->assertSee(__('admin.uri'))
  30. ->assertSee('IP')
  31. ->assertSee(__('admin.input'))
  32. ->assertSee(__('admin.created_at'))
  33. ->assertSee(__('admin.action'))
  34. ->waitForText(__('admin.responsive.display'), 2)
  35. ->assertSee(__('admin.responsive.display_all'));
  36. });
  37. }
  38. public function testGenerateLogs()
  39. {
  40. $this->browse(function (Browser $browser) {
  41. $table = config('admin.database.operation_log_table');
  42. $browser->visit(test_admin_path('auth/menu'))
  43. ->assertPathIs(test_admin_path('auth/menu'))
  44. ->visit(test_admin_path('auth/users'))
  45. ->assertPathIs(test_admin_path('auth/users'))
  46. ->visit(test_admin_path('auth/permissions'))
  47. ->assertPathIs(test_admin_path('auth/permissions'))
  48. ->visit(test_admin_path('auth/roles'))
  49. ->assertPathIs(test_admin_path('auth/roles'))
  50. ->visit(test_admin_path('auth/logs'))
  51. ->assertPathIs(test_admin_path('auth/logs'));
  52. $this->seeInDatabase($table, ['path' => trim(test_admin_path('auth/menu'), '/'), 'method' => 'GET'])
  53. ->seeInDatabase($table, ['path' => trim(test_admin_path('auth/users'), '/'), 'method' => 'GET'])
  54. ->seeInDatabase($table, ['path' => trim(test_admin_path('auth/permissions'), '/'), 'method' => 'GET'])
  55. ->seeInDatabase($table, ['path' => trim(test_admin_path('auth/roles'), '/'), 'method' => 'GET']);
  56. });
  57. $this->assertSame(4, OperationLog::count());
  58. }
  59. public function testDeleteLogs()
  60. {
  61. $this->browse(function (Browser $browser) {
  62. $table = config('admin.database.operation_log_table');
  63. $this->assertEquals(0, OperationLog::count());
  64. $browser->visit(test_admin_path('auth/users'));
  65. $this->seeInDatabase($table, ['path' => trim(test_admin_path('auth/users'), '/'), 'method' => 'GET']);
  66. $browser->visit(test_admin_path('auth/logs'))
  67. ->assertPathIs(test_admin_path('auth/logs'))
  68. ->pause(500);
  69. $browser->with(new Delete(), function (Browser $browser) {
  70. $browser->delete(0);
  71. });
  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. }