analyze(); // Then $this->assertEquals('simple-table', $result->tableName); $this->assertEquals(FullEntity::class, $result->classFqcn); } public function testFieldsAreAnalyzed(): void { // Given $entity = FullEntity::class; // When $result = (new EntityAnalyzer($entity))->analyze(); // Then $this->assertContainsEquals( new EntityField( name: 'stringField', fqcn: $entity, columnName: 'stringField', isIdField: false, writeAccess: FieldAccess::WITHER, readAccess: FieldAccess::PUBLIC ), $result->fields ); $this->assertContainsEquals( new EntityField( name: 'intField', fqcn: $entity, columnName: 'int-field', isIdField: false, writeAccess: FieldAccess::PUBLIC, readAccess: FieldAccess::GETSET ), $result->fields ); $this->assertContainsEquals( new EntityField( name: 'idField', fqcn: $entity, columnName: 'renamed-id-field', isIdField: true, writeAccess: FieldAccess::GETSET, readAccess: FieldAccess::PUBLIC ), $result->fields ); } public function testIdFieldIsFound(): void { // Given $entity = FullEntity::class; // When $result = (new EntityAnalyzer($entity))->analyze(); // Then $this->assertEquals( new EntityField( name: 'idField', fqcn: $entity, columnName: 'renamed-id-field', isIdField: true, writeAccess: FieldAccess::GETSET, readAccess: FieldAccess::PUBLIC ), $result->idField ); } public function testNoIdIsInvalid(): void { // Given $entity = EntityWithoutId::class; // Then $this->expectException(InvalidEntity::class); // When (new EntityAnalyzer($entity))->analyze(); } public function testMultipleIdsIsInvalid(): void { // Given $entity = EntityWithTwoIds::class; // Then $this->expectException(InvalidEntity::class); // When (new EntityAnalyzer($entity))->analyze(); } }