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;
4
 
5
use Illuminate\Support\Carbon;
6
 
7
class Wormhole
8
{
9
    /**
10
     * The amount of time to travel.
11
     *
12
     * @var int
13
     */
14
    public $value;
15
 
16
    /**
17
     * Create a new wormhole instance.
18
     *
19
     * @param  int  $value
20
     * @return void
21
     */
22
    public function __construct($value)
23
    {
24
        $this->value = $value;
25
    }
26
 
27
    /**
28
     * Travel forward the given number of milliseconds.
29
     *
30
     * @param  callable|null  $callback
31
     * @return mixed
32
     */
33
    public function millisecond($callback = null)
34
    {
35
        return $this->milliseconds($callback);
36
    }
37
 
38
    /**
39
     * Travel forward the given number of milliseconds.
40
     *
41
     * @param  callable|null  $callback
42
     * @return mixed
43
     */
44
    public function milliseconds($callback = null)
45
    {
46
        Carbon::setTestNow(Carbon::now()->addMilliseconds($this->value));
47
 
48
        return $this->handleCallback($callback);
49
    }
50
 
51
    /**
52
     * Travel forward the given number of seconds.
53
     *
54
     * @param  callable|null  $callback
55
     * @return mixed
56
     */
57
    public function second($callback = null)
58
    {
59
        return $this->seconds($callback);
60
    }
61
 
62
    /**
63
     * Travel forward the given number of seconds.
64
     *
65
     * @param  callable|null  $callback
66
     * @return mixed
67
     */
68
    public function seconds($callback = null)
69
    {
70
        Carbon::setTestNow(Carbon::now()->addSeconds($this->value));
71
 
72
        return $this->handleCallback($callback);
73
    }
74
 
75
    /**
76
     * Travel forward the given number of minutes.
77
     *
78
     * @param  callable|null  $callback
79
     * @return mixed
80
     */
81
    public function minute($callback = null)
82
    {
83
        return $this->minutes($callback);
84
    }
85
 
86
    /**
87
     * Travel forward the given number of minutes.
88
     *
89
     * @param  callable|null  $callback
90
     * @return mixed
91
     */
92
    public function minutes($callback = null)
93
    {
94
        Carbon::setTestNow(Carbon::now()->addMinutes($this->value));
95
 
96
        return $this->handleCallback($callback);
97
    }
98
 
99
    /**
100
     * Travel forward the given number of hours.
101
     *
102
     * @param  callable|null  $callback
103
     * @return mixed
104
     */
105
    public function hour($callback = null)
106
    {
107
        return $this->hours($callback);
108
    }
109
 
110
    /**
111
     * Travel forward the given number of hours.
112
     *
113
     * @param  callable|null  $callback
114
     * @return mixed
115
     */
116
    public function hours($callback = null)
117
    {
118
        Carbon::setTestNow(Carbon::now()->addHours($this->value));
119
 
120
        return $this->handleCallback($callback);
121
    }
122
 
123
    /**
124
     * Travel forward the given number of days.
125
     *
126
     * @param  callable|null  $callback
127
     * @return mixed
128
     */
129
    public function day($callback = null)
130
    {
131
        return $this->days($callback);
132
    }
133
 
134
    /**
135
     * Travel forward the given number of days.
136
     *
137
     * @param  callable|null  $callback
138
     * @return mixed
139
     */
140
    public function days($callback = null)
141
    {
142
        Carbon::setTestNow(Carbon::now()->addDays($this->value));
143
 
144
        return $this->handleCallback($callback);
145
    }
146
 
147
    /**
148
     * Travel forward the given number of weeks.
149
     *
150
     * @param  callable|null  $callback
151
     * @return mixed
152
     */
153
    public function week($callback = null)
154
    {
155
        return $this->weeks($callback);
156
    }
157
 
158
    /**
159
     * Travel forward the given number of weeks.
160
     *
161
     * @param  callable|null  $callback
162
     * @return mixed
163
     */
164
    public function weeks($callback = null)
165
    {
166
        Carbon::setTestNow(Carbon::now()->addWeeks($this->value));
167
 
168
        return $this->handleCallback($callback);
169
    }
170
 
171
    /**
172
     * Travel forward the given number of months.
173
     *
174
     * @param  callable|null  $callback
175
     * @return mixed
176
     */
177
    public function month($callback = null)
178
    {
179
        return $this->months($callback);
180
    }
181
 
182
    /**
183
     * Travel forward the given number of months.
184
     *
185
     * @param  callable|null  $callback
186
     * @return mixed
187
     */
188
    public function months($callback = null)
189
    {
190
        Carbon::setTestNow(Carbon::now()->addMonths($this->value));
191
 
192
        return $this->handleCallback($callback);
193
    }
194
 
195
    /**
196
     * Travel forward the given number of years.
197
     *
198
     * @param  callable|null  $callback
199
     * @return mixed
200
     */
201
    public function year($callback = null)
202
    {
203
        return $this->years($callback);
204
    }
205
 
206
    /**
207
     * Travel forward the given number of years.
208
     *
209
     * @param  callable|null  $callback
210
     * @return mixed
211
     */
212
    public function years($callback = null)
213
    {
214
        Carbon::setTestNow(Carbon::now()->addYears($this->value));
215
 
216
        return $this->handleCallback($callback);
217
    }
218
 
219
    /**
220
     * Travel back to the current time.
221
     *
222
     * @return \DateTimeInterface
223
     */
224
    public static function back()
225
    {
226
        Carbon::setTestNow();
227
 
228
        return Carbon::now();
229
    }
230
 
231
    /**
232
     * Handle the given optional execution callback.
233
     *
234
     * @param  callable|null  $callback
235
     * @return mixed
236
     */
237
    protected function handleCallback($callback)
238
    {
239
        if ($callback) {
240
            return tap($callback(), function () {
241
                Carbon::setTestNow();
242
            });
243
        }
244
    }
245
}