Sha256: a6591d7b9e94b150d1e40eb0c6f069972de357c5dbdfd4da8ddafe895706e39d
Contents?: true
Size: 1.77 KB
Versions: 2
Compression:
Stored size: 1.77 KB
Contents
# frozen_string_literal: true RSpec.describe Fear::Extractor do describe ".register_extractor" do Foo = ::Struct.new(:v1, :v2) let(:matcher) do Fear.matcher do |m| m.case(Fear["Foo(43, second : Integer)"]) { |second| "43 and #{second}" } m.case(Fear["Foo(42, second : Integer)"]) { |second| "42 and #{second}" } m.else { "no match" } end end let(:extractor) do Fear.case(Foo) { |foo| [foo.v1, foo.v2] }.lift end context "extractor not registered" do it "raise Fear::Extractor::ExtractorNotFound" do expect do described_class.find_extractor("UnknownExtractor") end.to raise_error(Fear::Extractor::ExtractorNotFound) end end context "register by name" do let(:extractor) { ->(*) { Fear.some("matched") } } before do described_class.register_extractor( "ExtractorRegisteredByName", "ExtractorRegisteredByName2", extractor, ) end it "returns extractor" do expect(described_class.find_extractor("ExtractorRegisteredByName")).to eq(extractor) expect(described_class.find_extractor("ExtractorRegisteredByName2")).to eq(extractor) end end context "register by class" do let(:extractor) { ->(*) { Fear.some("matched") } } ExtractorRegisteredByClass = Class.new before do described_class.register_extractor( ExtractorRegisteredByClass, "ExtractorRegisteredByClass2", extractor, ) end it "returns extractor" do expect(described_class.find_extractor("ExtractorRegisteredByClass")).to eq(extractor) expect(described_class.find_extractor("ExtractorRegisteredByClass2")).to eq(extractor) end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
fear-1.2.0 | spec/fear/extractor_spec.rb |
fear-1.1.0 | spec/fear/extractor_spec.rb |