assertStatus(200);
}
public function test_shows_recent_entries(): void
{
ActivityLog::factory()->create(['message' => 'Published something']);
Livewire::test(Activity::class)->assertSee('Published something');
}
public function test_filtering_by_type_hides_other_types(): void
{
ActivityLog::factory()->type(ActivityTypeEnum::PUBLISH)->create(['message' => 'A publish entry']);
ActivityLog::factory()->type(ActivityTypeEnum::FETCH)->create(['message' => 'A fetch entry']);
Livewire::test(Activity::class)
->set('type', ActivityTypeEnum::PUBLISH->value)
->assertSee('A publish entry')
->assertDontSee('A fetch entry');
}
public function test_entries_outside_the_day_range_are_hidden(): void
{
ActivityLog::factory()->loggedAt(now()->subHours(2))->create(['message' => 'Recent entry']);
ActivityLog::factory()->loggedAt(now()->subDays(10))->create(['message' => 'Old entry']);
Livewire::test(Activity::class)
->set('days', 1)
->assertSee('Recent entry')
->assertDontSee('Old entry');
}
public function test_changing_a_filter_resets_pagination(): void
{
ActivityLog::factory()->count(30)->create();
Livewire::test(Activity::class)
->call('setPage', 2)
->set('type', ActivityTypeEnum::PUBLISH->value)
->assertSet('paginators.page', 1);
}
public function test_entry_without_a_subject_renders(): void
{
ActivityLog::factory()->create(['message' => 'No subject entry', 'subject_type' => null, 'subject_id' => null]);
Livewire::test(Activity::class)
->assertStatus(200)
->assertSee('No subject entry');
}
public function test_entry_with_a_deleted_subject_renders(): void
{
$article = Article::factory()->create();
ActivityLog::factory()->for_subject($article)->create(['message' => 'Dangling subject']);
$article->delete();
Livewire::test(Activity::class)
->assertStatus(200)
->assertSee('Dangling subject');
}
public function test_empty_state_is_shown_when_there_is_no_activity(): void
{
Livewire::test(Activity::class)->assertSee('No activity in this period.');
}
public function test_a_reason_in_context_is_shown_under_the_message(): void
{
ActivityLog::factory()->create([
'message' => 'Failed to publish something',
'context' => ['reason' => 'Could not recover the article content'],
]);
Livewire::test(Activity::class)->assertSee('Could not recover the article content');
}
public function test_a_message_containing_markup_is_escaped(): void
{
ActivityLog::factory()->create(['message' => 'Published ""']);
Livewire::test(Activity::class)
->assertDontSee('', false)
->assertSee('<script>', false);
}
}