trendi18n 0.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. data/LICENSE +22 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.rdoc +19 -0
  4. data/Rakefile +54 -0
  5. data/VERSION +1 -0
  6. data/app/models/translation.rb +125 -0
  7. data/generators/trendi18n/templates/migrations/create_translations.rb +22 -0
  8. data/generators/trendi18n/trendi18n_generator.rb +8 -0
  9. data/lib/commands.rb +39 -0
  10. data/lib/file.rb +8 -0
  11. data/lib/trendi18n.rb +78 -0
  12. data/rails/init.rb +5 -0
  13. data/spec/test_application/README +243 -0
  14. data/spec/test_application/Rakefile +10 -0
  15. data/spec/test_application/app/controllers/application_controller.rb +10 -0
  16. data/spec/test_application/app/controllers/translations_controller.rb +41 -0
  17. data/spec/test_application/app/views/layouts/application.rhtml +15 -0
  18. data/spec/test_application/app/views/translations/_form.html.erb +11 -0
  19. data/spec/test_application/app/views/translations/edit.html.erb +6 -0
  20. data/spec/test_application/app/views/translations/index.html.erb +32 -0
  21. data/spec/test_application/app/views/translations/new.html.erb +7 -0
  22. data/spec/test_application/app/views/translations/show.html.erb +5 -0
  23. data/spec/test_application/config/boot.rb +110 -0
  24. data/spec/test_application/config/database.yml +25 -0
  25. data/spec/test_application/config/environment.rb +44 -0
  26. data/spec/test_application/config/environments/cucumber.rb +28 -0
  27. data/spec/test_application/config/environments/development.rb +17 -0
  28. data/spec/test_application/config/environments/production.rb +28 -0
  29. data/spec/test_application/config/environments/test.rb +34 -0
  30. data/spec/test_application/config/initializers/new_rails_defaults.rb +21 -0
  31. data/spec/test_application/config/initializers/session_store.rb +15 -0
  32. data/spec/test_application/config/locales/en.yml +5 -0
  33. data/spec/test_application/config/routes.rb +46 -0
  34. data/spec/test_application/db/migrate/20091208195455_create_translations.rb +22 -0
  35. data/spec/test_application/db/schema.rb +31 -0
  36. data/spec/test_application/db/seeds.rb +7 -0
  37. data/spec/test_application/features/dynamic_translation.feature +5 -0
  38. data/spec/test_application/features/managing_translations.feature +62 -0
  39. data/spec/test_application/features/static_translation.feature +13 -0
  40. data/spec/test_application/features/step_definitions/translations_steps.rb +12 -0
  41. data/spec/test_application/features/step_definitions/webrat_steps.rb +189 -0
  42. data/spec/test_application/features/support/env.rb +47 -0
  43. data/spec/test_application/features/support/paths.rb +42 -0
  44. data/spec/test_application/features/support/version_check.rb +31 -0
  45. data/spec/test_application/lib/tasks/cucumber.rake +46 -0
  46. data/spec/test_application/lib/tasks/rspec.rake +146 -0
  47. data/spec/test_application/public/404.html +30 -0
  48. data/spec/test_application/public/422.html +30 -0
  49. data/spec/test_application/public/500.html +30 -0
  50. data/spec/test_application/public/favicon.ico +0 -0
  51. data/spec/test_application/public/robots.txt +5 -0
  52. data/spec/test_application/script/about +4 -0
  53. data/spec/test_application/script/autospec +6 -0
  54. data/spec/test_application/script/console +3 -0
  55. data/spec/test_application/script/cucumber +17 -0
  56. data/spec/test_application/script/dbconsole +3 -0
  57. data/spec/test_application/script/destroy +3 -0
  58. data/spec/test_application/script/generate +3 -0
  59. data/spec/test_application/script/performance/benchmarker +3 -0
  60. data/spec/test_application/script/performance/profiler +3 -0
  61. data/spec/test_application/script/plugin +3 -0
  62. data/spec/test_application/script/runner +3 -0
  63. data/spec/test_application/script/server +3 -0
  64. data/spec/test_application/script/spec +10 -0
  65. data/spec/test_application/spec/backend_spec.rb +158 -0
  66. data/spec/test_application/spec/models/translation_spec.rb +109 -0
  67. data/spec/test_application/spec/rcov.opts +3 -0
  68. data/spec/test_application/spec/spec.opts +4 -0
  69. data/spec/test_application/spec/spec_helper.rb +54 -0
  70. metadata +156 -0
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require File.expand_path('../../config/boot', __FILE__)
3
+ require 'commands/generate'
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require File.expand_path('../../../config/boot', __FILE__)
3
+ require 'commands/performance/benchmarker'
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require File.expand_path('../../../config/boot', __FILE__)
3
+ require 'commands/performance/profiler'
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require File.expand_path('../../config/boot', __FILE__)
3
+ require 'commands/plugin'
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require File.expand_path('../../config/boot', __FILE__)
3
+ require 'commands/runner'
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require File.expand_path('../../config/boot', __FILE__)
3
+ require 'commands/server'
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env ruby
2
+ if ARGV.any? {|arg| %w[--drb -X --generate-options -G --help -h --version -v].include?(arg)}
3
+ require 'rubygems' unless ENV['NO_RUBYGEMS']
4
+ else
5
+ gem 'test-unit', '1.2.3' if RUBY_VERSION.to_f >= 1.9
6
+ ENV["RAILS_ENV"] ||= 'test'
7
+ require File.expand_path(File.dirname(__FILE__) + "/../config/environment") unless defined?(RAILS_ROOT)
8
+ end
9
+ require 'spec/autorun'
10
+ exit ::Spec::Runner::CommandLine.run
@@ -0,0 +1,158 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+
3
+ I18n.backend = Trendi18n::Backend::Trendi18n.new
4
+
5
+
6
+
7
+ describe Trendi18n::Backend::Trendi18n do
8
+
9
+ before do
10
+ I18n.backend.is_a?(Trendi18n::Backend::Trendi18n).should == true
11
+ @data = [{
12
+ :key => "key1", :translation => "Translation of key1"
13
+ }, {
14
+ :key => "key2", :scope => "scope1.subscope1", :translation => "Translation of key2"
15
+ }, {
16
+ :key => "key3", :scope => "scope1.subscope2", :translation => "Translation of key3"
17
+ }]
18
+ for attributes in @data do
19
+ Translation.create!(attributes)
20
+ end
21
+ end
22
+
23
+
24
+ describe "caching" do
25
+ before(:each) do
26
+ I18n.reload!
27
+ @translation = Translation.create(:locale => "en",:key => "test_key", :translation => "test_translations")
28
+ end
29
+
30
+ it "should lookup the key in db when the firts time it is used" do
31
+ Translation.should_receive(:lookup).once.and_return(@translation)
32
+ I18n.t("test_key")
33
+ end
34
+
35
+ it "should use cache when the key is used more then one time" do
36
+ Translation.should_receive(:lookup).once.and_return(@translation)
37
+ 2.times { I18n.t("test_key")}
38
+ end
39
+
40
+ it "should clear cache after backend reload" do
41
+ Translation.should_receive(:lookup).twice.and_return(@translation)
42
+ I18n.t("test_key")
43
+ I18n.reload!
44
+ I18n.t("test_key")
45
+ end
46
+
47
+ describe "up-to-date status" do
48
+
49
+ it "should be up-to-date when there is no translations" do
50
+ Translation.destroy_all
51
+ I18n.backend.up_to_date?.should == true
52
+ end
53
+
54
+ it "should be up-to-date when there is new translations but nothing was read yet" do
55
+ # translation is created in before block
56
+ I18n.backend.up_to_date?.should == true
57
+ end
58
+
59
+ it "should be up-to-date after update existing translation but before read it" do
60
+ @translation.translation = "New translation"
61
+ @translation.save
62
+ I18n.backend.up_to_date?.should == true
63
+ end
64
+
65
+ it "should be up-to-date after beckend reload" do
66
+ I18n.reload!
67
+ I18n.backend.up_to_date?.should == true
68
+ end
69
+
70
+ it "should be up-to-date when we read existing translation after changes in db" do
71
+ Translation.create(:locale => "en", :key => "new_key", :translation => "new translation")
72
+ I18n.t("test_key")
73
+ I18n.backend.up_to_date?.should == true
74
+ end
75
+
76
+ it "should still be up-to-date when we was looking for new translation" do
77
+ I18n.t("non_existing_key")
78
+ I18n.backend.up_to_date? == true
79
+ end
80
+
81
+ it "should be up-to-date even translation is updated after use" do
82
+ I18n.t("test_key")
83
+ @translation.update_attribute("created_at", 2.minutes.ago)
84
+ I18n.backend.up_to_date?.should == true
85
+ end
86
+ end
87
+ end
88
+
89
+ describe "standard i18n functionality" do
90
+
91
+ it "should find translation without scopes" do
92
+ I18n.t(:key1).should == "Translation of key1"
93
+ end
94
+
95
+ describe "if there is no translation" do
96
+
97
+ it "should return a default string value" do
98
+ I18n.t(:non_existing_key, :default => "This key not exists").should == "This key not exists"
99
+ end
100
+
101
+ it "should return default translation given as symbol"
102
+
103
+ it "should return default translation from string in array"
104
+
105
+ it "should return default translation from symbol in array"
106
+
107
+ end
108
+
109
+ describe "while looking for translations with scopes" do
110
+
111
+ it "should look up translation with scope (as a string) in options" do
112
+ I18n.t(:key2, :scope => "scope1.subscope1").should == "Translation of key2"
113
+ end
114
+
115
+ it "should look up translation with scope (as a array of symbols) in options" do
116
+ I18n.t(:key2, :scope => [:scope1, :subscope1]).should == "Translation of key2"
117
+ end
118
+
119
+ it "should look up translation with scope (as a symbol) in options" do
120
+ I18n.t(:key2, :scope => "scope1.subscope1".to_sym).should == "Translation of key2"
121
+ end
122
+
123
+ it "should look up translation with scope info in key (as a string)" do
124
+ I18n.t("scope1.subscope1.key2").should == "Translation of key2"
125
+ end
126
+
127
+ it "should look up translation with scope info in key (as a symbol)" do
128
+ I18n.t("scope1.subscope1.key2".to_sym).should == "Translation of key2"
129
+ end
130
+
131
+ it "should look up translation with scope info in key and scope options" do
132
+ I18n.t("subscope1.key2".to_sym, :scope => "scope1").should == "Translation of key2"
133
+ end
134
+
135
+ end
136
+
137
+ describe "multi-translations" do
138
+
139
+ it "should look up many translations at once" do
140
+ I18n.t([:key1, "scope1.subscope1.key2"]).should == ["Translation of key1", "Translation of key2"]
141
+ end
142
+
143
+ it "should look up many translations at once, with scope option" do
144
+ I18n.t(["subscope1.key2", "subscope2.key3"], :scope => :scope1).should == ["Translation of key2", "Translation of key3"]
145
+ end
146
+
147
+ end
148
+
149
+ describe "while scope given as a key" do
150
+
151
+ it "should translate to hash of translations"
152
+
153
+ end
154
+
155
+
156
+ end
157
+
158
+ end
@@ -0,0 +1,109 @@
1
+ require File.dirname(__FILE__) + '/../spec_helper'
2
+
3
+ describe Translation do
4
+ before(:all) do
5
+ @valid_attributes = {
6
+ :locale => "en",
7
+ :key => "test",
8
+ :scope =>"TestScope",
9
+ :default => "test",
10
+ :translation => "test_transation",
11
+ :zero => "non test",
12
+ :one => "one test",
13
+ :few => "few test",
14
+ :many => "many test"
15
+ }
16
+ end
17
+
18
+
19
+ describe "state assigment" do
20
+
21
+ before do
22
+ @state_test_attributes = [
23
+ {:locale => "en",
24
+ :key => "state_test1",
25
+ :default => "default1"
26
+ },
27
+ {:locale => "en",
28
+ :key => "state_test2",
29
+ :translation => "translation2"
30
+ },
31
+ {:key => "status_test3 {{count}}",
32
+ :translation => "translation3",
33
+ :one => "one_translation3"
34
+ },
35
+ { :key => "state_test4 {{count}}",
36
+ :translation => "translation4",
37
+ :one => "one_translation4",
38
+ :zero => "zero_translation4",
39
+ :many => "many_translation4"
40
+ }
41
+ ]
42
+
43
+ @state_test_results = ["new", "finished", "unfinished", "finished"]
44
+ end
45
+
46
+ it "should assign state to new created model" do
47
+ for data in @state_test_attributes do
48
+ model = Translation.new(data)
49
+ model.save!
50
+ model.state.should == @state_test_results[@state_test_attributes.index(data)]
51
+ end
52
+ end
53
+
54
+ end
55
+
56
+ it "should lookup for new translations" do
57
+ translation_new = Translation.lookup("en", "key", nil, "scope")
58
+ translation_new.default.should == "key"
59
+ translation_exists = Translation.lookup("en", "key", nil, "scope")
60
+ translation_exists.should == translation_new
61
+ end
62
+
63
+ it "should be with count" do
64
+ Translation.new(:key => "I have {{count}} plural forms").with_count?.should_not == nil
65
+ end
66
+
67
+ it "should not be with count" do
68
+ Translation.new(:key => "I do not have count").with_count?.should == nil
69
+ end
70
+
71
+ it "should create translation with correct scope when translation is missing on lookup" do
72
+ Translation.lookup(:en, :some_key, nil, [:scope, :subscope])
73
+ Translation.find_by_key_and_scope("some_key", "scope.subscope").should_not == nil
74
+ end
75
+
76
+ it "should not save translations with not properly attributes" do
77
+ Translation.new(@valid_attributes.merge(:key => nil)).save.should == false
78
+ Translation.new(@valid_attributes.merge(:locale => "p")).save.should == false
79
+ Translation.new(@valid_attributes.merge(:locale => "too long locale")).save.should == false
80
+ Translation.create!(@valid_attributes)
81
+ Translation.new(@valid_attributes).save.should == false
82
+ end
83
+
84
+ it "should find translation by normalized keys" do
85
+ translation = Translation.create(@valid_attributes.merge(:key => "Key", :scope => "Scope.With.Dots"))
86
+ Translation.find_by_string_normalized_key("Scope.With.Dots.Key").should == translation
87
+ end
88
+
89
+ it "should find using find_by_string_normalized_key using simple key as attribute" do
90
+ translation = Translation.create(@valid_attributes.merge(:key => "SimpleKey", :scope => nil ))
91
+ Translation.find_by_string_normalized_key(translation.key).should == translation
92
+ end
93
+
94
+ it "should return array of all locale values form db" do
95
+ Translation.read_base
96
+ Translation.create!(:key => "key", :locale => "pl")
97
+ Translation.create!(:key => "key", :locale => "en")
98
+ Translation.create!(:key => "key", :locale => "nl")
99
+ Translation.get_locales.should == ["en", "nl", "pl"]
100
+ end
101
+
102
+ it "should return correct plural form (using count argument)" do
103
+ Translation.create!(:key => "with_count", :translation => "translation", :zero => "none", :one => "one", :many => "many ({{count}})")
104
+ I18n.t("with_count", :count => 0).should == "none"
105
+ I18n.t("with_count", :count => 1).should == "one"
106
+ I18n.t("with_count", :count => 2).should == "many (2)"
107
+ end
108
+
109
+ end
@@ -0,0 +1,3 @@
1
+ --exclude "spec/*,gems/*"
2
+ --include-file "trendi18n.rb,app/models/translation.rb"
3
+ --rails
@@ -0,0 +1,4 @@
1
+ --colour
2
+ --format progress
3
+ --loadby mtime
4
+ --reverse
@@ -0,0 +1,54 @@
1
+ # This file is copied to ~/spec when you run 'ruby script/generate rspec'
2
+ # from the project root directory.
3
+ ENV["RAILS_ENV"] ||= 'test'
4
+ require File.expand_path(File.join(File.dirname(__FILE__),'..','config','environment'))
5
+ require 'spec/autorun'
6
+ require 'spec/rails'
7
+
8
+ # Uncomment the next line to use webrat's matchers
9
+ #require 'webrat/integrations/rspec-rails'
10
+
11
+ # Requires supporting files with custom matchers and macros, etc,
12
+ # in ./support/ and its subdirectories.
13
+ Dir[File.expand_path(File.join(File.dirname(__FILE__),'support','**','*.rb'))].each {|f| require f}
14
+
15
+ Spec::Runner.configure do |config|
16
+ # If you're not using ActiveRecord you should remove these
17
+ # lines, delete config/database.yml and disable :active_record
18
+ # in your config/boot.rb
19
+ config.use_transactional_fixtures = true
20
+ config.use_instantiated_fixtures = false
21
+ config.fixture_path = RAILS_ROOT + '/spec/fixtures/'
22
+
23
+ # == Fixtures
24
+ #
25
+ # You can declare fixtures for each example_group like this:
26
+ # describe "...." do
27
+ # fixtures :table_a, :table_b
28
+ #
29
+ # Alternatively, if you prefer to declare them only once, you can
30
+ # do so right here. Just uncomment the next line and replace the fixture
31
+ # names with your fixtures.
32
+ #
33
+ # config.global_fixtures = :table_a, :table_b
34
+ #
35
+ # If you declare global fixtures, be aware that they will be declared
36
+ # for all of your examples, even those that don't use them.
37
+ #
38
+ # You can also declare which fixtures to use (for example fixtures for test/fixtures):
39
+ #
40
+ # config.fixture_path = RAILS_ROOT + '/spec/fixtures/'
41
+ #
42
+ # == Mock Framework
43
+ #
44
+ # RSpec uses it's own mocking framework by default. If you prefer to
45
+ # use mocha, flexmock or RR, uncomment the appropriate line:
46
+ #
47
+ # config.mock_with :mocha
48
+ # config.mock_with :flexmock
49
+ # config.mock_with :rr
50
+ #
51
+ # == Notes
52
+ #
53
+ # For more information take a look at Spec::Runner::Configuration and Spec::Runner
54
+ end
metadata ADDED
@@ -0,0 +1,156 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: trendi18n
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.9.1
5
+ platform: ruby
6
+ authors:
7
+ - Piotr Misiurek
8
+ - Piotr Marciniak
9
+ - "\xC5\x81ukasz Piestrzeniewicz"
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+
14
+ date: 2009-12-15 00:00:00 +01:00
15
+ default_executable:
16
+ dependencies:
17
+ - !ruby/object:Gem::Dependency
18
+ name: rails
19
+ type: :runtime
20
+ version_requirement:
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - ">="
24
+ - !ruby/object:Gem::Version
25
+ version: 2.3.5
26
+ version:
27
+ description: Database backend for i18n (localization files are still supported). This is beta version so give me your feedback
28
+ email: p.misiurek@gmail.com
29
+ executables: []
30
+
31
+ extensions: []
32
+
33
+ extra_rdoc_files:
34
+ - LICENSE
35
+ - README.rdoc
36
+ files:
37
+ - LICENSE
38
+ - MIT-LICENSE
39
+ - README.rdoc
40
+ - Rakefile
41
+ - VERSION
42
+ - app/models/translation.rb
43
+ - generators/trendi18n/templates/migrations/create_translations.rb
44
+ - generators/trendi18n/trendi18n_generator.rb
45
+ - lib/commands.rb
46
+ - lib/file.rb
47
+ - lib/trendi18n.rb
48
+ - rails/init.rb
49
+ - spec/test_application/README
50
+ - spec/test_application/Rakefile
51
+ - spec/test_application/app/controllers/application_controller.rb
52
+ - spec/test_application/app/controllers/translations_controller.rb
53
+ - spec/test_application/app/views/layouts/application.rhtml
54
+ - spec/test_application/app/views/translations/_form.html.erb
55
+ - spec/test_application/app/views/translations/edit.html.erb
56
+ - spec/test_application/app/views/translations/index.html.erb
57
+ - spec/test_application/app/views/translations/new.html.erb
58
+ - spec/test_application/app/views/translations/show.html.erb
59
+ - spec/test_application/config/boot.rb
60
+ - spec/test_application/config/database.yml
61
+ - spec/test_application/config/environment.rb
62
+ - spec/test_application/config/environments/cucumber.rb
63
+ - spec/test_application/config/environments/development.rb
64
+ - spec/test_application/config/environments/production.rb
65
+ - spec/test_application/config/environments/test.rb
66
+ - spec/test_application/config/initializers/new_rails_defaults.rb
67
+ - spec/test_application/config/initializers/session_store.rb
68
+ - spec/test_application/config/locales/en.yml
69
+ - spec/test_application/config/routes.rb
70
+ - spec/test_application/db/migrate/20091208195455_create_translations.rb
71
+ - spec/test_application/db/schema.rb
72
+ - spec/test_application/db/seeds.rb
73
+ - spec/test_application/features/dynamic_translation.feature
74
+ - spec/test_application/features/managing_translations.feature
75
+ - spec/test_application/features/static_translation.feature
76
+ - spec/test_application/features/step_definitions/translations_steps.rb
77
+ - spec/test_application/features/step_definitions/webrat_steps.rb
78
+ - spec/test_application/features/support/env.rb
79
+ - spec/test_application/features/support/paths.rb
80
+ - spec/test_application/features/support/version_check.rb
81
+ - spec/test_application/lib/tasks/cucumber.rake
82
+ - spec/test_application/lib/tasks/rspec.rake
83
+ - spec/test_application/public/404.html
84
+ - spec/test_application/public/422.html
85
+ - spec/test_application/public/500.html
86
+ - spec/test_application/public/favicon.ico
87
+ - spec/test_application/public/robots.txt
88
+ - spec/test_application/script/about
89
+ - spec/test_application/script/autospec
90
+ - spec/test_application/script/console
91
+ - spec/test_application/script/cucumber
92
+ - spec/test_application/script/dbconsole
93
+ - spec/test_application/script/destroy
94
+ - spec/test_application/script/generate
95
+ - spec/test_application/script/performance/benchmarker
96
+ - spec/test_application/script/performance/profiler
97
+ - spec/test_application/script/plugin
98
+ - spec/test_application/script/runner
99
+ - spec/test_application/script/server
100
+ - spec/test_application/script/spec
101
+ - spec/test_application/spec/backend_spec.rb
102
+ - spec/test_application/spec/models/translation_spec.rb
103
+ - spec/test_application/spec/rcov.opts
104
+ - spec/test_application/spec/spec.opts
105
+ - spec/test_application/spec/spec_helper.rb
106
+ has_rdoc: true
107
+ homepage: http://github.com/bragi/trendi18n
108
+ licenses: []
109
+
110
+ post_install_message:
111
+ rdoc_options:
112
+ - --charset=UTF-8
113
+ require_paths:
114
+ - lib
115
+ required_ruby_version: !ruby/object:Gem::Requirement
116
+ requirements:
117
+ - - ">="
118
+ - !ruby/object:Gem::Version
119
+ version: "0"
120
+ version:
121
+ required_rubygems_version: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - ">="
124
+ - !ruby/object:Gem::Version
125
+ version: "0"
126
+ version:
127
+ requirements: []
128
+
129
+ rubyforge_project:
130
+ rubygems_version: 1.3.5
131
+ signing_key:
132
+ specification_version: 3
133
+ summary: Database backend for i18n
134
+ test_files:
135
+ - spec/test_application/app/controllers/application_controller.rb
136
+ - spec/test_application/app/controllers/translations_controller.rb
137
+ - spec/test_application/config/boot.rb
138
+ - spec/test_application/config/environment.rb
139
+ - spec/test_application/config/environments/cucumber.rb
140
+ - spec/test_application/config/environments/development.rb
141
+ - spec/test_application/config/environments/production.rb
142
+ - spec/test_application/config/environments/test.rb
143
+ - spec/test_application/config/initializers/new_rails_defaults.rb
144
+ - spec/test_application/config/initializers/session_store.rb
145
+ - spec/test_application/config/routes.rb
146
+ - spec/test_application/db/migrate/20091208195455_create_translations.rb
147
+ - spec/test_application/db/schema.rb
148
+ - spec/test_application/db/seeds.rb
149
+ - spec/test_application/features/step_definitions/webrat_steps.rb
150
+ - spec/test_application/features/step_definitions/translations_steps.rb
151
+ - spec/test_application/features/support/env.rb
152
+ - spec/test_application/features/support/paths.rb
153
+ - spec/test_application/features/support/version_check.rb
154
+ - spec/test_application/spec/backend_spec.rb
155
+ - spec/test_application/spec/models/translation_spec.rb
156
+ - spec/test_application/spec/spec_helper.rb