rack-user-locale 0.1.1 → 0.2.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3376e9a9241aac31b2921eef24650abe3d96924411690604d40d0c2670e2ba38
4
- data.tar.gz: c0cf13fc9e07cf9e27795c37d39c4f3e3394538342b293b83cc2c43b55a18209
3
+ metadata.gz: 0d18c409a6882027dd3ffa8c8a8fa4b3b8da8767e93309968f7ae25dc86a3934
4
+ data.tar.gz: d7b1b968cb64df8b9ad00c9262824739fcde3004d7b46d53fb5c68001e8cebaf
5
5
  SHA512:
6
- metadata.gz: 5e155f5a3c408c649440e60ac0c6f45a95118967c4eab0ecd833252ec78261e218b2893f2f067461484be3e115ef77edf924bf9656488a430b0aa9a2cf47062e
7
- data.tar.gz: 692899bc9906adfda797c51b03a79464b8f7bfa1fa9d68e76dd982efad5f3aa4708399bc0bb28821379cfcafb83e19fe867622f661cc3fedc90ccc02564cb917
6
+ metadata.gz: 4cf20a5001d3b73cbc39df31eae4c9e5cdb14c32d31412e432fc75a59a22360d9e716c232782000c5450488b4df03777cc756012270cfc58a78591fe3a5b43b0
7
+ data.tar.gz: 4fa662d9fbeec20b5c69b09ae27084ef5f65c0d282f3110fe0a987d27c44abd7d0c905965fd8b1a84da0a91e32740b7e9e8b61fdd16476e85340e3deeda02359
data/.gitignore ADDED
@@ -0,0 +1,52 @@
1
+ # rcov generated
2
+ coverage
3
+ coverage.data
4
+
5
+ # rdoc generated
6
+ rdoc
7
+
8
+ # yard generated
9
+ doc
10
+ .yardoc
11
+
12
+ # bundler
13
+ .bundle
14
+
15
+ # jeweler generated
16
+ pkg
17
+
18
+ # Have editor/IDE/OS specific files you need to ignore? Consider using a global gitignore:
19
+ #
20
+ # * Create a file at ~/.gitignore
21
+ # * Include files you want ignored
22
+ # * Run: git config --global core.excludesfile ~/.gitignore
23
+ #
24
+ # After doing this, these files will be ignored in all your git projects,
25
+ # saving you from having to 'pollute' every project you touch with them
26
+ #
27
+ # Not sure what to needs to be ignored for particular editors/OSes? Here's some ideas to get you started. (Remember, remove the leading # of the line)
28
+ #
29
+ # For MacOS:
30
+ #
31
+ .DS_Store
32
+
33
+ # For TextMate
34
+ #*.tmproj
35
+ #tmtags
36
+
37
+ # For emacs:
38
+ #*~
39
+ #\#*
40
+ #.\#*
41
+
42
+ # For vim:
43
+ #*.swp
44
+
45
+ # For redcar:
46
+ #.redcar
47
+
48
+ # For rubinius:
49
+ #*.rbc
50
+
51
+ .rvmrc
52
+ .byebug_history
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.5.1
1
+ 2.6.0
data/Gemfile.lock CHANGED
@@ -5,7 +5,7 @@ GEM
5
5
  ansi (1.5.0)
6
6
  builder (3.2.3)
7
7
  byebug (10.0.2)
8
- concurrent-ruby (1.0.5)
8
+ concurrent-ruby (1.1.4)
9
9
  descendants_tracker (0.0.4)
10
10
  thread_safe (~> 0.3, >= 0.3.1)
11
11
  faraday (0.9.2)
@@ -20,7 +20,7 @@ GEM
20
20
  oauth2 (~> 1.0)
21
21
  hashie (3.6.0)
22
22
  highline (2.0.0)
23
- i18n (1.1.0)
23
+ i18n (1.5.1)
24
24
  concurrent-ruby (~> 1.0)
25
25
  jeweler (2.3.9)
26
26
  builder
@@ -33,18 +33,18 @@ GEM
33
33
  rake
34
34
  rdoc
35
35
  semver2
36
- jwt (1.5.6)
36
+ jwt (2.1.0)
37
37
  mime-types (2.99.3)
38
- mini_portile2 (2.3.0)
38
+ mini_portile2 (2.4.0)
39
39
  minitest (5.11.3)
40
40
  minitest-fail-fast (0.1.0)
41
41
  minitest (~> 5)
42
- minitest-macos-notification (0.0.3)
42
+ minitest-macos-notification (0.0.4)
43
43
  minitest (~> 5.0)
44
- minitest-reporters (~> 1.3.1)
44
+ minitest-reporters (~> 1.3)
45
45
  os (~> 1.0)
46
46
  terminal-notifier (~> 2.0)
47
- minitest-reporters (1.3.2)
47
+ minitest-reporters (1.3.5)
48
48
  ansi
49
49
  builder
50
50
  minitest (>= 5.0)
@@ -52,21 +52,21 @@ GEM
52
52
  multi_json (1.13.1)
53
53
  multi_xml (0.6.0)
54
54
  multipart-post (2.0.0)
55
- nokogiri (1.8.4)
56
- mini_portile2 (~> 2.3.0)
57
- oauth2 (1.4.0)
58
- faraday (>= 0.8, < 0.13)
59
- jwt (~> 1.0)
55
+ nokogiri (1.10.0)
56
+ mini_portile2 (~> 2.4.0)
57
+ oauth2 (1.4.1)
58
+ faraday (>= 0.8, < 0.16.0)
59
+ jwt (>= 1.0, < 3.0)
60
60
  multi_json (~> 1.3)
61
61
  multi_xml (~> 0.5)
62
62
  rack (>= 1.2, < 3)
63
63
  os (1.0.0)
64
- psych (3.0.2)
65
- rack (2.0.5)
64
+ psych (3.1.0)
65
+ rack (2.0.6)
66
66
  rack-test (1.1.0)
67
67
  rack (>= 1.0, < 3)
68
- rake (12.3.1)
69
- rdoc (6.0.4)
68
+ rake (12.3.2)
69
+ rdoc (6.1.1)
70
70
  ruby-progressbar (1.10.0)
71
71
  semver2 (3.4.2)
72
72
  terminal-notifier (2.0.0)
@@ -90,4 +90,4 @@ DEPENDENCIES
90
90
  yard (~> 0.9)
91
91
 
92
92
  BUNDLED WITH
93
- 1.16.4
93
+ 1.17.2
data/Rakefile CHANGED
@@ -1,38 +1,12 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "rubygems"
4
- require "bundler"
5
- begin
6
- Bundler.setup(:default, :development)
7
- rescue Bundler::BundlerError => e
8
- warn e.message
9
- warn "Run `bundle install` to install missing gems"
10
- exit e.status_code
11
- end
12
- require "rake"
13
-
14
- require "jeweler"
15
- Jeweler::Tasks.new do |gem|
16
- # gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
17
- gem.name = "rack-user-locale"
18
- gem.homepage = "http://github.com/schinery/rack-user-locale"
19
- gem.license = "MIT"
20
- gem.summary = %(Rack module for getting and setting a user's locale)
21
- gem.description = %(A Rack module for getting and setting a user's locale via a cookie or browser default language.)
22
- gem.email = "stuart.chinery@gmail.com"
23
- gem.authors = ["Stuart Chinery", "Dave Hrycyszyn"]
24
- # dependencies defined in Gemfile
25
- end
26
- Jeweler::RubygemsDotOrgTasks.new
27
-
3
+ require "bundler/gem_tasks"
28
4
  require "rake/testtask"
29
- Rake::TestTask.new(:test) do |test|
30
- test.libs << "lib" << "test"
31
- test.pattern = "test/**/*_test.rb"
32
- test.verbose = true
5
+
6
+ Rake::TestTask.new(:test) do |t|
7
+ t.libs << "test"
8
+ t.libs << "lib"
9
+ t.test_files = FileList["test/**/*_test.rb"]
33
10
  end
34
11
 
35
12
  task default: :test
36
-
37
- require "yard"
38
- YARD::Rake::YardocTask.new
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.1
1
+ 0.2.0
@@ -82,6 +82,7 @@ module Rack
82
82
  #
83
83
  def split_lang(lang)
84
84
  return if lang.nil?
85
+
85
86
  lang.split("-").first
86
87
  end
87
88
 
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Rack
4
+ module UserLocale
5
+ VERSION = File.read("VERSION").split("\n").first
6
+ end
7
+ end
@@ -1,85 +1,36 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
- # -*- encoding: utf-8 -*-
5
- # stub: rack-user-locale 0.1.1 ruby lib
1
+ # frozen_string_literal: true
6
2
 
7
- Gem::Specification.new do |s|
8
- s.name = "rack-user-locale".freeze
9
- s.version = "0.1.1"
3
+ lib = File.expand_path("lib", __dir__)
4
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
+ require "rack/user-locale/version"
10
6
 
11
- s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
12
- s.require_paths = ["lib".freeze]
13
- s.authors = ["Stuart Chinery".freeze, "Dave Hrycyszyn".freeze]
14
- s.date = "2018-08-28"
15
- s.description = "A Rack module for getting and setting a user's locale via a cookie or browser default language.".freeze
16
- s.email = "stuart.chinery@gmail.com".freeze
17
- s.extra_rdoc_files = [
18
- "LICENSE.txt",
19
- "README.md"
20
- ]
21
- s.files = [
22
- ".document",
23
- ".rubocop.yml",
24
- ".ruby-version",
25
- ".travis.yml",
26
- "Gemfile",
27
- "Gemfile.lock",
28
- "LICENSE.txt",
29
- "README.md",
30
- "Rakefile",
31
- "VERSION",
32
- "lib/rack-user-locale.rb",
33
- "rack-user-locale.gemspec",
34
- "test/basic_rack_app.rb",
35
- "test/helper.rb",
36
- "test/rack-user-locale_test.rb"
37
- ]
38
- s.homepage = "http://github.com/schinery/rack-user-locale".freeze
39
- s.licenses = ["MIT".freeze]
40
- s.rubygems_version = "2.7.7".freeze
41
- s.summary = "Rack module for getting and setting a user's locale".freeze
7
+ Gem::Specification.new do |spec|
8
+ spec.name = "rack-user-locale"
9
+ spec.version = Rack::UserLocale::VERSION
10
+ spec.authors = ["Stuart Chinery"]
11
+ spec.email = ["stuart.chinery@gmail.com"]
42
12
 
43
- if s.respond_to? :specification_version then
44
- s.specification_version = 4
13
+ spec.summary = "A Rack module for getting and setting a user's locale"
14
+ spec.description = "A Rack module for getting and setting a user's locale via a cookie or browser default language."
15
+ spec.homepage = "https://github.com/schinery/rack-user-locale"
16
+ spec.license = "MIT"
45
17
 
46
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
47
- s.add_runtime_dependency(%q<i18n>.freeze, [">= 0"])
48
- s.add_runtime_dependency(%q<rack>.freeze, [">= 0"])
49
- s.add_development_dependency(%q<bundler>.freeze, ["~> 1.16"])
50
- s.add_development_dependency(%q<byebug>.freeze, [">= 0"])
51
- s.add_development_dependency(%q<jeweler>.freeze, ["~> 2.3"])
52
- s.add_development_dependency(%q<minitest>.freeze, ["~> 5.0"])
53
- s.add_development_dependency(%q<minitest-fail-fast>.freeze, ["~> 0.1"])
54
- s.add_development_dependency(%q<minitest-macos-notification>.freeze, ["~> 0"])
55
- s.add_development_dependency(%q<minitest-reporters>.freeze, ["~> 1.3"])
56
- s.add_development_dependency(%q<rack-test>.freeze, ["~> 1.1"])
57
- s.add_development_dependency(%q<yard>.freeze, ["~> 0.9"])
58
- else
59
- s.add_dependency(%q<i18n>.freeze, [">= 0"])
60
- s.add_dependency(%q<rack>.freeze, [">= 0"])
61
- s.add_dependency(%q<bundler>.freeze, ["~> 1.16"])
62
- s.add_dependency(%q<byebug>.freeze, [">= 0"])
63
- s.add_dependency(%q<jeweler>.freeze, ["~> 2.3"])
64
- s.add_dependency(%q<minitest>.freeze, ["~> 5.0"])
65
- s.add_dependency(%q<minitest-fail-fast>.freeze, ["~> 0.1"])
66
- s.add_dependency(%q<minitest-macos-notification>.freeze, ["~> 0"])
67
- s.add_dependency(%q<minitest-reporters>.freeze, ["~> 1.3"])
68
- s.add_dependency(%q<rack-test>.freeze, ["~> 1.1"])
69
- s.add_dependency(%q<yard>.freeze, ["~> 0.9"])
70
- end
71
- else
72
- s.add_dependency(%q<i18n>.freeze, [">= 0"])
73
- s.add_dependency(%q<rack>.freeze, [">= 0"])
74
- s.add_dependency(%q<bundler>.freeze, ["~> 1.16"])
75
- s.add_dependency(%q<byebug>.freeze, [">= 0"])
76
- s.add_dependency(%q<jeweler>.freeze, ["~> 2.3"])
77
- s.add_dependency(%q<minitest>.freeze, ["~> 5.0"])
78
- s.add_dependency(%q<minitest-fail-fast>.freeze, ["~> 0.1"])
79
- s.add_dependency(%q<minitest-macos-notification>.freeze, ["~> 0"])
80
- s.add_dependency(%q<minitest-reporters>.freeze, ["~> 1.3"])
81
- s.add_dependency(%q<rack-test>.freeze, ["~> 1.1"])
82
- s.add_dependency(%q<yard>.freeze, ["~> 0.9"])
18
+ spec.files = `git ls-files -z`.split("\x0").reject do |f|
19
+ f.match(%r{^(test|spec|features)/})
83
20
  end
84
- end
85
21
 
22
+ spec.bindir = "exe"
23
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
24
+ spec.require_paths = ["lib"]
25
+
26
+ spec.add_dependency "i18n", "~> 0"
27
+ spec.add_dependency "rack", "~> 0"
28
+
29
+ spec.add_development_dependency "bundler", "~> 1.16"
30
+ spec.add_development_dependency "minitest", "~> 5.0"
31
+ spec.add_development_dependency "minitest-fail-fast", "~> 0.1"
32
+ spec.add_development_dependency "minitest-macos-notification", "~> 0"
33
+ spec.add_development_dependency "minitest-reporters", "~> 1.3"
34
+ spec.add_development_dependency "rack-test", "~> 1.1"
35
+ spec.add_development_dependency "rake", "~> 12.0"
36
+ end
metadata CHANGED
@@ -1,42 +1,41 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rack-user-locale
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stuart Chinery
8
- - Dave Hrycyszyn
9
8
  autorequire:
10
- bindir: bin
9
+ bindir: exe
11
10
  cert_chain: []
12
- date: 2018-08-28 00:00:00.000000000 Z
11
+ date: 2019-01-07 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: i18n
16
15
  requirement: !ruby/object:Gem::Requirement
17
16
  requirements:
18
- - - ">="
17
+ - - "~>"
19
18
  - !ruby/object:Gem::Version
20
19
  version: '0'
21
20
  type: :runtime
22
21
  prerelease: false
23
22
  version_requirements: !ruby/object:Gem::Requirement
24
23
  requirements:
25
- - - ">="
24
+ - - "~>"
26
25
  - !ruby/object:Gem::Version
27
26
  version: '0'
28
27
  - !ruby/object:Gem::Dependency
29
28
  name: rack
30
29
  requirement: !ruby/object:Gem::Requirement
31
30
  requirements:
32
- - - ">="
31
+ - - "~>"
33
32
  - !ruby/object:Gem::Version
34
33
  version: '0'
35
34
  type: :runtime
36
35
  prerelease: false
37
36
  version_requirements: !ruby/object:Gem::Requirement
38
37
  requirements:
39
- - - ">="
38
+ - - "~>"
40
39
  - !ruby/object:Gem::Version
41
40
  version: '0'
42
41
  - !ruby/object:Gem::Dependency
@@ -53,34 +52,6 @@ dependencies:
53
52
  - - "~>"
54
53
  - !ruby/object:Gem::Version
55
54
  version: '1.16'
56
- - !ruby/object:Gem::Dependency
57
- name: byebug
58
- requirement: !ruby/object:Gem::Requirement
59
- requirements:
60
- - - ">="
61
- - !ruby/object:Gem::Version
62
- version: '0'
63
- type: :development
64
- prerelease: false
65
- version_requirements: !ruby/object:Gem::Requirement
66
- requirements:
67
- - - ">="
68
- - !ruby/object:Gem::Version
69
- version: '0'
70
- - !ruby/object:Gem::Dependency
71
- name: jeweler
72
- requirement: !ruby/object:Gem::Requirement
73
- requirements:
74
- - - "~>"
75
- - !ruby/object:Gem::Version
76
- version: '2.3'
77
- type: :development
78
- prerelease: false
79
- version_requirements: !ruby/object:Gem::Requirement
80
- requirements:
81
- - - "~>"
82
- - !ruby/object:Gem::Version
83
- version: '2.3'
84
55
  - !ruby/object:Gem::Dependency
85
56
  name: minitest
86
57
  requirement: !ruby/object:Gem::Requirement
@@ -152,29 +123,29 @@ dependencies:
152
123
  - !ruby/object:Gem::Version
153
124
  version: '1.1'
154
125
  - !ruby/object:Gem::Dependency
155
- name: yard
126
+ name: rake
156
127
  requirement: !ruby/object:Gem::Requirement
157
128
  requirements:
158
129
  - - "~>"
159
130
  - !ruby/object:Gem::Version
160
- version: '0.9'
131
+ version: '12.0'
161
132
  type: :development
162
133
  prerelease: false
163
134
  version_requirements: !ruby/object:Gem::Requirement
164
135
  requirements:
165
136
  - - "~>"
166
137
  - !ruby/object:Gem::Version
167
- version: '0.9'
138
+ version: '12.0'
168
139
  description: A Rack module for getting and setting a user's locale via a cookie or
169
140
  browser default language.
170
- email: stuart.chinery@gmail.com
141
+ email:
142
+ - stuart.chinery@gmail.com
171
143
  executables: []
172
144
  extensions: []
173
- extra_rdoc_files:
174
- - LICENSE.txt
175
- - README.md
145
+ extra_rdoc_files: []
176
146
  files:
177
147
  - ".document"
148
+ - ".gitignore"
178
149
  - ".rubocop.yml"
179
150
  - ".ruby-version"
180
151
  - ".travis.yml"
@@ -185,11 +156,9 @@ files:
185
156
  - Rakefile
186
157
  - VERSION
187
158
  - lib/rack-user-locale.rb
159
+ - lib/rack/user-locale/version.rb
188
160
  - rack-user-locale.gemspec
189
- - test/basic_rack_app.rb
190
- - test/helper.rb
191
- - test/rack-user-locale_test.rb
192
- homepage: http://github.com/schinery/rack-user-locale
161
+ homepage: https://github.com/schinery/rack-user-locale
193
162
  licenses:
194
163
  - MIT
195
164
  metadata: {}
@@ -208,9 +177,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
208
177
  - !ruby/object:Gem::Version
209
178
  version: '0'
210
179
  requirements: []
211
- rubyforge_project:
212
- rubygems_version: 2.7.7
180
+ rubygems_version: 3.0.1
213
181
  signing_key:
214
182
  specification_version: 4
215
- summary: Rack module for getting and setting a user's locale
183
+ summary: A Rack module for getting and setting a user's locale
216
184
  test_files: []
@@ -1,7 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- class BasicRackApp
4
- def call(_env)
5
- [200, { "Content-Type" => "text/plain" }, "Hello World"]
6
- end
7
- end
data/test/helper.rb DELETED
@@ -1,37 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "rubygems"
4
- require "bundler"
5
- require "rack/test"
6
-
7
- begin
8
- Bundler.setup(:default, :development)
9
- rescue Bundler::BundlerError => e
10
- warn e.message
11
- warn "Run `bundle install` to install missing gems"
12
- exit e.status_code
13
- end
14
-
15
- require "minitest/autorun"
16
- require "minitest/fail_fast"
17
- require "minitest/macos_notification"
18
- require "minitest/reporters"
19
- require "minitest/spec"
20
-
21
- $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
22
- $LOAD_PATH.unshift(File.dirname(__FILE__))
23
- require "rack-user-locale"
24
-
25
- class Minitest::Test
26
- extend Minitest::Spec::DSL
27
- include Rack::Test::Methods
28
- end
29
-
30
- Minitest::Reporters.use!(
31
- [
32
- Minitest::Reporters::SpecReporter.new,
33
- Minitest::Reporters::MacosNotificationReporter.new(title: "Rack::UserLocale Gem")
34
- ],
35
- ENV,
36
- Minitest.backtrace_filter
37
- )
@@ -1,232 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "helper"
4
- require "basic_rack_app"
5
- require "byebug"
6
-
7
- class RackUserLocaleTest < Minitest::Test
8
- describe Rack::UserLocale do
9
- before do
10
- I18n.enforce_available_locales = false
11
- end
12
-
13
- describe "without accepted_locales set" do
14
- before do
15
- def app
16
- Rack::Builder.new do
17
- use Rack::UserLocale
18
-
19
- run BasicRackApp.new
20
- end
21
- end
22
-
23
- I18n.default_locale = :en
24
- I18n.locale = :en
25
- end
26
-
27
- it "should have I18n.locale set to :en" do
28
- assert_equal :en, I18n.locale
29
- end
30
-
31
- describe "when a locale cookie is set" do
32
- before do
33
- get "http://example.com/", {}, "HTTP_COOKIE" => "user-locale=be"
34
- end
35
-
36
- it "should have I18n.locale set to :be" do
37
- assert_equal :be, I18n.locale
38
- end
39
-
40
- it "should not set a cookie in the response" do
41
- assert_equal nil, last_response["Set-Cookie"]
42
- end
43
- end
44
-
45
- describe "when from HTTP_ACCEPT_LANGUAGE headers" do
46
- describe "with a single locale" do
47
- before do
48
- get "http://example.com/", {}, "HTTP_ACCEPT_LANGUAGE" => "fr-be", "SCRIPT_NAME" => "/"
49
- end
50
-
51
- it "should have I18n.locale set to :fr" do
52
- assert_equal :fr, I18n.locale
53
- end
54
-
55
- it "should set a cookie in the response" do
56
- assert_equal "user-locale=fr; path=/", last_response["Set-Cookie"]
57
- end
58
- end
59
-
60
- describe "with an multiple locales" do
61
- before do
62
- get "http://example.com/", {},
63
- "HTTP_ACCEPT_LANGUAGE" => "de-DE;q=0.8,de;q=0.8,no-NO;q=1.0,no;q=0.7,ru-RU;q=0.7,sv-SE;q=0.4,sv;q=0.3,nl-BE;q=0.9",
64
- "SCRIPT_NAME" => "/"
65
- end
66
-
67
- it "should have I18n.locale set to :no" do
68
- assert_equal :no, I18n.locale
69
- end
70
-
71
- it "should set a cookie in the response" do
72
- assert_equal "user-locale=no; path=/", last_response["Set-Cookie"]
73
- end
74
- end
75
- end
76
-
77
- describe "when both a cooke and HTTP_ACCEPT_LANGUAGE headers are set" do
78
- before do
79
- get "http://example.com/", {}, "HTTP_COOKIE" => "user-locale=af",
80
- "HTTP_ACCEPT_LANGUAGE" => "ar-sa", "SCRIPT_NAME" => "/"
81
- end
82
-
83
- it "should have I18n.locale set to :af" do
84
- assert_equal :af, I18n.locale
85
- end
86
-
87
- it "should not set a cookie in the response" do
88
- assert_equal nil, last_response["Set-Cookie"]
89
- end
90
- end
91
-
92
- describe "when nothing is changed" do
93
- before do
94
- get "http://example.com/", {}, "SCRIPT_NAME" => "/"
95
- end
96
-
97
- it "should have I18n.locale set to :en" do
98
- assert_equal :en, I18n.locale
99
- end
100
-
101
- it "should set a cookie in the response" do
102
- assert_equal "user-locale=en; path=/", last_response["Set-Cookie"]
103
- end
104
- end
105
- end
106
-
107
- describe "with accepted_locales set" do
108
- before do
109
- def app
110
- Rack::Builder.new do
111
- use Rack::UserLocale, accepted_locales: %i[en es fr de ja nl]
112
-
113
- run BasicRackApp.new
114
- end
115
- end
116
-
117
- I18n.default_locale = :en
118
- I18n.locale = :en
119
- end
120
-
121
- it "should have I18n.locale set to :en" do
122
- assert_equal :en, I18n.locale
123
- end
124
-
125
- describe "when a locale cookie is set" do
126
- before do
127
- get "http://example.com/", {}, "HTTP_COOKIE" => "user-locale=es", "SCRIPT_NAME" => "/"
128
- end
129
-
130
- it "should have I18n.locale set to :es" do
131
- assert_equal :es, I18n.locale
132
- end
133
-
134
- it "should not set a cookie in the response" do
135
- assert_equal nil, last_response["Set-Cookie"]
136
- end
137
- end
138
-
139
- describe "when from HTTP_ACCEPT_LANGUAGE headers" do
140
- describe "with an accepted locale" do
141
- before do
142
- get "http://example.com/", {}, "HTTP_ACCEPT_LANGUAGE" => "fr-be", "SCRIPT_NAME" => "/"
143
- end
144
-
145
- it "should have I18n.locale set to :fr" do
146
- assert_equal :fr, I18n.locale
147
- end
148
-
149
- it "should set a cookie in the response" do
150
- assert_equal "user-locale=fr; path=/", last_response["Set-Cookie"]
151
- end
152
- end
153
-
154
- describe "with an multiple locales" do
155
- describe "at different weights" do
156
- before do
157
- get "http://example.com/", {},
158
- "HTTP_ACCEPT_LANGUAGE" => "de-DE;q=0.8,de;q=0.8,no-NO;q=0.7,no;q=0.7,ru-RU;q=0.7,sv-SE;q=0.4,sv;q=0.3,nl-BE;q=0.9",
159
- "SCRIPT_NAME" => "/"
160
- end
161
-
162
- it "should have I18n.locale set to :nl" do
163
- assert_equal :nl, I18n.locale
164
- end
165
-
166
- it "should set a cookie in the response" do
167
- assert_equal "user-locale=nl; path=/", last_response["Set-Cookie"]
168
- end
169
- end
170
-
171
- describe "at the same weight" do
172
- before do
173
- get "http://example.com/", {},
174
- "HTTP_ACCEPT_LANGUAGE" => "fr,en,ja", "SCRIPT_NAME" => "/"
175
- end
176
-
177
- it "should have I18n.locale set to :fr" do
178
- assert_equal :fr, I18n.locale
179
- end
180
-
181
- it "should set a cookie in the response" do
182
- assert_equal "user-locale=fr; path=/", last_response["Set-Cookie"]
183
- end
184
- end
185
- end
186
-
187
- describe "without an accepted locale" do
188
- before do
189
- get "http://example.com/", {}, "HTTP_ACCEPT_LANGUAGE" => "ar-sa", "SCRIPT_NAME" => "/"
190
- end
191
-
192
- it "should have I18n.locale set to :en" do
193
- assert_equal :en, I18n.locale
194
- end
195
-
196
- it "should set a cookie in the response" do
197
- assert_equal "user-locale=en; path=/", last_response["Set-Cookie"]
198
- end
199
- end
200
- end
201
-
202
- describe "when both a cooke and HTTP_ACCEPT_LANGUAGE headers are set" do
203
- before do
204
- get "http://example.com/", {}, "HTTP_COOKIE" => "user-locale=ja",
205
- "HTTP_ACCEPT_LANGUAGE" => "fr-be", "SCRIPT_NAME" => "/"
206
- end
207
-
208
- it "should have I18n.locale set to :ja" do
209
- assert_equal :ja, I18n.locale
210
- end
211
-
212
- it "should not set a cookie in the response" do
213
- assert_equal nil, last_response["Set-Cookie"]
214
- end
215
- end
216
-
217
- describe "when nothing is changed" do
218
- before do
219
- get "http://example.com/", {}, "SCRIPT_NAME" => "/"
220
- end
221
-
222
- it "should have I18n.locale set to :en" do
223
- assert_equal :en, I18n.locale
224
- end
225
-
226
- it "should set a cookie in the response" do
227
- assert_equal "user-locale=en; path=/", last_response["Set-Cookie"]
228
- end
229
- end
230
- end
231
- end
232
- end