<?php

namespace SilverStripe\Forms;

use PHPUnit\Framework\MockObject\MockObject;
use SilverStripe\Dev\SapphireTest;

class DatalessFieldTest extends SapphireTest
{
    public function testGetAttributes()
    {
        $field = new DatalessField('Name');
        $result = $field->getAttributes();
        $this->assertSame('hidden', $result['type']);
    }

    public function testFieldHolderAndSmallFieldHolderReturnField()
    {
        /** @var DatalessField|MockObject $mock */
        $mock = $this->getMockBuilder(DatalessField::class)
            ->disableOriginalConstructor()
            ->setMethods(['Field'])
            ->getMock();

        $properties = [
            'foo' => 'bar',
        ];

        $mock->expects($this->exactly(2))->method('Field')->with($properties)->willReturn('boo!');

        $fieldHolder = $mock->FieldHolder($properties);
        $smallFieldHolder = $mock->SmallFieldHolder($properties);

        $this->assertSame('boo!', $fieldHolder);
        $this->assertSame('boo!', $smallFieldHolder);
    }

    public function testPerformReadonlyTransformation()
    {
        $field = new DatalessField('Test');
        $result = $field->performReadonlyTransformation();
        $this->assertInstanceOf(DatalessField::class, $result);
        $this->assertTrue($result->isReadonly());
    }
}