Parse and validate AT Protocol Lexicons with DTO generation for Laravel
at main 70 lines 1.6 kB view raw
1<?php 2 3namespace SocialDept\AtpSchema\Tests\Unit\Validation\Rules; 4 5use Orchestra\Testbench\TestCase; 6use SocialDept\AtpSchema\Validation\Rules\Nsid; 7 8class NsidTest extends TestCase 9{ 10 protected Nsid $rule; 11 12 protected function setUp(): void 13 { 14 parent::setUp(); 15 16 $this->rule = new Nsid(); 17 } 18 19 public function test_it_validates_valid_nsid(): void 20 { 21 $valid = 'app.bsky.feed.post'; 22 23 $failed = false; 24 $this->rule->validate('nsid', $valid, function () use (&$failed) { 25 $failed = true; 26 }); 27 28 $this->assertFalse($failed); 29 } 30 31 public function test_it_rejects_invalid_nsid(): void 32 { 33 $invalid = 'invalid-nsid'; 34 35 $failed = false; 36 $this->rule->validate('nsid', $invalid, function () use (&$failed) { 37 $failed = true; 38 }); 39 40 $this->assertTrue($failed); 41 } 42 43 public function test_it_rejects_non_string(): void 44 { 45 $failed = false; 46 $this->rule->validate('nsid', 123, function () use (&$failed) { 47 $failed = true; 48 }); 49 50 $this->assertTrue($failed); 51 } 52 53 public function test_it_validates_various_nsids(): void 54 { 55 $validNsids = [ 56 'com.example.test', 57 'app.bsky.feed.post', 58 'io.github.user.action', 59 ]; 60 61 foreach ($validNsids as $nsid) { 62 $failed = false; 63 $this->rule->validate('nsid', $nsid, function () use (&$failed) { 64 $failed = true; 65 }); 66 67 $this->assertFalse($failed, "Expected {$nsid} to be valid"); 68 } 69 } 70}