Changeset 318

Show
Ignore:
Timestamp:
08/23/07 13:23:14 (1 year ago)
Author:
bermiferrer
Message:

Implementing AkInflector::is_singular and AkInflector::is_plural.
Validating that if ./script/generate model Posts warns about using a plural for the model.
Simplifying generated model tests.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/lib/AkInflector.php

    r285 r318  
    507507    } 
    508508 
     509    function is_singular($singular) 
     510    { 
     511        return AkInflector::singularize(AkInflector::pluralize($singular)) == $singular; 
     512    } 
     513     
     514    function is_plural($plural) 
     515    { 
     516        return AkInflector::pluralize(AkInflector::singularize($plural)) == $plural; 
     517    } 
    509518 
    510519} 
  • trunk/script/generators/model/model_generator.php

    r266 r318  
    3030        $this->installer_path = 'app'.DS.'installers'.DS.$this->underscored_model_name.'_installer.php'; 
    3131    } 
    32      
     32 
    3333    function hasCollisions() 
    3434    { 
    3535        $this->_preloadPaths(); 
    36          
     36 
    3737        $this->collisions = array(); 
     38 
     39        if(AkInflector::is_plural($this->class_name)){ 
     40            $this->collisions[] = Ak::t('%class_name should be a singular noun',array('%class_name'=>$this->class_name)); 
     41        } 
    3842 
    3943        $files = array( 
     
    5559    { 
    5660        $this->_preloadPaths(); 
    57          
     61 
    5862        $this->class_name = AkInflector::camelize($this->class_name); 
    5963 
     
    6872            $this->save($file_path, $this->render($template)); 
    6973        } 
    70          
     74 
    7175        $installer_path = AK_APP_DIR.DS.'installers'.DS.$this->underscored_model_name.'_installer.php'; 
    7276        if(!file_exists($installer_path)){ 
    7377            $this->save($installer_path, $this->render('installer')); 
    7478        } 
    75          
     79 
    7680        $unit_test_runner = AK_TEST_DIR.DS.'unit.php'; 
    7781        if(!file_exists($unit_test_runner)){ 
    7882            Ak::file_put_contents($unit_test_runner, file_get_contents(AK_FRAMEWORK_DIR.DS.'test'.DS.'app.php')); 
    7983        } 
    80          
     84 
    8185    } 
    82      
     86 
    8387    function cast() 
    8488    { 
  • trunk/script/generators/scaffold/templates/model_unit_test.tpl

    r217 r318  
    33defined('AK_TEST_DATABASE_ON') ? null : define('AK_TEST_DATABASE_ON', true); 
    44require_once(dirname(__FILE__).'/../../../fixtures/config/config.php'); 
    5 require_once(AK_LIB_DIR.DS.'AkActiveRecord.php'); 
    6 require_once(AK_APP_DIR.DS.'shared_model.php'); 
    7 require_once(AK_MODELS_DIR.DS.'<?php  echo $singular_name?>.php'); 
     5 
     6// You can execute this test by running  
     7// ./script/test app/models/<?php  echo AkInflector::underscore($class_name)?>.php 
    88 
    99class <?php  echo $model_name?>Test extends  AkUnitTest 
     
    1111    function test_setup() 
    1212    { 
    13         require_once(AK_APP_DIR.DS.'installers'.DS.'<?php  echo $singular_name?>_installer.php'); 
    14         $installer = new <?php  echo $model_name?>Installer(); 
    15         $installer->uninstall(); 
    16         $installer->install();     
     13        $this->installAndIncludeModels('<?php  echo $model_name?>'); 
    1714    } 
    18      
     15 
    1916    function test_<?php  echo $model_name?>() 
    2017    { 
     
    2320} 
    2421 
    25  
    2622ak_test('<?php  echo $model_name?>Test',true); 
    2723 
  • trunk/test/unit/lib/AkInflector.php

    r282 r318  
    285285        $this->assertEqual(AkInflector::singularize('camiones'), 'camión'); 
    286286    } 
     287     
     288    function test_should_detect_singulars() 
     289    { 
     290        foreach (array_keys($this->SingularToPlural) as $singular){ 
     291            $this->assertTrue(AkInflector::is_singular($singular), $singular.' is not detected as singular'); 
     292        } 
     293    } 
     294     
     295    function test_should_detect_plurals() 
     296    { 
     297        foreach (array_values($this->SingularToPlural) as $plural){ 
     298            $this->assertTrue(AkInflector::is_plural($plural), $plural.' is not detected as plural'); 
     299        } 
     300    } 
    287301 
    288302}