public function testActionSubmit_importSuccess()
 {
     // Config mock
     $oConfig = $this->getMock('oxConfig', array('getUploadedFile'));
     $oConfig->expects($this->once())->method('getUploadedFile')->with('oxpsmodulesconfig_file')->will($this->returnValue(array('error' => '', 'type' => 'application/octet-stream', 'tmp_name' => '/path/to/good_file.json')));
     oxRegistry::set('oxConfig', $oConfig);
     modConfig::setRequestParameter('oxpsmodulesconfig_modules', array('my_module'));
     modConfig::setRequestParameter('oxpsmodulesconfig_settings', array('version' => 1, 'extend' => 1));
     modConfig::setRequestParameter('oxpsmodulesconfig_import', 1);
     // Request validator instance mock
     $oValidator = $this->getMock('oxpsModulesConfigRequestValidator', array('__call', 'validateRequestData', 'validateImportData', 'addErrors'));
     $oValidator->expects($this->once())->method('validateRequestData')->with(array('modules' => array('my_module'), 'settings' => array('version', 'extend'), 'action' => 'import'))->will($this->returnValue(true));
     $oValidator->expects($this->once())->method('validateImportData')->with(array('error' => '', 'type' => 'application/octet-stream', 'tmp_name' => '/path/to/good_file.json'))->will($this->returnValue(true));
     $oValidator->expects($this->never())->method('addErrors');
     oxRegistry::set('oxpsModulesConfigRequestValidator', $oValidator);
     // Configuration data transfer handler mock
     $oConfigTransfer = $this->getMock('oxpsModulesConfigTransfer', array('__call', 'backupToFile', 'setImportDataFromFile', 'importData', 'getImportErrors'));
     $oConfigTransfer->expects($this->once())->method('backupToFile')->with(array('modules' => array('my_module', 'good_extension'), 'settings' => array('version', 'extend', 'files'), 'action' => ''), 'full_backup')->will($this->returnValue(true));
     $oConfigTransfer->expects($this->once())->method('setImportDataFromFile')->with(array('error' => '', 'type' => 'application/octet-stream', 'tmp_name' => '/path/to/good_file.json'));
     $oConfigTransfer->expects($this->once())->method('importData')->with(array('modules' => array('my_module'), 'settings' => array('version', 'extend'), 'action' => 'import'))->will($this->returnValue(true));
     $oConfigTransfer->expects($this->never())->method('getImportErrors');
     oxTestModules::addModuleObject('oxpsModulesConfigTransfer', $oConfigTransfer);
     // Content model mock
     $oContent = $this->getMock('oxpsModulesConfigContent', array('__call', 'getModulesList', 'getSettingsList'));
     $oContent->expects($this->once())->method('getModulesList')->will($this->returnValue(array('my_module' => (object) array('version' => '1.0.0'), 'good_extension' => (object) array('version' => '0.2.5'))));
     $oContent->expects($this->once())->method('getSettingsList')->will($this->returnValue(array('version' => 'Versions', 'extend' => 'Extended classes', 'files' => 'New classes')));
     oxRegistry::set('oxpsModulesConfigContent', $oContent);
     // Module instance mock
     $oModule = $this->getMock('oxpsModulesConfigModule', array('__construct', '__call', 'clearTmp'));
     //$oModule->expects($this->once())->method('clearTmp');
     oxTestModules::addModuleObject('oxpsModulesConfigModule', $oModule);
     $this->SUT->actionSubmit();
     $this->assertSame('import', $this->SUT->getAction());
     $this->assertSame(array('OXPS_MODULESCONFIG_MSG_BACKUP_SUCCESS', 'OXPS_MODULESCONFIG_MSG_IMPORT_SUCCESS'), $this->SUT->getMessages());
 }
 public function testGenerateModule_allOptionsSet_generateModuleSkeletonWithAllFeatres()
 {
     // Config mock
     modConfig::setRequestParameter('modulegenerator_module_name', 'AllThings');
     modConfig::setRequestParameter('modulegenerator_extend_classes', 'oxbasket' . PHP_EOL . 'oxList');
     modConfig::setRequestParameter('modulegenerator_controllers', 'View' . PHP_EOL . 'Preview');
     modConfig::setRequestParameter('modulegenerator_models', 'Item' . PHP_EOL . 'Model');
     modConfig::setRequestParameter('modulegenerator_lists', 'Model');
     modConfig::setRequestParameter('modulegenerator_widgets', 'Bar' . PHP_EOL . 'Menu');
     modConfig::setRequestParameter('modulegenerator_blocks', '*****@*****.**' . PHP_EOL . '*****@*****.**');
     modConfig::setRequestParameter('modulegenerator_settings', array(0 => array('name' => 'Assoc', 'type' => 'aarr', 'value' => 'a => b' . PHP_EOL . '1 => VAL'), 1 => array('name' => 'Dropdown', 'type' => 'select', 'value' => 'A' . PHP_EOL . 'B' . PHP_EOL . 'C')));
     modConfig::setRequestParameter('modulegenerator_init_version', '1.0.1');
     modConfig::setRequestParameter('modulegenerator_fetch_unit_tests', false);
     //NOTE: This test takes very long.
     modConfig::setRequestParameter('modulegenerator_render_tasks', true);
     modConfig::setRequestParameter('modulegenerator_render_samples', true);
     $this->SUT->init();
     $this->SUT->generateModule();
     $aViewData = $this->SUT->getViewData();
     $this->assertArrayHasKey('sMessage', $aViewData);
     $this->assertSame('OXPS_MODULEGENERATOR_ADMIN_MODULE_MSG_GENERATION_SUCCESS', $aViewData['sMessage']);
     $this->assertArrayHasKey('blError', $aViewData);
     $this->assertFalse($aViewData['blError']);
     // Check module structure
     $this->assertFileExists($this->_getTestPath('modules/test/allthings/metadata.php'));
     // Check metadata content
     include $this->_getTestPath('modules/test/allthings/metadata.php');
     $this->assertTrue(isset($aModule));
     if (isset($aModule)) {
         $this->assertSame(array('id' => 'testallthings', 'title' => array('de' => '[TR - TEST All Things]', 'en' => 'TEST All Things'), 'description' => array('de' => '[TR - TEST All Things Module]', 'en' => 'TEST All Things Module'), 'thumbnail' => 'out/pictures/picture.png', 'version' => '1.0.1', 'author' => 'TEST', 'url' => 'www.example.com', 'email' => '*****@*****.**', 'extend' => array('oxbasket' => 'test/allthings/models/testallthingsoxbasket', 'oxlist' => 'test/allthings/core/testallthingsoxlist'), 'files' => array('testallthingsmodule' => 'test/allthings/core/testallthingsmodule.php', 'testallthingsbar' => 'test/allthings/components/widgets/testallthingsbar.php', 'testallthingsmenu' => 'test/allthings/components/widgets/testallthingsmenu.php', 'testallthingsview' => 'test/allthings/controllers/testallthingsview.php', 'testallthingspreview' => 'test/allthings/controllers/testallthingspreview.php', 'testallthingsitem' => 'test/allthings/models/testallthingsitem.php', 'testallthingsmodel' => 'test/allthings/models/testallthingsmodel.php', 'testallthingsmodellist' => 'test/allthings/models/testallthingsmodellist.php'), 'templates' => array('testallthingsview.tpl' => 'test/allthings/views/pages/testallthingsview.tpl', 'testallthingspreview.tpl' => 'test/allthings/views/pages/testallthingspreview.tpl', 'testallthingsbar.tpl' => 'test/allthings/views/widgets/testallthingsbar.tpl', 'testallthingsmenu.tpl' => 'test/allthings/views/widgets/testallthingsmenu.tpl'), 'blocks' => array(array('template' => 'page.tpl', 'block' => 'block', 'file' => 'views/blocks/testallthings_block.tpl'), array('template' => 'layout.tpl', 'block' => 'footer', 'file' => 'views/blocks/testallthings_footer.tpl')), 'settings' => array(array('group' => 'testAllThingsSettings', 'name' => 'testAllThingsAssoc', 'type' => 'aarr', 'value' => array('a' => 'b', '1' => 'VAL')), array('group' => 'testAllThingsSettings', 'name' => 'testAllThingsDropdown', 'type' => 'select', 'value' => 'A', 'constrains' => 'A|B|C')), 'events' => array('onActivate' => 'testAllThingsModule::onActivate', 'onDeactivate' => 'testAllThingsModule::onDeactivate')), $aModule);
     }
 }