Passed
Push — feature/manager_poster_index ( ae25c3...dfbafb )
by Xander
05:47
created

JobPosterTest::testJobPosterStatus()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 13
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 8
dl 0
loc 13
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 0
1
<?php
2
3
namespace Tests\Unit;
4
5
use Tests\TestCase;
6
use Illuminate\Foundation\Testing\WithFaker;
7
use Illuminate\Foundation\Testing\RefreshDatabase;
8
use Illuminate\Support\Facades\Lang;
9
10
use App\Models\JobPoster;
11
12
class JobPosterTest extends TestCase
13
{
14
    use WithFaker;
15
16
    /**
17
     * Test that JobPoster->isOpen() behaves properly
18
     *
19
     * @return void
20
     */
21
    public function testJobPosterIsOpen()
22
    {
23
        $jobPoster = factory(JobPoster::class)->states('published')->make();
24
        $this->assertTrue($jobPoster->isOpen());
25
26
        $jobPoster->close_date_time = $this->faker->dateTimeBetween('-1 weeks', 'now');
27
        $this->assertFalse($jobPoster->isOpen());
28
29
        $jobPoster = factory(JobPoster::class)->states('unpublished')->make();
30
        $this->assertFalse($jobPoster->isOpen());
31
    }
32
33
    /**
34
     * Test that JobPoster->isClosed() behaves properly
35
     *
36
     * @return void
37
     */
38
    public function testJobPosterIsClosed()
39
    {
40
        $jobPoster = factory(JobPoster::class)->states('published')->make();
41
        $this->assertFalse($jobPoster->isClosed());
42
43
        $jobPoster->close_date_time = $this->faker->dateTimeBetween('-1 weeks', '-5 minutes');
44
        $this->assertTrue($jobPoster->isClosed());
45
46
        $jobPoster = factory(JobPoster::class)->states('unpublished')->make();
47
        $this->assertFalse($jobPoster->isClosed());
48
    }
49
50
    /**
51
     * Test that JobPoster->status() behaves properly
52
     *
53
     * @return void
54
     */
55
    public function testJobPosterStatus()
56
    {
57
        $jobPoster = factory(JobPoster::class)->states('unpublished')->make();
58
        $this->assertEquals('draft', $jobPoster->status());
59
60
        $jobPoster = factory(JobPoster::class)->states('published')->make();
61
        $this->assertEquals('posted', $jobPoster->status());
62
63
        $jobPoster = factory(JobPoster::class)->states('closed')->make();
64
        $this->assertEquals('closed', $jobPoster->status());
65
66
        $jobPoster = factory(JobPoster::class)->states('review_requested')->make();
67
        $this->assertEquals('submitted', $jobPoster->status());
68
    }
69
70
71
    /**
72
     * Test that JobPoster->timeRemaining() behaves properly
73
     *
74
     * @return void
75
     */
76
    public function testJobPosterTimeRemaining()
77
    {
78
        $jobPoster = factory(JobPoster::class)->make(
79
            [
80
                'close_date_time' => date('Y-m-d H:i:s', strtotime('-1 hour'))
81
            ]
82
        );
83
        $this->assertEquals(Lang::choice('common/time.hour', 1), $jobPoster->timeRemaining());
84
85
        $jobPoster = factory(JobPoster::class)->make(
86
            [
87
                'close_date_time' => date('Y-m-d H:i:s', strtotime('-2 days'))
88
            ]
89
        );
90
        $langString = Lang::choice('common/time.day', 2);
91
        $this->assertEquals($langString, $jobPoster->timeRemaining());
92
    }
93
}
94