Subversion-Projekte lars-tiefland.laravel_shop

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
148 lars 1
<?php
2
 
3
namespace Illuminate\Foundation\Testing\Concerns;
4
 
5
use Illuminate\Foundation\Testing\Wormhole;
6
use Illuminate\Support\Carbon;
7
 
8
trait InteractsWithTime
9
{
10
    /**
11
     * Freeze time.
12
     *
13
     * @param  callable|null  $callback
14
     * @return mixed
15
     */
16
    public function freezeTime($callback = null)
17
    {
18
        return $this->travelTo(Carbon::now(), $callback);
19
    }
20
 
21
    /**
22
     * Freeze time at the beginning of the current second.
23
     *
24
     * @param  callable|null  $callback
25
     * @return mixed
26
     */
27
    public function freezeSecond($callback = null)
28
    {
29
        return $this->travelTo(Carbon::now()->startOfSecond(), $callback);
30
    }
31
 
32
    /**
33
     * Begin travelling to another time.
34
     *
35
     * @param  int  $value
36
     * @return \Illuminate\Foundation\Testing\Wormhole
37
     */
38
    public function travel($value)
39
    {
40
        return new Wormhole($value);
41
    }
42
 
43
    /**
44
     * Travel to another time.
45
     *
46
     * @param  \DateTimeInterface|\Closure|\Illuminate\Support\Carbon|string|bool|null  $date
47
     * @param  callable|null  $callback
48
     * @return mixed
49
     */
50
    public function travelTo($date, $callback = null)
51
    {
52
        Carbon::setTestNow($date);
53
 
54
        if ($callback) {
55
            return tap($callback($date), function () {
56
                Carbon::setTestNow();
57
            });
58
        }
59
    }
60
 
61
    /**
62
     * Travel back to the current time.
63
     *
64
     * @return \DateTimeInterface
65
     */
66
    public function travelBack()
67
    {
68
        return Wormhole::back();
69
    }
70
}