Sha256: 6116538046b07ef492a8c827ee0cd8297bc7ee659c1b64733227536b7fdc98cb

Contents?: true

Size: 969 Bytes

Versions: 2

Compression:

Stored size: 969 Bytes

Contents

# typed: strict
# frozen_string_literal: true

module RubyLsp
  module Rails
    module ActiveSupportTestCaseHelper
      extend T::Sig

      sig { params(node: Prism::CallNode).returns(T.nilable(String)) }
      def extract_test_case_name(node)
        message_value = node.message
        return unless message_value == "test" || message_value == "it"

        return unless node.arguments

        arguments = node.arguments&.arguments
        return unless arguments&.any?

        first_argument = arguments.first

        content = case first_argument
        when Prism::InterpolatedStringNode
          parts = first_argument.parts

          if parts.all? { |part| part.is_a?(Prism::StringNode) }
            T.cast(parts, T::Array[Prism::StringNode]).map(&:content).join
          end
        when Prism::StringNode
          first_argument.content
        end

        if content && !content.empty?
          content
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
ruby-lsp-rails-0.3.2 lib/ruby_lsp/ruby_lsp_rails/support/active_support_test_case_helper.rb
ruby-lsp-rails-0.3.1 lib/ruby_lsp/ruby_lsp_rails/support/active_support_test_case_helper.rb