human_attributes 0.7.0 → 0.7.1

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: 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