ILIAS  release_10 Revision v10.1-43-ga1241a92c2f
CollectionBuilderTest.php
Go to the documentation of this file.
1 <?php
2 
20 
33 
38 class CollectionBuilderTest extends TestCase
39 {
40  public const DUMMY_RCID = 'dummy-rcid';
49  private ResourceBuilder|MockObject $resource_builder;
51 
52  protected function setUp(): void
53  {
54  $this->collection_builder = new CollectionBuilder(
55  $this->collection_repo = $this->createMock(CollectionRepository::class),
56  new Subject(),
57  new DummyIDGenerator(self::DUMMY_RCID)
58  );
59  $this->collections = new Collections(
60  $this->resource_builder = $this->createMock(ResourceBuilder::class),
61  $this->collection_builder,
62  $this->createMock(RepositoryPreloader::class),
63  new Subject()
64  );
65  }
66 
67  public function testGetCollectionTwice(): void
68  {
69  $rcid = new ResourceCollectionIdentification(self::DUMMY_RCID);
70 
71  $this->collection_repo->expects($this->once())
72  ->method('existing')
73  ->with($rcid)
74  ->willReturn(
75  new ResourceCollection($rcid, -1, '')
76  );
77 
78  $this->collection_repo->expects($this->once())
79  ->method('getResourceIdStrings')
80  ->with($rcid)
81  ->willReturn(
82  $this->arrayAsGenerator([
83  'rid1',
84  'rid2',
85  'rid3'
86  ])
87  );
88 
89  $consecutive = [
90  new ResourceIdentification('rid1'),
91  new ResourceIdentification('rid2'),
92  new ResourceIdentification('rid3'),
93  new ResourceIdentification('rid1'),
94  new ResourceIdentification('rid2'),
95  new ResourceIdentification('rid3'),
96  ];
97  $this->resource_builder
98  ->expects($this->exactly(6))
99  ->method('has')
100  ->willReturnCallback(
101  function ($rid) use (&$consecutive) {
102  $this->assertEquals(array_shift($consecutive), $rid);
103  return true;
104  }
105  );
106 
107  $collection = $this->collections->get($rcid, null);
108 
109  $this->assertInstanceOf(ResourceCollection::class, $collection);
110  $this->assertNotInstanceOf(MockObject::class, $collection);
111 
112  $this->assertEquals(3, $collection->count());
113 
114  $collection = $this->collections->get($rcid, null);
115 
116  $this->assertEquals(3, $collection->count());
117  }
118 
119  protected function arrayAsGenerator(array $array): \Generator
120  {
121  foreach ($array as $item) {
122  yield $item;
123  }
124  }
125 
126 }
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...