spec/unit/mutant/subject_spec.rb in mutant-0.6.6 vs spec/unit/mutant/subject_spec.rb in mutant-0.6.7

- old
+ new

@@ -1,11 +1,15 @@ RSpec.describe Mutant::Subject do let(:class_under_test) do Class.new(described_class) do def expression - Mutant::Expression.parse('Test') + Mutant::Expression.parse('SubjectA') end + + def match_expressions + [expression] << Mutant::Expression.parse('SubjectB') + end end end let(:object) { class_under_test.new(config, context, node) } @@ -32,16 +36,66 @@ end describe '#identification' do subject { object.identification } - it { should eql('Test:source_path:source_line') } + it { should eql('SubjectA:source_path:source_line') } end describe '#prepare' do subject { object.prepare } it_should_behave_like 'a command method' + end + + describe '#tests' do + let(:config) { Mutant::Config::DEFAULT.update(integration: integration) } + let(:integration) { double('Integration', all_tests: all_tests) } + let(:test_a) { double('test', expression: Mutant::Expression.parse('SubjectA')) } + let(:test_b) { double('test', expression: Mutant::Expression.parse('SubjectB')) } + let(:test_c) { double('test', expression: Mutant::Expression.parse('SubjectC')) } + + subject { object.tests } + + context 'without available tests' do + let(:all_tests) { [] } + + it { should eql([]) } + + it_should_behave_like 'an idempotent method' + end + + context 'without qualifying tests' do + let(:all_tests) { [test_c] } + + it { should eql([]) } + + it_should_behave_like 'an idempotent method' + end + + context 'with qualifying tests for first match expression' do + let(:all_tests) { [test_a] } + + it { should eql([test_a]) } + + it_should_behave_like 'an idempotent method' + end + + context 'with qualifying tests for second match expression' do + let(:all_tests) { [test_b] } + + it { should eql([test_b]) } + + it_should_behave_like 'an idempotent method' + end + + context 'with qualifying tests for the first and second match expression' do + let(:all_tests) { [test_a, test_b] } + + it { should eql([test_a]) } + + it_should_behave_like 'an idempotent method' + end end describe '#node' do subject { object.node }