/**
  * {@inheritDoc}
  */
 public function finishView(FormView $view, FormInterface $form, array $options)
 {
     $formParent = $form->getParent();
     if (!$formParent) {
         return;
     }
     /* @var $productUnitHolder ProductUnitHolderInterface */
     $productUnitHolder = $formParent->getData();
     if (!$productUnitHolder) {
         return;
     }
     $product = $productUnitHolder->getProductHolder()->getProduct();
     $choices = $this->getProductUnits($product);
     $productUnit = $productUnitHolder->getProductUnit();
     if (!$productUnit || $product && !in_array($productUnit, $choices, true)) {
         $emptyValueTitle = $this->translator->trans($this->options['empty_label'], ['{title}' => $productUnitHolder->getProductUnitCode()]);
         $view->vars['empty_value'] = $emptyValueTitle;
     }
     $choices = $this->productUnitFormatter->formatChoices($choices, $options['compact']);
     $choicesViews = [];
     foreach ($choices as $key => $value) {
         $choicesViews[] = new ChoiceView($value, $key, $value);
     }
     $view->vars['choices'] = $choicesViews;
 }
 protected function getFreeFormUnits()
 {
     $units = $this->registry->getRepository($this->productUnitClass)->findBy([], ['code' => 'ASC']);
     $units = $this->productUnitFormatter->formatChoices($units);
     return $units;
 }
 /**
  * @param bool $isShort
  * @param array $expected
  *
  * @dataProvider formatChoicesProvider
  */
 public function testFormatChoices($isShort, array $expected)
 {
     $units = [(new ProductUnit())->setCode('kg'), (new ProductUnit())->setCode('item')];
     $this->translator->expects($this->exactly(2))->method('trans')->will($this->returnValueMap([['orob2b.product_unit.kg.label.full', [], null, null, '_KG'], ['orob2b.product_unit.item.label.full', [], null, null, '_ITEM'], ['orob2b.product_unit.kg.label.short', [], null, null, '_KG_SHORT'], ['orob2b.product_unit.item.label.short', [], null, null, '_ITEM_SHORT']]));
     $this->assertEquals($expected, $this->formatter->formatChoices($units, $isShort));
 }