diff --git a/code/tests/CMSWorkflowSiteConfigDecoratorTest.php b/code/tests/CMSWorkflowSiteConfigDecoratorTest.php new file mode 100644 index 0000000..df47984 --- /dev/null +++ b/code/tests/CMSWorkflowSiteConfigDecoratorTest.php @@ -0,0 +1,124 @@ +workflowConfigPath = dirname(__FILE__) . "/CMSWorkflow_Config.cfg"; + CMSWorkflowSiteConfigDecorator::$config_file_path = $this->workflowConfigPath; + } + + function testGetConfigFile() { + $file = CMSWorkflowSiteConfigDecorator::get_config_file(); + $content = $this->readFile($this->workflowConfigPath); + + // the size and the content of the initial config file are the same CMSWorkflowSiteConfigDecorator::$default_config's + $workflowDefaultConfig = CMSWorkflowSiteConfigDecorator::$default_config; + $this->assertEquals($workflowDefaultConfig, $content); + + fclose($file); + } + + function testGetConfigContent() { + $content = CMSWorkflowSiteConfigDecorator::get_config_content(); + $content2 = $this->readFile($this->workflowConfigPath); + + $this->assertEquals($content, $content2); + } + + function testWriteConfigFile() { + CMSWorkflowSiteConfigDecorator::write_config_file("New workflow config"); + $content = $this->readFile($this->workflowConfigPath); + $this->assertEquals("New workflow config", $content); + + CMSWorkflowSiteConfigDecorator::write_config_file("New workflow config two"); + $content = $this->readFile($this->workflowConfigPath); + $this->assertEquals("New workflow config two", $content); + + CMSWorkflowSiteConfigDecorator::write_config_file("Config three"); + $content = $this->readFile($this->workflowConfigPath); + $this->assertEquals("Config three", $content); + } + + function testGetConfig() { + $content = "STEP = twostep\nTESTCONFIG = test"; + + $value = CMSWorkflowSiteConfigDecorator::get_config($content, "STEP"); + $this->assertEquals("twostep", $value); + + $value = CMSWorkflowSiteConfigDecorator::get_config($content, "TESTCONFIG"); + $this->assertEquals("test", $value); + + $value = CMSWorkflowSiteConfigDecorator::get_config($content, "NOTEXISTING"); + $this->assertEquals("", $value); + } + + function testWriteConfig() { + $content = "STEP = twostep\nTESTCONFIG = test"; + + $newContent = CMSWorkflowSiteConfigDecorator::set_config($content, "STEP", 'threestep'); + $this->assertEquals("STEP = threestep\nTESTCONFIG = test", $newContent); + + $newContent = CMSWorkflowSiteConfigDecorator::set_config($content, "TESTCONFIG", ''); + $this->assertEquals("STEP = twostep\nTESTCONFIG = ", $newContent); + + $newContent = CMSWorkflowSiteConfigDecorator::set_config($content, "NEWCONFIG", 'newstuff'); + $this->assertEquals("STEP = twostep\nTESTCONFIG = test\nNEWCONFIG = newstuff", $newContent); + } + + function testGetStepConfig() { + $value = CMSWorkflowSiteConfigDecorator::get_step_config(); + $this->assertEquals("twostep", $value); + } + + function testSetStepConfig() { + CMSWorkflowSiteConfigDecorator::set_step_config("threestep"); + $content = $this->readFile($this->workflowConfigPath); + $this->assertEquals("STEP = threestep", $content); + + CMSWorkflowSiteConfigDecorator::set_step_config(""); + $content = $this->readFile($this->workflowConfigPath); + $this->assertEquals("STEP = ", $content); + + CMSWorkflowSiteConfigDecorator::set_step_config("twostep"); + $content = $this->readFile($this->workflowConfigPath); + $this->assertEquals("STEP = twostep", $content); + } + + function tearDown() { + // delete the config file before begin the test + $path = CMSWorkflowSiteConfigDecorator::get_config_file_path(); + if(file_exists($path)) { + unlink(CMSWorkflowSiteConfigDecorator::get_config_file_path()); + } + + // Remove custom CMSWorkflow config file path + CMSWorkflowSiteConfigDecorator::$config_file_path = ''; + } + + /** + * Read the whole content of a (text) file. + * Having this method so that we can avoid relying on CMSWorkflowSiteConfigDecorator::get_config_content() + * @return string - content of the file + */ + private function readFile($path) { + // create if not existing + if(!file_exists($path)) { + return array(null, null); + } + + $file = fopen($path, 'r'); + + $content = null; + while(!feof($file)) { + $content .= fread($file, 10); + } + + fclose($file); + + return $content; + } + + +} \ No newline at end of file