bogus 0.1.4 → 0.1.5
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 +7 -0
- data/.gitignore +1 -0
- data/.travis.yml +1 -1
- data/Guardfile +1 -3
- data/Guardfile.cucumber +0 -2
- data/README.md +1 -1
- data/bogus.gemspec +3 -1
- data/features/changelog.md +11 -0
- data/features/configuration/fake_ar_attributes.feature +2 -2
- data/features/contract_tests/contract_tests_mocks.feature +5 -5
- data/features/contract_tests/contract_tests_spies.feature +1 -1
- data/features/contract_tests/contract_tests_stubs.feature +6 -6
- data/features/contract_tests/custom_overwritten_class.feature +4 -4
- data/features/contract_tests/return_value_contracts.feature +2 -2
- data/features/fakes/anonymous_doubles.feature +5 -5
- data/features/fakes/duck_types.feature +9 -9
- data/features/fakes/fake_objects.feature +31 -8
- data/features/fakes/global_fake_configuration.feature +5 -5
- data/features/fakes/replacing_classes.feature +5 -5
- data/features/readme.md +5 -5
- data/features/safe_stubbing/argument_matchers.feature +23 -10
- data/features/safe_stubbing/safe_mocking.feature +1 -1
- data/features/safe_stubbing/safe_stubbing.feature +1 -1
- data/features/safe_stubbing/spies.feature +7 -7
- data/lib/bogus.rb +1 -0
- data/lib/bogus/core_ext.rb +22 -0
- data/lib/bogus/fakes/fake.rb +2 -1
- data/lib/bogus/fakes/method_stringifier.rb +1 -0
- data/lib/bogus/mocking_dsl.rb +4 -0
- data/lib/bogus/stubbing/has_overwritten_methods.rb +28 -10
- data/lib/bogus/stubbing/have_received_matcher.rb +4 -2
- data/lib/bogus/stubbing/matchers/any_args.rb +9 -0
- data/lib/bogus/stubbing/matchers/matches_argument.rb +11 -0
- data/lib/bogus/stubbing/{any_args.rb → matchers/with_arguments.rb} +0 -6
- data/lib/bogus/stubbing/overwrites_methods.rb +6 -1
- data/lib/bogus/stubbing/undefined_return_value.rb +4 -0
- data/lib/bogus/support.rb +11 -0
- data/lib/bogus/version.rb +1 -1
- data/spec/bogus/clean_ruby_spec.rb +1 -1
- data/spec/bogus/configuration_spec.rb +2 -2
- data/spec/bogus/contracts/adds_contract_verification_spec.rb +10 -10
- data/spec/bogus/contracts/adds_recording_spec.rb +4 -4
- data/spec/bogus/contracts/interactions_repository_spec.rb +15 -15
- data/spec/bogus/contracts/proxy_class_spec.rb +7 -7
- data/spec/bogus/contracts/records_double_interactions_spec.rb +1 -1
- data/spec/bogus/contracts/verifies_contracts_spec.rb +3 -3
- data/spec/bogus/fakes/base_class_identifier_spec.rb +1 -1
- data/spec/bogus/fakes/class_methods_spec.rb +4 -5
- data/spec/bogus/fakes/converts_name_to_class_spec.rb +3 -3
- data/spec/bogus/fakes/copies_classes_spec.rb +20 -16
- data/spec/bogus/fakes/creates_fakes_spec.rb +6 -6
- data/spec/bogus/fakes/creates_fakes_with_stubbed_methods_spec.rb +16 -15
- data/spec/bogus/fakes/fake_ar_attributes_spec.rb +3 -3
- data/spec/bogus/fakes/fake_configuration_spec.rb +16 -16
- data/spec/bogus/fakes/fake_registry_spec.rb +2 -2
- data/spec/bogus/fakes/fake_spec.rb +1 -1
- data/spec/bogus/fakes/fakes_classes_spec.rb +4 -4
- data/spec/bogus/fakes/faking_factories_spec.rb +4 -4
- data/spec/bogus/fakes/frozen_fakes_spec.rb +4 -4
- data/spec/bogus/fakes/instance_methods_spec.rb +5 -5
- data/spec/bogus/fakes/makes_ducks_spec.rb +3 -3
- data/spec/bogus/fakes/makes_substitute_methods_spec.rb +1 -1
- data/spec/bogus/fakes/overwriten_classes_spec.rb +3 -3
- data/spec/bogus/fakes/overwrites_classes_spec.rb +2 -2
- data/spec/bogus/fakes/registers_created_fakes_spec.rb +3 -3
- data/spec/bogus/fakes/resets_overwritten_classes_spec.rb +3 -3
- data/spec/bogus/fakes/stubbing_new_method_on_fake_class_spec.rb +25 -0
- data/spec/bogus/mocking_dsl_spec.rb +36 -36
- data/spec/bogus/ruby_2_1_support_spec.rb +38 -0
- data/spec/bogus/ruby_2_support_spec.rb +14 -64
- data/spec/bogus/stubbing/anything_spec.rb +5 -5
- data/spec/bogus/stubbing/double_spec.rb +2 -2
- data/spec/bogus/stubbing/have_received_matcher_spec.rb +11 -6
- data/spec/bogus/stubbing/interaction_spec.rb +7 -7
- data/spec/bogus/stubbing/multi_stubber_spec.rb +2 -2
- data/spec/bogus/stubbing/overwrites_methods_spec.rb +8 -8
- data/spec/bogus/stubbing/record_interactions_spec.rb +3 -3
- data/spec/bogus/stubbing/shadow_spec.rb +28 -28
- data/spec/bogus/stubbing/stubbing_existing_methods_on_fakes_spec.rb +50 -0
- data/spec/bogus/stubbing/tracks_existence_of_test_doubles_spec.rb +2 -2
- data/spec/bogus/stubbing/undefined_return_value_spec.rb +2 -2
- data/spec/spec_helper.rb +6 -1
- data/spec/support/shared_examples_for_keyword_arguments.rb +63 -0
- metadata +160 -160
- data/Gemfile.lock +0 -146
    
        checksums.yaml
    ADDED
    
    | @@ -0,0 +1,7 @@ | |
| 1 | 
            +
            ---
         | 
| 2 | 
            +
            SHA1:
         | 
| 3 | 
            +
              metadata.gz: 5692979cf19268250f0bd23067c79beca39210f9
         | 
| 4 | 
            +
              data.tar.gz: eace904b3205850ab8a3359453d4fe1236e120fe
         | 
| 5 | 
            +
            SHA512:
         | 
| 6 | 
            +
              metadata.gz: f8be32e8fbc29928cc5f517c10bf6602dee35910e0c2768d83ec0db7c8a62bdd993cc84482aec9d26dd4ecce2f096f80ac0c9bc8ed2c7f6092bf0e570c7fcf54
         | 
| 7 | 
            +
              data.tar.gz: b12ed7d4b58170ff5f7180f559c054817ff7b84476808355d822b7d5270a34083d77f10996036d17d5a45f6da2da80b4e7e4de065e32ab65f244960b1fec43f5
         | 
    
        data/.gitignore
    CHANGED
    
    
    
        data/.travis.yml
    CHANGED
    
    
    
        data/Guardfile
    CHANGED
    
    | @@ -1,9 +1,7 @@ | |
| 1 1 | 
             
            # A sample Guardfile
         | 
| 2 2 | 
             
            # More info at https://github.com/guard/guard#readme
         | 
| 3 3 |  | 
| 4 | 
            -
             | 
| 5 | 
            -
             | 
| 6 | 
            -
            guard 'rspec' do
         | 
| 4 | 
            +
            guard 'rspec', all_after_pass: true, all_on_start: true do
         | 
| 7 5 | 
             
              watch(%r{^spec/.+_spec\.rb$})
         | 
| 8 6 | 
             
              watch(%r{^lib/(.+)\.rb$})     { |m| "spec/#{m[1]}_spec.rb" }
         | 
| 9 7 | 
             
              watch('spec/spec_helper.rb')  { "spec" }
         | 
    
        data/Guardfile.cucumber
    CHANGED
    
    
    
        data/README.md
    CHANGED
    
    
    
        data/bogus.gemspec
    CHANGED
    
    | @@ -36,8 +36,10 @@ Gem::Specification.new do |s| | |
| 36 36 | 
             
              s.add_development_dependency 'relish'
         | 
| 37 37 | 
             
              s.add_development_dependency 'coveralls'
         | 
| 38 38 |  | 
| 39 | 
            -
              s.add_development_dependency 'activerecord'
         | 
| 39 | 
            +
              s.add_development_dependency 'activerecord', '>= 3', '< 5'
         | 
| 40 40 | 
             
              s.add_development_dependency 'activerecord-nulldb-adapter'
         | 
| 41 41 |  | 
| 42 42 | 
             
              s.add_development_dependency 'minitest', '>= 4.7'
         | 
| 43 | 
            +
             | 
| 44 | 
            +
              s.add_development_dependency "rb-readline", "~> 0.5.0" # fix for the can't modify string issue
         | 
| 43 45 | 
             
            end
         | 
    
        data/features/changelog.md
    CHANGED
    
    | @@ -1,3 +1,14 @@ | |
| 1 | 
            +
            ## 0.1.5
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            - Made it possible to use fake objects in case/when statements (override ===)
         | 
| 4 | 
            +
            - Allowed stubbing methods defined on Object, such as #to_json
         | 
| 5 | 
            +
            - Added `matches` - for matching single arguments when stubbing
         | 
| 6 | 
            +
            - Updated RSpec syntax in specs and features (thanks to Michael Durrant)
         | 
| 7 | 
            +
            - Done some housekeeping around development dependencies/Gemfile.lock/TravisCI configuration (thanks to Ken Dreyer)
         | 
| 8 | 
            +
            - Removed deprecation warnings when using Bogus with RSpec 3.0 (thanks to Michal Muskala)
         | 
| 9 | 
            +
            - Added support for Ruby 2.1 required keyword arguments (thanks to Indrek Juhkam)
         | 
| 10 | 
            +
            - Fixed a bug that made it impossible to stub .new on fake classes
         | 
| 11 | 
            +
             | 
| 1 12 | 
             
            ## 0.1.4
         | 
| 2 13 |  | 
| 3 14 | 
             
            - Support for contracts in minitest
         | 
| @@ -48,6 +48,6 @@ Feature: fake_ar_attributes | |
| 48 48 | 
             
                post = fake(:blog_post, name: "the name")
         | 
| 49 49 | 
             
                stub(post).tags { "foo, bar" }
         | 
| 50 50 |  | 
| 51 | 
            -
                post.name. | 
| 52 | 
            -
                post.tags. | 
| 51 | 
            +
                expect(post.name).to eq("the name")
         | 
| 52 | 
            +
                expect(post.tags).to eq("foo, bar")
         | 
| 53 53 | 
             
                """
         | 
| @@ -57,7 +57,7 @@ Feature: Contract tests with mocks | |
| 57 57 |  | 
| 58 58 | 
             
                    student.read("Moby Dick", library)
         | 
| 59 59 |  | 
| 60 | 
            -
                    library. | 
| 60 | 
            +
                    expect(library).not_to have_received.checkout("Moby Dick")
         | 
| 61 61 | 
             
                  end
         | 
| 62 62 | 
             
                end
         | 
| 63 63 | 
             
                """
         | 
| @@ -77,7 +77,7 @@ Feature: Contract tests with mocks | |
| 77 77 |  | 
| 78 78 | 
             
                    library.checkout("Moby Dick")
         | 
| 79 79 |  | 
| 80 | 
            -
                    library.has_book?("Moby Dick"). | 
| 80 | 
            +
                    expect(library.has_book?("Moby Dick")).to be_false
         | 
| 81 81 | 
             
                  end
         | 
| 82 82 | 
             
                end
         | 
| 83 83 | 
             
                """
         | 
| @@ -95,11 +95,11 @@ Feature: Contract tests with mocks | |
| 95 95 | 
             
                  it "allows checking out books that are in the inventory" do
         | 
| 96 96 | 
             
                    library.return("Moby Dick")
         | 
| 97 97 |  | 
| 98 | 
            -
                    library.has_book?("Moby Dick"). | 
| 98 | 
            +
                    expect(library.has_book?("Moby Dick")).to be_true
         | 
| 99 99 | 
             
                  end
         | 
| 100 100 |  | 
| 101 101 | 
             
                  it "does not allow checking out unavailable books" do
         | 
| 102 | 
            -
                    library.has_book?("Moby Dick"). | 
| 102 | 
            +
                    expect(library.has_book?("Moby Dick")).to be_false
         | 
| 103 103 | 
             
                  end
         | 
| 104 104 |  | 
| 105 105 | 
             
                  it "marks books as unavailable after they are checked out" do
         | 
| @@ -107,7 +107,7 @@ Feature: Contract tests with mocks | |
| 107 107 |  | 
| 108 108 | 
             
                    library.checkout("Moby Dick")
         | 
| 109 109 |  | 
| 110 | 
            -
                    library.has_book?("Moby Dick"). | 
| 110 | 
            +
                    expect(library.has_book?("Moby Dick")).to be_false
         | 
| 111 111 | 
             
                  end
         | 
| 112 112 | 
             
                end
         | 
| 113 113 | 
             
                """
         | 
| @@ -61,7 +61,7 @@ Feature: Contract tests with stubs | |
| 61 61 |  | 
| 62 62 | 
             
                    student.read("Moby Dick", library)
         | 
| 63 63 |  | 
| 64 | 
            -
                    library. | 
| 64 | 
            +
                    expect(library).to have_received.checkout("Moby Dick")
         | 
| 65 65 | 
             
                  end
         | 
| 66 66 |  | 
| 67 67 | 
             
                  it "does not check out the book from library if not available" do
         | 
| @@ -70,7 +70,7 @@ Feature: Contract tests with stubs | |
| 70 70 |  | 
| 71 71 | 
             
                    student.read("Moby Dick", library)
         | 
| 72 72 |  | 
| 73 | 
            -
                    library. | 
| 73 | 
            +
                    expect(library).not_to have_received.checkout("Moby Dick")
         | 
| 74 74 | 
             
                  end
         | 
| 75 75 | 
             
                end
         | 
| 76 76 | 
             
                """
         | 
| @@ -90,7 +90,7 @@ Feature: Contract tests with stubs | |
| 90 90 |  | 
| 91 91 | 
             
                    library.checkout("Moby Dick")
         | 
| 92 92 |  | 
| 93 | 
            -
                    library.has_book?("Moby Dick"). | 
| 93 | 
            +
                    expect(library.has_book?("Moby Dick")).to be_false
         | 
| 94 94 | 
             
                  end
         | 
| 95 95 | 
             
                end
         | 
| 96 96 | 
             
                """
         | 
| @@ -108,11 +108,11 @@ Feature: Contract tests with stubs | |
| 108 108 | 
             
                  it "allows checking out books that are in the inventory" do
         | 
| 109 109 | 
             
                    library.return("Moby Dick")
         | 
| 110 110 |  | 
| 111 | 
            -
                    library.has_book?("Moby Dick"). | 
| 111 | 
            +
                    expect(library.has_book?("Moby Dick")).to be_true
         | 
| 112 112 | 
             
                  end
         | 
| 113 113 |  | 
| 114 114 | 
             
                  it "does not allow checking out unavailable books" do
         | 
| 115 | 
            -
                    library.has_book?("Moby Dick"). | 
| 115 | 
            +
                    expect(library.has_book?("Moby Dick")).to be_false
         | 
| 116 116 | 
             
                  end
         | 
| 117 117 |  | 
| 118 118 | 
             
                  it "marks books as unavailable after they are checked out" do
         | 
| @@ -120,7 +120,7 @@ Feature: Contract tests with stubs | |
| 120 120 |  | 
| 121 121 | 
             
                    library.checkout("Moby Dick")
         | 
| 122 122 |  | 
| 123 | 
            -
                    library.has_book?("Moby Dick"). | 
| 123 | 
            +
                    expect(library.has_book?("Moby Dick")).to be_false
         | 
| 124 124 | 
             
                  end
         | 
| 125 125 | 
             
                end
         | 
| 126 126 | 
             
                """
         | 
| @@ -77,7 +77,7 @@ Feature: Customizing the overwritten class | |
| 77 77 |  | 
| 78 78 | 
             
                    student.read("Moby Dick", library)
         | 
| 79 79 |  | 
| 80 | 
            -
                    library. | 
| 80 | 
            +
                    expect(library).not_to have_received.checkout("Moby Dick")
         | 
| 81 81 | 
             
                  end
         | 
| 82 82 | 
             
                end
         | 
| 83 83 | 
             
                """
         | 
| @@ -95,11 +95,11 @@ Feature: Customizing the overwritten class | |
| 95 95 | 
             
                  it "allows checking out books that are in the inventory" do
         | 
| 96 96 | 
             
                    library.return("Moby Dick")
         | 
| 97 97 |  | 
| 98 | 
            -
                    library.has_book?("Moby Dick"). | 
| 98 | 
            +
                    expect(library.has_book?("Moby Dick")).to be_true
         | 
| 99 99 | 
             
                  end
         | 
| 100 100 |  | 
| 101 101 | 
             
                  it "does not allow checking out unavailable books" do
         | 
| 102 | 
            -
                    library.has_book?("Moby Dick"). | 
| 102 | 
            +
                    expect(library.has_book?("Moby Dick")).to be_false
         | 
| 103 103 | 
             
                  end
         | 
| 104 104 |  | 
| 105 105 | 
             
                  it "marks books as unavailable after they are checked out" do
         | 
| @@ -107,7 +107,7 @@ Feature: Customizing the overwritten class | |
| 107 107 |  | 
| 108 108 | 
             
                    library.checkout("Moby Dick")
         | 
| 109 109 |  | 
| 110 | 
            -
                    library.has_book?("Moby Dick"). | 
| 110 | 
            +
                    expect(library.has_book?("Moby Dick")).to be_false
         | 
| 111 111 | 
             
                  end
         | 
| 112 112 | 
             
                end
         | 
| 113 113 | 
             
                """
         | 
| @@ -51,13 +51,13 @@ Feature: Return value contracts | |
| 51 51 | 
             
                  it "logs in the user with valid data" do
         | 
| 52 52 | 
             
                    stub(authentication_service).authenticate('foo', 'bar')
         | 
| 53 53 |  | 
| 54 | 
            -
                    controller.create(login: 'foo', password: 'bar'). | 
| 54 | 
            +
                    expect(controller.create(login: 'foo', password: 'bar')).to eq(:render_welcome)
         | 
| 55 55 | 
             
                  end
         | 
| 56 56 |  | 
| 57 57 | 
             
                  it "fails with invalid data" do
         | 
| 58 58 | 
             
                    stub(authentication_service).authenticate('baz', 'bar') { raise WrongPassword }
         | 
| 59 59 |  | 
| 60 | 
            -
                    controller.create(login: 'baz', password: 'bar'). | 
| 60 | 
            +
                    expect(controller.create(login: 'baz', password: 'bar')).to eq(:render_error)
         | 
| 61 61 | 
             
                  end
         | 
| 62 62 | 
             
                end
         | 
| 63 63 | 
             
                """
         | 
| @@ -47,7 +47,7 @@ Feature: Anonymous test doubles | |
| 47 47 |  | 
| 48 48 | 
             
                    jake.sign_up(library)
         | 
| 49 49 |  | 
| 50 | 
            -
                    jake.library_card. | 
| 50 | 
            +
                    expect(jake.library_card).to eq("the card")
         | 
| 51 51 | 
             
                  end
         | 
| 52 52 | 
             
                end
         | 
| 53 53 | 
             
                """
         | 
| @@ -64,7 +64,7 @@ Feature: Anonymous test doubles | |
| 64 64 | 
             
                  it "allows stubbing any method with any parameters" do
         | 
| 65 65 | 
             
                    jake.sign_up(library)
         | 
| 66 66 |  | 
| 67 | 
            -
                    jake.library_card. | 
| 67 | 
            +
                    expect(jake.library_card).to eq("the card")
         | 
| 68 68 | 
             
                  end
         | 
| 69 69 | 
             
                end
         | 
| 70 70 | 
             
                """
         | 
| @@ -92,7 +92,7 @@ Feature: Anonymous test doubles | |
| 92 92 |  | 
| 93 93 | 
             
                    jake.sign_up(library)
         | 
| 94 94 |  | 
| 95 | 
            -
                    jake.library_card. | 
| 95 | 
            +
                    expect(jake.library_card).to eq("the card")
         | 
| 96 96 | 
             
                  end
         | 
| 97 97 | 
             
                end
         | 
| 98 98 | 
             
                """
         | 
| @@ -122,7 +122,7 @@ Feature: Anonymous test doubles | |
| 122 122 | 
             
                  it "allows stubbing any method with any parameters" do
         | 
| 123 123 | 
             
                    jake.sign_up(library)
         | 
| 124 124 |  | 
| 125 | 
            -
                    jake.library_card. | 
| 125 | 
            +
                    expect(jake.library_card).to eq("the card")
         | 
| 126 126 | 
             
                  end
         | 
| 127 127 | 
             
                end
         | 
| 128 128 | 
             
                """
         | 
| @@ -139,7 +139,7 @@ Feature: Anonymous test doubles | |
| 139 139 | 
             
                  it "allows spying on any method" do
         | 
| 140 140 | 
             
                    jake.sign_up(library)
         | 
| 141 141 |  | 
| 142 | 
            -
                    library. | 
| 142 | 
            +
                    expect(library).to have_received.register_junior("Jake")
         | 
| 143 143 | 
             
                  end
         | 
| 144 144 | 
             
                end
         | 
| 145 145 | 
             
                """
         | 
| @@ -64,31 +64,31 @@ Feature: Faking duck types | |
| 64 64 | 
             
                  let(:duck_instance) { duck.new }
         | 
| 65 65 |  | 
| 66 66 | 
             
                  it "responds to error" do
         | 
| 67 | 
            -
                    duck_instance. | 
| 67 | 
            +
                    expect(duck_instance).to respond_to(:error)
         | 
| 68 68 | 
             
                  end
         | 
| 69 69 |  | 
| 70 70 | 
             
                  it "has arity 1 for error" do
         | 
| 71 | 
            -
                    duck_instance.method(:error).arity. | 
| 71 | 
            +
                    expect(duck_instance.method(:error).arity).to eq(1)
         | 
| 72 72 | 
             
                  end
         | 
| 73 73 |  | 
| 74 74 | 
             
                  it "responds to warn" do
         | 
| 75 | 
            -
                    duck_instance. | 
| 75 | 
            +
                    expect(duck_instance).to respond_to(:warn)
         | 
| 76 76 | 
             
                  end
         | 
| 77 77 |  | 
| 78 78 | 
             
                  it "has arity 2 for warn" do
         | 
| 79 | 
            -
                    duck_instance.method(:warn).arity. | 
| 79 | 
            +
                    expect(duck_instance.method(:warn).arity).to eq(2)
         | 
| 80 80 | 
             
                  end
         | 
| 81 81 |  | 
| 82 82 | 
             
                  it "does not respond to connection" do
         | 
| 83 | 
            -
                    duck_instance. | 
| 83 | 
            +
                    expect(duck_instance).not_to respond_to(:connection)
         | 
| 84 84 | 
             
                  end
         | 
| 85 85 |  | 
| 86 86 | 
             
                  it "does not respond to socket" do
         | 
| 87 | 
            -
                    duck_instance. | 
| 87 | 
            +
                    expect(duck_instance).not_to respond_to(:socket)
         | 
| 88 88 | 
             
                  end
         | 
| 89 89 |  | 
| 90 90 | 
             
                  it "does not respond to debug" do
         | 
| 91 | 
            -
                    duck_instance. | 
| 91 | 
            +
                    expect(duck_instance).not_to respond_to(:debug)
         | 
| 92 92 | 
             
                  end
         | 
| 93 93 | 
             
                end
         | 
| 94 94 | 
             
                """
         | 
| @@ -108,7 +108,7 @@ Feature: Faking duck types | |
| 108 108 | 
             
                  it "logs the exception" do
         | 
| 109 109 | 
             
                    notifier.notify("whoa!")
         | 
| 110 110 |  | 
| 111 | 
            -
                    logger. | 
| 111 | 
            +
                    expect(logger).to have_received.error("whoa!")
         | 
| 112 112 | 
             
                  end
         | 
| 113 113 | 
             
                end
         | 
| 114 114 | 
             
                """
         | 
| @@ -138,7 +138,7 @@ Feature: Faking duck types | |
| 138 138 | 
             
                  it "logs the exception" do
         | 
| 139 139 | 
             
                    notifier.notify("whoa!")
         | 
| 140 140 |  | 
| 141 | 
            -
                    logger. | 
| 141 | 
            +
                    expect(logger).to have_received.error("whoa!")
         | 
| 142 142 | 
             
                  end
         | 
| 143 143 | 
             
                end
         | 
| 144 144 | 
             
                """
         | 
| @@ -60,7 +60,7 @@ Feature: Faking existing classes | |
| 60 60 | 
             
                  fake(:library)
         | 
| 61 61 |  | 
| 62 62 | 
             
                  it "does something" do
         | 
| 63 | 
            -
                    Student.learn(library). | 
| 63 | 
            +
                    expect(Student.learn(library)).to be_true
         | 
| 64 64 | 
             
                  end
         | 
| 65 65 | 
             
                end
         | 
| 66 66 | 
             
                """
         | 
| @@ -77,7 +77,7 @@ Feature: Faking existing classes | |
| 77 77 | 
             
                  fake(:library) { PublicLibrary }
         | 
| 78 78 |  | 
| 79 79 | 
             
                  it "uses the class provided in block instead of the guessed one" do
         | 
| 80 | 
            -
                    library.class.name. | 
| 80 | 
            +
                    expect(library.class.name).to eq("PublicLibrary")
         | 
| 81 81 | 
             
                  end
         | 
| 82 82 | 
             
                end
         | 
| 83 83 | 
             
                """
         | 
| @@ -91,11 +91,11 @@ Feature: Faking existing classes | |
| 91 91 | 
             
                  fake(:library, as: :class)
         | 
| 92 92 |  | 
| 93 93 | 
             
                  it "is a class" do
         | 
| 94 | 
            -
                    library. | 
| 94 | 
            +
                    expect(library).to be_a(Class)
         | 
| 95 95 | 
             
                  end
         | 
| 96 96 |  | 
| 97 97 | 
             
                  it "has the same name as original class" do
         | 
| 98 | 
            -
                    library.name. | 
| 98 | 
            +
                    expect(library.name).to eq(Library.name)
         | 
| 99 99 | 
             
                  end
         | 
| 100 100 |  | 
| 101 101 | 
             
                  it "has same methods as original class" do
         | 
| @@ -114,10 +114,33 @@ Feature: Faking existing classes | |
| 114 114 | 
             
                                                 return_book: "returned") }
         | 
| 115 115 |  | 
| 116 116 | 
             
                  it "sets the default return value for provided functions" do
         | 
| 117 | 
            -
                    library.checkout("Moby Dick"). | 
| 118 | 
            -
                    library.checkout("Three Musketeers"). | 
| 119 | 
            -
                    library.return_book("Moby Dick"). | 
| 120 | 
            -
                    library.return_book("Three Musketeers"). | 
| 117 | 
            +
                    expect(library.checkout("Moby Dick")).to eq("checked out")
         | 
| 118 | 
            +
                    expect(library.checkout("Three Musketeers")).to eq("checked out")
         | 
| 119 | 
            +
                    expect(library.return_book("Moby Dick")).to eq("returned")
         | 
| 120 | 
            +
                    expect(library.return_book("Three Musketeers")).to eq("returned")
         | 
| 121 | 
            +
                  end
         | 
| 122 | 
            +
                end
         | 
| 123 | 
            +
                """
         | 
| 124 | 
            +
             | 
| 125 | 
            +
              Scenario: Fakes are identified as instances of the faked class
         | 
| 126 | 
            +
                Then spec file with following content should pass:
         | 
| 127 | 
            +
                """ruby
         | 
| 128 | 
            +
                require_relative 'library'
         | 
| 129 | 
            +
             | 
| 130 | 
            +
                def library?(object)
         | 
| 131 | 
            +
                  case object
         | 
| 132 | 
            +
                  when Library
         | 
| 133 | 
            +
                    true
         | 
| 134 | 
            +
                  else
         | 
| 135 | 
            +
                    false
         | 
| 136 | 
            +
                  end
         | 
| 137 | 
            +
                end
         | 
| 138 | 
            +
             | 
| 139 | 
            +
                describe "library class fake" do
         | 
| 140 | 
            +
                  fake(:library)
         | 
| 141 | 
            +
             | 
| 142 | 
            +
                  it "is identified as Library" do
         | 
| 143 | 
            +
                    expect(library?(library)).to be_true
         | 
| 121 144 | 
             
                  end
         | 
| 122 145 | 
             
                end
         | 
| 123 146 | 
             
                """
         | 
| @@ -46,17 +46,17 @@ Feature: Global fake configuration | |
| 46 46 |  | 
| 47 47 | 
             
                  it "is a class" do
         | 
| 48 48 | 
             
                    # because of the as: :class specified in the fake definition
         | 
| 49 | 
            -
                    library. | 
| 49 | 
            +
                    expect(library).to be_an_instance_of(Class)
         | 
| 50 50 | 
             
                  end
         | 
| 51 51 |  | 
| 52 52 | 
             
                  it "is a copy of PublicLibrary" do
         | 
| 53 53 | 
             
                    # because of the block passed into configuration
         | 
| 54 | 
            -
                    library.name. | 
| 54 | 
            +
                    expect(library.name).to eq("PublicLibrary")
         | 
| 55 55 | 
             
                  end
         | 
| 56 56 |  | 
| 57 57 | 
             
                  it "returns has stubbed books_by_author" do
         | 
| 58 58 | 
             
                    # because of the inline-stubbed books_by_author
         | 
| 59 | 
            -
                    library.books_by_author("Mark Twain"). | 
| 59 | 
            +
                    expect(library.books_by_author("Mark Twain")).to eq([])
         | 
| 60 60 | 
             
                  end
         | 
| 61 61 | 
             
                end
         | 
| 62 62 | 
             
                """
         | 
| @@ -71,7 +71,7 @@ Feature: Global fake configuration | |
| 71 71 | 
             
                  fake(:library, books_by_author: ["Some Book"])
         | 
| 72 72 |  | 
| 73 73 | 
             
                  it "can be overridden in the shortcut definition" do
         | 
| 74 | 
            -
                    library.books_by_author("Charles Dickens"). | 
| 74 | 
            +
                    expect(library.books_by_author("Charles Dickens")).to eq(["Some Book"])
         | 
| 75 75 | 
             
                  end
         | 
| 76 76 | 
             
                end
         | 
| 77 77 | 
             
                """
         | 
| @@ -85,7 +85,7 @@ Feature: Global fake configuration | |
| 85 85 | 
             
                describe "The library fake" do
         | 
| 86 86 | 
             
                  it "can be overridden in the helper" do
         | 
| 87 87 | 
             
                    library = fake(:library, books_by_author: ["Some Book"])
         | 
| 88 | 
            -
                    library.books_by_author("Charles Dickens"). | 
| 88 | 
            +
                    expect(library.books_by_author("Charles Dickens")).to eq(["Some Book"])
         | 
| 89 89 | 
             
                  end
         | 
| 90 90 | 
             
                end
         | 
| 91 91 | 
             
                """
         |