i18n-spec 0.5.1 → 0.5.2
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.
- checksums.yaml +4 -4
- data/.travis.yml +5 -0
- data/README.md +9 -9
- data/VERSION +1 -1
- data/gemfiles/rspec_2.99.gemfile +8 -0
- data/gemfiles/rspec_3.gemfile +8 -0
- data/i18n-spec.gemspec +6 -4
- data/lib/i18n-spec.rb +2 -0
- data/lib/i18n-spec/failure_message.rb +23 -0
- data/lib/i18n-spec/matchers/be_a_complete_translation_of_matcher.rb +3 -7
- data/lib/i18n-spec/matchers/be_a_subset_of_matcher.rb +3 -7
- data/lib/i18n-spec/matchers/be_parseable_matcher.rb +3 -7
- data/lib/i18n-spec/matchers/have_missing_pluralization_keys_matcher.rb +3 -7
- data/lib/i18n-spec/matchers/have_valid_pluralization_keys_matcher.rb +3 -7
- data/lib/i18n-spec/shared_examples/valid_locale_file.rb +8 -8
- metadata +5 -3
- data/Gemfile.lock +0 -74
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9f98bd04f57bcd38cd4ddbe0e602af7b40b13c17
|
4
|
+
data.tar.gz: f412910af3c451d65aa56b0cbcab5229966ecce2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 049b6449737469f47587f31628ca059aee1f146347e9e7fc5d47bacbd1cac7cb8381800d87fd53e60701f40d3cc3203836cbdf5179bd218133954ec5f43dae14
|
7
|
+
data.tar.gz: 2565f959ad8f856902c219fdf00ac7963a6545193e03c6bd9366e3d717ca7c30981a678da7a7dae20ffa7b725b42a091fdaa42322b509e8f3c022376504574b9
|
data/.travis.yml
CHANGED
data/README.md
CHANGED
@@ -9,13 +9,13 @@ i18n-spec provides RSpec matchers for testing your locale files and their transl
|
|
9
9
|
There are a few matchers available; the subject of the spec is always a path to a locale file.
|
10
10
|
|
11
11
|
describe "config/locales/en.yml" do
|
12
|
-
it {
|
13
|
-
it {
|
14
|
-
it {
|
15
|
-
it {
|
16
|
-
it {
|
17
|
-
it {
|
18
|
-
it {
|
12
|
+
it { is_expected.to be_parseable }
|
13
|
+
it { is_expected.to have_valid_pluralization_keys }
|
14
|
+
it { is_expected.to_not have_missing_pluralization_keys }
|
15
|
+
it { is_expected.to have_one_top_level_namespace }
|
16
|
+
it { is_expected.to be_named_like_top_level_namespace }
|
17
|
+
it { is_expected.to_not have_legacy_interpolations }
|
18
|
+
it { is_expected.to have_a_valid_locale }
|
19
19
|
end
|
20
20
|
|
21
21
|
All of these tests can be ran in one line with a shared example :
|
@@ -37,13 +37,13 @@ Even better, you can run all of these tests for every file in a directory like s
|
|
37
37
|
To test that your locale file is a subset of the default locale file
|
38
38
|
|
39
39
|
describe "config/locales/fr.yml" do
|
40
|
-
it {
|
40
|
+
it { is_expected.to be_a_subset_of 'config/locales/en.yml' }
|
41
41
|
end
|
42
42
|
|
43
43
|
If you need to test that all translations have been completed :
|
44
44
|
|
45
45
|
describe "config/locales/fr.yml" do
|
46
|
-
it {
|
46
|
+
it { is_expected.to be_a_complete_translation_of 'config/locales/en.yml' }
|
47
47
|
end
|
48
48
|
|
49
49
|
## Rake tasks
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.5.
|
1
|
+
0.5.2
|
data/i18n-spec.gemspec
CHANGED
@@ -2,16 +2,16 @@
|
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
3
|
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
|
-
# stub: i18n-spec 0.5.
|
5
|
+
# stub: i18n-spec 0.5.2 ruby lib
|
6
6
|
|
7
7
|
Gem::Specification.new do |s|
|
8
8
|
s.name = "i18n-spec"
|
9
|
-
s.version = "0.5.
|
9
|
+
s.version = "0.5.2"
|
10
10
|
|
11
11
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
12
12
|
s.require_paths = ["lib"]
|
13
13
|
s.authors = ["Christopher Dell"]
|
14
|
-
s.date = "2014-
|
14
|
+
s.date = "2014-08-03"
|
15
15
|
s.description = "Includes a number of rspec matchers to make specing your locale files easy peasy."
|
16
16
|
s.email = "chris@tigrish.com"
|
17
17
|
s.extra_rdoc_files = [
|
@@ -23,13 +23,15 @@ Gem::Specification.new do |s|
|
|
23
23
|
".rspec",
|
24
24
|
".travis.yml",
|
25
25
|
"Gemfile",
|
26
|
-
"Gemfile.lock",
|
27
26
|
"LICENSE.txt",
|
28
27
|
"README.md",
|
29
28
|
"Rakefile",
|
30
29
|
"VERSION",
|
30
|
+
"gemfiles/rspec_2.99.gemfile",
|
31
|
+
"gemfiles/rspec_3.gemfile",
|
31
32
|
"i18n-spec.gemspec",
|
32
33
|
"lib/i18n-spec.rb",
|
34
|
+
"lib/i18n-spec/failure_message.rb",
|
33
35
|
"lib/i18n-spec/matchers/be_a_complete_translation_of_matcher.rb",
|
34
36
|
"lib/i18n-spec/matchers/be_a_subset_of_matcher.rb",
|
35
37
|
"lib/i18n-spec/matchers/be_named_like_top_level_namespace_matcher.rb",
|
data/lib/i18n-spec.rb
CHANGED
@@ -5,6 +5,8 @@ end
|
|
5
5
|
require 'rspec/core'
|
6
6
|
require 'iso'
|
7
7
|
require 'yaml'
|
8
|
+
require 'i18n-spec/failure_message'
|
9
|
+
Dir[File.dirname(__FILE__) + '/i18n-spec/models/*.rb'].each {|file| require file }
|
8
10
|
Dir[File.dirname(__FILE__) + '/i18n-spec/models/*.rb'].each {|file| require file }
|
9
11
|
Dir[File.dirname(__FILE__) + '/i18n-spec/matchers/*.rb'].each {|file| require file }
|
10
12
|
Dir[File.dirname(__FILE__) + '/i18n-spec/shared_examples/*.rb'].each {|file| require file }
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module I18nSpec
|
2
|
+
module FailureMessage
|
3
|
+
def failure_for_should
|
4
|
+
if respond_to?(:failure_message)
|
5
|
+
# Rspec 3
|
6
|
+
failure_message { |f| yield(f) }
|
7
|
+
else
|
8
|
+
# Rspec 2
|
9
|
+
failure_message_for_should { |f| yield(f) }
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def failure_for_should_not
|
14
|
+
if respond_to?(:failure_message_when_negated)
|
15
|
+
# Rspec 3
|
16
|
+
failure_message_when_negated { |f| yield(f) }
|
17
|
+
else
|
18
|
+
# Rspec 2
|
19
|
+
failure_message_for_should_not { |f| yield(f) }
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -1,4 +1,6 @@
|
|
1
1
|
RSpec::Matchers.define :be_a_complete_translation_of do |default_locale_filepath|
|
2
|
+
extend I18nSpec::FailureMessage
|
3
|
+
|
2
4
|
match do |filepath|
|
3
5
|
locale_file = I18nSpec::LocaleFile.new(filepath)
|
4
6
|
default_locale = I18nSpec::LocaleFile.new(default_locale_filepath)
|
@@ -8,13 +10,7 @@ RSpec::Matchers.define :be_a_complete_translation_of do |default_locale_filepath
|
|
8
10
|
@misses.empty?
|
9
11
|
end
|
10
12
|
|
11
|
-
|
12
|
-
method(:failure_message)
|
13
|
-
rescue NameError
|
14
|
-
method(:failure_message_for_should)
|
15
|
-
end
|
16
|
-
|
17
|
-
failure_meth.call do |filepath|
|
13
|
+
failure_for_should do |filepath|
|
18
14
|
"expected #{filepath} to include :\n- " << @misses.join("\n- ")
|
19
15
|
end
|
20
16
|
end
|
@@ -1,4 +1,6 @@
|
|
1
1
|
RSpec::Matchers.define :be_a_subset_of do |default_locale_filepath|
|
2
|
+
extend I18nSpec::FailureMessage
|
3
|
+
|
2
4
|
match do |filepath|
|
3
5
|
locale_file = I18nSpec::LocaleFile.new(filepath)
|
4
6
|
default_locale = I18nSpec::LocaleFile.new(default_locale_filepath)
|
@@ -8,13 +10,7 @@ RSpec::Matchers.define :be_a_subset_of do |default_locale_filepath|
|
|
8
10
|
@superset.empty?
|
9
11
|
end
|
10
12
|
|
11
|
-
|
12
|
-
method(:failure_message)
|
13
|
-
rescue NameError
|
14
|
-
method(:failure_message_for_should)
|
15
|
-
end
|
16
|
-
|
17
|
-
failure_meth.call do |filepath|
|
13
|
+
failure_for_should do |filepath|
|
18
14
|
"expected #{filepath} to not include :\n- " << @superset.join("\n- ")
|
19
15
|
end
|
20
16
|
end
|
@@ -1,16 +1,12 @@
|
|
1
1
|
RSpec::Matchers.define :be_parseable do
|
2
|
+
extend I18nSpec::FailureMessage
|
3
|
+
|
2
4
|
match do |actual|
|
3
5
|
@locale_file = I18nSpec::LocaleFile.new(actual)
|
4
6
|
@locale_file.is_parseable?
|
5
7
|
end
|
6
8
|
|
7
|
-
|
8
|
-
method(:failure_message)
|
9
|
-
rescue NameError
|
10
|
-
method(:failure_message_for_should)
|
11
|
-
end
|
12
|
-
|
13
|
-
failure_meth.call do |filepath|
|
9
|
+
failure_for_should do |filepath|
|
14
10
|
"expected #{filepath} to be parseable but got :\n- #{@locale_file.errors[:unparseable]}"
|
15
11
|
end
|
16
12
|
end
|
@@ -1,16 +1,12 @@
|
|
1
1
|
RSpec::Matchers.define :have_missing_pluralization_keys do
|
2
|
+
extend I18nSpec::FailureMessage
|
3
|
+
|
2
4
|
match do |actual|
|
3
5
|
@locale_file = I18nSpec::LocaleFile.new(actual)
|
4
6
|
@locale_file.missing_pluralization_keys.any?
|
5
7
|
end
|
6
8
|
|
7
|
-
|
8
|
-
method(:failure_message_when_negated)
|
9
|
-
rescue NameError
|
10
|
-
method(:failure_message_for_should_not)
|
11
|
-
end
|
12
|
-
|
13
|
-
failure_meth.call do |filepath|
|
9
|
+
failure_for_should_not do |filepath|
|
14
10
|
flattened_keys = []
|
15
11
|
|
16
12
|
@locale_file.errors[:missing_pluralization_keys].each do |parent, subkeys|
|
@@ -1,16 +1,12 @@
|
|
1
1
|
RSpec::Matchers.define :have_valid_pluralization_keys do
|
2
|
+
extend I18nSpec::FailureMessage
|
3
|
+
|
2
4
|
match do |actual|
|
3
5
|
@locale_file = I18nSpec::LocaleFile.new(actual)
|
4
6
|
@locale_file.invalid_pluralization_keys.empty?
|
5
7
|
end
|
6
8
|
|
7
|
-
|
8
|
-
method(:failure_message)
|
9
|
-
rescue NameError
|
10
|
-
method(:failure_message_for_should)
|
11
|
-
end
|
12
|
-
|
13
|
-
failure_meth.call do |filepath|
|
9
|
+
failure_for_should do |filepath|
|
14
10
|
"expected #{filepath} to not contain invalid pluralization keys in the following namespaces :\n- " << @locale_file.errors[:invalid_pluralization_keys].join("\n- ")
|
15
11
|
end
|
16
12
|
end
|
@@ -1,11 +1,11 @@
|
|
1
|
-
shared_examples_for "a valid locale file" do |locale_file|
|
1
|
+
RSpec.shared_examples_for "a valid locale file" do |locale_file|
|
2
2
|
describe locale_file do
|
3
|
-
it {
|
4
|
-
it {
|
5
|
-
it {
|
6
|
-
it {
|
7
|
-
it {
|
8
|
-
it {
|
9
|
-
it {
|
3
|
+
it { is_expected.to be_parseable }
|
4
|
+
it { is_expected.to have_valid_pluralization_keys }
|
5
|
+
it { is_expected.to_not have_missing_pluralization_keys }
|
6
|
+
it { is_expected.to have_one_top_level_namespace }
|
7
|
+
it { is_expected.to be_named_like_top_level_namespace }
|
8
|
+
it { is_expected.to_not have_legacy_interpolations }
|
9
|
+
it { is_expected.to have_a_valid_locale }
|
10
10
|
end
|
11
11
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: i18n-spec
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Christopher Dell
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-08-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: iso
|
@@ -93,13 +93,15 @@ files:
|
|
93
93
|
- ".rspec"
|
94
94
|
- ".travis.yml"
|
95
95
|
- Gemfile
|
96
|
-
- Gemfile.lock
|
97
96
|
- LICENSE.txt
|
98
97
|
- README.md
|
99
98
|
- Rakefile
|
100
99
|
- VERSION
|
100
|
+
- gemfiles/rspec_2.99.gemfile
|
101
|
+
- gemfiles/rspec_3.gemfile
|
101
102
|
- i18n-spec.gemspec
|
102
103
|
- lib/i18n-spec.rb
|
104
|
+
- lib/i18n-spec/failure_message.rb
|
103
105
|
- lib/i18n-spec/matchers/be_a_complete_translation_of_matcher.rb
|
104
106
|
- lib/i18n-spec/matchers/be_a_subset_of_matcher.rb
|
105
107
|
- lib/i18n-spec/matchers/be_named_like_top_level_namespace_matcher.rb
|
data/Gemfile.lock
DELETED
@@ -1,74 +0,0 @@
|
|
1
|
-
GEM
|
2
|
-
remote: https://rubygems.org/
|
3
|
-
specs:
|
4
|
-
addressable (2.3.6)
|
5
|
-
builder (3.2.2)
|
6
|
-
descendants_tracker (0.0.4)
|
7
|
-
thread_safe (~> 0.3, >= 0.3.1)
|
8
|
-
diff-lcs (1.2.5)
|
9
|
-
faraday (0.9.0)
|
10
|
-
multipart-post (>= 1.2, < 3)
|
11
|
-
git (1.2.7)
|
12
|
-
github_api (0.11.3)
|
13
|
-
addressable (~> 2.3)
|
14
|
-
descendants_tracker (~> 0.0.1)
|
15
|
-
faraday (~> 0.8, < 0.10)
|
16
|
-
hashie (>= 1.2)
|
17
|
-
multi_json (>= 1.7.5, < 2.0)
|
18
|
-
nokogiri (~> 1.6.0)
|
19
|
-
oauth2
|
20
|
-
hashie (3.1.0)
|
21
|
-
highline (1.6.21)
|
22
|
-
i18n (0.6.9)
|
23
|
-
iso (0.2.1)
|
24
|
-
i18n
|
25
|
-
jeweler (2.0.1)
|
26
|
-
builder
|
27
|
-
bundler (>= 1.0)
|
28
|
-
git (>= 1.2.5)
|
29
|
-
github_api
|
30
|
-
highline (>= 1.6.15)
|
31
|
-
nokogiri (>= 1.5.10)
|
32
|
-
rake
|
33
|
-
rdoc
|
34
|
-
json (1.8.1)
|
35
|
-
jwt (1.0.0)
|
36
|
-
mini_portile (0.6.0)
|
37
|
-
multi_json (1.10.1)
|
38
|
-
multi_xml (0.5.5)
|
39
|
-
multipart-post (2.0.0)
|
40
|
-
nokogiri (1.6.2.1)
|
41
|
-
mini_portile (= 0.6.0)
|
42
|
-
oauth2 (0.9.4)
|
43
|
-
faraday (>= 0.8, < 0.10)
|
44
|
-
jwt (~> 1.0)
|
45
|
-
multi_json (~> 1.3)
|
46
|
-
multi_xml (~> 0.5)
|
47
|
-
rack (~> 1.2)
|
48
|
-
rack (1.5.2)
|
49
|
-
rake (10.3.2)
|
50
|
-
rdoc (4.1.1)
|
51
|
-
json (~> 1.4)
|
52
|
-
rspec (3.0.0)
|
53
|
-
rspec-core (~> 3.0.0)
|
54
|
-
rspec-expectations (~> 3.0.0)
|
55
|
-
rspec-mocks (~> 3.0.0)
|
56
|
-
rspec-core (3.0.2)
|
57
|
-
rspec-support (~> 3.0.0)
|
58
|
-
rspec-expectations (3.0.2)
|
59
|
-
diff-lcs (>= 1.2.0, < 2.0)
|
60
|
-
rspec-support (~> 3.0.0)
|
61
|
-
rspec-mocks (3.0.2)
|
62
|
-
rspec-support (~> 3.0.0)
|
63
|
-
rspec-support (3.0.2)
|
64
|
-
thread_safe (0.3.4)
|
65
|
-
|
66
|
-
PLATFORMS
|
67
|
-
ruby
|
68
|
-
|
69
|
-
DEPENDENCIES
|
70
|
-
bundler
|
71
|
-
iso
|
72
|
-
jeweler
|
73
|
-
rdoc
|
74
|
-
rspec (>= 2.4.0)
|