/** * @covers ::add */ public function testAdd() { $models = new RepoModels(Model::getRepo()); $model = new Model(); $models->add($model); $this->assertSame([$model], Objects::toArray($models->all())); }
/** * @covers ::groupBy */ public function testGroupBy() { $callback = function ($item) { return $item->id; }; $group1 = new TestObject(1); $group2 = new TestObject(2); $obj1 = new TestObject($group1); $obj2 = new TestObject($group1); $obj3 = new TestObject($group2); $objects = new SplObjectStorage(); $objects->attach($obj1); $objects->attach($obj2); $objects->attach($obj3); $expected = new SplObjectStorage(); $expected[$group1] = new SplObjectStorage(); $expected[$group1]->attach($obj1); $expected[$group1]->attach($obj2); $expected[$group2] = new SplObjectStorage(); $expected[$group2]->attach($obj3); $this->assertEquals($expected, Objects::groupBy($objects, $callback)); }
/** * @covers ::byRepo */ public function testByRepo() { $source = [0 => new Model(), 1 => new Model(), 2 => new SoftDeleteModel(), 3 => new Model(), 4 => new SoftDeleteModel()]; $models = new Models($source); $expected = [[Model::getRepo(), [$source[0], $source[1], $source[3]]], [SoftDeleteModel::getRepo(), [$source[2], $source[4]]]]; $i = 0; $models->byRepo(function ($repo, Models $repoModels) use($expected, &$i) { $this->assertSame($expected[$i][0], $repo); $this->assertSame($expected[$i][1], Objects::toArray($repoModels->all())); $i++; }); }
/** * @return array */ public function getIds() { return Objects::invoke($this->models, 'getId'); }
/** * @covers ::getSerializers * @covers ::addSerializers */ public function testSerializers() { $repo = new Repo(__NAMESPACE__ . '\\Model'); $this->assertInstanceof('Harp\\Serializer\\Serializers', $repo->getSerializers()); $serializers = [new Json('profile')]; $repo->addSerializers($serializers); $this->assertSame($serializers, Objects::toArray($repo->getSerializers()->all())); }
/** * @param SplObjectStorage $storage * @param Closure $filter * @return SplObjectStorage */ public static function sort(SplObjectStorage $storage, Closure $filter) { $array = iterator_to_array($storage); usort($array, $filter); return Objects::fromArray($array); }