Passed
Push — feature/backpack ( e1a886...673f22 )
by Tristan
08:37
created

JobPosterTest::testJobPosterApplyBy()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 8
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 6
dl 0
loc 8
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
use Jenssegers\Date\Date;
10
11
use App\Models\JobPoster;
12
use Doctrine\Common\Cache\VoidCache;
13
14
class JobPosterTest extends TestCase
15
{
16
    use WithFaker;
17
18
    /**
19
     * Test that JobPoster->isOpen() behaves properly
20
     *
21
     * @return void
22
     */
23
    public function testJobPosterIsOpen() : void
24
    {
25
        $jobPoster = factory(JobPoster::class)->states('published')->make();
26
        $this->assertTrue($jobPoster->isOpen());
27
28
        $jobPoster->close_date_time = $this->faker->dateTimeBetween('-1 weeks', 'now');
29
        $this->assertFalse($jobPoster->isOpen());
30
31
        $jobPoster = factory(JobPoster::class)->states('unpublished')->make();
32
        $this->assertFalse($jobPoster->isOpen());
33
    }
34
35
    /**
36
     * Test that JobPoster->timeRemaining() behaves properly
37
     *
38
     * @return void
39
     */
40
    public function testJobPosterTimeRemaining() : void
41
    {
42
        $jobPoster = factory(JobPoster::class)->make(
43
            [
44
                'close_date_time' => date('Y-m-d H:i:s', strtotime('-1 hour'))
45
            ]
46
        );
47
        $this->assertEquals(Lang::choice('common/time.hour', 1), $jobPoster->timeRemaining());
48
49
        $jobPoster->close_date_time = date('Y-m-d H:i:s', strtotime('-2 days'));
50
        $langString = Lang::choice('common/time.day', 2);
51
        $this->assertEquals($langString, $jobPoster->timeRemaining());
52
53
        $jobPoster->close_date_time = date('Y-m-d H:i:s', strtotime('-5 minutes'));
54
        $langString = Lang::choice('common/time.minute', 5);
55
        $this->assertEquals($langString, $jobPoster->timeRemaining());
56
57
        $jobPoster->close_date_time = date('Y-m-d H:i:s', strtotime('-30 seconds'));
58
        $langString = Lang::choice('common/time.second', 30);
59
        $this->assertEquals($langString, $jobPoster->timeRemaining());
60
    }
61
62
    /**
63
     * Test that JobPoster->applyBy() behaves properly
64
     *
65
     * @return void
66
     */
67
    public function testJobPosterApplyBy() : void
68
    {
69
        $jobPoster = factory(JobPoster::class)->make();
70
        $date = new Date($jobPoster->close_date_time);
0 ignored issues
show
Bug introduced by
It seems like $jobPoster->close_date_time can also be of type Illuminate\Database\Eloq...uent\Relations\Relation and Illuminate\Database\Eloquent\Relations\Relation; however, parameter $time of Jenssegers\Date\Date::__construct() does only seem to accept string, maybe add an additional type check? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

70
        $date = new Date(/** @scrutinizer ignore-type */ $jobPoster->close_date_time);
Loading history...
71
        $date->setTimezone(JobPoster::TIMEZONE);
72
        $this->assertEquals(
73
            $date->format(JobPoster::DATE_FORMAT['en']) . $date->format(JobPoster::TIME_FORMAT['en']),
74
            $jobPoster->applyBy()['date'] . $jobPoster->applyBy()['time']
75
        );
76
    }
77
}
78