You are here

public function PluginBasedExchangeRateProviderTest::testLoad in Currency 8.3

@covers ::load

File

tests/src/Unit/PluginBasedExchangeRateProviderTest.php, line 141

Class

PluginBasedExchangeRateProviderTest
@coversDefaultClass \Drupal\currency\PluginBasedExchangeRateProvider

Namespace

Drupal\Tests\currency\Unit

Code

public function testLoad() {
  $currency_code_from = 'EUR';
  $currency_code_to = 'NLG';
  $rate = new ExchangeRate($currency_code_from, $currency_code_to, '2.20371');
  $exchange_rate_provider_id_a = $this
    ->randomMachineName();
  $exchange_rate_provider_id_b = $this
    ->randomMachineName();
  $exchange_rate_provider_b = $this
    ->createMock('\\Commercie\\CurrencyExchange\\ExchangeRateProviderInterface');
  $exchange_rate_provider_b
    ->expects($this
    ->once())
    ->method('load')
    ->with($currency_code_from, $currency_code_to)
    ->willReturn($rate);
  $plugin_definitions = [
    $exchange_rate_provider_id_a => [
      'id' => $exchange_rate_provider_id_a,
    ],
    $exchange_rate_provider_id_b => [
      'id' => $exchange_rate_provider_id_b,
    ],
  ];
  $this->currencyExchangeRateProviderManager
    ->expects($this
    ->once())
    ->method('createInstance')
    ->with($exchange_rate_provider_id_b)
    ->willReturn($exchange_rate_provider_b);
  $this->currencyExchangeRateProviderManager
    ->expects($this
    ->once())
    ->method('getDefinitions')
    ->willReturn($plugin_definitions);
  $config_value = [
    [
      'plugin_id' => $exchange_rate_provider_id_a,
      'status' => FALSE,
    ],
    [
      'plugin_id' => $exchange_rate_provider_id_b,
      'status' => TRUE,
    ],
  ];
  $config = $this
    ->getMockBuilder('\\Drupal\\Core\\Config\\Config')
    ->disableOriginalConstructor()
    ->getMock();
  $config
    ->expects($this
    ->once())
    ->method('get')
    ->with('plugins')
    ->will($this
    ->returnValue($config_value));
  $this->configFactory
    ->expects($this
    ->once())
    ->method('get')
    ->with('currency.exchange_rate_provider')
    ->will($this
    ->returnValue($config));
  $this
    ->assertSame($rate, $this->sut
    ->load($currency_code_from, $currency_code_to));
}