enumerate_it 1.4.1 → 1.5.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
  SHA1:
3
- metadata.gz: 4943e572df6193e5f41c491ad6a9e67706a2d479
4
- data.tar.gz: e4c9c820a8d60911359b158b82cc65fcd647ed8b
3
+ metadata.gz: 73ff26eab60abc3e49c03132a0c3e069fc985da4
4
+ data.tar.gz: 2681588dd7bc52233d62f47023dee81c7fc3724a
5
5
  SHA512:
6
- metadata.gz: 41fa7c96c3413fa108099c981003b3b3b3a543a0299c03189d64dbb8bff2ed209b2f268868c2836f9532c662236ebf98095513c73f6f20fc73938dbfc6d7b45d
7
- data.tar.gz: 1f8c1f5fe4ff3b75f56081b061d50f6ae6f7a789290e5e20092407affd0f184f3ccd0bdbcadfe153917bf8a7d8e9aab26bd12216057e1c76c33fc100e92e5127
6
+ metadata.gz: b08595f1b91a21a996b6bf1b36ea41e8235d516b9c99b96416b1149dae08a0097b7e47c7c5522d6ef63a15bdb278b7ff7727c7e3d2dd3e410e3f331dd770ed89
7
+ data.tar.gz: 400d30edda48484eec9eac387e64fe7d30c929a84a25cecea3e2f85a6f7264b636dde7d03d4686889f612e73b2dcbcb47e5993f0a773a37c2f83759a5d99f01a
@@ -17,6 +17,10 @@ Lint/EndAlignment:
17
17
  Metrics/LineLength:
18
18
  Max: 100
19
19
 
20
+ Metrics/BlockLength:
21
+ Exclude:
22
+ - 'spec/**/*'
23
+
20
24
  Style/AlignHash:
21
25
  EnforcedLastArgumentHashStyle: ignore_implicit
22
26
 
@@ -50,3 +54,6 @@ RSpec/NestedGroups:
50
54
 
51
55
  RSpec/MessageExpectation:
52
56
  Enabled: false
57
+
58
+ RSpec/MessageSpies:
59
+ Enabled: false
@@ -5,15 +5,15 @@ sudo: false
5
5
  cache: bundler
6
6
 
7
7
  script:
8
- - "ruby -e \"RUBY_VERSION == '2.3.3' ? system('bundle exec rubocop') : exit(0)\""
8
+ - "ruby -e \"RUBY_VERSION == '2.4.1' ? system('bundle exec rubocop') : exit(0)\""
9
9
  - bundle exec rake spec
10
10
 
11
11
  rvm:
12
- - 1.9.3
13
12
  - 2.0.0
14
13
  - 2.1.10
15
- - 2.2.5
16
- - 2.3.3
14
+ - 2.2.7
15
+ - 2.3.4
16
+ - 2.4.1
17
17
 
18
18
  gemfile:
19
19
  - gemfiles/rails_3.0.gemfile
@@ -25,15 +25,20 @@ gemfile:
25
25
  - gemfiles/rails_5.0.gemfile
26
26
 
27
27
  matrix:
28
- # Rails 5 requires Ruby version 2.2+
29
28
  exclude:
30
- - rvm: 1.9.3
31
- gemfile: gemfiles/rails_5.0.gemfile
29
+ # Rails 5 requires Ruby version 2.2+
32
30
  - rvm: 2.0.0
33
31
  gemfile: gemfiles/rails_5.0.gemfile
34
32
  - rvm: 2.1.10
35
33
  gemfile: gemfiles/rails_5.0.gemfile
36
34
 
35
+ # Rails 4.0 and 4.1 requires an old version of `json` gem, which isn't compatible with Ruby 2.4+
36
+ # https://github.com/flori/json/issues/308
37
+ - rvm: 2.4.1
38
+ gemfile: gemfiles/rails_4.0.gemfile
39
+ - rvm: 2.4.1
40
+ gemfile: gemfiles/rails_4.1.gemfile
41
+
37
42
  addons:
38
43
  code_climate:
39
44
  repo_token: 60e4a18e2a4bc86a98f92847f16756876c13d1e772058a9b3296643b04a697d7
data/Appraisals CHANGED
@@ -1,9 +1,10 @@
1
+ require 'net/http'
1
2
  require 'json'
2
3
 
3
4
  rails_versions = JSON.parse(Net::HTTP.get(URI('https://rubygems.org/api/v1/versions/rails.json')))
4
- .group_by { |version| version['number'] }.keys.select { |key| key !~ /rc|racecar|beta|pre/ }
5
+ .group_by { |version| version['number'] }.keys.reject { |key| key =~ /rc|racecar|beta|pre/ }
5
6
 
6
- %w(3.0 3.1 3.2 4.0 4.1 4.2 5.0).each do |version|
7
+ %w[3.0 3.1 3.2 4.0 4.1 4.2 5.0].each do |version|
7
8
  appraise "rails_#{version}" do
8
9
  current_version = rails_versions.select { |key| key.match(/\A#{version}/) }.max
9
10
 
@@ -1,36 +1,37 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- enumerate_it (1.4.1)
4
+ enumerate_it (1.5.0)
5
5
  activesupport (>= 3.0.0)
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
- activesupport (5.0.1)
10
+ activesupport (5.0.2)
11
11
  concurrent-ruby (~> 1.0, >= 1.0.2)
12
12
  i18n (~> 0.7)
13
13
  minitest (~> 5.1)
14
14
  tzinfo (~> 1.1)
15
- appraisal (2.1.0)
15
+ appraisal (2.2.0)
16
16
  bundler
17
17
  rake
18
18
  thor (>= 0.14.0)
19
19
  ast (2.3.0)
20
20
  coderay (1.1.1)
21
- concurrent-ruby (1.0.3)
22
- diff-lcs (1.2.5)
23
- i18n (0.7.0)
21
+ concurrent-ruby (1.0.5)
22
+ diff-lcs (1.3)
23
+ i18n (0.8.1)
24
24
  method_source (0.8.2)
25
25
  minitest (5.10.1)
26
- parser (2.3.3.1)
26
+ parser (2.4.0.0)
27
27
  ast (~> 2.2)
28
28
  powerpack (0.1.1)
29
29
  pry (0.10.4)
30
30
  coderay (~> 1.1.0)
31
31
  method_source (~> 0.8.1)
32
32
  slop (~> 3.4)
33
- rainbow (2.1.0)
33
+ rainbow (2.2.2)
34
+ rake
34
35
  rake (12.0.0)
35
36
  rspec (3.5.0)
36
37
  rspec-core (~> 3.5.0)
@@ -45,21 +46,22 @@ GEM
45
46
  diff-lcs (>= 1.2.0, < 2.0)
46
47
  rspec-support (~> 3.5.0)
47
48
  rspec-support (3.5.0)
48
- rubocop (0.46.0)
49
- parser (>= 2.3.1.1, < 3.0)
49
+ rubocop (0.48.1)
50
+ parser (>= 2.3.3.1, < 3.0)
50
51
  powerpack (~> 0.1)
51
52
  rainbow (>= 1.99.1, < 3.0)
52
53
  ruby-progressbar (~> 1.7)
53
54
  unicode-display_width (~> 1.0, >= 1.0.1)
54
- rubocop-rspec (1.8.0)
55
+ rubocop-rspec (1.15.0)
55
56
  rubocop (>= 0.42.0)
56
57
  ruby-progressbar (1.8.1)
57
58
  slop (3.6.0)
58
59
  thor (0.19.4)
59
- thread_safe (0.3.5)
60
- tzinfo (1.2.2)
60
+ thread_safe (0.3.6)
61
+ tzinfo (1.2.3)
61
62
  thread_safe (~> 0.1)
62
- unicode-display_width (1.1.2)
63
+ unicode-display_width (1.2.1)
64
+ wwtd (1.3.0)
63
65
 
64
66
  PLATFORMS
65
67
  ruby
@@ -73,6 +75,7 @@ DEPENDENCIES
73
75
  rspec
74
76
  rubocop
75
77
  rubocop-rspec
78
+ wwtd
76
79
 
77
80
  BUNDLED WITH
78
- 1.13.6
81
+ 1.14.6
data/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2010-2016 Cássio Marques and Lucas Caton
1
+ Copyright (c) 2010-2017 Cássio Marques and Lucas Caton
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/README.md CHANGED
@@ -1,9 +1,10 @@
1
1
  # EnumerateIt
2
2
 
3
- Ruby Enumerations with magic powers!
3
+ 💎 Ruby Enumerations with magic powers! 🎩
4
4
 
5
5
  [![Build Status](https://travis-ci.org/lucascaton/enumerate_it.svg?branch=master)](https://travis-ci.org/lucascaton/enumerate_it)
6
6
  [![Gem Version](https://badge.fury.io/rb/enumerate_it.svg)](https://rubygems.org/gems/enumerate_it)
7
+ [![Dependency Status](https://gemnasium.com/badges/github.com/lucascaton/enumerate_it.svg)](https://gemnasium.com/github.com/lucascaton/enumerate_it)
7
8
  [![Code Climate](https://codeclimate.com/github/lucascaton/enumerate_it/badges/gpa.svg)](https://codeclimate.com/github/lucascaton/enumerate_it)
8
9
  [![Changelog](https://img.shields.io/badge/changelog--brightgreen.svg?style=flat)](https://github.com/lucascaton/enumerate_it/releases)
9
10
 
@@ -11,25 +12,27 @@ Ruby Enumerations with magic powers!
11
12
 
12
13
  ### Why would I want a gem if Rails already has native enumerations support?
13
14
 
14
- Firstly, **EnumerateIt** works amazingly well along with **Rails** but it is not required!
15
- It means you can add it to any **Ruby** project! 😀
15
+ Firstly, although **EnumerateIt** works well with **Rails**, it isn't required!
16
+ It means you can add it to any **Ruby** project! Secondly, you can
17
+ [define your enumerations in classes](https://github.com/lucascaton/enumerate_it#creating-enumerations),
18
+ so you can **add behaviour** and also **reuse** them! 😀
16
19
 
17
- Secondly, Rails' enumerations have a problem:
18
- [`ActiveRecord::Enum`](http://edgeapi.rubyonrails.org/classes/ActiveRecord/Enum.html) uses
19
- `integers` instead of `strings`, which means that if you change your enumeration list oder in your
20
- model, your database will no longer be consistent.
21
- Database storage pricing is not a problem nowadays, so it's recommended to use `strings` columns.
20
+ ---
21
+
22
+ <!-- Tocer[start]: Auto-generated, don't remove. -->
22
23
 
23
24
  - [Installation](#installation)
24
25
  - [Using with Rails](#using-with-rails)
25
26
  - [Creating enumerations](#creating-enumerations)
26
27
  - [Sorting enumerations](#sorting-enumerations)
27
28
  - [Using enumerations](#using-enumerations)
28
- - [I18n](#i18n)
29
- - [Using enumerations to handle a legacy database](#using-enumerations-to-handle-a-legacy-database)
30
29
  - [FAQ](#faq)
30
+ - [I18n](#i18n)
31
+ - [Handling a legacy database](#handling-a-legacy-database)
31
32
  - [Changelog](#changelog)
32
33
 
34
+ <!-- Tocer[finish]: Auto-generated, don't remove. -->
35
+
33
36
  ## Installation
34
37
 
35
38
  ```bash
@@ -79,7 +82,7 @@ This will create some nice stuff:
79
82
 
80
83
  ```ruby
81
84
  RelationshipStatus::SINGLE
82
- # => 'single'
85
+ #=> 'single'
83
86
 
84
87
  RelationshipStatus::MARRIED
85
88
  #=> 'married'
@@ -99,8 +102,8 @@ This will create some nice stuff:
99
102
  #=> "[{\"value\":\"divorced\",\"label\":\"Divorced\"},{\"value\":\"married\", ...
100
103
  ```
101
104
 
102
- * You can get an array of options, ready to use with the 'select',
103
- 'select_tag', etc family of Rails helpers.
105
+ * You can get an array of options, ready to use with the `select`, `select_tag`, etc. family of
106
+ Rails helpers.
104
107
 
105
108
  ```ruby
106
109
  RelationshipStatus.to_a
@@ -155,25 +158,28 @@ This will create some nice stuff:
155
158
 
156
159
  ### Sorting enumerations
157
160
 
158
- When calling methods like `to_a`, `to_json` and `list`, the returned values will be sorted using
159
- the translation for each one of the enumeration values. If you want to overwrite the default sort
160
- mode, you can use the `sort_by` class method.
161
+ When calling methods like `to_a`, `to_json` and `list`, the returned values will be sorted by
162
+ default in the same order passed to `associate_values` call.
163
+
164
+ However, if you want to overwrite the default sort mode, you can use the `sort_by` class method:
165
+
161
166
 
162
167
  ```ruby
163
168
  class RelationshipStatus < EnumerateIt::Base
164
- associate_values married: 1, single: 2
169
+ associate_values :single, :married
165
170
 
166
171
  sort_by :translation
167
172
  end
168
173
  ```
169
174
 
170
- The `sort_by` methods accept one of the following values:
175
+ The `sort_by` method accepts one of the following values:
171
176
 
172
177
  | Value | Behavior |
173
178
  | :------------- | :------------------------------------------------------------------------------------------- |
174
179
  | `:none` | The default behavior, will return values in order that was passed to `associate_values` call |
175
- | `:translation` | will sort the returned values based on translations |
176
180
  | `:name` | Will sort the returned values based on the name of each enumeration option |
181
+ | `:translation` | will sort the returned values based on their translations |
182
+ | `:value` | See [Handling a legacy database](#handling-a-legacy-database) section for more details |
177
183
 
178
184
  ## Using enumerations
179
185
 
@@ -206,7 +212,7 @@ This will create:
206
212
  ```
207
213
 
208
214
  * A translation for your options, if you include a locale to represent it
209
- (see more in the [#i18n](I18n section):
215
+ (see more in the [I18n section](#i18n)).
210
216
 
211
217
  ```ruby
212
218
  p = Person.new
@@ -326,7 +332,7 @@ This will create:
326
332
  #=> SELECT "users".* FROM "users" WHERE "users"."relationship_status" = "married"
327
333
  ```
328
334
 
329
- The `:create_scopes` also accepts :prefix option.
335
+ The `:create_scopes` also accepts `prefix` option.
330
336
 
331
337
  ```ruby
332
338
  class Person < ActiveRecord::Base
@@ -382,12 +388,30 @@ This will create:
382
388
  Remember that you can add validations to any kind of class and not only to those derived from
383
389
  `ActiveRecord::Base`.
384
390
 
385
- ### Why to define enumerations outside the class that uses them?
391
+ ## FAQ
392
+
393
+ #### Why to define enumerations outside the class that uses them?
386
394
 
387
395
  * It's clearer.
388
396
  * You can add behaviour to the enumeration class.
389
397
  * You can reuse the enumeration inside other classes.
390
398
 
399
+ #### Can I use `enumerate_it` gem without Rails?
400
+
401
+ You sure can! 😄
402
+
403
+ #### What versions of Ruby and Rails are supported?
404
+
405
+ * **Ruby** `2.0` or higher
406
+ * **Rails** `3.0` or higher
407
+
408
+ All versions are tested via
409
+ [Travis](https://github.com/lucascaton/enumerate_it/blob/master/.travis.yml).
410
+
411
+ #### Can I set a value to always be at the end of a sorted list?
412
+
413
+ Yes, [see more details here](https://github.com/lucascaton/enumerate_it/issues/60).
414
+
391
415
  ## I18n
392
416
 
393
417
  I18n lookup is provided on both `_humanized` and `Enumeration#to_a` methods, given the hash key is
@@ -411,7 +435,7 @@ end
411
435
 
412
436
  p = Person.new
413
437
  p.relationship_status = RelationshipStatus::MARRIED
414
- p.relationship_status_humanize
438
+ p.relationship_status_humanize # Existent key
415
439
  #=> 'Casado'
416
440
 
417
441
  p.relationship_status = RelationshipStatus::SINGLE
@@ -427,7 +451,7 @@ RelationshipStatus.t(status)
427
451
  #=> 'Casado'
428
452
  ```
429
453
 
430
- ## Using enumerations to handle a legacy database
454
+ ## Handling a legacy database
431
455
 
432
456
  **EnumerateIt** can help you build a Rails application around a legacy database which was filled
433
457
  with those small and unchangeable tables used to create foreign key constraints everywhere, like the
@@ -458,10 +482,11 @@ key pointing to the `relationship_status` table.
458
482
 
459
483
  While this is a good thing from the database normalization perspective, managing these values in
460
484
  tests is very hard. Doing database joins just to get the description of some value is absurd.
461
- And, more than this, referencing them in the code using magic numbers was terrible and meaningless:
462
- What does it mean when we say that someone or something is `2`?
485
+ And, more than this, referencing them in the code using
486
+ [magic numbers](https://en.wikipedia.org/wiki/Magic_number_(programming)) was terrible and
487
+ meaningless: what does it mean when we say that someone or something is `2`?
463
488
 
464
- In this case, you can pass a hash:
489
+ To solve this, you can pass a **hash** to your enumeration values:
465
490
 
466
491
  ```ruby
467
492
  class RelationshipStatus < EnumerateIt::Base
@@ -478,17 +503,7 @@ RelationshipStatus::MARRIED
478
503
  #=> 2
479
504
  ```
480
505
 
481
- You can also sort it by its value: `sort_by :value`.
482
-
483
- ## FAQ
484
-
485
- #### What versions of Ruby and Rails are supported?
486
-
487
- Please check out [travis config file](https://github.com/lucascaton/enumerate_it/blob/master/.travis.yml).
488
-
489
- #### Can I set a value to always be at the end of a sorted list?
490
-
491
- Yes, please see [issue #60](https://github.com/lucascaton/enumerate_it/issues/60).
506
+ You can also sort it by its **value** using `sort_by :value`.
492
507
 
493
508
  ## Changelog
494
509
 
@@ -499,11 +514,11 @@ Changes are maintained under [Releases](https://github.com/lucascaton/enumerate_
499
514
  * Fork the project.
500
515
  * Make your feature addition or bug fix.
501
516
  * Add tests for it. This is important so we don't break it in a future version unintentionally.
502
- * [Optional] Run the tests agaist a specific Gemfile: `$ appraisal rails_5.0 rake spec`.
503
- * Run the tests agaist all supported versions: `$ rake`.
517
+ * [Optional] Run the tests agaist a specific Gemfile: `$ bundle exec appraisal rails_5.0 rake spec`.
518
+ * Run the tests agaist all supported versions: `$ bundle exec rake` (or `$ bundle exec wwtd`)
504
519
  * Commit, but please do not mess with `Rakefile`, version, or history.
505
520
  * Send a Pull Request. Bonus points for topic branches.
506
521
 
507
522
  ## Copyright
508
523
 
509
- Copyright (c) 2010-2016 Cássio Marques and Lucas Caton. See `LICENSE` file for details.
524
+ Copyright (c) 2010-2017 Cássio Marques and Lucas Caton. See `LICENSE` file for details.
@@ -11,7 +11,7 @@ Gem::Specification.new do |gem|
11
11
  gem.name = 'enumerate_it'
12
12
  gem.require_paths = ['lib']
13
13
  gem.version = EnumerateIt::VERSION
14
- gem.required_ruby_version = '>= 1.9.3'
14
+ gem.required_ruby_version = '>= 2.0.0'
15
15
 
16
16
  gem.add_dependency 'activesupport', '>= 3.0.0'
17
17
 
@@ -20,6 +20,7 @@ Gem::Specification.new do |gem|
20
20
  gem.add_development_dependency 'pry'
21
21
  gem.add_development_dependency 'rake'
22
22
  gem.add_development_dependency 'rspec'
23
+ gem.add_development_dependency 'wwtd'
23
24
 
24
25
  if RUBY_VERSION >= '2.2.0'
25
26
  gem.add_development_dependency 'rubocop'
@@ -0,0 +1,2 @@
1
+ ---
2
+ BUNDLE_RETRY: "1"
@@ -5,4 +5,4 @@ source "https://rubygems.org"
5
5
  gem "activesupport", "~> 3.0.9"
6
6
  gem "activerecord", "~> 3.0.9"
7
7
 
8
- gemspec :path => "../"
8
+ gemspec path: "../"
@@ -5,4 +5,4 @@ source "https://rubygems.org"
5
5
  gem "activesupport", "~> 3.1.9"
6
6
  gem "activerecord", "~> 3.1.9"
7
7
 
8
- gemspec :path => "../"
8
+ gemspec path: "../"
@@ -5,4 +5,4 @@ source "https://rubygems.org"
5
5
  gem "activesupport", "~> 3.2.9"
6
6
  gem "activerecord", "~> 3.2.9"
7
7
 
8
- gemspec :path => "../"
8
+ gemspec path: "../"
@@ -5,4 +5,4 @@ source "https://rubygems.org"
5
5
  gem "activesupport", "~> 4.0.9"
6
6
  gem "activerecord", "~> 4.0.9"
7
7
 
8
- gemspec :path => "../"
8
+ gemspec path: "../"
@@ -5,4 +5,4 @@ source "https://rubygems.org"
5
5
  gem "activesupport", "~> 4.1.9"
6
6
  gem "activerecord", "~> 4.1.9"
7
7
 
8
- gemspec :path => "../"
8
+ gemspec path: "../"
@@ -2,7 +2,7 @@
2
2
 
3
3
  source "https://rubygems.org"
4
4
 
5
- gem "activesupport", "~> 4.2.7.1"
6
- gem "activerecord", "~> 4.2.7.1"
5
+ gem "activesupport", "~> 4.2.8"
6
+ gem "activerecord", "~> 4.2.8"
7
7
 
8
- gemspec :path => "../"
8
+ gemspec path: "../"
@@ -2,7 +2,7 @@
2
2
 
3
3
  source "https://rubygems.org"
4
4
 
5
- gem "activesupport", "~> 5.0.1"
6
- gem "activerecord", "~> 5.0.1"
5
+ gem "activesupport", "~> 5.0.2"
6
+ gem "activerecord", "~> 5.0.2"
7
7
 
8
- gemspec :path => "../"
8
+ gemspec path: "../"
@@ -126,7 +126,6 @@ module EnumerateIt
126
126
 
127
127
  args.each_with_object({}) do |value, hash|
128
128
  hash[value] = value.to_s
129
- hash
130
129
  end
131
130
  end
132
131
  end
@@ -18,7 +18,7 @@ module EnumerateIt
18
18
  set_validations(attribute, options) unless options[:skip_validation]
19
19
 
20
20
  if options[:create_helpers]
21
- %w(create_helper_methods create_mutator_methods create_polymorphic_methods).each do |method|
21
+ %w[create_helper_methods create_mutator_methods create_polymorphic_methods].each do |method|
22
22
  send(method, options[:with], attribute, options[:create_helpers])
23
23
  end
24
24
  end
@@ -53,12 +53,12 @@ module EnumerateIt
53
53
  end
54
54
 
55
55
  def create_scopes(klass, attribute_name, helpers)
56
+ return unless respond_to? :scope
57
+
56
58
  prefix_name = "#{attribute_name}_" if helpers.is_a?(Hash) && helpers[:prefix]
57
59
 
58
60
  klass.enumeration.keys.each do |key|
59
- if respond_to? :scope
60
- scope "#{prefix_name}#{key}", -> { where(attribute_name => klass.enumeration[key].first) }
61
- end
61
+ scope("#{prefix_name}#{key}", -> { where(attribute_name => klass.enumeration[key].first) })
62
62
  end
63
63
  end
64
64
 
@@ -1,3 +1,3 @@
1
1
  module EnumerateIt
2
- VERSION = '1.4.1'.freeze
2
+ VERSION = '1.5.0'.freeze
3
3
  end
@@ -21,7 +21,7 @@ describe EnumerateIt::Base do
21
21
 
22
22
  describe '.list' do
23
23
  it "creates a method that returns the allowed values in the enumeration's class" do
24
- expect(TestEnumeration.list).to eq(%w(1 2 3))
24
+ expect(TestEnumeration.list).to eq(%w[1 2 3])
25
25
  end
26
26
 
27
27
  context 'specifying a default sort mode' do
@@ -30,25 +30,25 @@ describe EnumerateIt::Base do
30
30
  context 'by value' do
31
31
  let(:sort_mode) { :value }
32
32
 
33
- it { is_expected.to eq(%w(0 1 2 3)) }
33
+ it { is_expected.to eq(%w[0 1 2 3]) }
34
34
  end
35
35
 
36
36
  context 'by name' do
37
37
  let(:sort_mode) { :name }
38
38
 
39
- it { is_expected.to eq(%w(2 1 3 0)) }
39
+ it { is_expected.to eq(%w[2 1 3 0]) }
40
40
  end
41
41
 
42
42
  context 'by translation' do
43
43
  let(:sort_mode) { :translation }
44
44
 
45
- it { is_expected.to eq(%w(3 2 0 1)) }
45
+ it { is_expected.to eq(%w[3 2 0 1]) }
46
46
  end
47
47
 
48
48
  context 'by nothing' do
49
49
  let(:sort_mode) { :none }
50
50
 
51
- it { is_expected.to eq(%w(1 2 3 0)) }
51
+ it { is_expected.to eq(%w[1 2 3 0]) }
52
52
  end
53
53
  end
54
54
  end
@@ -107,7 +107,7 @@ describe EnumerateIt::Base do
107
107
  end
108
108
 
109
109
  it 'can be extended from the enumeration class' do
110
- expect(TestEnumerationWithExtendedBehaviour.to_a).to eq([%w(Second 2), %w(First 1)])
110
+ expect(TestEnumerationWithExtendedBehaviour.to_a).to eq([%w[Second 2], %w[First 1]])
111
111
  end
112
112
  end
113
113
 
@@ -140,12 +140,12 @@ describe EnumerateIt::Base do
140
140
 
141
141
  describe '.values_for' do
142
142
  it "returns an array representing some of the enumeration's values" do
143
- expect(TestEnumeration.values_for(%w(VALUE_1 VALUE_2)))
143
+ expect(TestEnumeration.values_for(%w[VALUE_1 VALUE_2]))
144
144
  .to eq([TestEnumeration::VALUE_1, TestEnumeration::VALUE_2])
145
145
  end
146
146
 
147
147
  it 'returns nil if the a constant named after one of the given strings cannot be found' do
148
- expect(TestEnumeration.values_for(%w(VALUE_1 THIS_IS_WRONG)))
148
+ expect(TestEnumeration.values_for(%w[VALUE_1 THIS_IS_WRONG]))
149
149
  .to eq([TestEnumeration::VALUE_1, nil])
150
150
  end
151
151
  end
@@ -182,7 +182,7 @@ describe EnumerateIt::Base do
182
182
 
183
183
  describe '.keys' do
184
184
  it 'returns a list with the keys used to define the enumeration' do
185
- expect(TestEnumeration.keys).to eq([:value_1, :value_2, :value_3])
185
+ expect(TestEnumeration.keys).to eq(%i[value_1 value_2 value_3])
186
186
  end
187
187
  end
188
188
 
@@ -203,7 +203,7 @@ describe EnumerateIt::Base do
203
203
  end
204
204
 
205
205
  it 'returns an array with the values and human representations' do
206
- expect(TestEnumerationWithList.to_a).to eq([%w(First first), %w(Second second)])
206
+ expect(TestEnumerationWithList.to_a).to eq([%w[First first], %w[Second second]])
207
207
  end
208
208
  end
209
209
 
@@ -211,7 +211,7 @@ describe EnumerateIt::Base do
211
211
  subject { create_enumeration_class_with_sort_mode(nil).to_a }
212
212
 
213
213
  it 'does not sort' do
214
- is_expected.to eq([%w(xyz 1), %w(fgh 2), %w(abc 3), %w(jkl 0)])
214
+ is_expected.to eq([%w[xyz 1], %w[fgh 2], %w[abc 3], %w[jkl 0]])
215
215
  end
216
216
  end
217
217
 
@@ -221,25 +221,25 @@ describe EnumerateIt::Base do
221
221
  context 'by value' do
222
222
  let(:sort_mode) { :value }
223
223
 
224
- it { is_expected.to eq([%w(jkl 0), %w(xyz 1), %w(fgh 2), %w(abc 3)]) }
224
+ it { is_expected.to eq([%w[jkl 0], %w[xyz 1], %w[fgh 2], %w[abc 3]]) }
225
225
  end
226
226
 
227
227
  context 'by name' do
228
228
  let(:sort_mode) { :name }
229
229
 
230
- it { is_expected.to eq([%w(fgh 2), %w(xyz 1), %w(abc 3), %w(jkl 0)]) }
230
+ it { is_expected.to eq([%w[fgh 2], %w[xyz 1], %w[abc 3], %w[jkl 0]]) }
231
231
  end
232
232
 
233
233
  context 'by translation' do
234
234
  let(:sort_mode) { :translation }
235
235
 
236
- it { is_expected.to eq([%w(abc 3), %w(fgh 2), %w(jkl 0), %w(xyz 1)]) }
236
+ it { is_expected.to eq([%w[abc 3], %w[fgh 2], %w[jkl 0], %w[xyz 1]]) }
237
237
  end
238
238
 
239
239
  context 'by nothing' do
240
240
  let(:sort_mode) { :none }
241
241
 
242
- it { is_expected.to eq([%w(xyz 1), %w(fgh 2), %w(abc 3), %w(jkl 0)]) }
242
+ it { is_expected.to eq([%w[xyz 1], %w[fgh 2], %w[abc 3], %w[jkl 0]]) }
243
243
  end
244
244
  end
245
245
 
@@ -291,7 +291,7 @@ describe EnumerateIt::Base do
291
291
  end
292
292
  end
293
293
 
294
- it 'do not require the attribute by default' do
294
+ it 'does not require the attribute by default' do
295
295
  expect(ActiveRecordStub).not_to receive(:validates_presence_of)
296
296
  class ActiveRecordStub
297
297
  has_enumeration_for :bla, with: TestEnumeration
@@ -120,12 +120,12 @@ describe EnumerateIt do
120
120
  context 'when using a nested class as the enumeration' do
121
121
  before do
122
122
  class NestedEnum < EnumerateIt::Base
123
- associate_values foo: %w(1 Fooo), bar: %w(2 Barrrr)
123
+ associate_values foo: %w[1 Fooo], bar: %w[2 Barrrr]
124
124
  end
125
125
 
126
126
  class ClassWithNestedEnum
127
127
  class NestedEnum < EnumerateIt::Base
128
- associate_values foo: %w(1 Blerrgh), bar: ['2' => 'Blarghhh']
128
+ associate_values foo: %w[1 Blerrgh], bar: ['2' => 'Blarghhh']
129
129
  end
130
130
 
131
131
  extend EnumerateIt
@@ -165,7 +165,7 @@ describe EnumerateIt do
165
165
  end
166
166
 
167
167
  it 'creates a mutator method for each enumeration value' do
168
- [:value_1, :value_2, :value_3].each do |value|
168
+ %i[value_1 value_2 value_3].each do |value|
169
169
  expect(TestClassWithHelper.new(TestEnumeration::VALUE_1)).to respond_to(:"#{value}!")
170
170
  end
171
171
  end
@@ -189,7 +189,7 @@ describe EnumerateIt do
189
189
  end
190
190
 
191
191
  it 'creates a mutator method for each enumeration value' do
192
- [:value_1, :value_2, :value_3].each do |value|
192
+ %i[value_1 value_2 value_3].each do |value|
193
193
  expect(TestClassWithHelper.new(TestEnumeration::VALUE_1))
194
194
  .to respond_to(:"foobar_#{value}!")
195
195
  end
@@ -275,7 +275,7 @@ describe EnumerateIt do
275
275
  end
276
276
  end
277
277
 
278
- context 'when the hosting class do not respond to :scope' do
278
+ context 'when the hosting class does not respond to :scope' do
279
279
  before do
280
280
  class GenericClass
281
281
  extend EnumerateIt
@@ -65,10 +65,10 @@ def create_enumeration_class_with_sort_mode(sort_mode)
65
65
  sort_by(sort_mode)
66
66
 
67
67
  associate_values(
68
- foo: %w(1 xyz),
69
- bar: %w(2 fgh),
70
- omg: %w(3 abc),
71
- zomg: %w(0 jkl)
68
+ foo: %w[1 xyz],
69
+ bar: %w[2 fgh],
70
+ omg: %w[3 abc],
71
+ zomg: %w[0 jkl]
72
72
  )
73
73
  end
74
74
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: enumerate_it
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.1
4
+ version: 1.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cássio Marques
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2016-12-22 00:00:00.000000000 Z
12
+ date: 2017-04-25 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
@@ -95,6 +95,20 @@ dependencies:
95
95
  - - ">="
96
96
  - !ruby/object:Gem::Version
97
97
  version: '0'
98
+ - !ruby/object:Gem::Dependency
99
+ name: wwtd
100
+ requirement: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - ">="
103
+ - !ruby/object:Gem::Version
104
+ version: '0'
105
+ type: :development
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - ">="
110
+ - !ruby/object:Gem::Version
111
+ version: '0'
98
112
  - !ruby/object:Gem::Dependency
99
113
  name: rubocop
100
114
  requirement: !ruby/object:Gem::Requirement
@@ -141,6 +155,7 @@ files:
141
155
  - README.md
142
156
  - Rakefile
143
157
  - enumerate_it.gemspec
158
+ - gemfiles/.bundle/config
144
159
  - gemfiles/rails_3.0.gemfile
145
160
  - gemfiles/rails_3.1.gemfile
146
161
  - gemfiles/rails_3.2.gemfile
@@ -176,7 +191,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
176
191
  requirements:
177
192
  - - ">="
178
193
  - !ruby/object:Gem::Version
179
- version: 1.9.3
194
+ version: 2.0.0
180
195
  required_rubygems_version: !ruby/object:Gem::Requirement
181
196
  requirements:
182
197
  - - ">="
@@ -184,7 +199,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
184
199
  version: '0'
185
200
  requirements: []
186
201
  rubyforge_project:
187
- rubygems_version: 2.5.2
202
+ rubygems_version: 2.6.11
188
203
  signing_key:
189
204
  specification_version: 4
190
205
  summary: Ruby Enumerations