public function testComposeCompositeProperties()
 {
     $entity = new AnnotatedTestEntity();
     // set Currency related fields
     $entity->setExampleCurrencyCode('BTC');
     $entity->exampleCurrencyUsingDefaultMapCurrencyCode = 'BTC';
     // set Money related fields
     $entity->setExampleMoneyAmountInteger(321);
     $entity->exampleMoneyUsingDefaultMapAmountInteger = 312;
     $entity->setExampleMoneyCurrencyCode('USD');
     $entity->exampleMoneyUsingDefaultMapCurrencyCode = 'USD';
     // set CurrencyPair related fields
     $entity->setExampleCurrencyPairFromCurrencyCode('GBP');
     $entity->exampleCurrencyPairUsingDefaultMapFromCurrencyCode = 'GBP';
     $entity->setExampleCurrencyPairToCurrencyCode('EUR');
     $entity->exampleCurrencyPairUsingDefaultMapToCurrencyCode = 'EUR';
     // set ExchangeRate related fields
     $entity->setExampleExchangeRateFromCurrencyCode('MAD');
     $entity->exampleExchangeRateUsingDefaultMapFromCurrencyCode = 'MAD';
     $entity->setExampleExchangeRateToCurrencyCode('JPY');
     $entity->exampleExchangeRateUsingDefaultMapToCurrencyCode = 'JPY';
     $entity->setExampleExchangeRateMultiplier(11.75);
     $entity->exampleExchangeRateUsingDefaultMapMultiplier = 11.75;
     // process the field mappings
     $this->compositePropertyService->composeCompositeProperties($entity);
     // test Currency
     $btc = $this->currencyManager->getCurrency('BTC');
     $this->assertEquals($btc, $entity->getExampleCurrency());
     // test Money
     $usdAmount = $this->currencyManager->getMoney('USD');
     $usdAmount->setAmountFloat(3.21);
     $this->assertEquals($usdAmount, $entity->getExampleMoney());
     // test CurrencyPair
     $gbp = $this->currencyManager->getCurrency('GBP');
     $eur = $this->currencyManager->getCurrency('EUR');
     $currencyPair = new CurrencyPair($gbp, $eur);
     $entity->setExampleCurrencyPair($currencyPair);
     $this->assertEquals($currencyPair, $entity->getExampleCurrencyPair());
     // test ExchangeRate
     $mad = $this->currencyManager->getCurrency('MAD');
     $jpy = $this->currencyManager->getCurrency('JPY');
     $exchangeRate = new ExchangeRate($mad, $jpy, 11.75);
     $entity->setExampleExchangeRate($exchangeRate);
     $this->assertEquals($exchangeRate, $entity->getExampleExchangeRate());
 }
 public function postLoad(LifecycleEventArgs &$eventArgs)
 {
     $entity = $eventArgs->getEntity();
     $this->compositePropertyService->composeCompositeProperties($entity);
 }