forked from berk/tr8n
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
fixed rules and translation key specs
- Loading branch information
Showing
7 changed files
with
414 additions
and
41 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,141 @@ | ||
require File.expand_path('../../spec_helper', File.dirname(__FILE__)) | ||
|
||
describe Tr8n::GenderRule do | ||
|
||
before :all do | ||
@lang = Tr8n::Language.create(:locale => "elb", :english_name => "Elbonian") | ||
end | ||
|
||
after :all do | ||
@lang.destroy | ||
end | ||
|
||
describe 'class methods' do | ||
it 'should respec configuration settings' do | ||
Tr8n::Config.stub!(:rules_engine).and_return({ | ||
:gender_rule => { | ||
token_suffixes: ["user", "actor", "target"], | ||
object_method: "gender", | ||
method_values: { | ||
female: "f", | ||
male: "m", | ||
neutral: "n", | ||
unknown: "u" | ||
} | ||
} | ||
}) | ||
|
||
Tr8n::GenderRule.dependency.should eq("gender") | ||
Tr8n::GenderRule.suffixes.should eq(["user", "actor", "target"]) | ||
|
||
Tr8n::GenderRule.gender_object_value_for(:female).should eq("f") | ||
Tr8n::GenderRule.gender_object_value_for(:male).should eq("m") | ||
Tr8n::GenderRule.gender_object_value_for(:neutral).should eq("n") | ||
Tr8n::GenderRule.gender_object_value_for(:unknown).should eq("u") | ||
|
||
obj = mock("object_with_gender") | ||
obj.should_receive(:gender).and_return("m") | ||
Tr8n::GenderRule.gender_token_value(obj).should eq("m") | ||
end | ||
|
||
describe 'default transform without token value' do | ||
it 'should always use a musculine form' do | ||
Tr8n::GenderRule.default_transform("he").should eq("he") | ||
Tr8n::GenderRule.default_transform("he", "she").should eq("he") | ||
Tr8n::GenderRule.default_transform("his", "her").should eq("his") | ||
end | ||
end | ||
|
||
describe 'transform with a token value' do | ||
it 'should return the form based on the token value' do | ||
male = mock("male") | ||
male.stub!(:gender).and_return("male") | ||
female = mock("male") | ||
female.stub!(:gender).and_return("female") | ||
unknwon = mock("unknwon") | ||
unknwon.stub!(:gender).and_return("unknwon") | ||
|
||
Tr8n::GenderRule.transform(male, "registered on").should eq("registered on") | ||
Tr8n::GenderRule.transform(male, "he", "she").should eq("he") | ||
Tr8n::GenderRule.transform(male, "his", "her").should eq("his") | ||
Tr8n::GenderRule.transform(male, "he", "she", "he/she").should eq("he") | ||
|
||
Tr8n::GenderRule.transform(female, "registered on").should eq("registered on") | ||
Tr8n::GenderRule.transform(female, "he", "she").should eq("she") | ||
Tr8n::GenderRule.transform(female, "his", "her").should eq("her") | ||
Tr8n::GenderRule.transform(female, "he", "she", "he/she").should eq("she") | ||
|
||
Tr8n::GenderRule.transform(unknwon, "registered on").should eq("registered on") | ||
Tr8n::GenderRule.transform(unknwon, "he", "she").should eq("he/she") | ||
Tr8n::GenderRule.transform(unknwon, "his", "her").should eq("his/her") | ||
Tr8n::GenderRule.transform(unknwon, "he", "she", "he/she").should eq("he/she") | ||
end | ||
end | ||
end | ||
|
||
describe 'instance methods' do | ||
describe 'evaluate rule' do | ||
it 'should return results based on gender' do | ||
male = mock("male") | ||
male.stub!(:gender).and_return("male") | ||
female = mock("male") | ||
female.stub!(:gender).and_return("female") | ||
unknwon = mock("unknwon") | ||
unknwon.stub!(:gender).and_return("unknwon") | ||
|
||
definition = {operator: "is", value: "male"} | ||
rule = Tr8n::GenderRule.create(:language => @lang, :definition => definition) | ||
rule.evaluate(male).should be_true | ||
rule.evaluate(female).should be_false | ||
rule.evaluate(unknwon).should be_false | ||
|
||
definition = {operator: "is_not", value: "male"} | ||
rule = Tr8n::GenderRule.create(:language => @lang, :definition => definition) | ||
rule.evaluate(male).should be_false | ||
rule.evaluate(female).should be_true | ||
rule.evaluate(unknwon).should be_true | ||
|
||
definition = {operator: "is", value: "female"} | ||
rule = Tr8n::GenderRule.create(:language => @lang, :definition => definition) | ||
rule.evaluate(male).should be_false | ||
rule.evaluate(female).should be_true | ||
rule.evaluate(unknwon).should be_false | ||
|
||
definition = {operator: "is_not", value: "female"} | ||
rule = Tr8n::GenderRule.create(:language => @lang, :definition => definition) | ||
rule.evaluate(male).should be_true | ||
rule.evaluate(female).should be_false | ||
rule.evaluate(unknwon).should be_true | ||
end | ||
end | ||
|
||
describe 'hashing a rule' do | ||
it 'should produce a correct hash' do | ||
definition = {operator: "is", value: "male"} | ||
rule = Tr8n::GenderRule.create(:language => @lang, :definition => definition) | ||
rule.to_hash.should eq({:type=>"gender", :operator=>"is", :value=>"male"}) | ||
end | ||
end | ||
|
||
describe 'describing a rule' do | ||
it 'should produce a correct description' do | ||
definition = {operator: "is", value: "male"} | ||
rule = Tr8n::GenderRule.create(:language => @lang, :definition => definition) | ||
rule.description.should eq("is a male") | ||
|
||
definition = {operator: "is", value: "unknown"} | ||
rule = Tr8n::GenderRule.create(:language => @lang, :definition => definition) | ||
rule.description.should eq("has an unknown gender") | ||
|
||
definition = {operator: "is_not", value: "female"} | ||
rule = Tr8n::GenderRule.create(:language => @lang, :definition => definition) | ||
rule.description.should eq("is not a female") | ||
|
||
definition = {operator: "is_not", value: "unknown"} | ||
rule = Tr8n::GenderRule.create(:language => @lang, :definition => definition) | ||
rule.description.should eq("does not have an unknown gender") | ||
end | ||
end | ||
|
||
end | ||
|
||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.