<?php

namespace Tests\Architecture;

use Drupal\Core\Controller\ControllerBase;
use PHPat\Selector\Selector;
use PHPat\Test\Builder\Rule;
use PHPat\Test\PHPat;

final class ArchTest {

  public function test_classes_should_be_final(): Rule {
    return PHPat::rule()
      ->classes(Selector::inNamespace('Drupal\atdc'))
      ->shouldBeFinal();
  }

  public function test_controllers_should_extend_ControllerBase(): Rule {
    return PHPat::rule()
      ->classes(Selector::inNamespace('Drupal\atdc\Controller'))
      ->shouldExtend()
      ->classes(Selector::classname(ControllerBase::class));
  }

  public function test_controllers_should_have_the_Controller_suffix(): Rule {
    return PHPat::rule()
      ->classes(Selector::inNamespace('Drupal\atdc\Controller'))
      ->shouldBeNamed(
        classname: '/Controller$/',
        regex: TRUE,
      );
  }

}