# frozen_string_literal: true

module ActionDispatch
  module Routing
    class Endpoint # :nodoc:
      def dispatcher?;                           false; end
      def redirect?;                             false; end
      def engine?;       rack_app.respond_to?(:routes); end
      def matches?(req);                          true; end
      def app;                                    self; end
      def rack_app;                                app; end
    end
  end
end

# frozen_string_literal: true

module ActionDispatch
  module Routing
    class Endpoint # :nodoc:
      def dispatcher?;   false; end
      def redirect?;     false; end
      def matches?(req);  true; end
      def app;            self; end
      def rack_app;        app; end

      def engine?
        rack_app.is_a?(Class) && rack_app < Rails::Engine
      end
    end
  end
end

Make engine check more explicit
Make engine check more explicit

Not everything that responds to `routes` is a Rails engine - for example
a Grape API endpoint will have a `routes` method but can't be used with
`assert_recognizes` as it doesn't respond to `recognize_path_with_request`.

Fixes #32312.
