diff --git a/src/TimeBasedFieldUpdater.php b/src/TimeBasedFieldUpdater.php index 199d4dc..9aede03 100644 --- a/src/TimeBasedFieldUpdater.php +++ b/src/TimeBasedFieldUpdater.php @@ -2,25 +2,21 @@ namespace Drupal\opencase; use Drupal\Core\Entity\EntityTypeManagerInterface; -use Drupal\opencase\Utils; final class TimeBasedFieldUpdater { private EntityTypeManagerInterface $entityTypeManager; private string $date_field; - private Utils $utils; private string $entity_type; private string $date_format; private string $bundle; final public function __construct( EntityTypeManagerInterface $entityTypeManager, - Utils $utils, string $entity_type, string $bundle, string $date_field, string $date_format = 'Y-m-d' ) { $this->entityTypeManager = $entityTypeManager; - $this->utils = $utils; $this->date_field = $date_field; $this->date_format = $date_format; $this->entity_type = $entity_type; diff --git a/tests/src/Unit/EntityTrait.php b/tests/src/Unit/EntityTrait.php new file mode 100644 index 0000000..ef22099 --- /dev/null +++ b/tests/src/Unit/EntityTrait.php @@ -0,0 +1,38 @@ +getMockBuilder('\\Drupal\\Core\\Entity\\EntityTypeManager')->disableOriginalConstructor()->getMock(); + } + + public function getStorage(MockObject $entityTypeManager, string $entityTypeToExpect = ''): MockObject { + $storage = $this->getMockBuilder('\\Drupal\\Core\\Entity\\EntityStorageInterface')->disableOriginalConstructor()->getMock(); + $entityTypeManager->method('getStorage')->willReturn($storage); + if ($entityTypeToExpect) { + $entityTypeManager->expects($this->any())->method('getStorage')->with($entityTypeToExpect)->willReturn($storage); + } + return $storage; + } + + public function getQuery(MockObject $storage): MockObject { + $query = $this->getMockBuilder('\\Drupal\\Core\\Entity\\Query\\QueryInterface')->getMock(); + $storage->method('getQuery')->willReturn($query); + return $query; + } + + public function getEntity(): MockObject { + return $this->getMockBuilder('\\Drupal\\Core\\Entity\\EntityBase')->disableOriginalConstructor()->getMock(); + } + public function getContainer(array $services): ContainerBuilder { + $container = new ContainerBuilder(); + foreach ($services as $key => $mock) { + $container->set($key, $mock); + } + \Drupal::setContainer($container); + return $container; + } +} \ No newline at end of file diff --git a/tests/src/Unit/OCActivityRevisionRevertFormTest.php b/tests/src/Unit/OCActivityRevisionRevertFormTest.php deleted file mode 100644 index c75887e..0000000 --- a/tests/src/Unit/OCActivityRevisionRevertFormTest.php +++ /dev/null @@ -1,40 +0,0 @@ -getMockBuilder('\\Drupal\\Core\\Entity\\EntityTypeManager')->disableOriginalConstructor()->getMock(); - $dateFormatter = $this->getMockBuilder('\\Drupal\\Core\\Datetime\\DateFormatterInterface')->disableOriginalConstructor()->getMock(); - $storage = $this->getMockBuilder('\\Drupal\\Core\\Entity\\EntityStorageInterface')->disableOriginalConstructor()->getMock(); - $revision = $this->getMockBuilder('\\Drupal\\opencase_entities\\Entity\OCActivity')->disableOriginalConstructor()->getMock(); - $request = new Request([], [], [], [], [], [], [], json_encode([ - 'foo' => 'bar' - ])); - $requestStack = new RequestStack(); - $requestStack->push($request); - $dateFormatter->method('format'); - $container->set('entity_type.manager', $entityTypeManager); - $container->set('date.formatter', $dateFormatter); - $entityTypeManager->method('getStorage')->willReturn($storage); - $storage->method('loadRevision')->willReturn($revision); - $container->set('string_translation', self::getStringTranslationStub()); - $container->set('request_stack', $requestStack); - \Drupal::setContainer($container); - $this->reverter = OCActivityRevisionRevertForm::create($container); - } - - public function testBuildForm():void { - $form = []; - $this->assertTrue(is_array($this->reverter->buildForm($form, new FormState()))); - } - -} diff --git a/tests/src/Unit/OCActorRevisionRevertFormTest.php b/tests/src/Unit/OCActorRevisionRevertFormTest.php deleted file mode 100644 index dad7278..0000000 --- a/tests/src/Unit/OCActorRevisionRevertFormTest.php +++ /dev/null @@ -1,40 +0,0 @@ -getMockBuilder('\\Drupal\\Core\\Entity\\EntityTypeManager')->disableOriginalConstructor()->getMock(); - $dateFormatter = $this->getMockBuilder('\\Drupal\\Core\\Datetime\\DateFormatterInterface')->disableOriginalConstructor()->getMock(); - $storage = $this->getMockBuilder('\\Drupal\\Core\\Entity\\EntityStorageInterface')->disableOriginalConstructor()->getMock(); - $revision = $this->getMockBuilder('\\Drupal\\opencase_entities\\Entity\OCActor')->disableOriginalConstructor()->getMock(); - $request = new Request([], [], [], [], [], [], [], json_encode([ - 'foo' => 'bar' - ])); - $requestStack = new RequestStack(); - $requestStack->push($request); - $dateFormatter->method('format'); - $container->set('entity_type.manager', $entityTypeManager); - $container->set('date.formatter', $dateFormatter); - $entityTypeManager->method('getStorage')->willReturn($storage); - $storage->method('loadRevision')->willReturn($revision); - $container->set('string_translation', self::getStringTranslationStub()); - $container->set('request_stack', $requestStack); - \Drupal::setContainer($container); - $this->reverter = OCActorRevisionRevertForm::create($container); - } - - public function testBuildForm():void { - $form = []; - $this->assertTrue(is_array($this->reverter->buildForm($form, new FormState()))); - } - -} diff --git a/tests/src/Unit/OCActorTest.php b/tests/src/Unit/OCActorTest.php new file mode 100644 index 0000000..fe7d830 --- /dev/null +++ b/tests/src/Unit/OCActorTest.php @@ -0,0 +1,30 @@ +etm = $this->getEntityTypeManager(); + $this->getContainer([ + 'entity_type.manager' => $this->etm + ]); + } + + public function testGetCountOfCaseProvisions(): void{ + $storage = $this->getStorage($this->etm, 'oc_case_provision'); + $query = $this->getQuery($storage); + $actor = $this->getMockBuilder('\\Drupal\\opencase_entities\\Entity\\OCActor')->disableOriginalConstructor() + ->onlyMethods(['id']) + ->getMock(); + $actor->expects($this->once())->method('id')->willReturn(5); + $query->expects($this->once())->method('condition')->with('oc_provider', 5); + $query->expects($this->once())->method('execute')->willReturn([1,2,3,4]); + $count = $actor->getCountOfCaseProvisions(); + $this->assertTrue($count == 4); + } +} diff --git a/tests/src/Unit/OCCaseRevisionRevertFormTest.php b/tests/src/Unit/OCCaseRevisionRevertFormTest.php deleted file mode 100644 index b68904d..0000000 --- a/tests/src/Unit/OCCaseRevisionRevertFormTest.php +++ /dev/null @@ -1,40 +0,0 @@ -getMockBuilder('\\Drupal\\Core\\Entity\\EntityTypeManager')->disableOriginalConstructor()->getMock(); - $dateFormatter = $this->getMockBuilder('\\Drupal\\Core\\Datetime\\DateFormatterInterface')->disableOriginalConstructor()->getMock(); - $storage = $this->getMockBuilder('\\Drupal\\Core\\Entity\\EntityStorageInterface')->disableOriginalConstructor()->getMock(); - $revision = $this->getMockBuilder('\\Drupal\\opencase_cases\\Entity\OCCase')->disableOriginalConstructor()->getMock(); - $request = new Request([], [], [], [], [], [], [], json_encode([ - 'foo' => 'bar' - ])); - $requestStack = new RequestStack(); - $requestStack->push($request); - $dateFormatter->method('format'); - $container->set('entity_type.manager', $entityTypeManager); - $container->set('date.formatter', $dateFormatter); - $entityTypeManager->method('getStorage')->willReturn($storage); - $storage->method('loadRevision')->willReturn($revision); - $container->set('string_translation', self::getStringTranslationStub()); - $container->set('request_stack', $requestStack); - \Drupal::setContainer($container); - $this->reverter = OCCaseRevisionRevertForm::create($container); - } - - public function testBuildForm():void { - $form = []; - $this->assertTrue(is_array($this->reverter->buildForm($form, new FormState()))); - } - -} diff --git a/tests/src/Unit/OCOrganisationRevisionRevertFormTest.php b/tests/src/Unit/OCOrganisationRevisionRevertFormTest.php deleted file mode 100644 index bdf4a89..0000000 --- a/tests/src/Unit/OCOrganisationRevisionRevertFormTest.php +++ /dev/null @@ -1,40 +0,0 @@ -getMockBuilder('\\Drupal\\Core\\Entity\\EntityTypeManager')->disableOriginalConstructor()->getMock(); - $dateFormatter = $this->getMockBuilder('\\Drupal\\Core\\Datetime\\DateFormatterInterface')->disableOriginalConstructor()->getMock(); - $storage = $this->getMockBuilder('\\Drupal\\Core\\Entity\\EntityStorageInterface')->disableOriginalConstructor()->getMock(); - $revision = $this->getMockBuilder('\\Drupal\\opencase_entities\\Entity\OCOrganisation')->disableOriginalConstructor()->getMock(); - $request = new Request([], [], [], [], [], [], [], json_encode([ - 'foo' => 'bar' - ])); - $requestStack = new RequestStack(); - $requestStack->push($request); - $dateFormatter->method('format'); - $container->set('entity_type.manager', $entityTypeManager); - $container->set('date.formatter', $dateFormatter); - $entityTypeManager->method('getStorage')->willReturn($storage); - $storage->method('loadRevision')->willReturn($revision); - $container->set('string_translation', self::getStringTranslationStub()); - $container->set('request_stack', $requestStack); - \Drupal::setContainer($container); - $this->reverter = OCOrganisationRevisionRevertForm::create($container); - } - - public function testBuildForm():void { - $form = []; - $this->assertTrue(is_array($this->reverter->buildForm($form, new FormState()))); - } - -} \ No newline at end of file diff --git a/tests/src/Unit/RevisionRevertFormTest.php b/tests/src/Unit/RevisionRevertFormTest.php new file mode 100644 index 0000000..f3bb2b6 --- /dev/null +++ b/tests/src/Unit/RevisionRevertFormTest.php @@ -0,0 +1,60 @@ +getEntityTypeManager(); + $storage = $this->getStorage($entityTypeManager); + $dateFormatter = $this->getMockBuilder('\\Drupal\\Core\\Datetime\\DateFormatterInterface')->disableOriginalConstructor()->getMock(); + $revision = $this->getMockBuilder('\\Drupal\\opencase_entities\\Entity\OCActivity')->disableOriginalConstructor()->getMock(); + $request = new Request([], [], [], [], [], [], [], json_encode([ + 'foo' => 'bar' + ])); + $requestStack = new RequestStack(); + $requestStack->push($request); + $dateFormatter->method('format'); + $storage->method('loadRevision')->willReturn($revision); + $this->container = $this->getContainer([ + 'entity_type.manager'=> $entityTypeManager, + 'date.formatter' => $dateFormatter, + 'string_translation'=> self::getStringTranslationStub(), + 'request_stack'=> $requestStack + ]); + + } + + public function testBuildFormForRevertingActivity():void { + $this->reverter = OCActivityRevisionRevertForm::create($this->container); + $form = []; + $this->assertTrue(is_array($this->reverter->buildForm($form, new FormState()))); + } + public function testBuildFormForRevertingActor():void { + $this->reverter = OCActorRevisionRevertForm::create($this->container); + $form = []; + $this->assertTrue(is_array($this->reverter->buildForm($form, new FormState()))); + } + public function testBuildFormForRevertingCase():void { + $this->reverter = OCCaseRevisionRevertForm::create($this->container); + $form = []; + $this->assertTrue(is_array($this->reverter->buildForm($form, new FormState()))); + } + public function testBuildFormForRevertingOrganisation():void { + $this->reverter = OCOrganisationRevisionRevertForm::create($this->container); + $form = []; + $this->assertTrue(is_array($this->reverter->buildForm($form, new FormState()))); + } +} diff --git a/tests/src/Unit/TimeBasedFieldUpdaterTest.php b/tests/src/Unit/TimeBasedFieldUpdaterTest.php index aed80cb..b97254a 100644 --- a/tests/src/Unit/TimeBasedFieldUpdaterTest.php +++ b/tests/src/Unit/TimeBasedFieldUpdaterTest.php @@ -7,16 +7,13 @@ use Drupal\opencase\TimeBasedFieldUpdater; class TimeBasedFieldUpdaterTest extends UnitTestCase{ + use EntityTrait; + function setUp():void { - /** @var \Drupal\opencase\Utils&\PHPUnit\Framework\MockObject\MockObject $utils */ - $this->utils = $this->getMockBuilder('\\Drupal\\opencase\\Utils')->disableOriginalConstructor()->getMock(); - /** @var \Drupal\core\Entity\EntityTypeManagerInterface&\PHPUnit\Framework\MockObject\MockObject $entityTypeManager */ - $this->entityTypeManager = $this->getMockBuilder('\\Drupal\\Core\\Entity\\EntityTypeManager')->disableOriginalConstructor()->getMock(); - $this->storage = $this->getMockBuilder('\\Drupal\\Core\\Entity\\EntityStorageInterface')->getMock(); - $this->query = $this->getMockBuilder('\\Drupal\\Core\\Entity\\Query\\QueryInterface')->getMock(); - $this->entityTypeManager->method('getStorage')->willReturn($this->storage); - $this->storage->method('getQuery')->willReturn($this->query); - $this->updater = new TimeBasedFieldUpdater($this->entityTypeManager, $this->utils, 'dummy_entity_type', 'dummy_bundle', 'dummy_date_field'); + $this->etm = $this->getEntityTypeManager(); + $this->storage = $this->getStorage($this->etm); + $this->query = $this->getQuery($this->storage); + $this->updater = new TimeBasedFieldUpdater($this->etm, 'dummy_entity_type', 'dummy_bundle', 'dummy_date_field'); } function testFieldIsUpdatedOnEntityReturnedByQuery():void { @@ -28,21 +25,21 @@ class TimeBasedFieldUpdaterTest extends UnitTestCase{ } function testFieldIsUpdatedOnAllEntitiesReturnedByQuery():void { $this->query->method('execute')->willReturn([1, 2]); - $this->entity = $this->getMockBuilder('\\Drupal\\Core\\Entity\\EntityBase')->disableOriginalConstructor()->getMock(); - $this->entity2 = $this->getMockBuilder('\\Drupal\\Core\\Entity\\EntityBase')->disableOriginalConstructor()->getMock(); - $this->storage->method('load')->willReturnMap([[1, $this->entity], [2, $this-> entity2]]); + $entity = $this->getEntity(); + $entity2 = $this->getEntity(); + $this->storage->method('load')->willReturnMap([[1, $entity], [2, $entity2]]); $this->updater->update([], '3 months', ['dummy_field' => 4]); - $this->assertEquals($this->entity->dummy_field, 4); - $this->assertEquals($this->entity2->dummy_field, 4); + $this->assertEquals($entity->dummy_field, 4); + $this->assertEquals($entity2->dummy_field, 4); } function testMultipleFieldsAreUpdated(): void { $this->query->method('execute')->willReturn([1]); - $this->entity = $this->getMockBuilder('\\Drupal\\Core\\Entity\\EntityBase')->disableOriginalConstructor()->getMock(); - $this->storage->expects($this->once())->method('load')->with(1)->willReturn($this->entity); + $entity = $this->getEntity(); + $this->storage->expects($this->once())->method('load')->with(1)->willReturn($entity); $this->updater->update([], '3 months', ['dummy_field' => 4, 'dummy_field_2' => 5]); - $this->assertEquals($this->entity->dummy_field, 4); - $this->assertEquals($this->entity->dummy_field_2, 5); + $this->assertEquals($entity->dummy_field, 4); + $this->assertEquals($entity->dummy_field_2, 5); }