# frozen_string_literal: true

require 'rails_helper'

RSpec.describe TestingFrameworkAdapter do
  let(:adapter) { described_class.new }
  let(:count) { 42 }
  let(:failed) { 25 }
  let(:passed) { 17 }

  describe '#augment_output' do
    context 'when missing the count of all tests' do
      it 'adds the count of all tests' do
        expect(adapter.send(:augment_output, failed:, passed:)).to include(count:)
      end
    end

    context 'when missing the count of failed tests' do
      it 'adds the count of failed tests' do
        expect(adapter.send(:augment_output, count:, passed:)).to include(failed:)
      end
    end

    context 'when missing the count of passed tests' do
      it 'adds the count of passed tests' do
        expect(adapter.send(:augment_output, count:, failed:)).to include(passed:)
      end
    end
  end

  describe '.framework_name' do
    it 'defaults to the class name' do
      expect(adapter.class.framework_name).to eq(described_class.name)
    end
  end

  describe '#parse_output' do
    it 'requires subclasses to implement #parse_output' do
      expect { adapter.send(:parse_output, '') }.to raise_error(NotImplementedError)
    end
  end

  describe '#test_outcome' do
    it 'calls the framework-specific implementation' do
      allow(adapter).to receive(:parse_output).and_return(count:, failed:, passed:)
      expect(adapter).to receive(:parse_output)
      adapter.test_outcome('')
    end
  end
end
