mocktail 1.2.3 → 2.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/.github/workflows/main.yml +6 -5
 - data/.gitignore +3 -0
 - data/.standard.yml +8 -0
 - data/CHANGELOG.md +14 -0
 - data/Gemfile +6 -1
 - data/Gemfile.lock +98 -25
 - data/README.md +18 -922
 - data/Rakefile +0 -1
 - data/bin/console +1 -2
 - data/bin/tapioca +29 -0
 - data/lib/mocktail/collects_calls.rb +2 -0
 - data/lib/mocktail/debug.rb +13 -10
 - data/lib/mocktail/dsl.rb +2 -0
 - data/lib/mocktail/errors.rb +2 -0
 - data/lib/mocktail/explains_nils.rb +2 -0
 - data/lib/mocktail/explains_thing.rb +7 -4
 - data/lib/mocktail/grabs_original_method_parameters.rb +30 -0
 - data/lib/mocktail/handles_dry_call/fulfills_stubbing/describes_unsatisfied_stubbing.rb +3 -1
 - data/lib/mocktail/handles_dry_call/fulfills_stubbing/finds_satisfaction.rb +5 -1
 - data/lib/mocktail/handles_dry_call/fulfills_stubbing.rb +2 -0
 - data/lib/mocktail/handles_dry_call/logs_call.rb +2 -0
 - data/lib/mocktail/handles_dry_call/validates_arguments.rb +6 -4
 - data/lib/mocktail/handles_dry_call.rb +2 -0
 - data/lib/mocktail/handles_dry_new_call.rb +2 -0
 - data/lib/mocktail/imitates_type/ensures_imitation_support.rb +2 -0
 - data/lib/mocktail/imitates_type/makes_double/declares_dry_class/reconstructs_call.rb +4 -1
 - data/lib/mocktail/imitates_type/makes_double/declares_dry_class.rb +32 -20
 - data/lib/mocktail/imitates_type/makes_double/gathers_fakeable_instance_methods.rb +2 -0
 - data/lib/mocktail/imitates_type/makes_double.rb +3 -0
 - data/lib/mocktail/imitates_type.rb +3 -1
 - data/lib/mocktail/initialize_based_on_type_system_mode_switching.rb +9 -0
 - data/lib/mocktail/initializes_mocktail.rb +5 -0
 - data/lib/mocktail/matcher_presentation.rb +4 -2
 - data/lib/mocktail/matchers/any.rb +4 -3
 - data/lib/mocktail/matchers/base.rb +10 -2
 - data/lib/mocktail/matchers/captor.rb +9 -0
 - data/lib/mocktail/matchers/includes.rb +2 -0
 - data/lib/mocktail/matchers/includes_hash.rb +9 -0
 - data/lib/mocktail/matchers/includes_key.rb +9 -0
 - data/lib/mocktail/matchers/includes_string.rb +9 -0
 - data/lib/mocktail/matchers/is_a.rb +2 -0
 - data/lib/mocktail/matchers/matches.rb +2 -0
 - data/lib/mocktail/matchers/not.rb +2 -0
 - data/lib/mocktail/matchers/numeric.rb +5 -4
 - data/lib/mocktail/matchers/that.rb +2 -0
 - data/lib/mocktail/matchers.rb +3 -0
 - data/lib/mocktail/raises_neato_no_method_error.rb +2 -0
 - data/lib/mocktail/records_demonstration.rb +2 -0
 - data/lib/mocktail/registers_matcher.rb +8 -3
 - data/lib/mocktail/registers_stubbing.rb +2 -0
 - data/lib/mocktail/replaces_next.rb +7 -1
 - data/lib/mocktail/replaces_type/redefines_new.rb +3 -1
 - data/lib/mocktail/replaces_type/redefines_singleton_methods.rb +14 -2
 - data/lib/mocktail/replaces_type/runs_sorbet_sig_blocks_before_replacement.rb +37 -0
 - data/lib/mocktail/replaces_type.rb +6 -0
 - data/lib/mocktail/resets_state.rb +2 -0
 - data/lib/mocktail/share/bind.rb +7 -5
 - data/lib/mocktail/share/cleans_backtrace.rb +3 -5
 - data/lib/mocktail/share/creates_identifier.rb +16 -9
 - data/lib/mocktail/share/determines_matching_calls.rb +4 -2
 - data/lib/mocktail/share/stringifies_call.rb +6 -2
 - data/lib/mocktail/share/stringifies_method_name.rb +3 -1
 - data/lib/mocktail/simulates_argument_error/reconciles_args_with_params.rb +2 -0
 - data/lib/mocktail/simulates_argument_error/recreates_message.rb +2 -0
 - data/lib/mocktail/simulates_argument_error/transforms_params.rb +15 -8
 - data/lib/mocktail/simulates_argument_error.rb +2 -0
 - data/lib/mocktail/sorbet/mocktail/collects_calls.rb +18 -0
 - data/lib/mocktail/sorbet/mocktail/debug.rb +54 -0
 - data/lib/mocktail/sorbet/mocktail/dsl.rb +46 -0
 - data/lib/mocktail/sorbet/mocktail/errors.rb +19 -0
 - data/lib/mocktail/sorbet/mocktail/explains_nils.rb +41 -0
 - data/lib/mocktail/sorbet/mocktail/explains_thing.rb +137 -0
 - data/lib/mocktail/sorbet/mocktail/grabs_original_method_parameters.rb +33 -0
 - data/lib/mocktail/sorbet/mocktail/handles_dry_call/fulfills_stubbing/describes_unsatisfied_stubbing.rb +27 -0
 - data/lib/mocktail/sorbet/mocktail/handles_dry_call/fulfills_stubbing/finds_satisfaction.rb +24 -0
 - data/lib/mocktail/sorbet/mocktail/handles_dry_call/fulfills_stubbing.rb +45 -0
 - data/lib/mocktail/sorbet/mocktail/handles_dry_call/logs_call.rb +12 -0
 - data/lib/mocktail/sorbet/mocktail/handles_dry_call/validates_arguments.rb +45 -0
 - data/lib/mocktail/sorbet/mocktail/handles_dry_call.rb +25 -0
 - data/lib/mocktail/sorbet/mocktail/handles_dry_new_call.rb +42 -0
 - data/lib/mocktail/sorbet/mocktail/imitates_type/ensures_imitation_support.rb +16 -0
 - data/lib/mocktail/sorbet/mocktail/imitates_type/makes_double/declares_dry_class/reconstructs_call.rb +73 -0
 - data/lib/mocktail/sorbet/mocktail/imitates_type/makes_double/declares_dry_class.rb +136 -0
 - data/lib/mocktail/sorbet/mocktail/imitates_type/makes_double/gathers_fakeable_instance_methods.rb +28 -0
 - data/lib/mocktail/sorbet/mocktail/imitates_type/makes_double.rb +29 -0
 - data/lib/mocktail/sorbet/mocktail/imitates_type.rb +29 -0
 - data/lib/mocktail/sorbet/mocktail/initialize_based_on_type_system_mode_switching.rb +11 -0
 - data/lib/mocktail/sorbet/mocktail/initializes_mocktail.rb +25 -0
 - data/lib/mocktail/sorbet/mocktail/matcher_presentation.rb +21 -0
 - data/lib/mocktail/sorbet/mocktail/matchers/any.rb +27 -0
 - data/lib/mocktail/sorbet/mocktail/matchers/base.rb +39 -0
 - data/lib/mocktail/sorbet/mocktail/matchers/captor.rb +76 -0
 - data/lib/mocktail/sorbet/mocktail/matchers/includes.rb +32 -0
 - data/lib/mocktail/sorbet/mocktail/matchers/includes_hash.rb +12 -0
 - data/lib/mocktail/sorbet/mocktail/matchers/includes_key.rb +12 -0
 - data/lib/mocktail/sorbet/mocktail/matchers/includes_string.rb +12 -0
 - data/lib/mocktail/sorbet/mocktail/matchers/is_a.rb +17 -0
 - data/lib/mocktail/sorbet/mocktail/matchers/matches.rb +19 -0
 - data/lib/mocktail/sorbet/mocktail/matchers/not.rb +17 -0
 - data/lib/mocktail/sorbet/mocktail/matchers/numeric.rb +27 -0
 - data/lib/mocktail/sorbet/mocktail/matchers/that.rb +32 -0
 - data/lib/mocktail/sorbet/mocktail/matchers.rb +19 -0
 - data/lib/mocktail/sorbet/mocktail/raises_neato_no_method_error.rb +93 -0
 - data/lib/mocktail/sorbet/mocktail/records_demonstration.rb +43 -0
 - data/lib/mocktail/sorbet/mocktail/registers_matcher.rb +65 -0
 - data/lib/mocktail/sorbet/mocktail/registers_stubbing.rb +31 -0
 - data/lib/mocktail/sorbet/mocktail/replaces_next.rb +55 -0
 - data/lib/mocktail/sorbet/mocktail/replaces_type/redefines_new.rb +32 -0
 - data/lib/mocktail/sorbet/mocktail/replaces_type/redefines_singleton_methods.rb +80 -0
 - data/lib/mocktail/sorbet/mocktail/replaces_type/runs_sorbet_sig_blocks_before_replacement.rb +39 -0
 - data/lib/mocktail/sorbet/mocktail/replaces_type.rb +36 -0
 - data/lib/mocktail/sorbet/mocktail/resets_state.rb +14 -0
 - data/lib/mocktail/sorbet/mocktail/share/bind.rb +18 -0
 - data/lib/mocktail/sorbet/mocktail/share/cleans_backtrace.rb +22 -0
 - data/lib/mocktail/sorbet/mocktail/share/creates_identifier.rb +39 -0
 - data/lib/mocktail/sorbet/mocktail/share/determines_matching_calls.rb +72 -0
 - data/lib/mocktail/sorbet/mocktail/share/stringifies_call.rb +85 -0
 - data/lib/mocktail/sorbet/mocktail/share/stringifies_method_name.rb +16 -0
 - data/lib/mocktail/sorbet/mocktail/simulates_argument_error/reconciles_args_with_params.rb +27 -0
 - data/lib/mocktail/sorbet/mocktail/simulates_argument_error/recreates_message.rb +34 -0
 - data/lib/mocktail/sorbet/mocktail/simulates_argument_error/transforms_params.rb +58 -0
 - data/lib/mocktail/sorbet/mocktail/simulates_argument_error.rb +36 -0
 - data/lib/mocktail/sorbet/mocktail/sorbet.rb +3 -0
 - data/lib/mocktail/sorbet/mocktail/stringifies_method_signature.rb +53 -0
 - data/lib/mocktail/sorbet/mocktail/typed.rb +5 -0
 - data/lib/mocktail/sorbet/mocktail/value/cabinet.rb +91 -0
 - data/lib/mocktail/sorbet/mocktail/value/call.rb +51 -0
 - data/lib/mocktail/sorbet/mocktail/value/demo_config.rb +10 -0
 - data/lib/mocktail/sorbet/mocktail/value/double.rb +10 -0
 - data/lib/mocktail/sorbet/mocktail/value/double_data.rb +15 -0
 - data/lib/mocktail/sorbet/mocktail/value/explanation.rb +68 -0
 - data/lib/mocktail/sorbet/mocktail/value/explanation_data.rb +19 -0
 - data/lib/mocktail/sorbet/mocktail/value/fake_method_data.rb +11 -0
 - data/lib/mocktail/sorbet/mocktail/value/matcher_registry.rb +27 -0
 - data/lib/mocktail/sorbet/mocktail/value/no_explanation_data.rb +20 -0
 - data/lib/mocktail/sorbet/mocktail/value/signature.rb +35 -0
 - data/lib/mocktail/sorbet/mocktail/value/stubbing.rb +26 -0
 - data/lib/mocktail/sorbet/mocktail/value/top_shelf.rb +79 -0
 - data/lib/mocktail/sorbet/mocktail/value/type_replacement.rb +11 -0
 - data/lib/mocktail/sorbet/mocktail/value/type_replacement_data.rb +19 -0
 - data/lib/mocktail/sorbet/mocktail/value/unsatisfying_call.rb +9 -0
 - data/lib/mocktail/sorbet/mocktail/value/unsatisfying_call_explanation.rb +24 -0
 - data/lib/mocktail/sorbet/mocktail/value.rb +19 -0
 - data/lib/mocktail/sorbet/mocktail/verifies_call/finds_verifiable_calls.rb +21 -0
 - data/lib/mocktail/sorbet/mocktail/verifies_call/raises_verification_error/gathers_calls_of_method.rb +15 -0
 - data/lib/mocktail/sorbet/mocktail/verifies_call/raises_verification_error.rb +74 -0
 - data/lib/mocktail/sorbet/mocktail/verifies_call.rb +37 -0
 - data/lib/mocktail/sorbet/mocktail/version.rb +12 -0
 - data/lib/mocktail/sorbet/mocktail.rb +154 -0
 - data/lib/mocktail/sorbet.rb +1 -0
 - data/lib/mocktail/stringifies_method_signature.rb +2 -0
 - data/lib/mocktail/typed.rb +3 -0
 - data/lib/mocktail/value/cabinet.rb +8 -1
 - data/lib/mocktail/value/call.rb +44 -12
 - data/lib/mocktail/value/demo_config.rb +6 -7
 - data/lib/mocktail/value/double.rb +6 -7
 - data/lib/mocktail/value/double_data.rb +11 -7
 - data/lib/mocktail/value/explanation.rb +28 -3
 - data/lib/mocktail/value/explanation_data.rb +14 -0
 - data/lib/mocktail/value/fake_method_data.rb +7 -6
 - data/lib/mocktail/value/matcher_registry.rb +2 -0
 - data/lib/mocktail/value/no_explanation_data.rb +16 -0
 - data/lib/mocktail/value/signature.rb +19 -27
 - data/lib/mocktail/value/stubbing.rb +11 -12
 - data/lib/mocktail/value/top_shelf.rb +5 -0
 - data/lib/mocktail/value/type_replacement.rb +7 -8
 - data/lib/mocktail/value/type_replacement_data.rb +10 -7
 - data/lib/mocktail/value/unsatisfying_call.rb +5 -6
 - data/lib/mocktail/value/unsatisfying_call_explanation.rb +18 -0
 - data/lib/mocktail/value.rb +5 -2
 - data/lib/mocktail/verifies_call/finds_verifiable_calls.rb +2 -0
 - data/lib/mocktail/verifies_call/raises_verification_error/gathers_calls_of_method.rb +2 -0
 - data/lib/mocktail/verifies_call/raises_verification_error.rb +2 -0
 - data/lib/mocktail/verifies_call.rb +3 -0
 - data/lib/mocktail/version.rb +8 -1
 - data/lib/mocktail.rb +46 -5
 - data/mocktail.gemspec +8 -4
 - data/rbi/mocktail-pregenerated.rbi +1865 -0
 - data/rbi/mocktail.rbi +77 -0
 - data/rbi/sorbet-runtime.rbi +29 -0
 - data/spoom_report.html +1248 -0
 - metadata +130 -3
 
    
        data/rbi/mocktail.rbi
    ADDED
    
    | 
         @@ -0,0 +1,77 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # typed: true
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            class Mocktail::MatcherPresentation
         
     | 
| 
      
 4 
     | 
    
         
            +
              sig {
         
     | 
| 
      
 5 
     | 
    
         
            +
                returns(T.untyped)
         
     | 
| 
      
 6 
     | 
    
         
            +
              }
         
     | 
| 
      
 7 
     | 
    
         
            +
              def any
         
     | 
| 
      
 8 
     | 
    
         
            +
              end
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
              sig {
         
     | 
| 
      
 11 
     | 
    
         
            +
                type_parameters(:T)
         
     | 
| 
      
 12 
     | 
    
         
            +
                  .params(expected: T::Class[T.type_parameter(:T)])
         
     | 
| 
      
 13 
     | 
    
         
            +
                  .returns(T.type_parameter(:T))
         
     | 
| 
      
 14 
     | 
    
         
            +
              }
         
     | 
| 
      
 15 
     | 
    
         
            +
              def is_a(expected)
         
     | 
| 
      
 16 
     | 
    
         
            +
              end
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
              sig {
         
     | 
| 
      
 19 
     | 
    
         
            +
                type_parameters(:T)
         
     | 
| 
      
 20 
     | 
    
         
            +
                  .params(expecteds: T.type_parameter(:T))
         
     | 
| 
      
 21 
     | 
    
         
            +
                  .returns(T::Array[T.type_parameter(:T)])
         
     | 
| 
      
 22 
     | 
    
         
            +
              }
         
     | 
| 
      
 23 
     | 
    
         
            +
              def includes(*expecteds)
         
     | 
| 
      
 24 
     | 
    
         
            +
              end
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
              sig {
         
     | 
| 
      
 27 
     | 
    
         
            +
                type_parameters(:T)
         
     | 
| 
      
 28 
     | 
    
         
            +
                  .params(expecteds: T.type_parameter(:T))
         
     | 
| 
      
 29 
     | 
    
         
            +
                  .returns(T.type_parameter(:T))
         
     | 
| 
      
 30 
     | 
    
         
            +
              }
         
     | 
| 
      
 31 
     | 
    
         
            +
              def includes_string(*expecteds)
         
     | 
| 
      
 32 
     | 
    
         
            +
              end
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
              sig {
         
     | 
| 
      
 35 
     | 
    
         
            +
                type_parameters(:K, :V)
         
     | 
| 
      
 36 
     | 
    
         
            +
                  .params(expecteds: T::Hash[T.type_parameter(:K), T.type_parameter(:V)])
         
     | 
| 
      
 37 
     | 
    
         
            +
                  .returns(T::Hash[T.type_parameter(:K), T.type_parameter(:V)])
         
     | 
| 
      
 38 
     | 
    
         
            +
              }
         
     | 
| 
      
 39 
     | 
    
         
            +
              def includes_hash(*expecteds)
         
     | 
| 
      
 40 
     | 
    
         
            +
              end
         
     | 
| 
      
 41 
     | 
    
         
            +
             
     | 
| 
      
 42 
     | 
    
         
            +
              sig {
         
     | 
| 
      
 43 
     | 
    
         
            +
                type_parameters(:K, :V)
         
     | 
| 
      
 44 
     | 
    
         
            +
                  .params(expecteds: T.type_parameter(:K))
         
     | 
| 
      
 45 
     | 
    
         
            +
                  .returns(T::Hash[T.type_parameter(:K), T.type_parameter(:V)])
         
     | 
| 
      
 46 
     | 
    
         
            +
              }
         
     | 
| 
      
 47 
     | 
    
         
            +
              def includes_key(*expecteds)
         
     | 
| 
      
 48 
     | 
    
         
            +
              end
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
              sig {
         
     | 
| 
      
 51 
     | 
    
         
            +
                params(pattern: T.any(String, Regexp)).returns(String)
         
     | 
| 
      
 52 
     | 
    
         
            +
              }
         
     | 
| 
      
 53 
     | 
    
         
            +
              def matches(pattern)
         
     | 
| 
      
 54 
     | 
    
         
            +
              end
         
     | 
| 
      
 55 
     | 
    
         
            +
             
     | 
| 
      
 56 
     | 
    
         
            +
              sig {
         
     | 
| 
      
 57 
     | 
    
         
            +
                returns(T.untyped)
         
     | 
| 
      
 58 
     | 
    
         
            +
              }
         
     | 
| 
      
 59 
     | 
    
         
            +
              def numeric
         
     | 
| 
      
 60 
     | 
    
         
            +
              end
         
     | 
| 
      
 61 
     | 
    
         
            +
             
     | 
| 
      
 62 
     | 
    
         
            +
              sig {
         
     | 
| 
      
 63 
     | 
    
         
            +
                params(
         
     | 
| 
      
 64 
     | 
    
         
            +
                  blk: T.proc.params(arg: T.untyped).returns(T::Boolean)
         
     | 
| 
      
 65 
     | 
    
         
            +
                ).returns(T.untyped)
         
     | 
| 
      
 66 
     | 
    
         
            +
              }
         
     | 
| 
      
 67 
     | 
    
         
            +
              def that(&blk)
         
     | 
| 
      
 68 
     | 
    
         
            +
              end
         
     | 
| 
      
 69 
     | 
    
         
            +
             
     | 
| 
      
 70 
     | 
    
         
            +
              sig {
         
     | 
| 
      
 71 
     | 
    
         
            +
                type_parameters(:T)
         
     | 
| 
      
 72 
     | 
    
         
            +
                  .params(unexpected: T.type_parameter(:T))
         
     | 
| 
      
 73 
     | 
    
         
            +
                  .returns(T.type_parameter(:T))
         
     | 
| 
      
 74 
     | 
    
         
            +
              }
         
     | 
| 
      
 75 
     | 
    
         
            +
              def not(unexpected)
         
     | 
| 
      
 76 
     | 
    
         
            +
              end
         
     | 
| 
      
 77 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,29 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # typed: true
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            # sorbet gem fails to export some of these constants, so we need to in order to
         
     | 
| 
      
 4 
     | 
    
         
            +
            # pass static typecheck
         
     | 
| 
      
 5 
     | 
    
         
            +
            module T
         
     | 
| 
      
 6 
     | 
    
         
            +
              module Private
         
     | 
| 
      
 7 
     | 
    
         
            +
                module RuntimeLevels
         
     | 
| 
      
 8 
     | 
    
         
            +
                  class << self
         
     | 
| 
      
 9 
     | 
    
         
            +
                    sig { returns(Symbol) }
         
     | 
| 
      
 10 
     | 
    
         
            +
                    def default_checked_level
         
     | 
| 
      
 11 
     | 
    
         
            +
                    end
         
     | 
| 
      
 12 
     | 
    
         
            +
                  end
         
     | 
| 
      
 13 
     | 
    
         
            +
                end
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                module Methods
         
     | 
| 
      
 16 
     | 
    
         
            +
                  class Signature
         
     | 
| 
      
 17 
     | 
    
         
            +
                    sig { returns(T::Array[T::Array[Symbol]]) }
         
     | 
| 
      
 18 
     | 
    
         
            +
                    def parameters
         
     | 
| 
      
 19 
     | 
    
         
            +
                    end
         
     | 
| 
      
 20 
     | 
    
         
            +
                  end
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
                  module MethodHooks
         
     | 
| 
      
 23 
     | 
    
         
            +
                  end
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
                  module SingletonMethodHooks
         
     | 
| 
      
 26 
     | 
    
         
            +
                  end
         
     | 
| 
      
 27 
     | 
    
         
            +
                end
         
     | 
| 
      
 28 
     | 
    
         
            +
              end
         
     | 
| 
      
 29 
     | 
    
         
            +
            end
         
     |