vendor and env first commit
This commit is contained in:
@@ -0,0 +1,299 @@
|
||||
<?php
|
||||
|
||||
namespace Vanguard\Announcements\Tests\Feature\Api;
|
||||
|
||||
use Carbon\Carbon;
|
||||
use Facades\Tests\Setup\UserFactory;
|
||||
use Mail;
|
||||
use Tests\Feature\ApiTestCase;
|
||||
use Vanguard\Announcements\Announcement;
|
||||
use Vanguard\Announcements\Database\Seeders\AnnouncementsDatabaseSeeder;
|
||||
use Vanguard\Announcements\Http\Resources\AnnouncementResource;
|
||||
use Vanguard\Announcements\Mail\AnnouncementEmail;
|
||||
|
||||
class AnnouncementsTest extends ApiTestCase
|
||||
{
|
||||
protected function setUp(): void
|
||||
{
|
||||
parent::setUp();
|
||||
|
||||
$this->artisan('db:seed', ['--class' => AnnouncementsDatabaseSeeder::class]);
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function guests_cannot_paginate_announcements()
|
||||
{
|
||||
$this->getJson('/api/announcements')->assertStatus(401);
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function any_authenticated_users_can_paginate_announcements()
|
||||
{
|
||||
$user = UserFactory::user()->create();
|
||||
$announcements = Announcement::factory()->times(11)->create();
|
||||
|
||||
$response = $this->actingAs($user, self::API_GUARD)
|
||||
->getJson('/api/announcements?per_page=10')
|
||||
->assertOk();
|
||||
|
||||
$transformed = AnnouncementResource::collection($announcements->take(10))->resolve();
|
||||
|
||||
$this->assertEquals($response->json('data'), $transformed);
|
||||
$response->assertJson([
|
||||
'meta' => [
|
||||
'current_page' => 1,
|
||||
'from' => 1,
|
||||
'to' => 10,
|
||||
'last_page' => 2,
|
||||
'path' => url('api/announcements'),
|
||||
'total' => 11,
|
||||
'per_page' => 10,
|
||||
],
|
||||
]);
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function paginate_announcements_with_more_records_per_page_than_allowed()
|
||||
{
|
||||
$this->actingAs($this->validUser(), self::API_GUARD)
|
||||
->getJson('/api/announcements?per_page=140')
|
||||
->assertStatus(422);
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function guests_cannot_create_announcements()
|
||||
{
|
||||
$this->postJson('/api/announcements', $this->validParams())
|
||||
->assertUnauthorized();
|
||||
|
||||
$this->assertEquals(0, Announcement::count());
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function users_without_appropriate_permission_cannot_create_announcements()
|
||||
{
|
||||
$user = UserFactory::user()->create();
|
||||
|
||||
$this->actingAs($user, self::API_GUARD)
|
||||
->postJson('/api/announcements', $this->validParams())
|
||||
->assertForbidden();
|
||||
|
||||
$this->assertEquals(0, Announcement::count());
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function users_with_appropriate_permission_can_create_announcements()
|
||||
{
|
||||
$user = $this->validUser();
|
||||
$data = $this->validParams();
|
||||
|
||||
$response = $this->actingAs($user, self::API_GUARD)
|
||||
->postJson('/api/announcements', $data)
|
||||
->assertStatus(201);
|
||||
|
||||
$announcement = Announcement::first();
|
||||
|
||||
$response->assertExactJson([
|
||||
'data' => (new AnnouncementResource($announcement))->resolve(),
|
||||
]);
|
||||
|
||||
$this->assertEquals($user->id, $announcement->user_id);
|
||||
$this->assertEquals($data['title'], $announcement->title);
|
||||
$this->assertEquals($data['body'], $announcement->body);
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function an_email_notification_can_be_triggered_when_an_announcement_is_created()
|
||||
{
|
||||
Mail::fake();
|
||||
|
||||
$data = $this->validParams(['email_notification' => true]);
|
||||
|
||||
$this->actingAs($this->validUser(), self::API_GUARD)
|
||||
->postJson('/api/announcements', $data)
|
||||
->assertStatus(201);
|
||||
|
||||
$announcement = Announcement::first();
|
||||
|
||||
Mail::assertQueued(AnnouncementEmail::class, function ($mail) use ($announcement) {
|
||||
return $mail->announcement->id === $announcement->id;
|
||||
});
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function title_field_is_required_when_creating_an_announcement()
|
||||
{
|
||||
$data = $this->validParams(['title' => '']);
|
||||
|
||||
$this->actingAs($this->validUser(), self::API_GUARD)
|
||||
->postJson('/api/announcements', $data)
|
||||
->assertStatus(422)
|
||||
->assertJsonValidationErrors('title');
|
||||
|
||||
$this->assertEquals(0, Announcement::count());
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function body_field_is_required_when_creating_an_announcement()
|
||||
{
|
||||
$data = $this->validParams(['body' => '']);
|
||||
|
||||
$this->actingAs($this->validUser(), self::API_GUARD)
|
||||
->postJson('/api/announcements', $data)
|
||||
->assertStatus(422)
|
||||
->assertJsonValidationErrors('body');
|
||||
|
||||
$this->assertEquals(0, Announcement::count());
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function guests_cannot_view_an_announcement()
|
||||
{
|
||||
$announcement = Announcement::factory()->create();
|
||||
|
||||
$this->getJson("/api/announcements/{$announcement->id}")
|
||||
->assertUnauthorized();
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function authenticated_users_can_view_any_announcement()
|
||||
{
|
||||
$user = UserFactory::user()->create();
|
||||
$announcement = Announcement::factory()->create();
|
||||
|
||||
$this->actingAs($user, self::API_GUARD)
|
||||
->getJson("/api/announcements/{$announcement->id}")
|
||||
->assertOk()
|
||||
->assertExactJson([
|
||||
'data' => (new AnnouncementResource($announcement))->resolve(),
|
||||
]);
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function guests_cannot_update_an_announcement()
|
||||
{
|
||||
$announcement = Announcement::factory()->create();
|
||||
|
||||
$this->putJson("/api/announcements/{$announcement->id}", $this->validParams())
|
||||
->assertUnauthorized();
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function users_without_approprite_permission_cannot_update_an_announcement()
|
||||
{
|
||||
$user = UserFactory::user()->create();
|
||||
$announcement = Announcement::factory()->create();
|
||||
|
||||
$this->actingAs($user, self::API_GUARD)
|
||||
->putJson("/api/announcements/{$announcement->id}", $this->validParams())
|
||||
->assertForbidden();
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function users_with_approprite_permission_can_update_an_announcement()
|
||||
{
|
||||
$user = $this->validUser();
|
||||
$announcement = Announcement::factory()->create();
|
||||
|
||||
$this->actingAs($user, self::API_GUARD)
|
||||
->putJson("/api/announcements/{$announcement->id}", $this->validParams())
|
||||
->assertOk()
|
||||
->assertExactJson([
|
||||
'data' => (new AnnouncementResource($announcement->fresh()))->resolve(),
|
||||
]);
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function title_field_is_required_when_updating_an_announcement()
|
||||
{
|
||||
$data = $this->validParams(['title' => '']);
|
||||
$announcement = Announcement::factory()->create();
|
||||
|
||||
$this->actingAs($this->validUser(), self::API_GUARD)
|
||||
->putJson("/api/announcements/{$announcement->id}", $data)
|
||||
->assertStatus(422)
|
||||
->assertJsonValidationErrors('title');
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function body_field_is_required_when_updating_an_announcement()
|
||||
{
|
||||
$data = $this->validParams(['body' => '']);
|
||||
$announcement = Announcement::factory()->create();
|
||||
|
||||
$this->actingAs($this->validUser(), self::API_GUARD)
|
||||
->putJson("/api/announcements/{$announcement->id}", $data)
|
||||
->assertStatus(422)
|
||||
->assertJsonValidationErrors('body');
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function guests_cannot_delete_an_announcement()
|
||||
{
|
||||
$announcement = Announcement::factory()->create();
|
||||
|
||||
$this->deleteJson("/api/announcements/{$announcement->id}")
|
||||
->assertUnauthorized();
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function users_without_appropriate_permission_cannot_delete_an_announcement()
|
||||
{
|
||||
$user = UserFactory::user()->create();
|
||||
$announcement = Announcement::factory()->create();
|
||||
|
||||
$this->actingAs($user, self::API_GUARD)
|
||||
->deleteJson("/api/announcements/{$announcement->id}")
|
||||
->assertForbidden();
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function users_with_appropriate_permission_can_delete_an_announcement()
|
||||
{
|
||||
$announcement = Announcement::factory()->create();
|
||||
|
||||
$this->actingAs($this->validUser(), self::API_GUARD)
|
||||
->deleteJson("/api/announcements/{$announcement->id}")
|
||||
->assertOk();
|
||||
|
||||
$this->assertNull($announcement->fresh());
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function user_announcements_can_be_marked_as_read()
|
||||
{
|
||||
$user = UserFactory::user()->create([
|
||||
'announcements_last_read_at' => null,
|
||||
]);
|
||||
|
||||
Carbon::setTestNow(now());
|
||||
|
||||
$this->actingAs($user, self::API_GUARD)
|
||||
->post('/api/announcements/read');
|
||||
|
||||
$this->assertEquals(
|
||||
now()->format('Y-m-d H:i:s'),
|
||||
$user->fresh()->announcements_last_read_at
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return mixed
|
||||
*/
|
||||
private function validUser()
|
||||
{
|
||||
return UserFactory::user()->withPermissions('announcements.manage')->create();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
private function validParams(array $overrides = [])
|
||||
{
|
||||
return array_merge([
|
||||
'title' => 'Foo Announcement',
|
||||
'body' => 'This is the announcement body.',
|
||||
'email_notification' => false,
|
||||
], $overrides);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,361 @@
|
||||
<?php
|
||||
|
||||
namespace Vanguard\Announcements\Tests\Feature\Web;
|
||||
|
||||
use Carbon\Carbon;
|
||||
use Facades\Tests\Setup\UserFactory;
|
||||
use Illuminate\Foundation\Testing\RefreshDatabase;
|
||||
use Illuminate\Support\Arr;
|
||||
use Mail;
|
||||
use Tests\TestCase;
|
||||
use Vanguard\Announcements\Announcement;
|
||||
use Vanguard\Announcements\Database\Seeders\AnnouncementsDatabaseSeeder;
|
||||
use Vanguard\Announcements\Mail\AnnouncementEmail;
|
||||
|
||||
class AnnouncementsTest extends TestCase
|
||||
{
|
||||
use RefreshDatabase;
|
||||
|
||||
protected function setUp(): void
|
||||
{
|
||||
parent::setUp();
|
||||
|
||||
$this->artisan('db:seed', ['--class' => 'RolesSeeder']);
|
||||
$this->artisan('db:seed', ['--class' => 'PermissionsSeeder']);
|
||||
$this->artisan('db:seed', ['--class' => 'CountriesSeeder']);
|
||||
$this->artisan('db:seed', ['--class' => AnnouncementsDatabaseSeeder::class]);
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function guests_cannot_view_announcement_index_page()
|
||||
{
|
||||
$this->get('/announcements')->assertRedirect('login');
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function users_without_appropriate_permission_cannot_view_announcement_list()
|
||||
{
|
||||
$user = UserFactory::user()->create();
|
||||
|
||||
$this->actingAs($user)->get('/announcements')->assertForbidden();
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function users_with_appropriate_permission_can_view_the_announcement_list()
|
||||
{
|
||||
$user = UserFactory::user()->withPermissions('announcements.manage')->create();
|
||||
|
||||
Announcement::factory()->create([
|
||||
'user_id' => $user->id,
|
||||
'title' => 'Foo Announcement',
|
||||
]);
|
||||
|
||||
$response = $this->actingAs($user)->get('/announcements')->assertOk();
|
||||
$response->assertSee('Foo Announcement');
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function guests_cannot_create_announcements()
|
||||
{
|
||||
$this->post('/announcements', $this->validParams())->assertRedirect('login');
|
||||
|
||||
$this->assertEquals(0, Announcement::count());
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function users_without_appropriate_permission_cannot_create_announcements()
|
||||
{
|
||||
$user = UserFactory::user()->create();
|
||||
|
||||
$this->actingAs($user)->post('/announcements', $this->validParams())->assertForbidden();
|
||||
|
||||
$this->assertEquals(0, Announcement::count());
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function users_with_appropriate_permission_can_create_announcements()
|
||||
{
|
||||
Mail::fake();
|
||||
|
||||
$user = UserFactory::user()->withPermissions('announcements.manage')->create();
|
||||
|
||||
$data = $this->validParams();
|
||||
|
||||
$this->actingAs($user)->post('/announcements', $data)
|
||||
->assertRedirect('/announcements');
|
||||
|
||||
$announcement = Announcement::first();
|
||||
|
||||
$this->assertEquals($data['title'], $announcement->title);
|
||||
$this->assertEquals($data['body'], $announcement->body);
|
||||
|
||||
Mail::assertNothingSent();
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function title_field_is_required_when_creating_an_announcement()
|
||||
{
|
||||
$user = UserFactory::user()->withPermissions('announcements.manage')->create();
|
||||
|
||||
$data = $this->validParams(['title' => '']);
|
||||
|
||||
$this->actingAs($user)
|
||||
->from('/announcements/create')
|
||||
->post('/announcements', $data)
|
||||
->assertRedirect('/announcements/create')
|
||||
->assertSessionHasErrors('title');
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function body_field_is_required_when_creating_an_announcement()
|
||||
{
|
||||
$user = UserFactory::user()->withPermissions('announcements.manage')->create();
|
||||
|
||||
$data = $this->validParams(['body' => '']);
|
||||
|
||||
$this->actingAs($user)
|
||||
->from('/announcements/create')
|
||||
->post('/announcements', $data)
|
||||
->assertRedirect('/announcements/create')
|
||||
->assertSessionHasErrors('body');
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function an_email_notification_can_be_triggered_when_an_announcement_is_created()
|
||||
{
|
||||
Mail::fake();
|
||||
|
||||
$user = UserFactory::user()->withPermissions('announcements.manage')->create();
|
||||
|
||||
$data = $this->validParams(['email_notification' => '1']);
|
||||
|
||||
$this->actingAs($user)
|
||||
->from('/announcements/create')
|
||||
->post('/announcements', $data)
|
||||
->assertRedirect('/announcements');
|
||||
|
||||
$announcement = Announcement::first();
|
||||
|
||||
Mail::assertQueued(AnnouncementEmail::class, function ($mail) use ($announcement) {
|
||||
return $mail->announcement->id === $announcement->id;
|
||||
});
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function guests_cannot_view_an_announcement()
|
||||
{
|
||||
$announcement = Announcement::factory()->create();
|
||||
|
||||
$this->get('/announcements/'.$announcement->id)
|
||||
->assertRedirect('/login');
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function authenticated_users_can_see_an_announcement()
|
||||
{
|
||||
$this->withoutExceptionHandling();
|
||||
|
||||
$user = UserFactory::user()->create();
|
||||
$admin = UserFactory::admin()->create();
|
||||
|
||||
$data = Arr::except($this->validParams(['user_id' => $admin->id]), 'email_notification');
|
||||
|
||||
$announcement = Announcement::factory()->create($data);
|
||||
|
||||
$this->actingAs($user)->get('/announcements/'.$announcement->id)
|
||||
->assertOk()
|
||||
->assertSee($data['title']);
|
||||
|
||||
$this->actingAs($admin)->get('/announcements/'.$announcement->id)
|
||||
->assertOk()
|
||||
->assertSee($data['title']);
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function guests_cannot_edit_announcements()
|
||||
{
|
||||
$announcement = Announcement::factory()->create();
|
||||
|
||||
$this->get('/announcements/'.$announcement->id)->assertRedirect('login');
|
||||
$this->put('/announcements/'.$announcement->id, $this->validParams())->assertRedirect('login');
|
||||
|
||||
$this->assertEquals($announcement->title, $announcement->fresh()->title);
|
||||
$this->assertEquals($announcement->body, $announcement->fresh()->body);
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function users_with_appropriate_permissions_can_edit_an_announcement()
|
||||
{
|
||||
$user = UserFactory::user()->withPermissions('announcements.manage')->create();
|
||||
|
||||
$announcement = Announcement::factory()->create();
|
||||
|
||||
$data = $this->validParams();
|
||||
|
||||
$this->actingAs($user)
|
||||
->from("/announcements/{$announcement->id}/edit")
|
||||
->put('/announcements/'.$announcement->id, $data)
|
||||
->assertRedirect('/announcements')
|
||||
->assertSessionDoesntHaveErrors();
|
||||
|
||||
$this->assertEquals($data['title'], $announcement->fresh()->title);
|
||||
$this->assertEquals($data['body'], $announcement->fresh()->body);
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function title_field_is_required_when_updating_an_announcement()
|
||||
{
|
||||
$user = UserFactory::user()->withPermissions('announcements.manage')->create();
|
||||
|
||||
$announcement = Announcement::factory()->create();
|
||||
|
||||
$data = $this->validParams(['title' => '']);
|
||||
|
||||
$this->actingAs($user)
|
||||
->from("/announcements/{$announcement->id}/edit")
|
||||
->put('/announcements/'.$announcement->id, $data)
|
||||
->assertRedirect("/announcements/{$announcement->id}/edit")
|
||||
->assertSessionHasErrors('title');
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function body_field_is_required_when_updating_an_announcement()
|
||||
{
|
||||
$user = UserFactory::user()->withPermissions('announcements.manage')->create();
|
||||
|
||||
$announcement = Announcement::factory()->create();
|
||||
|
||||
$data = $this->validParams(['body' => '']);
|
||||
|
||||
$this->actingAs($user)
|
||||
->from("/announcements/{$announcement->id}/edit")
|
||||
->put('/announcements/'.$announcement->id, $data)
|
||||
->assertRedirect("/announcements/{$announcement->id}/edit")
|
||||
->assertSessionHasErrors('body');
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function guests_cannot_delete_an_announcement()
|
||||
{
|
||||
$announcement = Announcement::factory()->create();
|
||||
|
||||
$this->delete('/announcements/'.$announcement->id)->assertRedirect('login');
|
||||
|
||||
$this->assertNotNull($announcement->fresh());
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function users_without_appropriate_permission_cannot_delete_an_announcement()
|
||||
{
|
||||
$user = UserFactory::user()->create();
|
||||
$announcement = Announcement::factory()->create();
|
||||
|
||||
$this->actingAs($user)
|
||||
->delete('/announcements/'.$announcement->id)
|
||||
->assertForbidden();
|
||||
|
||||
$this->assertNotNull($announcement->fresh());
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function users_with_appropriate_permission_can_delete_an_announcement()
|
||||
{
|
||||
$user = UserFactory::user()->withPermissions('announcements.manage')->create();
|
||||
$announcement = Announcement::factory()->create();
|
||||
|
||||
$this->actingAs($user)
|
||||
->delete('/announcements/'.$announcement->id)
|
||||
->assertRedirect('/announcements');
|
||||
|
||||
$this->assertNull($announcement->fresh());
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function guests_cannot_view_announcement_list()
|
||||
{
|
||||
$this->get('/announcements/list')->assertRedirect('login');
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function any_authenticated_user_can_view_announcement_list()
|
||||
{
|
||||
$user = UserFactory::user()->create();
|
||||
|
||||
$announcementA = Announcement::factory()->create();
|
||||
$announcementB = Announcement::factory()->create();
|
||||
|
||||
$this->actingAs($user)
|
||||
->get('/announcements/list')
|
||||
->assertSee($announcementA->title)
|
||||
->assertSee($announcementA->parsed_body)
|
||||
->assertSee($announcementB->title)
|
||||
->assertSee($announcementB->parsed_body);
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function authenticated_users_can_see_the_announcements_header_section()
|
||||
{
|
||||
$user = UserFactory::user()->create();
|
||||
|
||||
$data = ['title' => 'some random announcement'];
|
||||
|
||||
Announcement::factory()->create($data);
|
||||
|
||||
$this->actingAs($user)
|
||||
->get('/')
|
||||
->assertSee('id="announcements-icon"', false)
|
||||
->assertSee('id="announcementsDropdown"', false)
|
||||
->assertSee($data['title']);
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function a_red_dot_indicator_is_displayed_if_user_has_unread_announcements()
|
||||
{
|
||||
Announcement::factory()->create([
|
||||
'created_at' => now()->subMinutes(3),
|
||||
]);
|
||||
|
||||
$userA = UserFactory::user()->create([
|
||||
'announcements_last_read_at' => now(),
|
||||
]);
|
||||
|
||||
$userB = UserFactory::user()->create([
|
||||
'announcements_last_read_at' => now()->subMinutes(5),
|
||||
]);
|
||||
|
||||
$this->actingAs($userA)
|
||||
->get('/')
|
||||
->assertDontSee('activity-badge');
|
||||
|
||||
$this->actingAs($userB)
|
||||
->get('/')
|
||||
->assertSee('activity-badge');
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function user_announcements_can_be_marked_as_read()
|
||||
{
|
||||
$user = UserFactory::user()->create([
|
||||
'announcements_last_read_at' => null,
|
||||
]);
|
||||
|
||||
Carbon::setTestNow(now());
|
||||
|
||||
$this->actingAs($user)
|
||||
->post('/announcements/read');
|
||||
|
||||
$this->assertEquals(
|
||||
now()->format('Y-m-d H:i:s'),
|
||||
$user->fresh()->announcements_last_read_at
|
||||
);
|
||||
}
|
||||
|
||||
private function validParams(array $overrides = [])
|
||||
{
|
||||
return array_merge([
|
||||
'title' => 'Foo Announcement',
|
||||
'body' => 'This is the announcement body.',
|
||||
'email_notification' => '0',
|
||||
], $overrides);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
|
||||
namespace Vanguard\Announcements\Tests\Unit;
|
||||
|
||||
use Tests\TestCase;
|
||||
use Vanguard\Announcements\Announcement;
|
||||
|
||||
class AnnouncementTest extends TestCase
|
||||
{
|
||||
/** @test */
|
||||
public function testParsedBody()
|
||||
{
|
||||
$announcement = new Announcement([
|
||||
'title' => 'foo',
|
||||
'body' => '# test',
|
||||
]);
|
||||
|
||||
$this->assertEquals("<h1>test</h1>\n", (string) $announcement->parsed_body);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user