-
Notifications
You must be signed in to change notification settings - Fork 49
/
source_spec.rb
63 lines (60 loc) · 1.69 KB
/
source_spec.rb
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
require 'spec_helper'
describe Picky::Source do
context 'unblock_source' do
context 'with block' do
it 'unblocks' do
result = described_class.from ->() { :some_source }, false
result.call == :some_source
end
end
context 'with #each' do
it 'takes the source directly' do
described_class.from([:some_source], true) == :some_source
end
it 'takes the source directly' do
described_class.from([:some_source], false) == :some_source
end
end
end
context 'extract_source' do
context 'block with source hash' do
it 'extracts a source' do
described_class.from(->(){}, false).should be_kind_of(Proc)
end
end
context 'each source' do
let(:source) do
Class.new do
def each
end
end.new
end
it 'extracts a source' do
described_class.from(source, false).should == source
end
end
context 'invalid source with nil not ok' do
it 'raises with a nice error message' do
expect {
described_class.from Object.new, false
}.to raise_error(<<-ERROR)
The source should respond to either the method #each or
it can be a lambda/block, returning such a source.
ERROR
end
it 'raises with a nice error message' do
expect {
described_class.from Object.new, false, 'some_index'
}.to raise_error(<<-ERROR)
The source for some_index should respond to either the method #each or
it can be a lambda/block, returning such a source.
ERROR
end
end
context 'with nil ok' do
it 'simply returns nil back' do
described_class.from(nil, true).should == nil
end
end
end
end