/** * @param array $overrides * @param int $amount * * @return \Hootlex\Moderation\Tests\Post */ function createPost($overrides = [], $amount = 1) { $posts = new \Illuminate\Database\Eloquent\Collection(); for ($i = 0; $i < $amount; $i++) { $post = Post::create(array_merge(['moderated_at' => 0], $overrides)); $posts->push($post); } return count($posts) > 1 ? $posts : $posts[0]; }
/** @test */ public function it_deletes_resources_of_any_status() { $posts = $this->createPost([], 3); Post::approve($posts[0]->id); Post::reject($posts[1]->id); //delete approved $posts[0]->delete(); //delete rejected $posts[1]->delete(); //delete pending $posts[2]->delete(); $this->dontSeeInDatabase('posts', ['id' => $posts[0]->id]); $this->dontSeeInDatabase('posts', ['id' => $posts[1]->id]); $this->dontSeeInDatabase('posts', ['id' => $posts[2]->id]); }
/** @test */ public function it_deletes_resources_of_any_status() { $posts = $this->createPost([], 4); Post::approve($posts[0]->id); Post::reject($posts[1]->id); Post::postpone($posts[2]->id); foreach ($posts as $post) { $post->delete(); } $this->dontSeeInDatabase('posts', ['id' => $posts[0]->id]); $this->dontSeeInDatabase('posts', ['id' => $posts[1]->id]); $this->dontSeeInDatabase('posts', ['id' => $posts[2]->id]); }
/** @test */ public function it_casts_moderated_at_attribute_as_a_date() { $post = $this->createPost(); Post::approve($post->id); //reload the instance $post = Post::find($post->id); $this->assertInstanceOf(\Carbon\Carbon::class, $post->{$this->moderated_at_column}); }
/** @test */ public function it_queries_pending_stories_by_default_when_not_in_strict_mode() { Post::$strictModeration = false; $posts = $this->createPost([$this->status_column => Status::PENDING], 5); $postsIds = $posts->pluck('id')->all(); $postsReturned = Post::whereIn('id', $postsIds)->get(); $this->assertCount(5, $postsReturned); foreach ($posts as $post) { $this->assertTrue($post->{$this->status_column} == Status::PENDING); } }