File tree Expand file tree Collapse file tree 3 files changed +99
-0
lines changed Expand file tree Collapse file tree 3 files changed +99
-0
lines changed Original file line number Diff line number Diff line change @@ -99,6 +99,7 @@ return [
9999| 33 | ValidPascalCase | Validate pascal case for ex (MilwadDev) |
100100| 34 | ValidKebabCase | Validate kebab case for ex (milwad-dev) |
101101| 35 | ValidSnakeCase | Validate snake case for ex (milwad_dev) |
102+ | 36 | ValidVatId | Validate european VAT ID ex (EL123456789123) |
102103
103104# Rules
104105
Original file line number Diff line number Diff line change 1+ <?php
2+
3+ namespace Milwad \LaravelValidate \Rules ;
4+
5+ use Illuminate \Contracts \Validation \Rule ;
6+
7+ class ValidVatId implements Rule
8+ {
9+ /**
10+ * Check VAT ID for validity.
11+ *
12+ * @param string $attribute
13+ * @param mixed $value
14+ * @return bool
15+ */
16+ public function passes ($ attribute , $ value )
17+ {
18+ // Remove all characters except letters and numbers
19+ $ value = preg_replace ('/[^a-zA-Z0-9]]/ ' , '' , $ value );
20+
21+ return preg_match ('/[a-zA-Z]{2}[0-9]{0,12}$/ ' , $ value );
22+ }
23+
24+ /**
25+ * Get the validation error message.
26+ *
27+ * @return string
28+ */
29+ public function message ()
30+ {
31+ return __ ('validate.vat-id ' );
32+ }
33+ }
Original file line number Diff line number Diff line change 1+ <?php
2+
3+ namespace Milwad \LaravelValidate \Tests \Rules ;
4+
5+ use Milwad \LaravelValidate \Rules \ValidVatId ;
6+ use Milwad \LaravelValidate \Tests \BaseTest ;
7+
8+ class ValidVatIdTest extends BaseTest
9+ {
10+ /**
11+ * Set up.
12+ */
13+ protected function setUp (): void
14+ {
15+ parent ::setUp ();
16+ }
17+
18+ /**
19+ * Test vatid is valid.
20+ *
21+ * @test
22+ *
23+ * @return void
24+ */
25+ public function vatid_is_valid ()
26+ {
27+ $ rules = ['vat_id ' => [new ValidVatId ()]];
28+ $ data = ['vat_id ' => 'EL123456789 ' ];
29+ $ passes = $ this ->app ['validator ' ]->make ($ data , $ rules )->passes ();
30+
31+ $ this ->assertTrue ($ passes );
32+ }
33+
34+ /**
35+ * Test vatid is not valid.
36+ *
37+ * @test
38+ *
39+ * @return void
40+ */
41+ public function vatid_is_not_valid ()
42+ {
43+ $ rules = ['vat_id ' => [new ValidVatId ()]];
44+ $ data = ['vat_id ' => 'EL123456789123678912 ' ];
45+ $ passes = $ this ->app ['validator ' ]->make ($ data , $ rules )->passes ();
46+
47+ $ this ->assertFalse ($ passes );
48+ }
49+
50+ /**
51+ * Test vatid is not valid (too long).
52+ *
53+ * @test
54+ *
55+ * @return void
56+ */
57+ public function vat_is_to_long_valid ()
58+ {
59+ $ rules = ['vat_id ' => [new ValidVatId ()]];
60+ $ data = ['vat_id ' => 'EL1234567891236789123 ' ];
61+ $ passes = $ this ->app ['validator ' ]->make ($ data , $ rules )->passes ();
62+
63+ $ this ->assertFalse ($ passes );
64+ }
65+ }
You can’t perform that action at this time.
0 commit comments