rack-user-locale 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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