1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
|
require 'spec_helper'
require 'active_record'
require 'fast_gettext/translation_repository/db'
require 'support/be_accessible_matcher'
FastGettext::TranslationRepository::Db.require_models
describe FastGettext::TranslationRepository::Db do
before :all do
ActiveRecord::Base.establish_connection(
:adapter => "sqlite3",
:database => ":memory:"
)
#create model table
ActiveRecord::Migration.verbose = false
ActiveRecord::Schema.define(:version => 1) do
create_table :translation_keys do |t|
t.string :key, :unique=>true, :null=>false
t.timestamps
end
create_table :translation_texts do |t|
t.string :text, :locale
t.integer :translation_key_id, :null=>false
t.timestamps
end
end
end
before do
TranslationKey.delete_all
TranslationText.delete_all
FastGettext.locale = 'de'
@rep = FastGettext::TranslationRepository::Db.new('x', :model=>TranslationKey)
end
def create_translation(key, text)
translation_key = TranslationKey.create!(:key => key)
TranslationText.create!(:translation_key_id => translation_key.id, :text => text, :locale => "de")
end
it "reads locales from the db" do
locales = ['de','en','es']
locales.reverse.each do |locale|
TranslationText.create!(:translation_key_id=>1, :text=>'asdasd', :locale=>locale)
end
@rep.available_locales.should == locales
end
it "has no pluralisation_rule by default" do
@rep.pluralisation_rule.should == nil
end
it "cannot translate when no models are present" do
@rep['car'].should == nil
end
it "can translate" do
create_translation 'car', 'Auto'
@rep['car'].should == 'Auto'
end
it "cannot pluralize when no model is present" do
@rep.plural('Axis','Axis').should == []
end
it "can pluralize" do
create_translation 'Axis||||Axis', 'Achse||||Achsen'
@rep.plural('Axis','Axis').should == ['Achse','Achsen']
end
it "can ignore newline format" do
create_translation "good\r\nmorning", "guten\r\nMorgen"
@rep["good\nmorning"].should == "guten\r\nMorgen"
end
it "removes texts when key is removed" do
t = create_translation("a", "b")
lambda{
lambda{
t.translation_key.destroy
}.should change{ TranslationText.count }.by(-1)
}.should change{ TranslationKey.count }.by(-1)
end
it "expires the cache when updated" do
FastGettext.should_receive(:expire_cache_for).with('car')
translation_text = create_translation 'car', 'Auto'
translation_text.update_attributes :text => 'Autobot'
end
end
|