Class: Fixturama::Changes
- Inherits:
-
Object
- Object
- Fixturama::Changes
- Defined in:
- lib/fixturama/changes.rb,
lib/fixturama/changes/base.rb,
lib/fixturama/changes/seed.rb,
lib/fixturama/changes/chain.rb,
lib/fixturama/changes/const.rb,
lib/fixturama/changes/request.rb
Overview
Registry of changes (stubs and seeds)
Defined Under Namespace
Classes: Base, Chain, Const, Request, Seed
Constant Summary collapse
- TYPES =
Match option keys to the type of an item
{ actions: Chain, arguments: Chain, basic_auth: Request, body: Request, chain: Chain, class: Chain, const: Const, count: Seed, headers: Request, http_method: Request, object: Chain, params: Seed, query: Request, response: Request, responses: Request, traits: Seed, type: Seed, uri: Request, url: Request, value: Const, }.freeze
Instance Method Summary collapse
-
#add(options) ⇒ Fixturama::Changes
Adds new change to the registry.
-
#call(example) ⇒ self
Apply all registered changes to the RSpec example.
Instance Method Details
#add(options) ⇒ Fixturama::Changes
Adds new change to the registry
41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/fixturama/changes.rb', line 41 def add() = Hash().transform_keys(&:to_sym) types = .keys.map { |key| TYPES[key] }.compact.uniq raise "Wrong count" unless types.count == 1 @changes << types.first.new() self rescue FixtureError => err raise err rescue StandardError => err raise FixtureError.new("an operation", , err) end |
#call(example) ⇒ self
Apply all registered changes to the RSpec example
57 58 59 60 61 62 63 |
# File 'lib/fixturama/changes.rb', line 57 def call(example) @changes .group_by(&:key) .values .map { |changes| changes.reduce :merge } .each { |change| change.call(example) } end |