Skip to content

alpaca-tc/rspec-parameterized-context

Repository files navigation

Rspec::Parameterized::Context

Generate interfaces like RSpec::Parameterized to support parameterized testing that is evaluated in transaction.

Support Ruby 2.5 and later.

Installation

Add this line to your application's Gemfile:

gem 'rspec-parameterized-context'

Then add this lines to files under spec/support/

RSpec.configure do |config|
  config.extend RSpecParameterizedContext
end

Usage

Syntax

Provide interfaces like RSpec::Parameterized.

Pass where and with_them to parameterized method as one block and specify parameterized count as size keyword argument.

describe "Addition" do
  parameterized do
    where(:a, :b, :answer, size: 3) do
      [
        [1 , 2 , 3],
        [5 , 8 , 13],
        [0 , 0 , 0]
      ]
    end

    with_them do
      it do
        expect(a + b).to eq answer
      end
    end
  end
end

Feature

  • rspec-parameterized-context supports to evaluate block that given where method in transaction.
# Assume today is 2020/9/9
describe 'Evaluting block that given to where in transaction' do
  let(:now) { Date.new(2020, 1, 1) }
  # And travel to 2020/1/1
  before { travel_to(now) }

  parameterized do
    where(:current_on, size: 1) do
      [
        [Date.current],
      ]
    end

    with_them do
      it do
        # current_on is evaluated as 2020/1/1
        expect(current_on).to eq now
      end
    end
  end
end
  • You can run specific context by focus_index parameter
describe "Addition" do
  parameterized do
    where(:a, :b, :answer, size: 3, focus_index: 1) do
      [
        [1 , 2 , 3],
        [5 , 8 , 13], # will run only this context
        [0 , 0 , 0]
      ]
    end

    with_them do
      it do
        expect(a + b).to eq answer
      end
    end
  end
end

Contributing

  • Fork the project.
  • Create feature branch.
  • Commit and push.
  • Make sure to add tests for it.
  • Create pull request.

License

The gem is available as open source under the terms of the MIT License.

Code of Conduct

Everyone interacting in the Rspec::Parameterized::Context project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the code of conduct.

About

No description, website, or topics provided.

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages