nigilist 0.1.0 → 1.0.0
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 +4 -4
 - data/.travis.yml +1 -0
 - data/CHANGELOG.md +10 -0
 - data/README.md +14 -10
 - data/VERSION +1 -1
 - data/lib/nigilist.rb +25 -8
 - data/nigilist.gemspec +6 -4
 - data/test/nihilist_on_rails_test.rb +56 -0
 - data/test/nihilist_test.rb +37 -9
 - metadata +5 -4
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: a586c6911dc9db595a024023cc0ce60a71fb4fc9dbc550206d13249bc6108d37
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: cea1e62f69d40782d265d169db670526083d92d98fc7287e9a271994268cc7e2
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: cf85e5252552d1e1efdb39dfa22e37d0809c53253c60d63bc7cafb7335e0835eb318902f3b2b835d891830a87934befec057ad4fef995b6e206b7d704ce20aaa
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: cc5a1445e53c58daa7ec9ec98463f0bf8f7d31d0aa3e539e22033f29ed6e2730064584a4cac11aac945ed84ca987282449230a1685b7b871456c22ad27f887cb
         
     | 
    
        data/.travis.yml
    CHANGED
    
    
    
        data/CHANGELOG.md
    ADDED
    
    | 
         @@ -0,0 +1,10 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            ## 1.0.0
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            ### Features
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            - [**BREAKING**] For Ruby on Rails plural method call now return ActiveRecord's model null relation if model with same singular name exists, otherwise return `[]` ([#6](https://github.com/aishek/nihilist/pull/6))
         
     | 
| 
      
 6 
     | 
    
         
            +
            - `respond_to?` now return `true` if method call handled by nigilist ([#6](https://github.com/aishek/nihilist/pull/6))
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            ### Fixes
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
            - [**BREAKING**] Methods with plural name and underscore at the end (for example `monkeys_`) now return `nil` instead of `[]` ([#6](https://github.com/aishek/nihilist/pull/6))
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -5,7 +5,7 @@ 
     | 
|
| 
       5 
5 
     | 
    
         
             
            [](https://codeclimate.com/github/aishek/nihilist)
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
       7 
7 
     | 
    
         | 
| 
       8 
     | 
    
         
            -
            Nigilist is extremely useful for implement Null Object pattern. It allows null object to return `false` for all question-methods, `nil` for all non-bang-methods, `[]` for all methods in plural form without defining them.
         
     | 
| 
      
 8 
     | 
    
         
            +
            Nigilist is extremely useful for implement Null Object pattern. It allows null object to return `false` for all question-methods, `nil` for all non-bang-methods, `[]` for all methods in plural form (and in Ruby on Rails null-relation for same name ActiveRecord model) without defining them.
         
     | 
| 
       9 
9 
     | 
    
         | 
| 
       10 
10 
     | 
    
         
             
            ## Installation
         
     | 
| 
       11 
11 
     | 
    
         | 
| 
         @@ -16,6 +16,9 @@ gem install nigilist 
     | 
|
| 
       16 
16 
     | 
    
         
             
            ## Usage
         
     | 
| 
       17 
17 
     | 
    
         | 
| 
       18 
18 
     | 
    
         
             
            ```ruby
         
     | 
| 
      
 19 
     | 
    
         
            +
            class Order < ActiveRecord::Base
         
     | 
| 
      
 20 
     | 
    
         
            +
            end
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
       19 
22 
     | 
    
         
             
            class Guest
         
     | 
| 
       20 
23 
     | 
    
         
             
              include Nigilist
         
     | 
| 
       21 
24 
     | 
    
         | 
| 
         @@ -24,16 +27,17 @@ class Guest 
     | 
|
| 
       24 
27 
     | 
    
         
             
              end
         
     | 
| 
       25 
28 
     | 
    
         | 
| 
       26 
29 
     | 
    
         
             
              def locale
         
     | 
| 
       27 
     | 
    
         
            -
                'ru' 
     | 
| 
      
 30 
     | 
    
         
            +
                'ru'
         
     | 
| 
       28 
31 
     | 
    
         
             
              end
         
     | 
| 
       29 
32 
     | 
    
         
             
            end
         
     | 
| 
       30 
33 
     | 
    
         | 
| 
       31 
34 
     | 
    
         
             
            current_user = Guest.new
         
     | 
| 
       32 
     | 
    
         
            -
            current_user.admin? 
     | 
| 
       33 
     | 
    
         
            -
            current_user.polite? # true
         
     | 
| 
       34 
     | 
    
         
            -
            current_user. 
     | 
| 
       35 
     | 
    
         
            -
            current_user. 
     | 
| 
       36 
     | 
    
         
            -
            current_user. 
     | 
| 
      
 35 
     | 
    
         
            +
            current_user.admin?  # false — for all question methods
         
     | 
| 
      
 36 
     | 
    
         
            +
            current_user.polite? # true — becase it is explicit defined
         
     | 
| 
      
 37 
     | 
    
         
            +
            current_user.orders  # Order.none — for all plural methods because same singular name ActiveRecord model exists
         
     | 
| 
      
 38 
     | 
    
         
            +
            current_user.planets # [] — for all plural methods without because singular name ActiveRecord model doesn't exists
         
     | 
| 
      
 39 
     | 
    
         
            +
            current_user.address # nil — for all non question, non plural and non bang methods
         
     | 
| 
      
 40 
     | 
    
         
            +
            current_user.locale  # 'ru' — becase it is explicit defined
         
     | 
| 
       37 
41 
     | 
    
         
             
            ```
         
     | 
| 
       38 
42 
     | 
    
         | 
| 
       39 
43 
     | 
    
         
             
            ### Explanation of Null Object pattern
         
     | 
| 
         @@ -51,15 +55,15 @@ current_user = current_session.user || Guest.new 
     | 
|
| 
       51 
55 
     | 
    
         
             
            current_user.admin?
         
     | 
| 
       52 
56 
     | 
    
         
             
            ```
         
     | 
| 
       53 
57 
     | 
    
         | 
| 
       54 
     | 
    
         
            -
            So when your project  
     | 
| 
      
 58 
     | 
    
         
            +
            So when your project grows and other methods got it place inside `User` model you have to define same methods in `Guest` model which contains no logic but only return `false` or `nil`. In that case Nigilist could be helpful.
         
     | 
| 
       55 
59 
     | 
    
         | 
| 
       56 
60 
     | 
    
         
             
            ## License
         
     | 
| 
       57 
61 
     | 
    
         | 
| 
       58 
     | 
    
         
            -
            Nigilist is free software, and may be redistributed under the  
     | 
| 
      
 62 
     | 
    
         
            +
            Nigilist is free software, and may be redistributed under the MIT License.
         
     | 
| 
       59 
63 
     | 
    
         | 
| 
       60 
64 
     | 
    
         
             
            ## Credits
         
     | 
| 
       61 
65 
     | 
    
         | 
| 
       62 
     | 
    
         
            -
            Gem nigilist is maintained by [Cifronomika]( 
     | 
| 
      
 66 
     | 
    
         
            +
            Gem nigilist is maintained by [Cifronomika](https://cifronomika.com/).
         
     | 
| 
       63 
67 
     | 
    
         | 
| 
       64 
68 
     | 
    
         
             
            Contributors:
         
     | 
| 
       65 
69 
     | 
    
         | 
    
        data/VERSION
    CHANGED
    
    | 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
             
     | 
| 
      
 1 
     | 
    
         
            +
            1.0.0
         
     | 
    
        data/lib/nigilist.rb
    CHANGED
    
    | 
         @@ -1,14 +1,31 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # frozen_string_literal: true
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
       1 
3 
     | 
    
         
             
            module Nigilist
         
     | 
| 
       2 
4 
     | 
    
         
             
              def method_missing(message, *args, &block)
         
     | 
| 
       3 
5 
     | 
    
         
             
                method_name = message.to_s
         
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
                   
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
                return false if method_name.end_with?('?')
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
                if method_name.end_with?('s') && method_name[-2..-1] != 'ss'
         
     | 
| 
      
 10 
     | 
    
         
            +
                  if defined?(Rails)
         
     | 
| 
      
 11 
     | 
    
         
            +
                    ar_relation_klass = method_name.singularize.camelize.safe_constantize
         
     | 
| 
      
 12 
     | 
    
         
            +
                    return ar_relation_klass.none if ar_relation_klass && ar_relation_klass.respond_to?(:none)
         
     | 
| 
      
 13 
     | 
    
         
            +
                  end
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                  return []
         
     | 
| 
       12 
16 
     | 
    
         
             
                end
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
                return nil unless method_name.end_with?('!')
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
                super
         
     | 
| 
      
 21 
     | 
    
         
            +
              end
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
              def respond_to_missing?(message, include_private = false)
         
     | 
| 
      
 24 
     | 
    
         
            +
                method_name = message.to_s
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
                method_name.end_with?('?') ||
         
     | 
| 
      
 27 
     | 
    
         
            +
                (method_name.end_with?('s') && method_name[-2..-1] != 'ss') ||
         
     | 
| 
      
 28 
     | 
    
         
            +
                !method_name.end_with?('!') ||
         
     | 
| 
      
 29 
     | 
    
         
            +
                  super
         
     | 
| 
       13 
30 
     | 
    
         
             
              end
         
     | 
| 
       14 
31 
     | 
    
         
             
            end
         
     | 
    
        data/nigilist.gemspec
    CHANGED
    
    | 
         @@ -2,17 +2,17 @@ 
     | 
|
| 
       2 
2 
     | 
    
         
             
            # DO NOT EDIT THIS FILE DIRECTLY
         
     | 
| 
       3 
3 
     | 
    
         
             
            # Instead, edit Juwelier::Tasks in Rakefile, and run 'rake gemspec'
         
     | 
| 
       4 
4 
     | 
    
         
             
            # -*- encoding: utf-8 -*-
         
     | 
| 
       5 
     | 
    
         
            -
            # stub: nigilist  
     | 
| 
      
 5 
     | 
    
         
            +
            # stub: nigilist 1.0.0 ruby lib
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
       7 
7 
     | 
    
         
             
            Gem::Specification.new do |s|
         
     | 
| 
       8 
8 
     | 
    
         
             
              s.name = "nigilist".freeze
         
     | 
| 
       9 
     | 
    
         
            -
              s.version = " 
     | 
| 
      
 9 
     | 
    
         
            +
              s.version = "1.0.0"
         
     | 
| 
       10 
10 
     | 
    
         | 
| 
       11 
11 
     | 
    
         
             
              s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
         
     | 
| 
       12 
12 
     | 
    
         
             
              s.metadata = { "allowed_push_host" => "https://rubygems.org" } if s.respond_to? :metadata=
         
     | 
| 
       13 
13 
     | 
    
         
             
              s.require_paths = ["lib".freeze]
         
     | 
| 
       14 
14 
     | 
    
         
             
              s.authors = ["Alexandr Borisov".freeze]
         
     | 
| 
       15 
     | 
    
         
            -
              s.date = " 
     | 
| 
      
 15 
     | 
    
         
            +
              s.date = "2019-07-10"
         
     | 
| 
       16 
16 
     | 
    
         
             
              s.description = "After include Nigilist module all ?-ends methods will return false, all non-!-ends methods will return nil.".freeze
         
     | 
| 
       17 
17 
     | 
    
         
             
              s.email = "ab@cifronomika.ru".freeze
         
     | 
| 
       18 
18 
     | 
    
         
             
              s.extra_rdoc_files = [
         
     | 
| 
         @@ -20,6 +20,7 @@ Gem::Specification.new do |s| 
     | 
|
| 
       20 
20 
     | 
    
         
             
              ]
         
     | 
| 
       21 
21 
     | 
    
         
             
              s.files = [
         
     | 
| 
       22 
22 
     | 
    
         
             
                ".travis.yml",
         
     | 
| 
      
 23 
     | 
    
         
            +
                "CHANGELOG.md",
         
     | 
| 
       23 
24 
     | 
    
         
             
                "Gemfile",
         
     | 
| 
       24 
25 
     | 
    
         
             
                "Gemfile.lock",
         
     | 
| 
       25 
26 
     | 
    
         
             
                "LISENCE.txt",
         
     | 
| 
         @@ -28,11 +29,12 @@ Gem::Specification.new do |s| 
     | 
|
| 
       28 
29 
     | 
    
         
             
                "VERSION",
         
     | 
| 
       29 
30 
     | 
    
         
             
                "lib/nigilist.rb",
         
     | 
| 
       30 
31 
     | 
    
         
             
                "nigilist.gemspec",
         
     | 
| 
      
 32 
     | 
    
         
            +
                "test/nihilist_on_rails_test.rb",
         
     | 
| 
       31 
33 
     | 
    
         
             
                "test/nihilist_test.rb"
         
     | 
| 
       32 
34 
     | 
    
         
             
              ]
         
     | 
| 
       33 
35 
     | 
    
         
             
              s.homepage = "https://github.com/aishek/nihilist".freeze
         
     | 
| 
       34 
36 
     | 
    
         
             
              s.licenses = ["MIT".freeze]
         
     | 
| 
       35 
     | 
    
         
            -
              s.rubygems_version = " 
     | 
| 
      
 37 
     | 
    
         
            +
              s.rubygems_version = "3.0.3".freeze
         
     | 
| 
       36 
38 
     | 
    
         
             
              s.summary = "Nigilist simplifies NullObject pattern classes".freeze
         
     | 
| 
       37 
39 
     | 
    
         | 
| 
       38 
40 
     | 
    
         
             
              if s.respond_to? :specification_version then
         
     | 
| 
         @@ -0,0 +1,56 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # frozen_string_literal: true
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            require 'minitest/autorun'
         
     | 
| 
      
 4 
     | 
    
         
            +
            require 'minitest/pride'
         
     | 
| 
      
 5 
     | 
    
         
            +
            require 'minitest/power_assert'
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            require 'nigilist'
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            class Guest
         
     | 
| 
      
 10 
     | 
    
         
            +
              include Nigilist
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
              def costs
         
     | 
| 
      
 13 
     | 
    
         
            +
                {}
         
     | 
| 
      
 14 
     | 
    
         
            +
              end
         
     | 
| 
      
 15 
     | 
    
         
            +
            end
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
            class NigilistRailsTest < Minitest::Test
         
     | 
| 
      
 18 
     | 
    
         
            +
              def setup
         
     | 
| 
      
 19 
     | 
    
         
            +
                Object.const_set('Rails', Module.new)
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
                String.send(:define_method, :singularize) do self[0..-2] end
         
     | 
| 
      
 22 
     | 
    
         
            +
                String.send(:define_method, :camelize) do capitalize end
         
     | 
| 
      
 23 
     | 
    
         
            +
                String.send(:define_method, :safe_constantize) do
         
     | 
| 
      
 24 
     | 
    
         
            +
                  if self == 'Post'
         
     | 
| 
      
 25 
     | 
    
         
            +
                    return Class.new do
         
     | 
| 
      
 26 
     | 
    
         
            +
                      def self.none
         
     | 
| 
      
 27 
     | 
    
         
            +
                        :fake_active_record_null_relation
         
     | 
| 
      
 28 
     | 
    
         
            +
                      end
         
     | 
| 
      
 29 
     | 
    
         
            +
                    end
         
     | 
| 
      
 30 
     | 
    
         
            +
                  end
         
     | 
| 
      
 31 
     | 
    
         
            +
                  nil
         
     | 
| 
      
 32 
     | 
    
         
            +
                end
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
                @guest = Guest.new
         
     | 
| 
      
 35 
     | 
    
         
            +
              end
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
              def test_explicit_plural_method_without_active_record_model_return_its_value
         
     | 
| 
      
 38 
     | 
    
         
            +
                assert { @guest.costs == {} }
         
     | 
| 
      
 39 
     | 
    
         
            +
              end
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
              def test_plural_method_without_active_record_model_return_empty_array
         
     | 
| 
      
 42 
     | 
    
         
            +
                assert { @guest.planets == [] }
         
     | 
| 
      
 43 
     | 
    
         
            +
              end
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
              def test_plural_method_with_active_record_model_return_null_relation
         
     | 
| 
      
 46 
     | 
    
         
            +
                assert { @guest.posts == :fake_active_record_null_relation }
         
     | 
| 
      
 47 
     | 
    
         
            +
              end
         
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
      
 49 
     | 
    
         
            +
              def teardown
         
     | 
| 
      
 50 
     | 
    
         
            +
                Object.send(:remove_const, 'Rails')
         
     | 
| 
      
 51 
     | 
    
         
            +
             
     | 
| 
      
 52 
     | 
    
         
            +
                String.send(:remove_method, :singularize)
         
     | 
| 
      
 53 
     | 
    
         
            +
                String.send(:remove_method, :camelize)
         
     | 
| 
      
 54 
     | 
    
         
            +
                String.send(:remove_method, :safe_constantize)
         
     | 
| 
      
 55 
     | 
    
         
            +
              end
         
     | 
| 
      
 56 
     | 
    
         
            +
            end
         
     | 
    
        data/test/nihilist_test.rb
    CHANGED
    
    | 
         @@ -7,12 +7,16 @@ require 'nigilist' 
     | 
|
| 
       7 
7 
     | 
    
         
             
            class Guest
         
     | 
| 
       8 
8 
     | 
    
         
             
              include Nigilist
         
     | 
| 
       9 
9 
     | 
    
         | 
| 
      
 10 
     | 
    
         
            +
              def hosts
         
     | 
| 
      
 11 
     | 
    
         
            +
                :all
         
     | 
| 
      
 12 
     | 
    
         
            +
              end
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
       10 
14 
     | 
    
         
             
              def polite?
         
     | 
| 
       11 
15 
     | 
    
         
             
                true
         
     | 
| 
       12 
16 
     | 
    
         
             
              end
         
     | 
| 
       13 
17 
     | 
    
         | 
| 
       14 
18 
     | 
    
         
             
              def planet
         
     | 
| 
       15 
     | 
    
         
            -
                'Earth' 
     | 
| 
      
 19 
     | 
    
         
            +
                'Earth'
         
     | 
| 
       16 
20 
     | 
    
         
             
              end
         
     | 
| 
       17 
21 
     | 
    
         
             
            end
         
     | 
| 
       18 
22 
     | 
    
         | 
| 
         @@ -21,31 +25,55 @@ class NigilistTest < Minitest::Test 
     | 
|
| 
       21 
25 
     | 
    
         
             
                @guest = Guest.new
         
     | 
| 
       22 
26 
     | 
    
         
             
              end
         
     | 
| 
       23 
27 
     | 
    
         | 
| 
       24 
     | 
    
         
            -
              def  
     | 
| 
      
 28 
     | 
    
         
            +
              def test_question_end_method_return_false
         
     | 
| 
       25 
29 
     | 
    
         
             
                assert { @guest.admin? == false }
         
     | 
| 
       26 
30 
     | 
    
         
             
              end
         
     | 
| 
       27 
31 
     | 
    
         | 
| 
       28 
     | 
    
         
            -
              def  
     | 
| 
      
 32 
     | 
    
         
            +
              def test_explicit_defined_question_end_method_return_its_result
         
     | 
| 
       29 
33 
     | 
    
         
             
                assert { @guest.polite? == true }
         
     | 
| 
       30 
34 
     | 
    
         
             
              end
         
     | 
| 
       31 
35 
     | 
    
         | 
| 
       32 
     | 
    
         
            -
              def  
     | 
| 
      
 36 
     | 
    
         
            +
              def test_non_bang_end_method_return_nil
         
     | 
| 
       33 
37 
     | 
    
         
             
                assert { @guest.name.nil? }
         
     | 
| 
       34 
38 
     | 
    
         
             
              end
         
     | 
| 
       35 
39 
     | 
    
         | 
| 
       36 
     | 
    
         
            -
              def  
     | 
| 
      
 40 
     | 
    
         
            +
              def test_explicit_non_bang_end_method_return_its_result
         
     | 
| 
       37 
41 
     | 
    
         
             
                assert { @guest.planet == 'Earth' }
         
     | 
| 
       38 
42 
     | 
    
         
             
              end
         
     | 
| 
       39 
43 
     | 
    
         | 
| 
       40 
     | 
    
         
            -
              def  
     | 
| 
      
 44 
     | 
    
         
            +
              def test_plural_method_return_empty_array
         
     | 
| 
       41 
45 
     | 
    
         
             
                assert { @guest.planets == [] }
         
     | 
| 
       42 
46 
     | 
    
         
             
              end
         
     | 
| 
       43 
47 
     | 
    
         | 
| 
       44 
     | 
    
         
            -
              def  
     | 
| 
      
 48 
     | 
    
         
            +
              def test_plural_method_with_undersores_return_empty_array
         
     | 
| 
       45 
49 
     | 
    
         
             
                assert { @guest.planets_and_monkeys == [] }
         
     | 
| 
       46 
50 
     | 
    
         
             
              end
         
     | 
| 
       47 
51 
     | 
    
         | 
| 
       48 
     | 
    
         
            -
              def  
     | 
| 
       49 
     | 
    
         
            -
                assert { @guest. 
     | 
| 
      
 52 
     | 
    
         
            +
              def test_explicit_plural_method_return_its_result
         
     | 
| 
      
 53 
     | 
    
         
            +
                assert { @guest.hosts == :all }
         
     | 
| 
      
 54 
     | 
    
         
            +
              end
         
     | 
| 
      
 55 
     | 
    
         
            +
             
     | 
| 
      
 56 
     | 
    
         
            +
              def test_plural_method_with_undersore_at_the_end_return_nil
         
     | 
| 
      
 57 
     | 
    
         
            +
                assert { @guest.monkeys_ == nil }
         
     | 
| 
      
 58 
     | 
    
         
            +
              end
         
     | 
| 
      
 59 
     | 
    
         
            +
             
     | 
| 
      
 60 
     | 
    
         
            +
              def test_method_with_doudle_s_ending_return_nil
         
     | 
| 
      
 61 
     | 
    
         
            +
                assert { @guest.stress == nil }
         
     | 
| 
      
 62 
     | 
    
         
            +
              end
         
     | 
| 
      
 63 
     | 
    
         
            +
             
     | 
| 
      
 64 
     | 
    
         
            +
              def test_respond_to_plural_method
         
     | 
| 
      
 65 
     | 
    
         
            +
                assert { @guest.respond_to?(:socks) }
         
     | 
| 
      
 66 
     | 
    
         
            +
              end
         
     | 
| 
      
 67 
     | 
    
         
            +
             
     | 
| 
      
 68 
     | 
    
         
            +
              def test_respond_to_question_method
         
     | 
| 
      
 69 
     | 
    
         
            +
                assert { @guest.respond_to?(:intresting?) }
         
     | 
| 
      
 70 
     | 
    
         
            +
              end
         
     | 
| 
      
 71 
     | 
    
         
            +
             
     | 
| 
      
 72 
     | 
    
         
            +
              def test_respond_to_regular_method
         
     | 
| 
      
 73 
     | 
    
         
            +
                assert { @guest.respond_to?(:mess) }
         
     | 
| 
      
 74 
     | 
    
         
            +
              end
         
     | 
| 
      
 75 
     | 
    
         
            +
             
     | 
| 
      
 76 
     | 
    
         
            +
              def test_does_not_respond_to_bang_method
         
     | 
| 
      
 77 
     | 
    
         
            +
                assert { !@guest.respond_to?(:catch!) }
         
     | 
| 
       50 
78 
     | 
    
         
             
              end
         
     | 
| 
       51 
79 
     | 
    
         
             
            end
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: nigilist
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version:  
     | 
| 
      
 4 
     | 
    
         
            +
              version: 1.0.0
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Alexandr Borisov
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date:  
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2019-07-10 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: bundler
         
     | 
| 
         @@ -89,6 +89,7 @@ extra_rdoc_files: 
     | 
|
| 
       89 
89 
     | 
    
         
             
            - README.md
         
     | 
| 
       90 
90 
     | 
    
         
             
            files:
         
     | 
| 
       91 
91 
     | 
    
         
             
            - ".travis.yml"
         
     | 
| 
      
 92 
     | 
    
         
            +
            - CHANGELOG.md
         
     | 
| 
       92 
93 
     | 
    
         
             
            - Gemfile
         
     | 
| 
       93 
94 
     | 
    
         
             
            - Gemfile.lock
         
     | 
| 
       94 
95 
     | 
    
         
             
            - LISENCE.txt
         
     | 
| 
         @@ -97,6 +98,7 @@ files: 
     | 
|
| 
       97 
98 
     | 
    
         
             
            - VERSION
         
     | 
| 
       98 
99 
     | 
    
         
             
            - lib/nigilist.rb
         
     | 
| 
       99 
100 
     | 
    
         
             
            - nigilist.gemspec
         
     | 
| 
      
 101 
     | 
    
         
            +
            - test/nihilist_on_rails_test.rb
         
     | 
| 
       100 
102 
     | 
    
         
             
            - test/nihilist_test.rb
         
     | 
| 
       101 
103 
     | 
    
         
             
            homepage: https://github.com/aishek/nihilist
         
     | 
| 
       102 
104 
     | 
    
         
             
            licenses:
         
     | 
| 
         @@ -118,8 +120,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       118 
120 
     | 
    
         
             
                - !ruby/object:Gem::Version
         
     | 
| 
       119 
121 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       120 
122 
     | 
    
         
             
            requirements: []
         
     | 
| 
       121 
     | 
    
         
            -
             
     | 
| 
       122 
     | 
    
         
            -
            rubygems_version: 2.7.3
         
     | 
| 
      
 123 
     | 
    
         
            +
            rubygems_version: 3.0.3
         
     | 
| 
       123 
124 
     | 
    
         
             
            signing_key: 
         
     | 
| 
       124 
125 
     | 
    
         
             
            specification_version: 4
         
     | 
| 
       125 
126 
     | 
    
         
             
            summary: Nigilist simplifies NullObject pattern classes
         
     |