115 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
			
		
		
	
	
			115 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
<?php
 | 
						|
 | 
						|
namespace Tests\Feature\Member;
 | 
						|
 | 
						|
use App\Group;
 | 
						|
use App\Member\Member;
 | 
						|
use App\Nationality;
 | 
						|
use App\Payment\Subscription;
 | 
						|
use App\Setting\NamiSettings;
 | 
						|
use Illuminate\Foundation\Testing\DatabaseTransactions;
 | 
						|
use Tests\TestCase;
 | 
						|
 | 
						|
class DavTest extends TestCase
 | 
						|
{
 | 
						|
    use DatabaseTransactions;
 | 
						|
 | 
						|
    public function testItCanStoreAMemberFromAVcard(): void
 | 
						|
    {
 | 
						|
        Nationality::factory()->create(['name' => 'englisch']);
 | 
						|
        $subscription = Subscription::factory()->forFee()->create(['name' => 'Voll']);
 | 
						|
        $nationality = Nationality::factory()->create(['name' => 'deutsch']);
 | 
						|
        $group = Group::factory()->create();
 | 
						|
        NamiSettings::fake(['default_group_id' => $group->id]);
 | 
						|
        $cardUri = '97266d2e-36e7-4fb6-8b6c-bbf57a061685.vcf';
 | 
						|
        $cardData = <<<VCARD
 | 
						|
BEGIN:VCARD
 | 
						|
VERSION:3.0
 | 
						|
PRODID:-//Thunderbird.net/NONSGML Thunderbird CardBook V77.0//EN-US
 | 
						|
UID:97266d2e-36e7-4fb6-8b6c-bbf57a061685
 | 
						|
CATEGORIES:Scoutrobot
 | 
						|
FN:given familya Silva
 | 
						|
N:familya;given;;;
 | 
						|
BDAY:20221003
 | 
						|
ORG:Silva
 | 
						|
EMAIL:mail@maild.ee
 | 
						|
ITEM1.TEL:+49 176 70342420
 | 
						|
ITEM1.X-ABLABEL:eltern
 | 
						|
ADR:;;Itterstr 3;Solingen;NRW;42719;Germany
 | 
						|
REV:2022-10-07T14:17:06Z
 | 
						|
END:VCARD
 | 
						|
 | 
						|
VCARD;
 | 
						|
        $member = Member::fromVcard($cardUri, $cardData);
 | 
						|
 | 
						|
        $member->save();
 | 
						|
 | 
						|
        $this->assertDatabaseHas('members', [
 | 
						|
            'slug' => '97266d2e-36e7-4fb6-8b6c-bbf57a061685',
 | 
						|
            'firstname' => 'given',
 | 
						|
            'lastname' => 'familya',
 | 
						|
            'address' => 'Itterstr 3',
 | 
						|
            'zip' => '42719',
 | 
						|
            'location' => 'Solingen',
 | 
						|
            'group_id' => $group->id,
 | 
						|
            'nationality_id' => $nationality->id,
 | 
						|
            'subscription_id' => $subscription->id,
 | 
						|
        ]);
 | 
						|
    }
 | 
						|
 | 
						|
    public function testTheVcardHasTheMembersSlug(): void
 | 
						|
    {
 | 
						|
        $member = Member::factory()->defaults()->create(['firstname' => 'max', 'lastname' => 'muster']);
 | 
						|
 | 
						|
        $card = $member->toVcard();
 | 
						|
 | 
						|
        $this->assertEquals('max-muster', $card->UID->getValue());
 | 
						|
    }
 | 
						|
 | 
						|
    public function testItSetsTheNames(): void
 | 
						|
    {
 | 
						|
        $member = Member::factory()->defaults()->create(['firstname' => 'Max', 'lastname' => 'Muster']);
 | 
						|
 | 
						|
        $card = $member->toVcard();
 | 
						|
 | 
						|
        $this->assertEquals(['Muster', 'Max', '', '', ''], $card->N->getParts());
 | 
						|
        $this->assertEquals('Max Muster', $card->FN->getValue());
 | 
						|
    }
 | 
						|
 | 
						|
    public function testItDoesntNeedBirthday(): void
 | 
						|
    {
 | 
						|
        $member = Member::factory()->defaults()->create(['birthday' => null]);
 | 
						|
 | 
						|
        $card = $member->toVcard();
 | 
						|
 | 
						|
        $this->assertNull($card->BDAY);
 | 
						|
    }
 | 
						|
 | 
						|
    public function testItSetsTheBirthday(): void
 | 
						|
    {
 | 
						|
        $member = Member::factory()->defaults()->create(['birthday' => '1993-05-06']);
 | 
						|
 | 
						|
        $card = $member->toVcard();
 | 
						|
 | 
						|
        $this->assertEquals('19930506', $card->BDAY->getValue());
 | 
						|
    }
 | 
						|
 | 
						|
    public function testItUnsetsMobilePhoneNumber(): void
 | 
						|
    {
 | 
						|
        $member = Member::factory()->defaults()->create();
 | 
						|
 | 
						|
        $member->update(['mobile_phone' => '']);
 | 
						|
 | 
						|
        if (!is_null($member->toVcard()->TEL)) {
 | 
						|
            foreach ($member->toVcard()->TEL as $t) {
 | 
						|
                if ($t['TYPE'] && 'cell' === $t['TYPE']->getValue()) {
 | 
						|
                    $this->assertFalse(true, 'Phone number found');
 | 
						|
                    continue;
 | 
						|
                }
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        $this->assertTrue(true);
 | 
						|
    }
 | 
						|
}
 |