Changeset 1342

Show
Ignore:
Timestamp:
02/13/08 16:37:22 (1 year ago)
Author:
yuanying
Message:

all specs are implemented and passed.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • org.jalcedo.babel.database/trunk/models/babel/dictionary.rb

    r1337 r1342  
     1require 'active_support' 
    12 
    23module Babel 
    34  # Dictionary of any languages. 
    45  class Dictionary 
     6    @@default_dictionaries = {} 
     7    cattr_accessor :default_dictionaries 
     8     
    59    class << self 
    610      # find a dictionary for iso_code. 
    711      def find iso_code 
    8         return JapaneaseDictionary.new if iso_code == 'ja' 
    9         nil 
     12        Dictionary.default_dictionaries['ja'] ||= JapaneaseDictionary.new 
     13        return Dictionary.default_dictionaries[iso_code] 
    1014      end 
    1115    end 
  • org.jalcedo.babel.database/trunk/models/babel/register.rb

    r1341 r1342  
    44  class Register 
    55    def initialize project, version, username, language_iso 
    6        
     6      unless project && version && username && language_iso 
     7        raise ArgumentError, 'project or version or username or language code is nil.' 
     8      end 
     9      if File.count(:conditions => ['project_id = ? and version = ?', project, version]) == 0 then 
     10        raise ArgumentError, 'project_version is not exist.' 
     11      end 
     12      @project_id = project 
     13      @version = version 
     14      unless @user = User.find_by_username(username) 
     15        raise ArgumentError, 'user is not exist.' 
     16      end 
     17      unless @language = Language.find_by_iso_code(language_iso) 
     18        raise ArgumentError, 'language is not exist.' 
     19      end 
     20      unless @dictionary = Dictionary.find(language_iso) 
     21        raise ArgumentError, "Dictionary is not exist associate with #{language_iso}." 
     22      end 
    723    end 
    824     
    925    def register 
    10        
     26      String.transaction do 
     27        self.files.each do |file| 
     28          String.find_all_by_file_id(file.id).each do |string| 
     29            tr = Translation.new 
     30            tr.string_id = string.id 
     31            tr.language = @language 
     32            tr.value = @dictionary.lookup(string.value) 
     33            tr.user = @user 
     34            tr.save! 
     35          end 
     36        end 
     37      end 
    1138    end 
     39     
     40    def files 
     41      File.find(:all, :select => 'file_id', 
     42        :conditions => ['project_id = ? and version = ?', @project_id, @version] 
     43      ) 
     44    end 
     45     
    1246  end 
    1347end 
  • org.jalcedo.babel.database/trunk/models/babel/translation.rb

    r1341 r1342  
    88  belongs_to :user, :foreign_key => "userid" 
    99   
     10  def validate_on_create 
     11    return unless active_translation = Translation.find(:first, 
     12      :conditions => ['string_id and language_id and is_active', string_id, language_id, 1] 
     13    ) 
     14    if active_translation.value == value 
     15      errors.add(:value, 'Same value on active translation.') 
     16    end 
     17  end 
     18   
    1019  def before_create 
    1120    Translation.update_all('is_active = 0', "string_id = #{string_id} and language_id = #{language_id}") 
  • org.jalcedo.babel.database/trunk/spec/babel/register_spec.rb

    r1341 r1342  
    5656  before(:all) do 
    5757     @japanease = Babel::Language.find_by_iso_code('ja') 
     58     @register = Babel::Register.new('eclipse', '3.3', 'babel@eclipse.org', 'ja') 
    5859  end 
    5960   
     
    6263  end 
    6364   
     65  it 'should have files of Eclipse 3.3.' do 
     66    @register.should have_at_least(1).files 
     67  end 
     68   
     69  it 'files should have only file_id attribute.' do 
     70    @register.files.each do | file | 
     71      file.id.should_not be_nil 
     72      file[:name].should be_nil 
     73      file[:project_id].should be_nil 
     74      file[:version].should be_nil 
     75      file[:is_active].should be_nil 
     76    end 
     77  end 
     78   
    6479  it 'should increse Japanease translations on Eclipse 3.3 strings.' do 
    6580    lambda { 
    66       Babel::Register.new('eclipse', '3.3', 'babel@eclipse.org', 'ja').register 
     81      @register.register 
    6782    }.should change{  
    6883      Babel::Translation.count( 
     
    7590  it 'should not increase other translations.' do 
    7691    lambda { 
    77       Babel::Register.new('eclipse', '3.3', 'babel@eclipse.org', 'ja').register 
     92      @register.register 
    7893    }.should_not change{  
    7994      Babel::Translation.count( 
     
    86101  it "should not increase other project version's translations. " do 
    87102    lambda { 
    88       Babel::Register.new('eclipse', '3.3', 'babel@eclipse.org', 'ja').register 
     103      @register.register 
    89104    }.should_not change{  
    90105      Babel::Translation.count( 
  • org.jalcedo.babel.database/trunk/spec/helper/translation_helper.rb

    r1341 r1342  
     1require 'babel/language' 
     2require 'babel/user' 
     3require 'babel/translation' 
    14 
    25module TranslationHelper