Update the README.md with the new features documentation.

This commit is contained in:
3m1n3nc3
2024-07-09 05:01:10 +01:00
parent c652a9cfe0
commit 3ddea7ece2
10 changed files with 38 additions and 52 deletions
+5 -5
View File
@@ -4,9 +4,9 @@ namespace BeyondCode\Comments;
use BeyondCode\Comments\Events\CommentAdded; use BeyondCode\Comments\Events\CommentAdded;
use BeyondCode\Comments\Events\CommentDeleted; use BeyondCode\Comments\Events\CommentDeleted;
use BeyondCode\Comments\Traits\HasComments;
use Exception; use Exception;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use BeyondCode\Comments\Traits\HasComments;
class Comment extends Model class Comment extends Model
{ {
@@ -15,11 +15,11 @@ class Comment extends Model
protected $fillable = [ protected $fillable = [
'comment', 'comment',
'user_id', 'user_id',
'is_approved' 'is_approved',
]; ];
protected $casts = [ protected $casts = [
'is_approved' => 'boolean' 'is_approved' => 'boolean',
]; ];
public static function boot(): void public static function boot(): void
@@ -80,10 +80,10 @@ class Comment extends Model
return config('comments.user_model'); return config('comments.user_model');
} }
if (!is_null(config('auth.providers.users.model'))) { if (! is_null(config('auth.providers.users.model'))) {
return config('auth.providers.users.model'); return config('auth.providers.users.model');
} }
throw new Exception('Could not determine the commentator model name.'); throw new Exception('Could not determine the commentator model name.');
} }
} }
-1
View File
@@ -16,7 +16,6 @@ class CommentsServiceProvider extends ServiceProvider
__DIR__.'/../config/config.php' => config_path('comments.php'), __DIR__.'/../config/config.php' => config_path('comments.php'),
], 'config'); ], 'config');
if (! class_exists('CreateCommentsTable')) { if (! class_exists('CreateCommentsTable')) {
$this->publishes([ $this->publishes([
__DIR__.'/../database/migrations/create_comments_table.php.stub' => database_path('migrations/'.date('Y_m_d_His', time()).'_create_comments_table.php'), __DIR__.'/../database/migrations/create_comments_table.php.stub' => database_path('migrations/'.date('Y_m_d_His', time()).'_create_comments_table.php'),
+3 -5
View File
@@ -2,14 +2,12 @@
namespace BeyondCode\Comments\Contracts; namespace BeyondCode\Comments\Contracts;
interface Commentator interface Commentator
{ {
/** /**
* Check if a comment for a specific model needs to be approved. * Check if a comment for a specific model needs to be approved.
* @param mixed $model *
* @return bool * @param mixed $model
*/ */
public function needsCommentApproval($model): bool; public function needsCommentApproval($model): bool;
}
}
+1 -1
View File
@@ -19,4 +19,4 @@ class CommentDeleted implements ShouldDispatchAfterCommit
public Comment $comment, public Comment $comment,
) { ) {
} }
} }
+3 -4
View File
@@ -2,16 +2,15 @@
namespace BeyondCode\Comments\Traits; namespace BeyondCode\Comments\Traits;
trait CanComment trait CanComment
{ {
/** /**
* Check if a comment for a specific model needs to be approved. * Check if a comment for a specific model needs to be approved.
* @param mixed $model *
* @return bool * @param mixed $model
*/ */
public function needsCommentApproval($model): bool public function needsCommentApproval($model): bool
{ {
return true; return true;
} }
} }
+3 -7
View File
@@ -2,9 +2,8 @@
namespace BeyondCode\Comments\Traits; namespace BeyondCode\Comments\Traits;
use Illuminate\Database\Eloquent\Model;
use BeyondCode\Comments\Contracts\Commentator; use BeyondCode\Comments\Contracts\Commentator;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\MorphMany; use Illuminate\Database\Eloquent\Relations\MorphMany;
trait HasComments trait HasComments
@@ -22,7 +21,6 @@ trait HasComments
/** /**
* Attach a comment to this model. * Attach a comment to this model.
* *
* @param string $comment
* @return \Illuminate\Database\Eloquent\Model * @return \Illuminate\Database\Eloquent\Model
*/ */
public function comment(string $comment) public function comment(string $comment)
@@ -33,8 +31,6 @@ trait HasComments
/** /**
* Attach a comment to this model as a specific user. * Attach a comment to this model as a specific user.
* *
* @param Model|null $user
* @param string $comment
* @return \Illuminate\Database\Eloquent\Model * @return \Illuminate\Database\Eloquent\Model
*/ */
public function commentAsUser(?Model $user, string $comment) public function commentAsUser(?Model $user, string $comment)
@@ -43,7 +39,7 @@ trait HasComments
$comment = new $commentClass([ $comment = new $commentClass([
'comment' => $comment, 'comment' => $comment,
'is_approved' => ($user instanceof Commentator) ? !$user->needsCommentApproval($this) : false, 'is_approved' => ($user instanceof Commentator) ? ! $user->needsCommentApproval($this) : false,
'user_id' => is_null($user) ? null : $user->getKey(), 'user_id' => is_null($user) ? null : $user->getKey(),
'commentable_id' => $this->getKey(), 'commentable_id' => $this->getKey(),
'commentable_type' => get_class(), 'commentable_type' => get_class(),
@@ -51,4 +47,4 @@ trait HasComments
return $this->comments()->save($comment); return $this->comments()->save($comment);
} }
} }
+14 -15
View File
@@ -6,7 +6,6 @@ use BeyondCode\Comments\Events\CommentAdded;
use BeyondCode\Comments\Events\CommentDeleted; use BeyondCode\Comments\Events\CommentDeleted;
use BeyondCode\Comments\Tests\Models\ApprovedUser; use BeyondCode\Comments\Tests\Models\ApprovedUser;
use BeyondCode\Comments\Tests\Models\Post; use BeyondCode\Comments\Tests\Models\Post;
use Illuminate\Database\Eloquent\ModelNotFoundException;
use Illuminate\Foundation\Auth\User; use Illuminate\Foundation\Auth\User;
use Illuminate\Support\Facades\Event; use Illuminate\Support\Facades\Event;
@@ -16,7 +15,7 @@ class CommentsTest extends TestCase
public function users_without_commentator_interface_do_not_get_approved() public function users_without_commentator_interface_do_not_get_approved()
{ {
$post = Post::create([ $post = Post::create([
'title' => 'Some post' 'title' => 'Some post',
]); ]);
$post->comment('this is a comment'); $post->comment('this is a comment');
@@ -30,7 +29,7 @@ class CommentsTest extends TestCase
public function models_can_store_comments() public function models_can_store_comments()
{ {
$post = Post::create([ $post = Post::create([
'title' => 'Some post' 'title' => 'Some post',
]); ]);
$post->comment('this is a comment'); $post->comment('this is a comment');
@@ -46,7 +45,7 @@ class CommentsTest extends TestCase
public function comments_without_users_have_no_relation() public function comments_without_users_have_no_relation()
{ {
$post = Post::create([ $post = Post::create([
'title' => 'Some post' 'title' => 'Some post',
]); ]);
$comment = $post->comment('this is a comment'); $comment = $post->comment('this is a comment');
@@ -63,7 +62,7 @@ class CommentsTest extends TestCase
auth()->login($user); auth()->login($user);
$post = Post::create([ $post = Post::create([
'title' => 'Some post' 'title' => 'Some post',
]); ]);
$comment = $post->comment('this is a comment'); $comment = $post->comment('this is a comment');
@@ -77,7 +76,7 @@ class CommentsTest extends TestCase
$user = User::first(); $user = User::first();
$post = Post::create([ $post = Post::create([
'title' => 'Some post' 'title' => 'Some post',
]); ]);
$comment = $post->commentAsUser($user, 'this is a comment'); $comment = $post->commentAsUser($user, 'this is a comment');
@@ -91,7 +90,7 @@ class CommentsTest extends TestCase
$user = User::first(); $user = User::first();
$post = Post::create([ $post = Post::create([
'title' => 'Some post' 'title' => 'Some post',
]); ]);
$comment = $post->comment('this is a comment'); $comment = $post->comment('this is a comment');
@@ -109,7 +108,7 @@ class CommentsTest extends TestCase
$user = User::first(); $user = User::first();
$post = Post::create([ $post = Post::create([
'title' => 'Some post' 'title' => 'Some post',
]); ]);
$comment = $post->comment('this is a comment'); $comment = $post->comment('this is a comment');
@@ -124,7 +123,7 @@ class CommentsTest extends TestCase
$user = ApprovedUser::first(); $user = ApprovedUser::first();
$post = Post::create([ $post = Post::create([
'title' => 'Some post' 'title' => 'Some post',
]); ]);
$comment = $post->commentAsUser($user, 'this is a comment'); $comment = $post->commentAsUser($user, 'this is a comment');
@@ -138,7 +137,7 @@ class CommentsTest extends TestCase
$user = ApprovedUser::first(); $user = ApprovedUser::first();
$post = Post::create([ $post = Post::create([
'title' => 'Some post' 'title' => 'Some post',
]); ]);
$post->comment('this comment is not approved'); $post->comment('this comment is not approved');
@@ -154,7 +153,7 @@ class CommentsTest extends TestCase
public function comments_are_deleted_when_posts_are_deleted() public function comments_are_deleted_when_posts_are_deleted()
{ {
$post = Post::create([ $post = Post::create([
'title' => 'Some post' 'title' => 'Some post',
]); ]);
$comment = $post->comment('this comment will be deleted'); $comment = $post->comment('this comment will be deleted');
@@ -170,7 +169,7 @@ class CommentsTest extends TestCase
config(['comments.delete_replies_along_comments' => true]); config(['comments.delete_replies_along_comments' => true]);
$post = Post::create([ $post = Post::create([
'title' => 'Some post' 'title' => 'Some post',
]); ]);
$comment = $post->comment('this comment will be deleted'); $comment = $post->comment('this comment will be deleted');
@@ -187,7 +186,7 @@ class CommentsTest extends TestCase
Event::fake([CommentAdded::class]); Event::fake([CommentAdded::class]);
$post = Post::create([ $post = Post::create([
'title' => 'Some post' 'title' => 'Some post',
]); ]);
$comment = $post->comment('this comment is added'); $comment = $post->comment('this comment is added');
@@ -203,7 +202,7 @@ class CommentsTest extends TestCase
Event::fake([CommentDeleted::class]); Event::fake([CommentDeleted::class]);
$post = Post::create([ $post = Post::create([
'title' => 'Some post' 'title' => 'Some post',
]); ]);
$comment = $post->comment('this comment is added'); $comment = $post->comment('this comment is added');
@@ -214,4 +213,4 @@ class CommentsTest extends TestCase
return $event->comment->is($comment); return $event->comment->is($comment);
}); });
} }
} }
+4 -6
View File
@@ -2,22 +2,20 @@
namespace BeyondCode\Comments\Tests\Models; namespace BeyondCode\Comments\Tests\Models;
use Illuminate\Foundation\Auth\User;
use BeyondCode\Comments\Contracts\Commentator; use BeyondCode\Comments\Contracts\Commentator;
use Illuminate\Foundation\Auth\User;
class ApprovedUser extends User implements Commentator class ApprovedUser extends User implements Commentator
{ {
protected $table = 'users'; protected $table = 'users';
/** /**
* Check if a comment for a specific model needs to be approved. * Check if a comment for a specific model needs to be approved.
* @param mixed $model *
* @return bool * @param mixed $model
*/ */
public function needsCommentApproval($model): bool public function needsCommentApproval($model): bool
{ {
return false; return false;
} }
}
}
-1
View File
@@ -3,7 +3,6 @@
namespace BeyondCode\Comments\Tests\Models; namespace BeyondCode\Comments\Tests\Models;
use BeyondCode\Comments\Traits\HasComments; use BeyondCode\Comments\Traits\HasComments;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
class Post extends Model class Post extends Model
+5 -7
View File
@@ -2,13 +2,12 @@
namespace BeyondCode\Comments\Tests; namespace BeyondCode\Comments\Tests;
use Illuminate\Foundation\Auth\User;
use Illuminate\Database\Schema\Blueprint;
use BeyondCode\Comments\CommentsServiceProvider; use BeyondCode\Comments\CommentsServiceProvider;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Foundation\Auth\User;
abstract class TestCase extends \Orchestra\Testbench\TestCase abstract class TestCase extends \Orchestra\Testbench\TestCase
{ {
public function setUp(): void public function setUp(): void
{ {
parent::setUp(); parent::setUp();
@@ -38,7 +37,7 @@ abstract class TestCase extends \Orchestra\Testbench\TestCase
protected function setUpDatabase() protected function setUpDatabase()
{ {
include_once __DIR__ . '/../database/migrations/create_comments_table.php.stub'; include_once __DIR__.'/../database/migrations/create_comments_table.php.stub';
(new \CreateCommentsTable())->up(); (new \CreateCommentsTable())->up();
@@ -54,8 +53,7 @@ abstract class TestCase extends \Orchestra\Testbench\TestCase
User::forceCreate([ User::forceCreate([
'name' => 'User', 'name' => 'User',
'email' => 'user@email.com', 'email' => 'user@email.com',
'password' => 'test' 'password' => 'test',
]); ]);
} }
}
}