<?php

declare(strict_types=1);

namespace Engelsystem\Test\Unit\Models;

use Engelsystem\Models\Group;
use Engelsystem\Models\Privilege;

class PrivilegeTest extends ModelTest
{
    /**
     * @covers \Engelsystem\Models\Privilege::groups
     */
    public function testGroups(): void
    {
        /** @var Group $group1 */
        $group1 = Group::factory()->create();
        /** @var Group $group2 */
        $group2 = Group::factory()->create();

        $model = new Privilege();
        $model->name = 'Some Privilege';
        $model->description = 'Some long description';
        $model->save();

        $model->groups()->attach($group1);
        $model->groups()->attach($group2);

        /** @var Privilege $savedModel */
        $savedModel = Privilege::whereName('Some Privilege')->first();
        $this->assertEquals('Some Privilege', $savedModel->name);
        $this->assertEquals('Some long description', $savedModel->description);
        $this->assertEquals($group1->name, $savedModel->groups[0]->name);
        $this->assertEquals($group2->name, $savedModel->groups[1]->name);
    }
}