dm-is-localizable 0.10.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,97 @@
1
+ require 'spec_helper'
2
+
3
+ describe "Language" do
4
+
5
+ describe "with valid attributes" do
6
+
7
+ it "should be valid" do
8
+ Language.new(:code => "en-US", :name => "English").should be_valid
9
+ end
10
+
11
+ it "should store unique locale string codes" do
12
+ Language.create(:code => "en-US", :name => "English").should_not be_new
13
+ Language.create(:code => "en-US", :name => "English").should be_new
14
+ end
15
+
16
+ end
17
+
18
+ describe "with incomplete attributes" do
19
+
20
+ before :each do
21
+ @l = Language.new
22
+ end
23
+
24
+ it "should require a code" do
25
+ @l.name = "English"
26
+ @l.should_not be_valid
27
+ @l.errors.size.should == 1
28
+ @l.errors.on(:code).should_not be_empty
29
+ end
30
+
31
+ it "should require a name" do
32
+ @l.code = "en-US"
33
+ @l.should_not be_valid
34
+ @l.errors.size.should == 1
35
+ @l.errors.on(:name).should_not be_empty
36
+ end
37
+
38
+ end
39
+
40
+ describe "with invalid attributes" do
41
+
42
+ it "should not accept invalid locale strings" do
43
+ Language.new(:code => 'foo', :name => "English").should_not be_valid
44
+ Language.new(:code => 'foo-bar', :name => "English").should_not be_valid
45
+ Language.new(:code => 'foo-BAR', :name => "English").should_not be_valid
46
+ Language.new(:code => 'FOO-bar', :name => "English").should_not be_valid
47
+ Language.new(:code => 'FOO-BAR', :name => "English").should_not be_valid
48
+ Language.new(:code => 'en-us', :name => "English").should_not be_valid
49
+ Language.new(:code => 'EN-us', :name => "English").should_not be_valid
50
+ Language.new(:code => 'EN-US', :name => "English").should_not be_valid
51
+ end
52
+
53
+ it "should only allow unique locale string codes" do
54
+ l1 = Language.create(:code => 'en-US', :name => "English")
55
+ l1.should_not be_new
56
+ l2 = Language.create(:code => 'en-US', :name => "English")
57
+ l2.should be_new
58
+ l2.errors.on(:code).should_not be_empty
59
+ l2.errors.size.should == 1
60
+ end
61
+
62
+ end
63
+
64
+ describe "the [](value) class method" do
65
+
66
+ before :each do
67
+ Language.create :code => 'en-US', :name => 'English'
68
+ Language.create :code => 'de-AT', :name => 'Deutsch'
69
+ end
70
+
71
+ describe "with nil as paramter" do
72
+
73
+ it "should return nil" do
74
+ Language[nil].should be_nil
75
+ end
76
+
77
+ end
78
+
79
+ describe "with an invalid (not present) language symbol as parameter" do
80
+
81
+ it "should return nil" do
82
+ Language[:it].should be_nil
83
+ end
84
+
85
+ end
86
+
87
+ describe "with a valid (present) language symbol as parameter" do
88
+
89
+ it "should return the correct language instance" do
90
+ Language[:en_US].should == Language.first(:code => 'en-US')
91
+ end
92
+
93
+ end
94
+
95
+ end
96
+
97
+ end
@@ -0,0 +1,27 @@
1
+ require 'spec_helper'
2
+
3
+ describe "the remixed translation resource" do
4
+
5
+ before :each do
6
+ @l = Language.create :code => 'en-US', :name => 'English'
7
+ @i = Item.create
8
+ @t1 = ItemTranslation.create(:item => @i, :language => @l)
9
+ end
10
+
11
+ it "should belong to a localizable resource" do
12
+ @t1.item.should == @i
13
+ end
14
+
15
+ it "should belong to a language" do
16
+ @t1.language.should == @l
17
+ end
18
+
19
+ it "should store unique languages for every resource to translate" do
20
+ @t2 = ItemTranslation.create(:item => @i, :language => @l)
21
+ @t1.should_not be_new
22
+ @t2.should be_new
23
+ @t2.errors.should_not be_empty
24
+ @t2.errors.size.should == 1
25
+ end
26
+
27
+ end
@@ -0,0 +1,18 @@
1
+ desc 'update changelog'
2
+ task :changelog do
3
+ File.open('CHANGELOG', 'w+') do |changelog|
4
+ `git log -z --abbrev-commit`.split("\0").each do |commit|
5
+ next if commit =~ /^Merge: \d*/
6
+ ref, author, time, _, title, _, message = commit.split("\n", 7)
7
+ ref = ref[/commit ([0-9a-f]+)/, 1]
8
+ author = author[/Author: (.*)/, 1].strip
9
+ time = Time.parse(time[/Date: (.*)/, 1]).utc
10
+ title.strip!
11
+
12
+ changelog.puts "[#{ref} | #{time}] #{author}"
13
+ changelog.puts '', " * #{title}"
14
+ changelog.puts '', message.rstrip if message
15
+ changelog.puts
16
+ end
17
+ end
18
+ end
data/tasks/install.rb ADDED
@@ -0,0 +1,9 @@
1
+ desc "Install gem using sudo"
2
+ task :install => :build do
3
+ puts '-' * 65
4
+ puts ' Put the following model definition in a file called language.rb'
5
+ puts '-' * 65
6
+ File.open(ROOT.join('lib/dm-is-localizable/storage/language.rb')).each do |line|
7
+ puts line
8
+ end
9
+ end
@@ -0,0 +1,4 @@
1
+ desc 'Removes trailing whitespace'
2
+ task :whitespace do
3
+ sh %{find . -name '*.rb' -exec sed -i '' 's/ *$//g' {} \\;}
4
+ end
metadata ADDED
@@ -0,0 +1,131 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: dm-is-localizable
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.10.1
5
+ platform: ruby
6
+ authors:
7
+ - Martin Gamsjaeger (snusnu)
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2010-02-04 00:00:00 +01:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: dm-core
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: 0.10.2
24
+ version:
25
+ - !ruby/object:Gem::Dependency
26
+ name: dm-is-remixable
27
+ type: :runtime
28
+ version_requirement:
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 0.10.2
34
+ version:
35
+ - !ruby/object:Gem::Dependency
36
+ name: dm-validations
37
+ type: :runtime
38
+ version_requirement:
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: 0.10.2
44
+ version:
45
+ - !ruby/object:Gem::Dependency
46
+ name: rspec
47
+ type: :development
48
+ version_requirement:
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ~>
52
+ - !ruby/object:Gem::Version
53
+ version: "1.3"
54
+ version:
55
+ description:
56
+ email: gamsnjaga@gmail.com
57
+ executables: []
58
+
59
+ extensions: []
60
+
61
+ extra_rdoc_files:
62
+ - LICENSE
63
+ - README.textile
64
+ - TODO
65
+ files:
66
+ - .document
67
+ - .gitignore
68
+ - CHANGELOG
69
+ - LICENSE
70
+ - README.textile
71
+ - Rakefile
72
+ - TODO
73
+ - VERSION
74
+ - dm-is-localizable.gemspec
75
+ - lib/dm-is-localizable.rb
76
+ - lib/dm-is-localizable/is/localizable.rb
77
+ - lib/dm-is-localizable/storage/language.rb
78
+ - lib/dm-is-localizable/storage/translation.rb
79
+ - spec/fixtures/item.rb
80
+ - spec/lib/rspec_tmbundle_support.rb
81
+ - spec/shared/shared_examples_spec.rb
82
+ - spec/spec.opts
83
+ - spec/spec_helper.rb
84
+ - spec/unit/auto_migrate_spec.rb
85
+ - spec/unit/class_level_api_spec.rb
86
+ - spec/unit/instance_level_api_spec.rb
87
+ - spec/unit/is_localizable_spec.rb
88
+ - spec/unit/language_spec.rb
89
+ - spec/unit/translation_spec.rb
90
+ - tasks/changelog.rb
91
+ - tasks/install.rb
92
+ - tasks/whitespace.rb
93
+ has_rdoc: true
94
+ homepage: http://github.com/snusnu/dm-is-localizable
95
+ licenses: []
96
+
97
+ post_install_message:
98
+ rdoc_options:
99
+ - --charset=UTF-8
100
+ require_paths:
101
+ - lib
102
+ required_ruby_version: !ruby/object:Gem::Requirement
103
+ requirements:
104
+ - - ">="
105
+ - !ruby/object:Gem::Version
106
+ version: "0"
107
+ version:
108
+ required_rubygems_version: !ruby/object:Gem::Requirement
109
+ requirements:
110
+ - - ">="
111
+ - !ruby/object:Gem::Version
112
+ version: "0"
113
+ version:
114
+ requirements: []
115
+
116
+ rubyforge_project:
117
+ rubygems_version: 1.3.5
118
+ signing_key:
119
+ specification_version: 3
120
+ summary: Datamapper support for localization of content in multilanguage applications
121
+ test_files:
122
+ - spec/fixtures/item.rb
123
+ - spec/lib/rspec_tmbundle_support.rb
124
+ - spec/shared/shared_examples_spec.rb
125
+ - spec/spec_helper.rb
126
+ - spec/unit/auto_migrate_spec.rb
127
+ - spec/unit/class_level_api_spec.rb
128
+ - spec/unit/instance_level_api_spec.rb
129
+ - spec/unit/is_localizable_spec.rb
130
+ - spec/unit/language_spec.rb
131
+ - spec/unit/translation_spec.rb