human_attributes 0.7.0 → 0.7.1

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: 73e486239e94166ff1faf7878c768739ae34dcb9155c974733f1ba7295559bfa
4
- data.tar.gz: 38878c6781350d625884b3a9a7df78e33f838500f3df80e0abd7705a781c0d28
3
+ metadata.gz: 100442352d961937e384df6bfb4aa8c137be3359048ce9c0359f4a208beb4db8
4
+ data.tar.gz: 946c6db1955e759761eb9be4c3af1142a6541b600ffec8a80af318e62c381d5d
5
5
  SHA512:
6
- metadata.gz: c07404abd101846ecd624095fa2d664a5097a7753c7b9eafd802b4c334996c9367f3618436515c769f67b8241de3b45ebe3828a70a54d17de0b2f390e176857c
7
- data.tar.gz: 9e7b3c57a0cb433d5004f6d7cd7000e9a581752179b85a599c8bd84ac0025ec6a56a41e523a8d84f164a4f8fcf1a0284f2782919cce32383f813080a1de0d845
6
+ metadata.gz: 394cdc7be845cb97ea5dcd4d6f0c2e41a28eb8b660a42297aadb6a3a28145f7477d2e2225b28269845aff8e26858393d019a6aae24bbbb0136a841812788af45
7
+ data.tar.gz: 2df11b1cc727eef343ce702d559f14e9f6f3c432993b5231051b2343911ca1b26a61f90959df684a924be4ea59db99e7c413ec72da8fb4e0c4197da1b57db367
data/CHANGELOG.md CHANGED
@@ -2,6 +2,11 @@
2
2
  All notable changes to this project will be documented in this file.
3
3
  This project adheres to [Semantic Versioning](http://semver.org/).
4
4
 
5
+ # 0.7.0
6
+
7
+ ##### Fixed
8
+
9
+ * Fix enum translations: move translations under pluralized attribute key.
5
10
  # 0.7.0
6
11
  ##### Changed
7
12
 
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- human_attributes (0.7.0)
4
+ human_attributes (0.7.1)
5
5
  factory_bot
6
6
  rails (>= 4.2.0)
7
7
 
@@ -94,12 +94,12 @@ GEM
94
94
  enumerize (2.4.0)
95
95
  activesupport (>= 3.2)
96
96
  erubi (1.10.0)
97
- factory_bot (6.2.0)
97
+ factory_bot (6.2.1)
98
98
  activesupport (>= 5.0.0)
99
99
  ffi (1.15.1)
100
100
  formatador (0.2.5)
101
- globalid (0.4.2)
102
- activesupport (>= 4.2.0)
101
+ globalid (1.0.0)
102
+ activesupport (>= 5.0)
103
103
  guard (2.17.0)
104
104
  formatador (>= 0.2.4)
105
105
  listen (>= 2.7, < 4.0)
@@ -126,12 +126,12 @@ GEM
126
126
  lumberjack (1.2.8)
127
127
  mail (2.7.1)
128
128
  mini_mime (>= 0.1.1)
129
- marcel (1.0.1)
129
+ marcel (1.0.2)
130
130
  method_source (1.0.0)
131
131
  mini_mime (1.0.3)
132
132
  minitest (5.14.4)
133
133
  nenv (0.3.0)
134
- nio4r (2.5.7)
134
+ nio4r (2.5.8)
135
135
  nokogiri (1.11.7-x86_64-darwin)
136
136
  racc (~> 1.4)
137
137
  nokogiri (1.11.7-x86_64-linux)
@@ -232,12 +232,12 @@ GEM
232
232
  json (>= 1.8, < 3)
233
233
  simplecov-html (~> 0.10.0)
234
234
  simplecov-html (0.10.2)
235
- sprockets (4.0.2)
235
+ sprockets (4.1.1)
236
236
  concurrent-ruby (~> 1.0)
237
237
  rack (> 1, < 3)
238
- sprockets-rails (3.2.2)
239
- actionpack (>= 4.0)
240
- activesupport (>= 4.0)
238
+ sprockets-rails (3.4.2)
239
+ actionpack (>= 5.2)
240
+ activesupport (>= 5.2)
241
241
  sprockets (>= 3.0.0)
242
242
  sqlite3 (1.4.2)
243
243
  sync (0.5.0)
@@ -249,7 +249,7 @@ GEM
249
249
  tzinfo (2.0.4)
250
250
  concurrent-ruby (~> 1.0)
251
251
  unicode-display_width (2.0.0)
252
- websocket-driver (0.7.4)
252
+ websocket-driver (0.7.5)
253
253
  websocket-extensions (>= 0.1.0)
254
254
  websocket-extensions (0.1.5)
255
255
  zeitwerk (2.4.2)
data/README.md CHANGED
@@ -14,6 +14,7 @@ It's a Gem to convert ActiveRecord models' attributes and methods to human reada
14
14
  - [DateTime](#datetime)
15
15
  - [Boolean](#boolean)
16
16
  - [Enumerize](#enumerize)
17
+ - [Enum](#enum)
17
18
  - [Custom Formatter](#custom-formatter)
18
19
  - [Common Options](#common-options)
19
20
  - [Default](#default)
@@ -83,7 +84,7 @@ Executing the `humanize` method, inside the class definition, will allow you to
83
84
  With...
84
85
 
85
86
  ```ruby
86
- pruchase = Purchase.new
87
+ purchase = Purchase.new
87
88
  purchase.quantity = 20
88
89
  purchase.commission = 5.3
89
90
  ```
@@ -114,7 +115,7 @@ And the options to use with numeric types, are the same as in [NumberHelper](htt
114
115
  With...
115
116
 
116
117
  ```ruby
117
- pruchase = Purchase.new
118
+ purchase = Purchase.new
118
119
  purchase.expired_at = "04/06/1984 09:20:00"
119
120
  purchase.created_at = "04/06/1984 09:20:00"
120
121
  purchase.updated_at = "04/06/1984 09:20:00"
@@ -153,7 +154,7 @@ purchase.human_updated_at #=> "1984"
153
154
  With...
154
155
 
155
156
  ```ruby
156
- pruchase = Purchase.new
157
+ purchase = Purchase.new
157
158
  purchase.expired_at = "04/06/1984 09:20:00"
158
159
  purchase.created_at = "04/06/1984 09:20:00"
159
160
  purchase.updated_at = "04/06/1984 09:20:00"
@@ -192,7 +193,7 @@ purchase.human_updated_at #=> "1984"
192
193
  With...
193
194
 
194
195
  ```ruby
195
- pruchase = Purchase.new
196
+ purchase = Purchase.new
196
197
  purchase.paid = true
197
198
  ```
198
199
 
@@ -226,7 +227,7 @@ purchase.human_paid #=> "No"
226
227
  Installing [Enumerize](https://github.com/brainspec/enumerize) gem with...
227
228
 
228
229
  ```ruby
229
- pruchase = Purchase.new
230
+ purchase = Purchase.new
230
231
  purchase.state = :finished
231
232
  ```
232
233
 
@@ -257,12 +258,92 @@ purchase.state = :finished
257
258
  purchase.human_state #=> "F."
258
259
  ```
259
260
 
261
+ #### Enum
262
+
263
+ Having...
264
+
265
+ ```ruby
266
+ class Purchase < ActiveRecord::Base
267
+ enum payment_method: [:credit, :debit, :cash, :bitcoin]
268
+ end
269
+ ```
270
+
271
+ You can add
272
+ ```ruby
273
+ class Purchase < ActiveRecord::Base
274
+ enum payment_method: [:credit, :debit, :cash, :bitcoin]
275
+ humanize :payment_method, enum: true
276
+ end
277
+ ```
278
+
279
+ And `/your_app/config/locales/en.yml`
280
+
281
+ ```yaml
282
+ en:
283
+ activerecord:
284
+ attributes:
285
+ purchase:
286
+ payment_methods:
287
+ credit: "Credit Card"
288
+ debit: "Debit Card"
289
+ cash: "Cash"
290
+ bitcoin: "Bitcoin"
291
+ ```
292
+
293
+
294
+ And then you can do...
295
+
296
+ ```ruby
297
+ purchase = Purchase.new
298
+ purchase.payment_method = :debit
299
+ purchase.human_payment_method #=> "Debit Card"
300
+ ```
301
+
302
+ If you want to use the same enum translations for multiple models, use this locales structure:
303
+
304
+ `/your_app/config/locales/en.yml`
305
+
306
+ ```yaml
307
+ en:
308
+ enum:
309
+ default:
310
+ payment_methods:
311
+ credit: "Credit Card"
312
+ debit: "Debit Card"
313
+ cash: "Cash"
314
+ bitcoin: "Bitcoin"
315
+ ```
316
+
317
+ and then in other models will also work:
318
+
319
+ ```ruby
320
+ class Debt < ActiveRecord::Base
321
+ enum payment_method: [:credit, :debit, :cash, :bitcoin]
322
+ humanize :payment_method, enum: true
323
+ end
324
+ ```
325
+
326
+ ```ruby
327
+ purchase = Purchase.new
328
+ purchase.payment_method = :debit
329
+
330
+ debt = Debt.new
331
+ debt.payment_method = :bitcoin
332
+
333
+ purchase.human_payment_method #=> "Debit Card"
334
+ debt.human_payment_method #=> "Bitcoin"
335
+ ```
336
+
337
+
338
+
339
+
340
+
260
341
  #### Custom Formatter
261
342
 
262
343
  With...
263
344
 
264
345
  ```ruby
265
- pruchase = Purchase.create!
346
+ purchase = Purchase.create!
266
347
  ```
267
348
 
268
349
  And having...
@@ -288,7 +369,7 @@ The following options are available to use with all the formatters presented bef
288
369
  With...
289
370
 
290
371
  ```ruby
291
- pruchase = Purchase.new
372
+ purchase = Purchase.new
292
373
  purchase.amount = nil
293
374
  ```
294
375
 
@@ -313,7 +394,7 @@ Useful when you want to define multiple formatters for the same attribute.
313
394
  With...
314
395
 
315
396
  ```ruby
316
- pruchase = Purchase.new
397
+ purchase = Purchase.new
317
398
  purchase.paid = true
318
399
  purchase.amount = 20
319
400
  ```
@@ -339,7 +420,7 @@ purchase.amount_to_currency #=> "$20" # default suffix
339
420
  With...
340
421
 
341
422
  ```ruby
342
- pruchase = Purchase.new
423
+ purchase = Purchase.new
343
424
  purchase.amount = 20
344
425
  ```
345
426
 
@@ -1,74 +1,56 @@
1
1
  module HumanAttributes
2
2
  module Config
3
- TYPES = [
4
- {
5
- name: :currency,
6
- category: :numeric,
7
- formatter: :number_to_currency,
8
- suffix: :to_currency
9
- },
10
- {
11
- name: :number,
12
- category: :numeric,
13
- formatter: :number_to_human,
14
- suffix: :to_human
15
- },
16
- {
17
- name: :size,
18
- category: :numeric,
19
- formatter: :number_to_human_size,
20
- suffix: :to_human_size
21
- },
22
- {
23
- name: :percentage,
24
- category: :numeric,
25
- formatter: :number_to_percentage,
26
- suffix: :to_percentage
27
- },
28
- {
29
- name: :phone,
30
- category: :numeric,
31
- formatter: :number_to_phone,
32
- suffix: :to_phone
33
- },
34
- {
35
- name: :delimiter,
36
- category: :numeric,
37
- formatter: :number_with_delimiter,
38
- suffix: :with_delimiter
39
- },
40
- {
41
- name: :precision,
42
- category: :numeric,
43
- formatter: :number_with_precision,
44
- suffix: :with_precision
45
- },
46
- {
47
- name: :date,
48
- category: :date,
49
- suffix: :to_human_date
50
- },
51
- {
52
- name: :datetime,
53
- category: :datetime,
54
- suffix: :to_human_datetime
55
- },
56
- {
57
- name: :boolean,
58
- category: :boolean,
59
- suffix: :to_human_boolean
60
- },
61
- {
62
- name: :enumerize,
63
- category: :enumerize,
64
- suffix: :to_human_enum
65
- },
66
- {
67
- name: :custom,
68
- category: :custom,
69
- suffix: :to_custom_value
3
+ def self.build_type(name, category, suffix, formatter = nil)
4
+ config_type = {
5
+ name: name,
6
+ category: category,
7
+ suffix: suffix
70
8
  }
71
- ]
9
+ if formatter
10
+ config_type[:formatter] = formatter
11
+ end
12
+ config_type
13
+ end
14
+
15
+ TYPES = [
16
+ [:currency, :numeric, :to_currency, :number_to_currency],
17
+ [:number, :numeric, :to_human, :number_to_human],
18
+ [:size, :numeric, :to_human_size, :number_to_human_size],
19
+ [:percentage, :numeric, :to_percentage, :number_to_percentage],
20
+ [:phone, :numeric, :to_phone, :number_to_phone],
21
+ [:delimiter, :numeric, :with_delimiter, :number_with_delimiter],
22
+ [:precision, :numeric, :with_precision, :number_with_precision],
23
+ [:date, :date, :to_human_date],
24
+ [:datetime, :datetime, :to_human_datetime],
25
+ [:boolean, :boolean, :to_human_boolean],
26
+ [:enumerize, :enumerize, :to_human_enum],
27
+ [:enum, :enum, :to_human_enum],
28
+ [:custom, :custom, :to_custom_value]
29
+ ].map { |config_type| build_type(*config_type) }
30
+
31
+ OPTIONS = {
32
+ boolean: [
33
+ { boolean: true }
34
+ ],
35
+ date: [
36
+ { date: true },
37
+ { date: { format: :short, suffix: "to_short_date" } },
38
+ { date: { format: :short, suffix: "to_long_date" } },
39
+ { datetime: true },
40
+ { datetime: { format: :short, suffix: "to_short_datetime" } },
41
+ { datetime: { format: :short, suffix: "to_long_datetime" } }
42
+ ],
43
+ datetime: [
44
+ { datetime: true },
45
+ { datetime: { format: :short, suffix: "to_short_datetime" } },
46
+ { datetime: { format: :short, suffix: "to_long_datetime" } }
47
+ ],
48
+ decimal: [{ delimiter: true }],
49
+ enum: [{ enum: true }],
50
+ float: [{ delimiter: true }],
51
+ id: [{ custom: { formatter: ->(_o, value) { "#{_o.model_name.human}: ##{value}" } } }],
52
+ integer: [{ delimiter: true }]
53
+ }
72
54
 
73
55
  def category_by_type(type)
74
56
  type_config(type)[:category]
@@ -17,6 +17,7 @@ module HumanAttributes
17
17
  require_relative "./formatters/datetime"
18
18
  require_relative "./formatters/boolean"
19
19
  require_relative "./formatters/enumerize"
20
+ require_relative "./formatters/enum"
20
21
  require_relative "./formatters/custom"
21
22
  require_relative "./method_builder"
22
23
  require_relative "./extension"
@@ -18,6 +18,12 @@ module HumanAttributes
18
18
  end
19
19
  end
20
20
 
21
+ class NotEnumAttribute < RuntimeError
22
+ def initialize
23
+ super("needs to be a Rails Enum")
24
+ end
25
+ end
26
+
21
27
  class MissingFormatterOption < RuntimeError
22
28
  def initialize
23
29
  super("custom type needs formatter option with a proc")
@@ -7,7 +7,9 @@ module HumanAttributes
7
7
  formatters = HumanAttributes::FormattersBuilder.new(attrs, options).build
8
8
  @builder ||= HumanAttributes::MethodBuilder.new(self)
9
9
  @humanizers ||= []
10
- formatters.each { |formatter| @humanizers << @builder.build(formatter) }
10
+ formatters.each do |formatter|
11
+ @humanizers << @builder.build(formatter)
12
+ end
11
13
  end
12
14
 
13
15
  def humanize_attributes(options = {})
@@ -16,7 +18,7 @@ module HumanAttributes
16
18
  columns.each do |col|
17
19
  next if col.name.ends_with?("_id")
18
20
  next if included_attrs && !included_attrs.include?(col.name.to_sym)
19
- next if excluded_attrs && excluded_attrs.include?(col.name.to_sym)
21
+ next if excluded_attrs&.include?(col.name.to_sym)
20
22
 
21
23
  humanize_from_type(col)
22
24
  end
@@ -33,30 +35,21 @@ module HumanAttributes
33
35
  private
34
36
 
35
37
  def humanize_from_type(col)
36
- if col.name == "id"
37
- humanize(:id, custom: { formatter: ->(_o, value) { "#{model_name.human}: ##{value}" } })
38
- elsif col.type == :date
39
- humanize_date(col.name)
40
- elsif col.type == :datetime
41
- humanize_date(col.name)
42
- humanize_datetime(col.name)
43
- elsif [:decimal, :float, :integer].include?(col.type)
44
- humanize(col.name, delimiter: true)
45
- elsif col.type == :boolean
46
- humanize(col.name, boolean: true)
38
+ if HumanAttributes::Config::OPTIONS.has_key? humanizer_type(col)
39
+ HumanAttributes::Config::OPTIONS[humanizer_type(col)].each do |options|
40
+ humanize(col.name, options)
41
+ end
47
42
  end
48
43
  end
49
44
 
50
- def humanize_date(attr_name)
51
- humanize(attr_name, date: true)
52
- humanize(attr_name, date: { format: :short, suffix: "to_short_date" })
53
- humanize(attr_name, date: { format: :short, suffix: "to_long_date" })
54
- end
55
-
56
- def humanize_datetime(attr_name)
57
- humanize(attr_name, datetime: true)
58
- humanize(attr_name, datetime: { format: :short, suffix: "to_short_datetime" })
59
- humanize(attr_name, datetime: { format: :short, suffix: "to_long_datetime" })
45
+ def humanizer_type(col)
46
+ type = col.type
47
+ if col.name == 'id'
48
+ type = 'id'
49
+ elsif defined_enums.has_key?(col.name)
50
+ type = 'enum'
51
+ end
52
+ type.to_sym
60
53
  end
61
54
  end
62
55
  end
@@ -0,0 +1,25 @@
1
+ module HumanAttributes
2
+ module Formatters
3
+ class Enum < Base
4
+ def apply(_instance, value)
5
+ return unless value
6
+
7
+ is_enum_defined = _instance.class.defined_enums.has_key?(attribute.to_s)
8
+ raise_error('NotEnumAttribute') unless is_enum_defined
9
+ class_name = _instance.class.name.underscore
10
+ pluralized_attribute = attribute.to_s.pluralize
11
+ attr_key = "activerecord.attributes.#{class_name}.#{pluralized_attribute}.#{value}"
12
+ enum_key = "enum.defaults.#{pluralized_attribute}.#{value}"
13
+ translate(attr_key, translate(enum_key, value))
14
+ end
15
+
16
+ def translate(key, default)
17
+ I18n.t(key, { default: default })
18
+ end
19
+
20
+ def enum_defined?(_instance)
21
+ _instance.class.defined_enums.has_key?(attribute.to_s)
22
+ end
23
+ end
24
+ end
25
+ end
@@ -1,3 +1,3 @@
1
1
  module HumanAttributes
2
- VERSION = "0.7.0"
2
+ VERSION = "0.7.1"
3
3
  end
@@ -2,16 +2,19 @@
2
2
  #
3
3
  # Table name: purchases
4
4
  #
5
- # id :integer not null, primary key
6
- # paid :boolean
7
- # commission :decimal(, )
8
- # quantity :integer
9
- # state :string
10
- # expired_at :datetime
11
- # amount :decimal(, )
12
- # description :text
13
- # created_at :datetime not null
14
- # updated_at :datetime not null
5
+ # id :integer not null, primary key
6
+ # paid :boolean
7
+ # commission :decimal(, )
8
+ # quantity :integer
9
+ # state :string
10
+ # expired_at :datetime
11
+ # amount :decimal(, )
12
+ # description :text
13
+ # created_at :datetime not null
14
+ # updated_at :datetime not null
15
+ # payment_method :integer
16
+ # shipping :integer
17
+ # store :integer
15
18
  #
16
19
 
17
20
  require "enumerize"
@@ -22,9 +25,15 @@ class Purchase < ApplicationRecord
22
25
  STATES = %i{pending canceled finished}
23
26
 
24
27
  enumerize :state, in: STATES, default: :pending
28
+ enum payment_method: [:credit, :debit, :cash, :bitcoin]
29
+ enum shipping: [:standard, :express]
30
+ enum store: [:physical, :online]
25
31
 
26
32
  humanize_attributes
27
33
  humanize :state, enumerize: true
28
34
  humanize :commission, percentage: true
29
35
  humanize :amount, currency: true
36
+ humanize :payment_method, enum: true
37
+ humanize :shipping, enum: true
38
+ humanize :store, enum: true
30
39
  end
@@ -33,3 +33,18 @@ en:
33
33
  boolean:
34
34
  positive: "Yes"
35
35
  negative: "No"
36
+ enum:
37
+ defaults:
38
+ shippings:
39
+ standard: "Standard"
40
+ express: "Express"
41
+ activerecord:
42
+ attributes:
43
+ purchase:
44
+ payment_methods:
45
+ credit: "Credit Card"
46
+ debit: "Debit Card"
47
+ cash: "Cash"
48
+ bitcoin: "Bitcoin"
49
+
50
+
@@ -0,0 +1,5 @@
1
+ class AddPaymentMethodToPurchase < ActiveRecord::Migration[6.1]
2
+ def change
3
+ add_column :purchases, :payment_method, :integer
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ class AddShippingToPurchase < ActiveRecord::Migration[6.1]
2
+ def change
3
+ add_column :purchases, :shipping, :integer
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ class AddStoreToPurchase < ActiveRecord::Migration[6.1]
2
+ def change
3
+ add_column :purchases, :store, :integer
4
+ end
5
+ end
@@ -10,8 +10,7 @@
10
10
  #
11
11
  # It's strongly recommended that you check this file into your version control system.
12
12
 
13
- ActiveRecord::Schema.define(version: 2016_11_13_032308) do
14
-
13
+ ActiveRecord::Schema.define(version: 2021_11_03_114830) do
15
14
  create_table "purchases", force: :cascade do |t|
16
15
  t.boolean "paid"
17
16
  t.decimal "commission"
@@ -22,6 +21,8 @@ ActiveRecord::Schema.define(version: 2016_11_13_032308) do
22
21
  t.text "description"
23
22
  t.datetime "created_at", null: false
24
23
  t.datetime "updated_at", null: false
24
+ t.integer "payment_method"
25
+ t.integer "shipping"
26
+ t.integer "store"
25
27
  end
26
-
27
28
  end
@@ -6,5 +6,8 @@ FactoryBot.define do
6
6
  expired_at { "1984-04-06 09:00" }
7
7
  amount { 2_000_000.95 }
8
8
  description { "Just a text" }
9
+ payment_method { 'debit' }
10
+ shipping { 'express' }
11
+ store { 'online' }
9
12
  end
10
13
  end
@@ -293,7 +293,50 @@ RSpec.describe "ActiveRecordExtension" do
293
293
  end
294
294
  end
295
295
 
296
- context "with date and datetime formats" do
296
+ context "with Enum attributes" do
297
+ context "with attribute translation" do
298
+ before do
299
+ class Purchase < ApplicationRecord
300
+ humanize :payment_method, enum: true
301
+ end
302
+ end
303
+
304
+ it { expect(purchase.human_payment_method).to eq("Debit Card") }
305
+ end
306
+ context "with enum default translation" do
307
+ before do
308
+ class Purchase < ApplicationRecord
309
+ humanize :shipping, enum: true
310
+ end
311
+ end
312
+
313
+ it { expect(purchase.human_shipping).to eq("Express") }
314
+ end
315
+ context "without translation" do
316
+ before do
317
+ class Purchase < ApplicationRecord
318
+ humanize :store, enum: true
319
+ end
320
+ end
321
+
322
+ it { expect(purchase.human_store).to eq("online") }
323
+ end
324
+ context "with no enum value" do
325
+ before do
326
+ class Purchase < ApplicationRecord
327
+ humanize :quantity, enum: true
328
+ end
329
+ end
330
+
331
+ it do
332
+ expect { purchase.human_quantity }.to(
333
+ raise_error(HumanAttributes::Error::NotEnumAttribute)
334
+ )
335
+ end
336
+ end
337
+ end
338
+
339
+ context "with date and datetime format" do
297
340
  before { purchase.expired_at = "04/06/1984 09:20:00" }
298
341
  before { purchase.created_at = "04/06/1985 09:20:00" }
299
342
 
@@ -364,6 +407,9 @@ RSpec.describe "ActiveRecordExtension" do
364
407
  it { expect(purchase.human_amount).to eq("2,000,000.95") }
365
408
  it { expect(purchase.human_expired_at).to eq("Fri, 06 Apr 1984 09:00:00 +0000") }
366
409
  it { expect(purchase.expired_at_to_short_datetime).to eq("06 Apr 09:00") }
410
+ it { expect(purchase.human_payment_method).to eq("Debit Card") }
411
+ it { expect(purchase.human_shipping).to eq("Express") }
412
+ it { expect(purchase.human_store).to eq("online") }
367
413
  it { expect(purchase).to respond_to(:human_created_at) }
368
414
  it { expect(purchase).to respond_to(:created_at_to_short_datetime) }
369
415
  it { expect(purchase).to respond_to(:human_updated_at) }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: human_attributes
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.7.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Platanus
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2021-06-08 00:00:00.000000000 Z
12
+ date: 2022-11-14 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: factory_bot
@@ -206,11 +206,9 @@ files:
206
206
  - ".circleci/setup-rubygems.sh"
207
207
  - ".coveralls.yml"
208
208
  - ".gitignore"
209
- - ".hound.yml"
210
209
  - ".rspec"
211
210
  - ".rubocop.yml"
212
211
  - ".ruby-version"
213
- - ".travis.yml"
214
212
  - CHANGELOG.md
215
213
  - Gemfile
216
214
  - Gemfile.lock
@@ -229,6 +227,7 @@ files:
229
227
  - lib/human_attributes/formatters/custom.rb
230
228
  - lib/human_attributes/formatters/date.rb
231
229
  - lib/human_attributes/formatters/datetime.rb
230
+ - lib/human_attributes/formatters/enum.rb
232
231
  - lib/human_attributes/formatters/enumerize.rb
233
232
  - lib/human_attributes/formatters/numeric.rb
234
233
  - lib/human_attributes/formatters_builder.rb
@@ -278,6 +277,9 @@ files:
278
277
  - spec/dummy/config/routes.rb
279
278
  - spec/dummy/config/storage.yml
280
279
  - spec/dummy/db/migrate/20161113032308_create_purchases.rb
280
+ - spec/dummy/db/migrate/20211006145358_add_payment_method_to_purchase.rb
281
+ - spec/dummy/db/migrate/20211103114451_add_shipping_to_purchase.rb
282
+ - spec/dummy/db/migrate/20211103114830_add_store_to_purchase.rb
281
283
  - spec/dummy/db/schema.rb
282
284
  - spec/dummy/public/404.html
283
285
  - spec/dummy/public/422.html
@@ -359,6 +361,9 @@ test_files:
359
361
  - spec/dummy/config/routes.rb
360
362
  - spec/dummy/config/storage.yml
361
363
  - spec/dummy/db/migrate/20161113032308_create_purchases.rb
364
+ - spec/dummy/db/migrate/20211006145358_add_payment_method_to_purchase.rb
365
+ - spec/dummy/db/migrate/20211103114451_add_shipping_to_purchase.rb
366
+ - spec/dummy/db/migrate/20211103114830_add_store_to_purchase.rb
362
367
  - spec/dummy/db/schema.rb
363
368
  - spec/dummy/public/404.html
364
369
  - spec/dummy/public/422.html
data/.hound.yml DELETED
@@ -1,4 +0,0 @@
1
- ---
2
- ruby:
3
- enabled: true
4
- config_file: ".rubocop.yml"
data/.travis.yml DELETED
@@ -1,15 +0,0 @@
1
- sudo: false
2
- language: ruby
3
- rvm:
4
- - 2.3.1
5
- script:
6
- - RAILS_ENV=test bundle exec rake db:create db:migrate
7
- - bundle exec rspec spec
8
- deploy:
9
- provider: rubygems
10
- api_key:
11
- secure: E6ajLuO5il2IstmXIMo+jVqLN8x5GO7LVLSRolZwxYHOiN28OYJbPvKGKCEoDJ0l8XHcsJJAaaKKGg9rJEtzoqCVDvIyf4Zmp3XW804yVEoO9m69gJRn7TDbVvEFyJDPwWDG0Li9J4FbmyLoubqPT4KjTC8tVzYN7cKo9FbHlvtS1F9DvnmvyYVW/dU3iuQDFFD0ctO32+9TS1RnJ9RJXEFJd2GFX2eIKJgvlSQZeI2ZgXVZ1PSZVKElkIQLMnhDJVy/Zj/wde1eRzU/AXNQi5p+4LLnLOAxiqWCq8LsPufmuDHZlpkXBOjXYPhaLiRZFeKu/ymBGEu/FqXkpu//ANQDKZS5AkhbddAfZcR3+hRiCb5pUKuRX5X912w20ormNePKYwfs//WpZECneL3UaPq4T4msstOTjeBomJ99zvpU7DC1LAVv1ja1e44eHd3lXasVtXOFMJUv2eTncGY+nVqdqyFFTnB59AtloxfTFaGI9e894rE7dpxEzPO3UOVeBodBH8CkZVMG6OWiP7zkF9vqfrrBETiQXlyGaN9XEk8G+y6Rui8eoETXZYJKfXHPZnv56ntTBHoMu7VWdYPVuwuKKIyaOoNJPsIbKRbF7O9XWkb5/HbDPnt8Q+eFEntYP3Jr+YelghAKN2RX0CDhXFUBxxf7Ew7GEvt2tpbHq44=
12
- gem: human_attributes
13
- on:
14
- tags: true
15
- repo: platanus/human_attributes