spec/fear/extractor/extractor_matcher_spec.rb in fear-1.0.0 vs spec/fear/extractor/extractor_matcher_spec.rb in fear-1.1.0
- old
+ new
@@ -1,150 +1,152 @@
+# frozen_string_literal: true
+
RSpec.describe Fear::Extractor::ExtractorMatcher do
let(:parser) { Fear::Extractor::GrammarParser.new }
let(:matcher) { parser.parse(pattern).to_matcher }
- describe '#defined_at?' do
+ describe "#defined_at?" do
subject { matcher }
- context 'boolean extractor' do
- let(:pattern) { 'IsEven()' }
+ context "boolean extractor" do
+ let(:pattern) { "IsEven()" }
it { is_expected.to be_defined_at(42) }
it { is_expected.not_to be_defined_at(43) }
- it { is_expected.not_to be_defined_at('foo') }
+ it { is_expected.not_to be_defined_at("foo") }
end
- context 'single argument extractor' do
- let(:pattern) { 'Fear::Some(a : Integer)' }
+ context "single argument extractor" do
+ let(:pattern) { "Fear::Some(a : Integer)" }
it { is_expected.to be_defined_at(Fear.some(42)) }
- it { is_expected.not_to be_defined_at('foo') }
- it { is_expected.not_to be_defined_at(Fear.some('foo')) }
+ it { is_expected.not_to be_defined_at("foo") }
+ it { is_expected.not_to be_defined_at(Fear.some("foo")) }
end
- context 'single argument extractor with array as an argument' do
- let(:pattern) { 'Fear::Some([1, 2])' }
+ context "single argument extractor with array as an argument" do
+ let(:pattern) { "Fear::Some([1, 2])" }
it { is_expected.to be_defined_at(Fear.some([1, 2])) }
it { is_expected.not_to be_defined_at(Fear.some([1, 1])) }
- it { is_expected.not_to be_defined_at(Fear.some('foo')) }
+ it { is_expected.not_to be_defined_at(Fear.some("foo")) }
end
- context 'multiple arguments extractor' do
- let(:pattern) { 'Date(2017, month, _)' }
+ context "multiple arguments extractor" do
+ let(:pattern) { "Date(2017, month, _)" }
- it { is_expected.to be_defined_at(Date.parse('2017-02-15')) }
- it { is_expected.not_to be_defined_at(Date.parse('2018-02-15')) }
- it { is_expected.not_to be_defined_at('foo') }
+ it { is_expected.to be_defined_at(Date.parse("2017-02-15")) }
+ it { is_expected.not_to be_defined_at(Date.parse("2018-02-15")) }
+ it { is_expected.not_to be_defined_at("foo") }
end
- context 'Struct' do
- StructDate = Struct.new(:year, :month, :day)
+ context "Struct" do
+ StructDate = ::Struct.new(:year, :month, :day)
- let(:pattern) { 'StructDate(2017, month, _)' }
+ let(:pattern) { "StructDate(2017, month, _)" }
it { is_expected.to be_defined_at(StructDate.new(2017, 2, 15)) }
it { is_expected.not_to be_defined_at(StructDate.new(2018, 2, 15)) }
end
end
- describe '#call' do
- subject { matcher.call(other) }
+ describe "#call" do
+ subject { matcher.(other) }
- context 'single argument extractor' do
- let(:pattern) { 'Fear::Some(a : Integer)' }
+ context "single argument extractor" do
+ let(:pattern) { "Fear::Some(a : Integer)" }
let(:other) { Fear.some(42) }
it { is_expected.to eq(a: 42) }
end
- context 'multiple arguments extractor' do
- let(:pattern) { 'Date(2017, month, day)' }
- let(:other) { Date.parse('2017-02-15') }
+ context "multiple arguments extractor" do
+ let(:pattern) { "Date(2017, month, day)" }
+ let(:other) { Date.parse("2017-02-15") }
it { is_expected.to eq(month: 2, day: 15) }
end
end
- describe '#failure_reason' do
+ describe "#failure_reason" do
subject { matcher.failure_reason(other) }
- context 'no argument extractor' do
- let(:pattern) { 'IsEven()' }
+ context "no argument extractor" do
+ let(:pattern) { "IsEven()" }
- context 'defined' do
+ context "defined" do
let(:other) { 42 }
it { is_expected.to eq(Fear.none) }
end
- context 'not defined' do
+ context "not defined" do
let(:other) { 43 }
- it { is_expected.to eq(Fear.some(<<-MSG.strip)) }
-Expected `43` to match:
-IsEven()
-^
+ it { is_expected.to eq(Fear.some(<<~MSG.strip)) }
+ Expected `43` to match:
+ IsEven()
+ ^
MSG
end
end
- context 'single argument extractor' do
- let(:pattern) { 'Fear::Some(a : Integer)' }
+ context "single argument extractor" do
+ let(:pattern) { "Fear::Some(a : Integer)" }
- context 'defined' do
+ context "defined" do
let(:other) { Fear.some(42) }
it { is_expected.to eq(Fear.none) }
end
- context 'not defined' do
- let(:other) { Fear.some('42') }
+ context "not defined" do
+ let(:other) { Fear.some("42") }
- it { is_expected.to eq(Fear.some(<<-MSG.strip)) }
-Expected `"42"` to match:
-Fear::Some(a : Integer)
-~~~~~~~~~~~~~~~^
+ it { is_expected.to eq(Fear.some(<<~MSG.strip)) }
+ Expected `"42"` to match:
+ Fear::Some(a : Integer)
+ ~~~~~~~~~~~~~~~^
MSG
end
end
- context 'single argument extractor, array argument' do
- let(:pattern) { 'Fear::Some([1, 2])' }
+ context "single argument extractor, array argument" do
+ let(:pattern) { "Fear::Some([1, 2])" }
- context 'defined' do
+ context "defined" do
let(:other) { Fear.some([1, 2]) }
it { is_expected.to eq(Fear.none) }
end
- context 'not defined' do
+ context "not defined" do
let(:other) { Fear.some([1, 1]) }
- it { is_expected.to eq(Fear.some(<<-MSG.strip)) }
-Expected `1` to match:
-Fear::Some([1, 2])
-~~~~~~~~~~~~~~~^
+ it { is_expected.to eq(Fear.some(<<~MSG.strip)) }
+ Expected `1` to match:
+ Fear::Some([1, 2])
+ ~~~~~~~~~~~~~~~^
MSG
end
end
- context 'multiple arguments extractor' do
- let(:pattern) { 'Date(year, 02, day)' }
+ context "multiple arguments extractor" do
+ let(:pattern) { "Date(year, 02, day)" }
- context 'defined' do
- let(:other) { Date.parse('2017-02-15') }
+ context "defined" do
+ let(:other) { Date.parse("2017-02-15") }
it { is_expected.to eq(Fear.none) }
end
- context 'not defined' do
- let(:other) { Date.parse('2017-04-15') }
+ context "not defined" do
+ let(:other) { Date.parse("2017-04-15") }
- it { is_expected.to eq(Fear.some(<<-MSG.strip)) }
-Expected `4` to match:
-Date(year, 02, day)
-~~~~~~~~~~~^
+ it { is_expected.to eq(Fear.some(<<~MSG.strip)) }
+ Expected `4` to match:
+ Date(year, 02, day)
+ ~~~~~~~~~~~^
MSG
end
end
end
end