/** * Filter card types for specific country * @param array $configCardTypes * @param string $countryId * @return array */ private function filterCardTypesForCountry(array $configCardTypes, $countryId) { $filtered = $configCardTypes; $countryCardTypes = $this->gatewayConfig->getCountryAvailableCardTypes($countryId); // filter card types only if specific card types are set for country if (!empty($countryCardTypes)) { $availableTypes = array_fill_keys($countryCardTypes, ''); $filtered = array_intersect_key($filtered, $availableTypes); } return $filtered; }
/** * @covers \Magento\BraintreeTwo\Gateway\Config\Config::getCountryAvailableCardTypes * @dataProvider getCountrySpecificCardTypeConfigDataProvider */ public function testCountryAvailableCardTypes($data, $countryData) { $this->scopeConfigMock->expects(static::any())->method('getValue')->with($this->getPath(Config::KEY_COUNTRY_CREDIT_CARD), ScopeInterface::SCOPE_STORE, null)->willReturn($data); foreach ($countryData as $countryId => $types) { $result = $this->model->getCountryAvailableCardTypes($countryId); static::assertEquals($types, $result); } }