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