1
+ <?php
2
+
3
+ namespace BeyondCode \Vouchers \Tests ;
4
+
5
+ use Vouchers ;
6
+ use Validator ;
7
+ use BeyondCode \Vouchers \Rules \Voucher ;
8
+ use BeyondCode \Vouchers \Tests \Models \User ;
9
+ use BeyondCode \Vouchers \Tests \Models \Item ;
10
+
11
+ class VoucherRuleTest extends TestCase
12
+ {
13
+
14
+ /**
15
+ * @return \Illuminate\Validation\Validator
16
+ */
17
+ protected function validator ($ code )
18
+ {
19
+ return Validator::make (['code ' => $ code ], ['code ' => new Voucher ()]);
20
+ }
21
+
22
+ /** @test */
23
+ public function it_validated_voucher_codes ()
24
+ {
25
+ $ item = Item::create (['name ' => 'Foo ' ]);
26
+
27
+ $ vouchers = Vouchers::create ($ item );
28
+
29
+ $ this ->assertTrue ($ this ->validator ($ vouchers [0 ]->code )->passes ());
30
+ $ this ->assertTrue ($ this ->validator ('invalid ' )->fails ());
31
+ }
32
+
33
+ /** @test */
34
+ public function it_returns_correct_error_messages_for_invalid_vouchers ()
35
+ {
36
+ $ validator = $ this ->validator ('invalid ' );
37
+ $ validator ->passes ();
38
+
39
+ $ message = $ validator ->messages ()->first ('code ' );
40
+
41
+ $ this ->assertSame ('The voucher code is invalid. ' , $ message );
42
+ }
43
+
44
+ /** @test */
45
+ public function it_returns_correct_error_messages_for_redeemed_vouchers ()
46
+ {
47
+ $ item = Item::create (['name ' => 'Foo ' ]);
48
+ $ vouchers = Vouchers::create ($ item );
49
+
50
+ $ user = User::first ();
51
+ $ user ->redeemCode ($ vouchers [0 ]->code );
52
+
53
+ auth ()->login ($ user );
54
+
55
+ $ validator = $ this ->validator ($ vouchers [0 ]->code );
56
+
57
+ $ this ->assertTrue ($ validator ->fails ());
58
+
59
+ $ message = $ validator ->messages ()->first ('code ' );
60
+
61
+ $ this ->assertSame ('The voucher code was already redeemed. ' , $ message );
62
+ }
63
+
64
+ /** @test */
65
+ public function it_returns_correct_error_messages_for_expired_vouchers ()
66
+ {
67
+ $ item = Item::create (['name ' => 'Foo ' ]);
68
+ $ vouchers = Vouchers::create ($ item , 1 , [], now ()->subDay (1 ));
69
+
70
+ $ validator = $ this ->validator ($ vouchers [0 ]->code );
71
+
72
+ $ this ->assertTrue ($ validator ->fails ());
73
+
74
+ $ message = $ validator ->messages ()->first ('code ' );
75
+
76
+ $ this ->assertSame ('The voucher code is already expired. ' , $ message );
77
+ }
78
+
79
+ }
0 commit comments