/** * {@inheritdoc} * * @throws \InvalidArgumentException If the report does not have a data fetcher. */ public function fetch(ReportInterface $report, array $configuration = []) { if (null === ($type = $report->getDataFetcher())) { throw new \InvalidArgumentException('Cannot fetch data for ReportInterface instance without DataFetcher defined.'); } $dataFetcher = $this->registry->get($type); $configuration = empty($configuration) ? $report->getDataFetcherConfiguration() : $configuration; return $dataFetcher->fetch($configuration); }
function it_adds_configuration_fields_in_pre_set_data($factory, ReportInterface $report, FormEvent $event, Form $form, Form $field) { $report->getDataFetcher()->willReturn('test_data_fetcher'); $report->getDataFetcherConfiguration()->willReturn(array()); $event->getData()->willReturn($report); $event->getForm()->willReturn($form); $factory->createNamed('dataFetcherConfiguration', 'sylius_data_fetcher_test_type', Argument::cetera())->willReturn($field); $form->add($field)->shouldBeCalled(); $this->preSetData($event); }
public function it_should_complain_if_report_has_no_data_fetcher_defined(ReportInterface $subject) { $subject->getDataFetcher()->willReturn(null); $this->shouldThrow(new \InvalidArgumentException('Cannot fetch data for ReportInterface instance without DataFetcher defined.'))->duringFetch($subject); }