public function register(AbstractTestCase $testCase)
 {
     $testCase->setTypePreference('Magium\\Magento\\Actions\\Checkout\\PaymentMethods\\PaymentMethodInterface', 'Magium\\Magento\\Actions\\Checkout\\PaymentMethods\\NoPaymentMethod');
     $testCase->setTypePreference('Magium\\Magento\\Actions\\Checkout\\ShippingMethods\\ShippingMethodInterface', 'Magium\\Magento\\Actions\\Checkout\\ShippingMethods\\FirstAvailable');
     $testCase->setTypePreference('Magium\\Themes\\ThemeConfigurationInterface', 'Magium\\Magento\\Themes\\AbstractThemeConfiguration');
     $testCase->switchThemeConfiguration('Magium\\Magento\\Themes\\Magento19\\ThemeConfiguration');
 }
 public function switchThemeConfiguration($fullyQualifiedClassName)
 {
     $reflection = new \ReflectionClass($fullyQualifiedClassName);
     if ($reflection->isSubclassOf('Magium\\Magento\\Themes\\NavigableThemeInterface')) {
         // Not entirely sure of hardcoding the various interface types.  May make this configurable
         parent::switchThemeConfiguration($fullyQualifiedClassName);
         $this->setTypePreference('Magium\\Magento\\Themes\\AbstractThemeConfiguration', $fullyQualifiedClassName);
         $this->setTypePreference('Magium\\Magento\\Themes\\NavigableThemeInterface', $fullyQualifiedClassName);
         $this->setTypePreference('Magium\\Themes\\BaseThemeInterface', $fullyQualifiedClassName);
         $this->setTypePreference('Magium\\Magento\\Themes\\Customer\\AbstractThemeConfiguration', $this->getTheme()->getCustomerThemeClass());
         $this->setTypePreference('Magium\\Magento\\Themes\\OnePageCheckout\\AbstractThemeConfiguration', $this->getTheme()->getCheckoutThemeClass());
     } else {
         throw new InvalidConfigurationException('The theme configuration extend Magium\\Magento\\Themes\\NavigableThemeInterface');
     }
 }