OSDN Git Service

- fixed bug "ethna add-template" command ignored Ethna_Controller#getTemplatedir...
[ethna/ethna.git] / test / Plugin / Handle / Ethna_Plugin_Handle_AddTemplate_Test.php
1 <?php
2 // vim: foldmethod=marker
3 /**
4  *  Ethna_Plugin_Handle_AddTemplate_Test.php
5  *
6  *  @author     Yoshinari Takaoka <takaoka@beatcraft.com>
7  *  @version    $Id$
8  */
9
10 require_once ETHNA_BASE . '/test/Ethna_MockProject.php';
11
12 //{{{  Ethna_Plugin_Handle_AddTemplate_Test
13 /**
14  *  Test Case For Ethna_Plugin_Handle_AddTemplate_Test
15  *
16  *  @access public
17  */
18 class Ethna_Plugin_Handle_AddTemplate_Test extends Ethna_UnitTestBase 
19 {
20     var $proj;
21
22     function setUp()
23     {
24         $this->proj = new Ethna_MockProject();
25         $r = $this->proj->create();
26         if (Ethna::isError($r)) {
27             $this->fail($r->getMessage());    
28         }
29     }
30
31     function tearDown()
32     {
33         $this->proj->delete();
34     }
35
36     function test_template_dir_exists()
37     {
38         $ctl =& $this->proj->getController(); 
39
40         //    default locale 
41         $r = $this->proj->runCmd('add-template', array('test'));
42         $template_dir = $ctl->getTemplatedir();
43         $this->assertTrue(file_exists($template_dir));
44
45         //    new locale 
46         $r = $this->proj->runCmd('add-template', array('-l', 'en_US', 'test'));
47         $template_dir = $ctl->getTemplatedir();
48         $this->assertTrue(file_exists($template_dir));
49     }
50
51     function test_cmd_option()
52     {
53         //    unrecognized option
54         $r = $this->proj->runCmd('add-template', array('-k'));
55         $this->assertTrue(Ethna::isError($r));
56         $this->assertEqual('unrecognized option -k', $r->getMessage());
57
58         //    skel requires an argument
59         $r = $this->proj->runCmd('add-template', array('-s'));
60         $this->assertTrue(Ethna::isError($r));
61         $this->assertEqual('option -s requires an argument', $r->getMessage());
62
63         $r = $this->proj->runCmd('add-template', array('--skelfile'));
64         $this->assertTrue(Ethna::isError($r));
65         $this->assertEqual('option --skelfile requires an argument', $r->getMessage());
66
67         //    locale requires an argument
68         $r = $this->proj->runCmd('add-template', array('-l'));
69         $this->assertTrue(Ethna::isError($r));
70         $this->assertEqual('option -l requires an argument', $r->getMessage());
71
72         $r = $this->proj->runCmd('add-template', array('--locale'));
73         $this->assertTrue(Ethna::isError($r));
74         $this->assertEqual('option --locale requires an argument', $r->getMessage());
75
76         //    template name isn't set
77         $r = $this->proj->runCmd('add-template', array());
78         $this->assertTrue(Ethna::isError($r));
79         $this->assertEqual('template name isn\'t set.', $r->getMessage());
80
81         //    invalid locale
82         $r = $this->proj->runCmd('add-template', array('-l', 'invalid::locale', 'test'));
83         $this->assertTrue(Ethna::isError($r));
84         $this->assertEqual('You specified locale, but invalid : invalid::locale', $r->getMessage());
85
86         //    normal command exexute
87         $r = $this->proj->runCmd('add-template', array('-l', 'ja_JP', 'test'));
88         $this->assertFalse(Ethna::isError($r));
89     }
90 }
91 // }}}
92
93 ?>