dirt-core 2.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Gemfile +8 -0
- data/Gemfile.lock +46 -0
- data/MIT-LICENSE +23 -0
- data/README +14 -0
- data/doc/BlockValidator.html +272 -0
- data/doc/ClosureValidator.html +276 -0
- data/doc/Dirt.html +158 -0
- data/doc/Dirt/FooBar.html +167 -0
- data/doc/Dirt/HerpZerp.html +161 -0
- data/doc/Dirt/HerpZerp/DerpGerp.html +161 -0
- data/doc/Dirt/HerpZerp/DerpGerp/FooBar.html +167 -0
- data/doc/Dirt/MemoryPersister.html +453 -0
- data/doc/Dirt/MemoryRecord.html +157 -0
- data/doc/Dirt/MissingRecordError.html +157 -0
- data/doc/Dirt/Model.html +320 -0
- data/doc/Dirt/NoPersisterError.html +157 -0
- data/doc/Dirt/Relation.html +338 -0
- data/doc/Dirt/Role.html +345 -0
- data/doc/Dirt/TooManyRecordsError.html +157 -0
- data/doc/Dirt/TransactionError.html +157 -0
- data/doc/ExistenceValidator.html +316 -0
- data/doc/FooBar.html +153 -0
- data/doc/Gemfile.html +131 -0
- data/doc/HerpZerp.html +147 -0
- data/doc/HerpZerp/DerpGerp.html +147 -0
- data/doc/HerpZerp/DerpGerp/FooBar.html +153 -0
- data/doc/Persister.html +311 -0
- data/doc/Persisting.html +413 -0
- data/doc/PresenceValidator.html +281 -0
- data/doc/README.html +132 -0
- data/doc/Role.html +309 -0
- data/doc/Scheduler.html +147 -0
- data/doc/SelfExistenceValidator.html +278 -0
- data/doc/TestPersister.html +411 -0
- data/doc/Validating.html +293 -0
- data/doc/created.rid +18 -0
- data/doc/images/add.png +0 -0
- data/doc/images/brick.png +0 -0
- data/doc/images/brick_link.png +0 -0
- data/doc/images/bug.png +0 -0
- data/doc/images/bullet_black.png +0 -0
- data/doc/images/bullet_toggle_minus.png +0 -0
- data/doc/images/bullet_toggle_plus.png +0 -0
- data/doc/images/date.png +0 -0
- data/doc/images/delete.png +0 -0
- data/doc/images/find.png +0 -0
- data/doc/images/loadingAnimation.gif +0 -0
- data/doc/images/macFFBgHack.png +0 -0
- data/doc/images/package.png +0 -0
- data/doc/images/page_green.png +0 -0
- data/doc/images/page_white_text.png +0 -0
- data/doc/images/page_white_width.png +0 -0
- data/doc/images/plugin.png +0 -0
- data/doc/images/ruby.png +0 -0
- data/doc/images/tag_blue.png +0 -0
- data/doc/images/tag_green.png +0 -0
- data/doc/images/transparent.png +0 -0
- data/doc/images/wrench.png +0 -0
- data/doc/images/wrench_orange.png +0 -0
- data/doc/images/zoom.png +0 -0
- data/doc/index.html +110 -0
- data/doc/js/darkfish.js +155 -0
- data/doc/js/jquery.js +18 -0
- data/doc/js/navigation.js +142 -0
- data/doc/js/search.js +94 -0
- data/doc/js/search_index.js +1 -0
- data/doc/js/searcher.js +228 -0
- data/doc/rdoc.css +543 -0
- data/doc/table_of_contents.html +203 -0
- data/lib/dirt/bdd/matchers.rb +10 -0
- data/lib/dirt/bdd/persister_spec_helper.rb +213 -0
- data/lib/dirt/bdd/shared_examples.rb +29 -0
- data/lib/dirt/contexts/context.rb +15 -0
- data/lib/dirt/core.rb +36 -0
- data/lib/dirt/errors/missing_record_error.rb +4 -0
- data/lib/dirt/errors/no_persister_error.rb +4 -0
- data/lib/dirt/errors/too_many_records_error.rb +4 -0
- data/lib/dirt/errors/transaction_error.rb +4 -0
- data/lib/dirt/models/model_behaviour.rb +47 -0
- data/lib/dirt/persisters/memory_persister.rb +86 -0
- data/lib/dirt/persisters/persister.rb +54 -0
- data/lib/dirt/persisters/relation.rb +38 -0
- data/lib/dirt/roles/persisting.rb +73 -0
- data/lib/dirt/roles/role.rb +32 -0
- data/lib/dirt/roles/validating.rb +27 -0
- data/lib/dirt/roles/validation/closure_validator.rb +15 -0
- data/lib/dirt/roles/validation/existence_validator.rb +53 -0
- data/lib/dirt/roles/validation/presence_validator.rb +21 -0
- data/lib/dirt/roles/validation/self_existence_validator.rb +18 -0
- data/spec/isolations/closure_validator_spec.rb +57 -0
- data/spec/isolations/context_spec.rb +54 -0
- data/spec/isolations/existence_validator_spec.rb +151 -0
- data/spec/isolations/memory_persister_spec.rb +175 -0
- data/spec/isolations/model_spec.rb +91 -0
- data/spec/isolations/persister_spec.rb +113 -0
- data/spec/isolations/persisting_spec.rb +266 -0
- data/spec/isolations/presence_validator_spec.rb +63 -0
- data/spec/isolations/role_spec.rb +116 -0
- data/spec/isolations/self_existence_validator_spec.rb +64 -0
- data/spec/isolations/spec_helper.rb +26 -0
- data/spec/isolations/validating_spec.rb +88 -0
- metadata +161 -0
@@ -0,0 +1,203 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
|
3
|
+
<html>
|
4
|
+
<head>
|
5
|
+
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
|
6
|
+
|
7
|
+
<title>Table of Contents - RDoc Documentation</title>
|
8
|
+
|
9
|
+
<link type="text/css" media="screen" href="./rdoc.css" rel="stylesheet">
|
10
|
+
|
11
|
+
<script type="text/javascript">
|
12
|
+
var rdoc_rel_prefix = "./";
|
13
|
+
</script>
|
14
|
+
|
15
|
+
<script type="text/javascript" charset="utf-8" src="./js/jquery.js"></script>
|
16
|
+
<script type="text/javascript" charset="utf-8" src="./js/navigation.js"></script>
|
17
|
+
<script type="text/javascript" charset="utf-8" src="./js/search_index.js"></script>
|
18
|
+
<script type="text/javascript" charset="utf-8" src="./js/search.js"></script>
|
19
|
+
<script type="text/javascript" charset="utf-8" src="./js/searcher.js"></script>
|
20
|
+
<script type="text/javascript" charset="utf-8" src="./js/darkfish.js"></script>
|
21
|
+
|
22
|
+
|
23
|
+
<body class="indexpage">
|
24
|
+
<h1>Table of Contents - RDoc Documentation</h1>
|
25
|
+
|
26
|
+
<h2>Pages</h2>
|
27
|
+
<ul>
|
28
|
+
<li class="file">
|
29
|
+
<a href="README.html">README</a>
|
30
|
+
</li>
|
31
|
+
|
32
|
+
</ul>
|
33
|
+
|
34
|
+
<h2 id="classes">Classes/Modules</h2>
|
35
|
+
<ul>
|
36
|
+
<li class="module">
|
37
|
+
<a href="Dirt.html">Dirt</a>
|
38
|
+
</li>
|
39
|
+
<li class="class">
|
40
|
+
<a href="Dirt/MemoryPersister.html">Dirt::MemoryPersister</a>
|
41
|
+
</li>
|
42
|
+
<li class="class">
|
43
|
+
<a href="Dirt/MemoryRecord.html">Dirt::MemoryRecord</a>
|
44
|
+
</li>
|
45
|
+
<li class="class">
|
46
|
+
<a href="Dirt/MissingRecordError.html">Dirt::MissingRecordError</a>
|
47
|
+
</li>
|
48
|
+
<li class="class">
|
49
|
+
<a href="Dirt/Model.html">Dirt::Model</a>
|
50
|
+
</li>
|
51
|
+
<li class="class">
|
52
|
+
<a href="Dirt/NoPersisterError.html">Dirt::NoPersisterError</a>
|
53
|
+
</li>
|
54
|
+
<li class="class">
|
55
|
+
<a href="Dirt/Relation.html">Dirt::Relation</a>
|
56
|
+
</li>
|
57
|
+
<li class="class">
|
58
|
+
<a href="Dirt/Role.html">Dirt::Role</a>
|
59
|
+
</li>
|
60
|
+
<li class="class">
|
61
|
+
<a href="Dirt/TooManyRecordsError.html">Dirt::TooManyRecordsError</a>
|
62
|
+
</li>
|
63
|
+
<li class="class">
|
64
|
+
<a href="Dirt/TransactionError.html">Dirt::TransactionError</a>
|
65
|
+
</li>
|
66
|
+
<li class="class">
|
67
|
+
<a href="ClosureValidator.html">ClosureValidator</a>
|
68
|
+
</li>
|
69
|
+
<li class="class">
|
70
|
+
<a href="ExistenceValidator.html">ExistenceValidator</a>
|
71
|
+
</li>
|
72
|
+
<li class="class">
|
73
|
+
<a href="Persister.html">Persister</a>
|
74
|
+
|
75
|
+
<img class="toc-toggle" src="images/transparent.png" alt="" title="toggle headings">
|
76
|
+
<ul class="initially-hidden">
|
77
|
+
<li><a href="Persister.html#label-Persisters">Persisters</a>
|
78
|
+
</ul>
|
79
|
+
</li>
|
80
|
+
<li class="class">
|
81
|
+
<a href="Persisting.html">Persisting</a>
|
82
|
+
</li>
|
83
|
+
<li class="class">
|
84
|
+
<a href="PresenceValidator.html">PresenceValidator</a>
|
85
|
+
</li>
|
86
|
+
<li class="class">
|
87
|
+
<a href="SelfExistenceValidator.html">SelfExistenceValidator</a>
|
88
|
+
</li>
|
89
|
+
<li class="class">
|
90
|
+
<a href="Validating.html">Validating</a>
|
91
|
+
|
92
|
+
<img class="toc-toggle" src="images/transparent.png" alt="" title="toggle headings">
|
93
|
+
<ul class="initially-hidden">
|
94
|
+
<li><a href="Validating.html#label-Validators">Validators</a>
|
95
|
+
</ul>
|
96
|
+
</li>
|
97
|
+
|
98
|
+
</ul>
|
99
|
+
|
100
|
+
<h2 id="methods">Methods</h2>
|
101
|
+
<ul>
|
102
|
+
|
103
|
+
<li class="method"><a href="Persister.html#method-c-clear">::clear — Persister</a>
|
104
|
+
|
105
|
+
<li class="method"><a href="Persister.html#method-c-for">::for — Persister</a>
|
106
|
+
|
107
|
+
<li class="method"><a href="Validating.html#method-c-new">::new — Validating</a>
|
108
|
+
|
109
|
+
<li class="method"><a href="Dirt/Relation.html#method-c-new">::new — Dirt::Relation</a>
|
110
|
+
|
111
|
+
<li class="method"><a href="Dirt/MemoryPersister.html#method-c-new">::new — Dirt::MemoryPersister</a>
|
112
|
+
|
113
|
+
<li class="method"><a href="Dirt/Model.html#method-c-new">::new — Dirt::Model</a>
|
114
|
+
|
115
|
+
<li class="method"><a href="Persisting.html#method-c-new">::new — Persisting</a>
|
116
|
+
|
117
|
+
<li class="method"><a href="SelfExistenceValidator.html#method-c-new">::new — SelfExistenceValidator</a>
|
118
|
+
|
119
|
+
<li class="method"><a href="Dirt/Role.html#method-c-new">::new — Dirt::Role</a>
|
120
|
+
|
121
|
+
<li class="method"><a href="ClosureValidator.html#method-c-new">::new — ClosureValidator</a>
|
122
|
+
|
123
|
+
<li class="method"><a href="PresenceValidator.html#method-c-new">::new — PresenceValidator</a>
|
124
|
+
|
125
|
+
<li class="method"><a href="ExistenceValidator.html#method-c-new">::new — ExistenceValidator</a>
|
126
|
+
|
127
|
+
<li class="method"><a href="Persister.html#method-c-transaction">::transaction — Persister</a>
|
128
|
+
|
129
|
+
<li class="method"><a href="Dirt/Model.html#method-i-3D-3D">#== — Dirt::Model</a>
|
130
|
+
|
131
|
+
<li class="method"><a href="Persisting.html#method-i-3D-3D">#== — Persisting</a>
|
132
|
+
|
133
|
+
<li class="method"><a href="Dirt/Role.html#method-i-3D-3D">#== — Dirt::Role</a>
|
134
|
+
|
135
|
+
<li class="method"><a href="Dirt/MemoryPersister.html#method-i-all">#all — Dirt::MemoryPersister</a>
|
136
|
+
|
137
|
+
<li class="method"><a href="Dirt/Role.html#method-i-class">#class — Dirt::Role</a>
|
138
|
+
|
139
|
+
<li class="method"><a href="Dirt/Relation.html#method-i-collect">#collect — Dirt::Relation</a>
|
140
|
+
|
141
|
+
<li class="method"><a href="Persisting.html#method-i-delete">#delete — Persisting</a>
|
142
|
+
|
143
|
+
<li class="method"><a href="Dirt/MemoryPersister.html#method-i-delete">#delete — Dirt::MemoryPersister</a>
|
144
|
+
|
145
|
+
<li class="method"><a href="Dirt/Relation.html#method-i-each">#each — Dirt::Relation</a>
|
146
|
+
|
147
|
+
<li class="method"><a href="Dirt/Relation.html#method-i-empty-3F">#empty? — Dirt::Relation</a>
|
148
|
+
|
149
|
+
<li class="method"><a href="SelfExistenceValidator.html#method-i-error_message">#error_message — SelfExistenceValidator</a>
|
150
|
+
|
151
|
+
<li class="method"><a href="PresenceValidator.html#method-i-error_message">#error_message — PresenceValidator</a>
|
152
|
+
|
153
|
+
<li class="method"><a href="ClosureValidator.html#method-i-error_message">#error_message — ClosureValidator</a>
|
154
|
+
|
155
|
+
<li class="method"><a href="ExistenceValidator.html#method-i-error_message">#error_message — ExistenceValidator</a>
|
156
|
+
|
157
|
+
<li class="method"><a href="Validating.html#method-i-errors">#errors — Validating</a>
|
158
|
+
|
159
|
+
<li class="method"><a href="Dirt/MemoryPersister.html#method-i-exists-3F">#exists? — Dirt::MemoryPersister</a>
|
160
|
+
|
161
|
+
<li class="method"><a href="Dirt/MemoryPersister.html#method-i-find">#find — Dirt::MemoryPersister</a>
|
162
|
+
|
163
|
+
<li class="method"><a href="Dirt/Relation.html#method-i-first">#first — Dirt::Relation</a>
|
164
|
+
|
165
|
+
<li class="method"><a href="Dirt/MemoryPersister.html#method-i-load">#load — Dirt::MemoryPersister</a>
|
166
|
+
|
167
|
+
<li class="method"><a href="Persisting.html#method-i-load">#load — Persisting</a>
|
168
|
+
|
169
|
+
<li class="method"><a href="Persisting.html#method-i-load_by">#load_by — Persisting</a>
|
170
|
+
|
171
|
+
<li class="method"><a href="Dirt/Role.html#method-i-method_missing">#method_missing — Dirt::Role</a>
|
172
|
+
|
173
|
+
<li class="method"><a href="Dirt/Role.html#method-i-respond_to-3F">#respond_to? — Dirt::Role</a>
|
174
|
+
|
175
|
+
<li class="method"><a href="Persisting.html#method-i-save">#save — Persisting</a>
|
176
|
+
|
177
|
+
<li class="method"><a href="Dirt/MemoryPersister.html#method-i-save">#save — Dirt::MemoryPersister</a>
|
178
|
+
|
179
|
+
<li class="method"><a href="Dirt/Model.html#method-i-to_hash">#to_hash — Dirt::Model</a>
|
180
|
+
|
181
|
+
<li class="method"><a href="Dirt/Model.html#method-i-update">#update — Dirt::Model</a>
|
182
|
+
|
183
|
+
<li class="method"><a href="ClosureValidator.html#method-i-valid-3F">#valid? — ClosureValidator</a>
|
184
|
+
|
185
|
+
<li class="method"><a href="SelfExistenceValidator.html#method-i-valid-3F">#valid? — SelfExistenceValidator</a>
|
186
|
+
|
187
|
+
<li class="method"><a href="ExistenceValidator.html#method-i-valid-3F">#valid? — ExistenceValidator</a>
|
188
|
+
|
189
|
+
<li class="method"><a href="PresenceValidator.html#method-i-valid-3F">#valid? — PresenceValidator</a>
|
190
|
+
|
191
|
+
<li class="method"><a href="Validating.html#method-i-valid-3F">#valid? — Validating</a>
|
192
|
+
|
193
|
+
<li class="method"><a href="Dirt/MemoryPersister.html#method-i-where">#where — Dirt::MemoryPersister</a>
|
194
|
+
|
195
|
+
</ul>
|
196
|
+
|
197
|
+
|
198
|
+
<footer id="validator-badges">
|
199
|
+
<p><a href="http://validator.w3.org/check/referer">[Validate]</a>
|
200
|
+
<p>Generated by <a href="https://github.com/rdoc/rdoc">RDoc</a> 3.12.2.
|
201
|
+
<p>Generated with the <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish Rdoc Generator</a> 3.
|
202
|
+
</footer>
|
203
|
+
|
@@ -0,0 +1,213 @@
|
|
1
|
+
# To use Persister shared examples, supply +it_behaves_like(:persister)+ with:
|
2
|
+
# * +:persisted+ - An instance to be saved to the persister that matches +where_params+
|
3
|
+
# * +:persisted2+ - An instance to be saved to the persister that matches +where_params+
|
4
|
+
# * +:different_persisted+ - An instance to be saved to the persister that does *not* match +where_params+
|
5
|
+
# * +:where_params+ - The parameter hash given to #where()
|
6
|
+
#
|
7
|
+
# using, for example, the block syntax
|
8
|
+
shared_examples_for(:persister) do
|
9
|
+
describe '#new' do
|
10
|
+
context 'no args' do
|
11
|
+
it 'should return a non-nil' do
|
12
|
+
subject.new.should_not be_nil
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
context 'some args' do
|
17
|
+
before(:each) do
|
18
|
+
@new_obj = subject.new(where_params)
|
19
|
+
end
|
20
|
+
it 'should populate each parameter' do
|
21
|
+
where_params.each do |key, val|
|
22
|
+
@new_obj.send(key).should == val
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
describe '#save' do
|
29
|
+
context 'one arg' do
|
30
|
+
it { should respond_to(:save).with(1).arguments }
|
31
|
+
|
32
|
+
it 'should return an object with an id' do
|
33
|
+
subject.save(persisted).should respond_to(:id)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
context 'specific id' do
|
38
|
+
it { should respond_to(:save).with(2).arguments }
|
39
|
+
|
40
|
+
context 'it pre-exists' do
|
41
|
+
let(:id) { subject.save(persisted).id }
|
42
|
+
|
43
|
+
it 'should return an object with an id' do
|
44
|
+
subject.save(persisted, id).should respond_to(:id)
|
45
|
+
end
|
46
|
+
|
47
|
+
it 'should return an object that can to_hash' do
|
48
|
+
subject.save(persisted, id).should respond_to(:to_hash)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
context 'it does not exist' do
|
53
|
+
let(:id) { 1 }
|
54
|
+
|
55
|
+
it 'should raise an error' do
|
56
|
+
expect { subject.save(persisted, id) }.to raise_error(Dirt::MissingRecordError, "That #{persisted.class.to_s.demodulize} (id: 1) does not exist.")
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
describe '#load' do
|
63
|
+
context 'it exists' do
|
64
|
+
let(:id) { subject.save(persisted).id }
|
65
|
+
|
66
|
+
it { should respond_to(:load).with(1).argument }
|
67
|
+
|
68
|
+
it 'should return an object with an id' do
|
69
|
+
subject.load(id).should respond_to(:id)
|
70
|
+
end
|
71
|
+
|
72
|
+
it 'should return an object that can to_hash' do
|
73
|
+
subject.load(id).should respond_to(:to_hash)
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
context 'it does not exist' do
|
78
|
+
let(:id) { 1 }
|
79
|
+
|
80
|
+
it 'should raise an error' do
|
81
|
+
expect { subject.load(id) }.to raise_error(Dirt::MissingRecordError, "That #{persisted.class.to_s.demodulize} (id: #{id}) does not exist.")
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
describe '#delete' do
|
87
|
+
it { should respond_to(:delete).with(1).argument }
|
88
|
+
|
89
|
+
context 'exists' do
|
90
|
+
let(:id) { subject.save(persisted).id }
|
91
|
+
|
92
|
+
it 'should return true' do
|
93
|
+
subject.delete(id).should == OpenStruct.new(persisted.to_hash.merge(id: id))
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
context 'does not exist' do
|
98
|
+
let(:id) { 1 }
|
99
|
+
|
100
|
+
it 'should return false' do
|
101
|
+
subject.delete(id).should be nil
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
describe '#exists?' do
|
107
|
+
it { should respond_to(:exists?) }
|
108
|
+
|
109
|
+
context 'it does' do
|
110
|
+
let(:id) { subject.save(persisted).id }
|
111
|
+
|
112
|
+
it 'should return true' do
|
113
|
+
subject.exists?(id).should == true
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
117
|
+
context 'it does not' do
|
118
|
+
let(:id) { 1 }
|
119
|
+
|
120
|
+
it 'should return true' do
|
121
|
+
subject.exists?(id).should == false
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
describe '#all' do
|
127
|
+
it { should respond_to(:all) }
|
128
|
+
|
129
|
+
before(:each) do
|
130
|
+
subject.save(persisted)
|
131
|
+
subject.save(persisted2)
|
132
|
+
end
|
133
|
+
|
134
|
+
it 'should return an array' do
|
135
|
+
subject.all.should be_a Array
|
136
|
+
end
|
137
|
+
|
138
|
+
it 'should return all objects' do
|
139
|
+
subject.all.size.should == 2
|
140
|
+
end
|
141
|
+
|
142
|
+
it 'should return an array of id-having objects' do
|
143
|
+
subject.all.each { |o| o.should respond_to(:id) }
|
144
|
+
end
|
145
|
+
|
146
|
+
it 'should return an array of to_hash-capable objects' do
|
147
|
+
subject.all.each { |o| o.should respond_to(:to_hash) }
|
148
|
+
end
|
149
|
+
end
|
150
|
+
|
151
|
+
describe '#where' do
|
152
|
+
before(:each) do
|
153
|
+
@id_match1 = subject.save(persisted).id
|
154
|
+
subject.save(different_persisted)
|
155
|
+
@id_match2 = subject.save(persisted2).id
|
156
|
+
end
|
157
|
+
|
158
|
+
it { should respond_to(:where).with(1).argument }
|
159
|
+
|
160
|
+
it 'should return only matching results' do
|
161
|
+
all = subject.where(where_params).all? do |data|
|
162
|
+
where_params.all? { |key, value| data.send(key) == value }
|
163
|
+
end
|
164
|
+
|
165
|
+
all.should be_true
|
166
|
+
end
|
167
|
+
|
168
|
+
it 'should the correct matching results' do
|
169
|
+
subject.where(where_params).collect do |record|
|
170
|
+
record.id
|
171
|
+
end.should == [@id_match1, @id_match2]
|
172
|
+
end
|
173
|
+
|
174
|
+
describe 'relation returned' do
|
175
|
+
let(:relation) { subject.where(where_params) }
|
176
|
+
|
177
|
+
# This is true of ActiveRecord relations, but not of DataMapper collections.
|
178
|
+
# it 'should respond to where' do
|
179
|
+
# relation.should respond_to(:where)
|
180
|
+
# end
|
181
|
+
|
182
|
+
it 'should respond to first' do
|
183
|
+
relation.should respond_to(:first)
|
184
|
+
end
|
185
|
+
|
186
|
+
it 'should respond to all?' do
|
187
|
+
relation.should respond_to(:all?)
|
188
|
+
end
|
189
|
+
end
|
190
|
+
end
|
191
|
+
|
192
|
+
describe '#find' do
|
193
|
+
before(:each) do
|
194
|
+
subject.save(different_persisted)
|
195
|
+
@id = subject.save(persisted).id
|
196
|
+
subject.save(persisted2)
|
197
|
+
end
|
198
|
+
|
199
|
+
it { should respond_to(:find).with(1).argument }
|
200
|
+
|
201
|
+
it 'should return an object with an id' do
|
202
|
+
subject.find(where_params).should respond_to(:id)
|
203
|
+
end
|
204
|
+
|
205
|
+
it 'should return an object that can to_hash' do
|
206
|
+
subject.find(where_params).should respond_to(:to_hash)
|
207
|
+
end
|
208
|
+
|
209
|
+
it 'should return the first matching result' do
|
210
|
+
subject.find(where_params).id.should == @id
|
211
|
+
end
|
212
|
+
end
|
213
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
shared_examples_for(:returning) do
|
2
|
+
it "should return the appropriate messages" do
|
3
|
+
actual_msgs = command[:messages]
|
4
|
+
|
5
|
+
if msgs.nil? || msgs.empty?
|
6
|
+
actual_msgs.should be_nil
|
7
|
+
else
|
8
|
+
actual_msgs.should_not be_nil
|
9
|
+
|
10
|
+
msgs.each do |msg|
|
11
|
+
actual_msgs.should include msg
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
it "should return the appropriate errors" do
|
17
|
+
actual_errors = command[:errors]
|
18
|
+
|
19
|
+
if errors.nil?
|
20
|
+
actual_errors.should be_nil
|
21
|
+
else
|
22
|
+
actual_errors.should_not be_nil
|
23
|
+
|
24
|
+
errors.each do |error|
|
25
|
+
actual_errors.should include error
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|