function it_gets_random_ids_for_supplied_entities(TableFetcher $tableFetcher, TableHelper $tableHelper) { $entities = ['sites', 'products', 'images']; $idEntities = ['sites', 'products']; $columns = ['site_id', 'product_id']; $table = 'image_product_site'; $result = [1, 2]; $tableFetcher->getRandomColumnEntries($table, $columns)->shouldBeCalled()->willReturn($result); $tableHelper->getTable($entities)->shouldBeCalled()->willReturn($table); $tableHelper->getIdColumnNames($entities, $idEntities)->willReturn($columns); $this->getRandomIds($entities, $idEntities)->shouldReturn($result); }
/** * @inheritdoc */ public function relationIds() { $entities = $this->entities(); $idEntities = $this->idEntities(); $ids = $this->ids(); $columnNames = $this->tableHelper->getIdColumnNames($entities, $idEntities); if (count($entities) === count($idEntities)) { array_pop($ids); array_pop($columnNames); return array_combine($columnNames, $ids); } elseif (count($entities) > count($idEntities)) { return array_combine($columnNames, $ids); } throw new StupidProgrammerMistakeException('the entities identities count is off'); }
function it_gets_relation_ids_from_an_item_resource(Request $request, Parser $parser, TableHelper $tableHelper) { $uri = '/sites/1/products/2/images/1,4,5'; $entities = ['sites', 'products', 'images']; $idEntities = ['sites', 'products', 'images']; $ids = [1, 2, [1, 4, 5]]; $result = ['site_id' => 1, 'product_id' => 2]; $idEntityColumnNames = ['site_id', 'product_id', 'image_id']; $request->getRequestUri()->shouldBeCalled()->willReturn($uri); $parser->entities($uri)->shouldBeCalled()->willReturn($entities); $parser->idEntities($uri)->shouldBeCalled()->willReturn($idEntities); $parser->ids($uri)->shouldBeCalled()->willReturn($ids); $tableHelper->getIdColumnNames($entities, $idEntities)->willReturn($idEntityColumnNames); $this->relationIds()->shouldReturn($result); }