57 lines
2 KiB
Ruby
57 lines
2 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require 'spec_helper'
|
|
|
|
RSpec.describe BulkImports::Pipeline do
|
|
describe 'pipeline attributes' do
|
|
before do
|
|
stub_const('BulkImports::Extractor', Class.new)
|
|
stub_const('BulkImports::Transformer', Class.new)
|
|
stub_const('BulkImports::Loader', Class.new)
|
|
|
|
klass = Class.new do
|
|
include BulkImports::Pipeline
|
|
|
|
abort_on_failure!
|
|
|
|
extractor BulkImports::Extractor, { foo: :bar }
|
|
transformer BulkImports::Transformer, { foo: :bar }
|
|
loader BulkImports::Loader, { foo: :bar }
|
|
end
|
|
|
|
stub_const('BulkImports::MyPipeline', klass)
|
|
end
|
|
|
|
describe 'getters' do
|
|
it 'retrieves class attributes' do
|
|
expect(BulkImports::MyPipeline.get_extractor).to eq({ klass: BulkImports::Extractor, options: { foo: :bar } })
|
|
expect(BulkImports::MyPipeline.transformers).to contain_exactly({ klass: BulkImports::Transformer, options: { foo: :bar } })
|
|
expect(BulkImports::MyPipeline.get_loader).to eq({ klass: BulkImports::Loader, options: { foo: :bar } })
|
|
expect(BulkImports::MyPipeline.abort_on_failure?).to eq(true)
|
|
end
|
|
end
|
|
|
|
describe 'setters' do
|
|
it 'sets class attributes' do
|
|
klass = Class.new
|
|
options = { test: :test }
|
|
|
|
BulkImports::MyPipeline.extractor(klass, options)
|
|
BulkImports::MyPipeline.transformer(klass, options)
|
|
BulkImports::MyPipeline.loader(klass, options)
|
|
BulkImports::MyPipeline.abort_on_failure!
|
|
|
|
expect(BulkImports::MyPipeline.get_extractor).to eq({ klass: klass, options: options })
|
|
|
|
expect(BulkImports::MyPipeline.transformers)
|
|
.to contain_exactly(
|
|
{ klass: BulkImports::Transformer, options: { foo: :bar } },
|
|
{ klass: klass, options: options })
|
|
|
|
expect(BulkImports::MyPipeline.get_loader).to eq({ klass: klass, options: options })
|
|
|
|
expect(BulkImports::MyPipeline.abort_on_failure?).to eq(true)
|
|
end
|
|
end
|
|
end
|
|
end
|