1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134
|
describe Knapsack::Adapters::RSpecAdapter do
context do
before { expect(::RSpec).to receive(:configure) }
it_behaves_like 'adapter'
end
describe 'bind methods' do
let(:config) { double }
let(:logger) { instance_double(Knapsack::Logger) }
before do
expect(Knapsack).to receive(:logger).and_return(logger)
end
describe '#bind_time_tracker' do
let(:tracker) { instance_double(Knapsack::Tracker) }
let(:test_path) { 'spec/a_spec.rb' }
let(:global_time) { 'Global time: 01m 05s' }
let(:example_group) { double }
let(:current_example) do
OpenStruct.new(metadata: {
example_group: example_group
})
end
it do
expect(config).to receive(:prepend_before).with(:each).and_yield
expect(config).to receive(:append_after).with(:each).and_yield
expect(config).to receive(:after).with(:suite).and_yield
expect(::RSpec).to receive(:configure).and_yield(config)
expect(::RSpec).to receive(:current_example).twice.and_return(current_example)
expect(described_class).to receive(:test_path).with(example_group).and_return(test_path)
allow(Knapsack).to receive(:tracker).and_return(tracker)
expect(tracker).to receive(:test_path=).with(test_path)
expect(tracker).to receive(:start_timer)
expect(tracker).to receive(:stop_timer)
expect(Knapsack::Presenter).to receive(:global_time).and_return(global_time)
expect(logger).to receive(:info).with(global_time)
subject.bind_time_tracker
end
end
describe '#bind_report_generator' do
let(:report) { instance_double(Knapsack::Report) }
let(:report_details) { 'Report details' }
it do
expect(config).to receive(:after).with(:suite).and_yield
expect(::RSpec).to receive(:configure).and_yield(config)
expect(Knapsack).to receive(:report).and_return(report)
expect(report).to receive(:save)
expect(Knapsack::Presenter).to receive(:report_details).and_return(report_details)
expect(logger).to receive(:info).with(report_details)
subject.bind_report_generator
end
end
describe '#bind_time_offset_warning' do
let(:time_offset_warning) { 'Time offset warning' }
let(:log_level) { :info }
it 'creates a post-suite callback to log the time offset message at the specified log level' do
expect(config).to receive(:after).with(:suite).and_yield
expect(::RSpec).to receive(:configure).and_yield(config)
expect(Knapsack::Presenter).to receive(:time_offset_warning).and_return(time_offset_warning)
expect(Knapsack::Presenter).to receive(:time_offset_log_level).and_return(log_level)
expect(logger).to receive(:log).with(log_level, time_offset_warning)
subject.bind_time_offset_warning
end
end
end
describe '.test_path' do
let(:current_example_metadata) do
{
file_path: '1_shared_example.rb',
parent_example_group: {
file_path: '2_shared_example.rb',
parent_example_group: {
file_path: 'a_spec.rb'
}
}
}
end
subject { described_class.test_path(current_example_metadata) }
it { should eql 'a_spec.rb' }
context 'with turnip features' do
describe 'when the turnip version is less than 2' do
let(:current_example_metadata) do
{
file_path: "./spec/features/logging_in.feature",
turnip: true,
parent_example_group: {
file_path: "gems/turnip-1.2.4/lib/turnip/rspec.rb"
}
}
end
before { stub_const("Turnip::VERSION", '1.2.4') }
it { should eql './spec/features/logging_in.feature' }
end
describe 'when turnip is version 2 or greater' do
let(:current_example_metadata) do
{
file_path: "gems/turnip-2.0.0/lib/turnip/rspec.rb",
turnip: true,
parent_example_group: {
file_path: "./spec/features/logging_in.feature",
}
}
end
before { stub_const("Turnip::VERSION", '2.0.0') }
it { should eql './spec/features/logging_in.feature' }
end
end
end
end
|