-
Notifications
You must be signed in to change notification settings - Fork 30
/
Copy pathArticleCreateTest.php
80 lines (71 loc) · 2.39 KB
/
ArticleCreateTest.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
<?php
class ArticleCreateTest extends TestCase
{
/** @test */
public function it_returns_the_article_on_successfully_creating_a_new_article()
{
$data = [
'article' => [
'title' => 'test title',
'description' => 'test description',
'body' => 'test body with random text',
'tagList' => ['test', 'coding'],
]
];
$response = $this->json('POST', '/api/articles', $data, $this->headers);
$response->assertResponseStatus(201);
$response->seeJsonStructure([
'article' => [
'slug',
'title',
'description',
'body',
'tagList',
'favorited',
'favoritesCount',
'author' => [
'username',
'bio',
'image',
'following',
]
]
]);
$response->seeJsonContains(['title' => 'test title']);
$response->seeJsonContains(['username' => $this->loggedInUser->username]);
}
/** @test */
public function it_returns_appropriate_field_validation_errors_when_creating_a_new_article_with_invalid_inputs()
{
$data = [
'article' => [
'title' => '',
'description' => '',
'body' => '',
]
];
$response = $this->json('POST', '/api/articles', $data, $this->headers);
// $response->assertResponseStatus(422);
$response->seeJsonEquals([
'errors' => [
'title' => ['field is required.'],
'description' => ['field is required.'],
'body' => ['field is required.'],
]
]);
}
/** @test */
public function it_returns_an_unauthorized_error_when_trying_to_add_article_without_logging_in()
{
$data = [
'article' => [
'title' => 'test title',
'description' => 'test description',
'body' => 'test body with random text',
'tags' => ['test', 'coding'],
]
];
$response = $this->json('POST', '/api/articles', $data);
$response->assertResponseStatus(401);
}
}