copy_tuner_client 0.5.0 → 0.6.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 +5 -5
- data/.github/workflows/rspec.yml +53 -0
- data/.rubocop.yml +2 -0
- data/.ruby-version +1 -1
- data/CHANGELOG.md +42 -1
- data/Gemfile +2 -0
- data/Gemfile.lock +183 -135
- data/Rakefile +4 -14
- data/copy_tuner_client.gemspec +3 -6
- data/gemfiles/5.2.gemfile +1 -1
- data/gemfiles/{5.0.gemfile → 6.0.gemfile} +1 -1
- data/lib/copy_tuner_client/cache.rb +14 -14
- data/lib/copy_tuner_client/engine.rb +7 -3
- data/lib/copy_tuner_client/translation_log.rb +3 -4
- data/lib/copy_tuner_client/version.rb +1 -1
- data/lib/tasks/copy_tuner_client_tasks.rake +4 -4
- data/spec/copy_tuner_client/cache_spec.rb +52 -34
- data/spec/copy_tuner_client/client_spec.rb +3 -1
- data/spec/copy_tuner_client/copyray_spec.rb +2 -0
- data/spec/copy_tuner_client/i18n_backend_spec.rb +1 -0
- data/spec/copy_tuner_client/process_guard_spec.rb +2 -1
- metadata +13 -68
- data/.travis.yml +0 -19
- data/Appraisals +0 -11
- data/features/rails.feature +0 -284
- data/features/step_definitions/copycopter_server_steps.rb +0 -64
- data/features/step_definitions/rails_steps.rb +0 -187
- data/features/support/env.rb +0 -11
- data/features/support/rails_server.rb +0 -150
- data/gemfiles/5.1.gemfile +0 -7
- data/init.rb +0 -1
@@ -5,7 +5,8 @@ describe CopyTunerClient do
|
|
5
5
|
config[:logger] ||= FakeLogger.new
|
6
6
|
default_config = CopyTunerClient::Configuration.new.to_hash
|
7
7
|
default_config[:s3_host] = 'copy-tuner.com'
|
8
|
-
CopyTunerClient::Client.new(default_config.update(config))
|
8
|
+
client = CopyTunerClient::Client.new(default_config.update(config))
|
9
|
+
client
|
9
10
|
end
|
10
11
|
|
11
12
|
def add_project
|
@@ -197,6 +198,7 @@ describe CopyTunerClient do
|
|
197
198
|
|
198
199
|
it "deploys from the top-level constant" do
|
199
200
|
client = build_client
|
201
|
+
allow(client).to receive(:download)
|
200
202
|
CopyTunerClient.configure do |config|
|
201
203
|
config.client = client
|
202
204
|
end
|
@@ -16,6 +16,7 @@ describe CopyTunerClient::Copyray do
|
|
16
16
|
before do
|
17
17
|
CopyTunerClient.configure do |configuration|
|
18
18
|
configuration.html_escape = false
|
19
|
+
configuration.client = FakeClient.new
|
19
20
|
end
|
20
21
|
end
|
21
22
|
|
@@ -36,6 +37,7 @@ describe CopyTunerClient::Copyray do
|
|
36
37
|
before do
|
37
38
|
CopyTunerClient.configure do |configuration|
|
38
39
|
configuration.html_escape = true
|
40
|
+
configuration.client = FakeClient.new
|
39
41
|
end
|
40
42
|
end
|
41
43
|
|
@@ -79,7 +79,8 @@ describe CopyTunerClient::ProcessGuard do
|
|
79
79
|
unicorn.spawn
|
80
80
|
end
|
81
81
|
|
82
|
-
|
82
|
+
# FIXME: ruby@2.7以降で失敗するようになっているがテストコードの問題っぽいのでスキップしている
|
83
|
+
xit "flushes when the process terminates" do
|
83
84
|
cache = WritingCache.new
|
84
85
|
pid = fork do
|
85
86
|
process_guard = build_process_guard(cache: cache, preserve_exit_hook: true)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: copy_tuner_client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- SonicGarden
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-04-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: i18n
|
@@ -38,62 +38,20 @@ dependencies:
|
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: appraisal
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - "~>"
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '2.1'
|
48
|
-
type: :development
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - "~>"
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '2.1'
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: aruba
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - "~>"
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: 0.6.0
|
62
|
-
type: :development
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - "~>"
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: 0.6.0
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: cucumber
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - "~>"
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: 1.3.16
|
76
|
-
type: :development
|
77
|
-
prerelease: false
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
79
|
-
requirements:
|
80
|
-
- - "~>"
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: 1.3.16
|
83
41
|
- !ruby/object:Gem::Dependency
|
84
42
|
name: rails
|
85
43
|
requirement: !ruby/object:Gem::Requirement
|
86
44
|
requirements:
|
87
45
|
- - "~>"
|
88
46
|
- !ruby/object:Gem::Version
|
89
|
-
version: 4.2
|
47
|
+
version: 5.2.4.2
|
90
48
|
type: :development
|
91
49
|
prerelease: false
|
92
50
|
version_requirements: !ruby/object:Gem::Requirement
|
93
51
|
requirements:
|
94
52
|
- - "~>"
|
95
53
|
- !ruby/object:Gem::Version
|
96
|
-
version: 4.2
|
54
|
+
version: 5.2.4.2
|
97
55
|
- !ruby/object:Gem::Dependency
|
98
56
|
name: rake
|
99
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -112,16 +70,16 @@ dependencies:
|
|
112
70
|
name: rspec
|
113
71
|
requirement: !ruby/object:Gem::Requirement
|
114
72
|
requirements:
|
115
|
-
- -
|
73
|
+
- - '='
|
116
74
|
- !ruby/object:Gem::Version
|
117
|
-
version:
|
75
|
+
version: 3.8.0
|
118
76
|
type: :development
|
119
77
|
prerelease: false
|
120
78
|
version_requirements: !ruby/object:Gem::Requirement
|
121
79
|
requirements:
|
122
|
-
- -
|
80
|
+
- - '='
|
123
81
|
- !ruby/object:Gem::Version
|
124
|
-
version:
|
82
|
+
version: 3.8.0
|
125
83
|
- !ruby/object:Gem::Dependency
|
126
84
|
name: sham_rack
|
127
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -214,11 +172,11 @@ extra_rdoc_files: []
|
|
214
172
|
files:
|
215
173
|
- ".babelrc"
|
216
174
|
- ".eslintrc"
|
175
|
+
- ".github/workflows/rspec.yml"
|
217
176
|
- ".gitignore"
|
218
177
|
- ".rspec"
|
178
|
+
- ".rubocop.yml"
|
219
179
|
- ".ruby-version"
|
220
|
-
- ".travis.yml"
|
221
|
-
- Appraisals
|
222
180
|
- CHANGELOG.md
|
223
181
|
- Gemfile
|
224
182
|
- Gemfile.lock
|
@@ -228,15 +186,8 @@ files:
|
|
228
186
|
- app/assets/stylesheets/copyray.css
|
229
187
|
- app/views/_copy_tuner_bar.html.erb
|
230
188
|
- copy_tuner_client.gemspec
|
231
|
-
- features/rails.feature
|
232
|
-
- features/step_definitions/copycopter_server_steps.rb
|
233
|
-
- features/step_definitions/rails_steps.rb
|
234
|
-
- features/support/env.rb
|
235
|
-
- features/support/rails_server.rb
|
236
|
-
- gemfiles/5.0.gemfile
|
237
|
-
- gemfiles/5.1.gemfile
|
238
189
|
- gemfiles/5.2.gemfile
|
239
|
-
-
|
190
|
+
- gemfiles/6.0.gemfile
|
240
191
|
- lib/copy_tuner_client.rb
|
241
192
|
- lib/copy_tuner_client/cache.rb
|
242
193
|
- lib/copy_tuner_client/client.rb
|
@@ -301,24 +252,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
301
252
|
requirements:
|
302
253
|
- - ">="
|
303
254
|
- !ruby/object:Gem::Version
|
304
|
-
version: 2.
|
255
|
+
version: 2.5.0
|
305
256
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
306
257
|
requirements:
|
307
258
|
- - ">="
|
308
259
|
- !ruby/object:Gem::Version
|
309
260
|
version: '0'
|
310
261
|
requirements: []
|
311
|
-
|
312
|
-
rubygems_version: 2.6.14.4
|
262
|
+
rubygems_version: 3.1.2
|
313
263
|
signing_key:
|
314
264
|
specification_version: 4
|
315
265
|
summary: Client for the CopyTuner copy management service
|
316
266
|
test_files:
|
317
|
-
- features/rails.feature
|
318
|
-
- features/step_definitions/copycopter_server_steps.rb
|
319
|
-
- features/step_definitions/rails_steps.rb
|
320
|
-
- features/support/env.rb
|
321
|
-
- features/support/rails_server.rb
|
322
267
|
- spec/copy_tuner_client/cache_spec.rb
|
323
268
|
- spec/copy_tuner_client/client_spec.rb
|
324
269
|
- spec/copy_tuner_client/configuration_spec.rb
|
data/.travis.yml
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
rvm:
|
2
|
-
- 2.4.6
|
3
|
-
- 2.5.5
|
4
|
-
- 2.6.3
|
5
|
-
|
6
|
-
gemfile:
|
7
|
-
- gemfiles/5.0.gemfile
|
8
|
-
- gemfiles/5.1.gemfile
|
9
|
-
- gemfiles/5.2.gemfile
|
10
|
-
|
11
|
-
matrix:
|
12
|
-
exclude:
|
13
|
-
- rvm: 2.6.3
|
14
|
-
gemfile: gemfiles/5.0.gemfile
|
15
|
-
- rvm: 2.6.3
|
16
|
-
gemfile: gemfiles/5.1.gemfile
|
17
|
-
|
18
|
-
before_install:
|
19
|
-
- gem update bundler
|
data/Appraisals
DELETED
data/features/rails.feature
DELETED
@@ -1,284 +0,0 @@
|
|
1
|
-
@disable-bundler
|
2
|
-
Feature: Using copy_tuner in a rails app
|
3
|
-
|
4
|
-
Background:
|
5
|
-
Given I have a copy_tuner project with an api key of "abc123"
|
6
|
-
When I generate a rails application
|
7
|
-
And I configure the copy_tuner client with api key "abc123"
|
8
|
-
|
9
|
-
Scenario: copy_tuner in the controller
|
10
|
-
Given the "abc123" project has the following blurbs:
|
11
|
-
| key | draft content |
|
12
|
-
| en.users.index.controller-test | This is a test |
|
13
|
-
When I write to "app/controllers/users_controller.rb" with:
|
14
|
-
"""
|
15
|
-
class UsersController < ActionController::Base
|
16
|
-
def index
|
17
|
-
@text = t("users.index.controller-test", :default => "default")
|
18
|
-
end
|
19
|
-
end
|
20
|
-
"""
|
21
|
-
When I route the "users" resource
|
22
|
-
And I write to "app/views/users/index.html.erb" with:
|
23
|
-
"""
|
24
|
-
<%= @text %>
|
25
|
-
"""
|
26
|
-
When I start the application
|
27
|
-
And I wait for changes to be synchronized
|
28
|
-
Then the copy_tuner client version and environment should have been logged
|
29
|
-
Then the log should contain "Downloaded translations"
|
30
|
-
When I visit /users/
|
31
|
-
Then the response should contain "This is a test"
|
32
|
-
And I wait for changes to be synchronized
|
33
|
-
And the log should not contain "DEPRECATION WARNING"
|
34
|
-
|
35
|
-
Scenario: copy_tuner in the view
|
36
|
-
Given the "abc123" project has the following blurbs:
|
37
|
-
| key | draft content |
|
38
|
-
| en.users.index.view-test | This is a test |
|
39
|
-
When I write to "app/controllers/users_controller.rb" with:
|
40
|
-
"""
|
41
|
-
class UsersController < ActionController::Base
|
42
|
-
def index
|
43
|
-
render
|
44
|
-
end
|
45
|
-
end
|
46
|
-
"""
|
47
|
-
When I route the "users" resource
|
48
|
-
And I write to "app/views/users/index.html.erb" with:
|
49
|
-
"""
|
50
|
-
<%= t(".view-test", :default => "default") %>
|
51
|
-
"""
|
52
|
-
When I start the application
|
53
|
-
And I wait for changes to be synchronized
|
54
|
-
And I visit /users/
|
55
|
-
Then the response should contain "This is a test"
|
56
|
-
|
57
|
-
Scenario: copy_tuner detects updates to copy
|
58
|
-
Given the "abc123" project has the following blurbs:
|
59
|
-
| key | draft content |
|
60
|
-
| en.users.index.controller-test | Old content |
|
61
|
-
When I write to "app/controllers/users_controller.rb" with:
|
62
|
-
"""
|
63
|
-
class UsersController < ActionController::Base
|
64
|
-
def index
|
65
|
-
@text = t("users.index.controller-test", :default => "default")
|
66
|
-
end
|
67
|
-
end
|
68
|
-
"""
|
69
|
-
When I route the "users" resource
|
70
|
-
And I write to "app/views/users/index.html.erb" with:
|
71
|
-
"""
|
72
|
-
<%= @text %>
|
73
|
-
"""
|
74
|
-
When I start the application
|
75
|
-
And I wait for changes to be synchronized
|
76
|
-
And I visit /users/
|
77
|
-
Then the response should contain "Old content"
|
78
|
-
And I wait for changes to be synchronized
|
79
|
-
When the the following blurbs are updated in the "abc123" project:
|
80
|
-
| key | draft content |
|
81
|
-
| en.users.index.controller-test | New content |
|
82
|
-
And I wait for changes to be synchronized
|
83
|
-
And I visit /users/
|
84
|
-
Then the response should contain "New content"
|
85
|
-
|
86
|
-
Scenario: missing key
|
87
|
-
When I write to "app/controllers/users_controller.rb" with:
|
88
|
-
"""
|
89
|
-
class UsersController < ActionController::Base
|
90
|
-
def index
|
91
|
-
render :action => "index"
|
92
|
-
end
|
93
|
-
end
|
94
|
-
"""
|
95
|
-
When I route the "users" resource
|
96
|
-
And I write to "app/views/users/index.html.erb" with:
|
97
|
-
"""
|
98
|
-
<%= t(".404", :default => "not found") %>
|
99
|
-
"""
|
100
|
-
When I start the application
|
101
|
-
And I wait for changes to be synchronized
|
102
|
-
And I visit /users/
|
103
|
-
Then the response should contain "not found"
|
104
|
-
And I wait for changes to be synchronized
|
105
|
-
And the "abc123" project should have the following blurbs:
|
106
|
-
| key | draft content |
|
107
|
-
| en.users.index.404 | not found |
|
108
|
-
And the log should contain "Uploaded missing translations"
|
109
|
-
|
110
|
-
Scenario: copy_tuner in production
|
111
|
-
Given the "abc123" project has the following blurbs:
|
112
|
-
| key | published content | draft content |
|
113
|
-
| en.users.index.controller-test | This is a test | Extra extra |
|
114
|
-
| en.users.index.unpublished-test | | Extra extra |
|
115
|
-
When I write to "app/controllers/users_controller.rb" with:
|
116
|
-
"""
|
117
|
-
class UsersController < ActionController::Base
|
118
|
-
def index
|
119
|
-
@text = t("users.index.controller-test", :default => "default")
|
120
|
-
@unpublished = t("users.index.unpublished-test", :default => "Unpublished")
|
121
|
-
t("users.index.unknown-test", :default => "Unknown")
|
122
|
-
end
|
123
|
-
end
|
124
|
-
"""
|
125
|
-
When I route the "users" resource
|
126
|
-
And I write to "app/views/users/index.html.erb" with:
|
127
|
-
"""
|
128
|
-
<%= @text %>
|
129
|
-
<%= @unpublished %>
|
130
|
-
"""
|
131
|
-
When I start the application in the "production" environment
|
132
|
-
And I wait for changes to be synchronized
|
133
|
-
And I visit /users/
|
134
|
-
Then the response should contain "This is a test"
|
135
|
-
And the response should contain "Unpublished"
|
136
|
-
And I wait for changes to be synchronized
|
137
|
-
And the "abc123" project should have the following blurbs:
|
138
|
-
| key | draft content |
|
139
|
-
| en.users.index.unknown-test | |
|
140
|
-
|
141
|
-
Scenario: configure a bad api key
|
142
|
-
When I configure the copy_tuner client with api key "bogus"
|
143
|
-
And I start the application
|
144
|
-
And I wait for changes to be synchronized
|
145
|
-
Then the log should contain "Invalid API key: bogus"
|
146
|
-
|
147
|
-
Scenario: deploy
|
148
|
-
Given the "abc123" project has the following blurbs:
|
149
|
-
| key | draft content | published content |
|
150
|
-
| test.one | expected one | unexpected one |
|
151
|
-
| test.two | expected two | unexpected two |
|
152
|
-
When I successfully rake "copy_tuner:deploy"
|
153
|
-
And I wait for changes to be synchronized
|
154
|
-
And the output should contain "Successfully marked all blurbs as published"
|
155
|
-
And I wait for changes to be synchronized
|
156
|
-
Then the "abc123" project should have the following blurbs:
|
157
|
-
| key | draft content | published content |
|
158
|
-
| test.one | expected one | expected one |
|
159
|
-
| test.two | expected two | expected two |
|
160
|
-
|
161
|
-
Scenario: fallback on the simple I18n backend
|
162
|
-
When I write to "config/locales/en.yml" with:
|
163
|
-
"""
|
164
|
-
en:
|
165
|
-
test:
|
166
|
-
key: Hello, %{name}
|
167
|
-
"""
|
168
|
-
When I write to "app/controllers/users_controller.rb" with:
|
169
|
-
"""
|
170
|
-
class UsersController < ActionController::Base
|
171
|
-
def index
|
172
|
-
render :text => t("test.key", :name => 'Joe')
|
173
|
-
end
|
174
|
-
end
|
175
|
-
"""
|
176
|
-
When I route the "users" resource
|
177
|
-
And I start the application
|
178
|
-
And I wait for changes to be synchronized
|
179
|
-
And I visit /users/
|
180
|
-
Then the response should contain "Hello, Joe"
|
181
|
-
When I wait for changes to be synchronized
|
182
|
-
Then the "abc123" project should have the following blurbs:
|
183
|
-
| key | draft content |
|
184
|
-
| en.test.key | Hello, %{name} |
|
185
|
-
|
186
|
-
Scenario: preserve localization keys
|
187
|
-
When I write to "app/controllers/users_controller.rb" with:
|
188
|
-
"""
|
189
|
-
class UsersController < ActionController::Base
|
190
|
-
def index
|
191
|
-
render
|
192
|
-
end
|
193
|
-
end
|
194
|
-
"""
|
195
|
-
When I route the "users" resource
|
196
|
-
And I write to "app/views/users/index.html.erb" with:
|
197
|
-
"""
|
198
|
-
<%= number_to_currency(2.5) %>
|
199
|
-
"""
|
200
|
-
When I start the application
|
201
|
-
And I wait for changes to be synchronized
|
202
|
-
And I visit /users/
|
203
|
-
Then the response should contain "$2.50"
|
204
|
-
When I wait for changes to be synchronized
|
205
|
-
Then the "abc123" project should not have the "en.number.format" blurb
|
206
|
-
|
207
|
-
Scenario: view validation errors
|
208
|
-
When I write to "app/models/user.rb" with:
|
209
|
-
"""
|
210
|
-
class User < ActiveRecord::Base
|
211
|
-
validates_presence_of :name
|
212
|
-
end
|
213
|
-
"""
|
214
|
-
When I write to "db/migrate/1_create_users.rb" with:
|
215
|
-
"""
|
216
|
-
class CreateUsers < ActiveRecord::Migration
|
217
|
-
def self.up
|
218
|
-
create_table :users do |t|
|
219
|
-
t.string :name
|
220
|
-
end
|
221
|
-
end
|
222
|
-
end
|
223
|
-
"""
|
224
|
-
When I write to "app/controllers/users_controller.rb" with:
|
225
|
-
"""
|
226
|
-
class UsersController < ActionController::Base
|
227
|
-
def index
|
228
|
-
@user = User.new
|
229
|
-
@user.valid?
|
230
|
-
render
|
231
|
-
end
|
232
|
-
end
|
233
|
-
"""
|
234
|
-
When I route the "users" resource
|
235
|
-
And I write to "app/views/users/index.html.erb" with:
|
236
|
-
"""
|
237
|
-
<%= @user.errors.full_messages.first %>
|
238
|
-
"""
|
239
|
-
When I successfully rake "db:migrate RAILS_ENV=development"
|
240
|
-
And I configure the copy_tuner client to use published data
|
241
|
-
And I start the application
|
242
|
-
And I wait for changes to be synchronized
|
243
|
-
And I visit /users/
|
244
|
-
Then the response should contain "Name can't be blank"
|
245
|
-
When I wait for changes to be synchronized
|
246
|
-
Then the "abc123" project should have the following error blurbs:
|
247
|
-
| key | draft content |
|
248
|
-
| user.attributes.name.blank | |
|
249
|
-
|
250
|
-
Scenario: ensure keys are synced with short lived processes
|
251
|
-
When I configure the copy_tuner client to have a polling delay of 86400 seconds
|
252
|
-
And I start the application
|
253
|
-
And I wait for changes to be synchronized
|
254
|
-
And I run a short lived process that sets the key "threaded.key" to "all your base" in "development" environment
|
255
|
-
And I wait for changes to be synchronized
|
256
|
-
Then the "abc123" project should have the following blurbs:
|
257
|
-
| key | draft content |
|
258
|
-
| en.threaded.key | all your base |
|
259
|
-
|
260
|
-
Scenario: support pluralization
|
261
|
-
Given I write to "app/controllers/users_controller.rb" with:
|
262
|
-
"""
|
263
|
-
class UsersController < ActionController::Base
|
264
|
-
def index
|
265
|
-
render
|
266
|
-
end
|
267
|
-
end
|
268
|
-
"""
|
269
|
-
And I route the "users" resource
|
270
|
-
And I write to "app/views/users/index.html.erb" with:
|
271
|
-
"""
|
272
|
-
<%= time_ago_in_words(1.hour.ago) %> ago
|
273
|
-
<%= time_ago_in_words(2.hours.ago) %> ago
|
274
|
-
"""
|
275
|
-
When I start the application
|
276
|
-
And I wait for changes to be synchronized
|
277
|
-
And I visit /users/
|
278
|
-
Then the response should contain "1 hour ago"
|
279
|
-
And the response should contain "2 hours ago"
|
280
|
-
When I wait for changes to be synchronized
|
281
|
-
Then the "abc123" project should have the following blurbs:
|
282
|
-
| key | draft content |
|
283
|
-
| en.datetime.distance_in_words.about_x_hours.one | about 1 hour |
|
284
|
-
| en.datetime.distance_in_words.about_x_hours.other | about %{count} hours |
|