dirt-core 2.2.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (102) hide show
  1. data/Gemfile +8 -0
  2. data/Gemfile.lock +46 -0
  3. data/MIT-LICENSE +23 -0
  4. data/README +14 -0
  5. data/doc/BlockValidator.html +272 -0
  6. data/doc/ClosureValidator.html +276 -0
  7. data/doc/Dirt.html +158 -0
  8. data/doc/Dirt/FooBar.html +167 -0
  9. data/doc/Dirt/HerpZerp.html +161 -0
  10. data/doc/Dirt/HerpZerp/DerpGerp.html +161 -0
  11. data/doc/Dirt/HerpZerp/DerpGerp/FooBar.html +167 -0
  12. data/doc/Dirt/MemoryPersister.html +453 -0
  13. data/doc/Dirt/MemoryRecord.html +157 -0
  14. data/doc/Dirt/MissingRecordError.html +157 -0
  15. data/doc/Dirt/Model.html +320 -0
  16. data/doc/Dirt/NoPersisterError.html +157 -0
  17. data/doc/Dirt/Relation.html +338 -0
  18. data/doc/Dirt/Role.html +345 -0
  19. data/doc/Dirt/TooManyRecordsError.html +157 -0
  20. data/doc/Dirt/TransactionError.html +157 -0
  21. data/doc/ExistenceValidator.html +316 -0
  22. data/doc/FooBar.html +153 -0
  23. data/doc/Gemfile.html +131 -0
  24. data/doc/HerpZerp.html +147 -0
  25. data/doc/HerpZerp/DerpGerp.html +147 -0
  26. data/doc/HerpZerp/DerpGerp/FooBar.html +153 -0
  27. data/doc/Persister.html +311 -0
  28. data/doc/Persisting.html +413 -0
  29. data/doc/PresenceValidator.html +281 -0
  30. data/doc/README.html +132 -0
  31. data/doc/Role.html +309 -0
  32. data/doc/Scheduler.html +147 -0
  33. data/doc/SelfExistenceValidator.html +278 -0
  34. data/doc/TestPersister.html +411 -0
  35. data/doc/Validating.html +293 -0
  36. data/doc/created.rid +18 -0
  37. data/doc/images/add.png +0 -0
  38. data/doc/images/brick.png +0 -0
  39. data/doc/images/brick_link.png +0 -0
  40. data/doc/images/bug.png +0 -0
  41. data/doc/images/bullet_black.png +0 -0
  42. data/doc/images/bullet_toggle_minus.png +0 -0
  43. data/doc/images/bullet_toggle_plus.png +0 -0
  44. data/doc/images/date.png +0 -0
  45. data/doc/images/delete.png +0 -0
  46. data/doc/images/find.png +0 -0
  47. data/doc/images/loadingAnimation.gif +0 -0
  48. data/doc/images/macFFBgHack.png +0 -0
  49. data/doc/images/package.png +0 -0
  50. data/doc/images/page_green.png +0 -0
  51. data/doc/images/page_white_text.png +0 -0
  52. data/doc/images/page_white_width.png +0 -0
  53. data/doc/images/plugin.png +0 -0
  54. data/doc/images/ruby.png +0 -0
  55. data/doc/images/tag_blue.png +0 -0
  56. data/doc/images/tag_green.png +0 -0
  57. data/doc/images/transparent.png +0 -0
  58. data/doc/images/wrench.png +0 -0
  59. data/doc/images/wrench_orange.png +0 -0
  60. data/doc/images/zoom.png +0 -0
  61. data/doc/index.html +110 -0
  62. data/doc/js/darkfish.js +155 -0
  63. data/doc/js/jquery.js +18 -0
  64. data/doc/js/navigation.js +142 -0
  65. data/doc/js/search.js +94 -0
  66. data/doc/js/search_index.js +1 -0
  67. data/doc/js/searcher.js +228 -0
  68. data/doc/rdoc.css +543 -0
  69. data/doc/table_of_contents.html +203 -0
  70. data/lib/dirt/bdd/matchers.rb +10 -0
  71. data/lib/dirt/bdd/persister_spec_helper.rb +213 -0
  72. data/lib/dirt/bdd/shared_examples.rb +29 -0
  73. data/lib/dirt/contexts/context.rb +15 -0
  74. data/lib/dirt/core.rb +36 -0
  75. data/lib/dirt/errors/missing_record_error.rb +4 -0
  76. data/lib/dirt/errors/no_persister_error.rb +4 -0
  77. data/lib/dirt/errors/too_many_records_error.rb +4 -0
  78. data/lib/dirt/errors/transaction_error.rb +4 -0
  79. data/lib/dirt/models/model_behaviour.rb +47 -0
  80. data/lib/dirt/persisters/memory_persister.rb +86 -0
  81. data/lib/dirt/persisters/persister.rb +54 -0
  82. data/lib/dirt/persisters/relation.rb +38 -0
  83. data/lib/dirt/roles/persisting.rb +73 -0
  84. data/lib/dirt/roles/role.rb +32 -0
  85. data/lib/dirt/roles/validating.rb +27 -0
  86. data/lib/dirt/roles/validation/closure_validator.rb +15 -0
  87. data/lib/dirt/roles/validation/existence_validator.rb +53 -0
  88. data/lib/dirt/roles/validation/presence_validator.rb +21 -0
  89. data/lib/dirt/roles/validation/self_existence_validator.rb +18 -0
  90. data/spec/isolations/closure_validator_spec.rb +57 -0
  91. data/spec/isolations/context_spec.rb +54 -0
  92. data/spec/isolations/existence_validator_spec.rb +151 -0
  93. data/spec/isolations/memory_persister_spec.rb +175 -0
  94. data/spec/isolations/model_spec.rb +91 -0
  95. data/spec/isolations/persister_spec.rb +113 -0
  96. data/spec/isolations/persisting_spec.rb +266 -0
  97. data/spec/isolations/presence_validator_spec.rb +63 -0
  98. data/spec/isolations/role_spec.rb +116 -0
  99. data/spec/isolations/self_existence_validator_spec.rb +64 -0
  100. data/spec/isolations/spec_helper.rb +26 -0
  101. data/spec/isolations/validating_spec.rb +88 -0
  102. metadata +161 -0
@@ -0,0 +1,63 @@
1
+ #--
2
+ # Copyright (c) 2014 Tenjin Inc.
3
+ #
4
+ # Permission is hereby granted, free of charge, to any person obtaining
5
+ # a copy of this software and associated documentation files (the
6
+ # "Software"), to deal in the Software without restriction, including
7
+ # without limitation the rights to use, copy, modify, merge, publish,
8
+ # distribute, sublicense, and/or sell copies of the Software, and to
9
+ # permit persons to whom the Software is furnished to do so, subject to
10
+ # the following conditions:
11
+ #
12
+ # The above copyright notice and this permission notice shall be
13
+ # included in all copies or substantial portions of the Software.
14
+ #
15
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
+ #++
23
+
24
+ require './spec/isolations/spec_helper'
25
+
26
+ describe PresenceValidator do
27
+ let(:decorated) { double('decorated', test_property: nil) }
28
+ subject { PresenceValidator.new(:test_property) }
29
+
30
+ describe '#valid?' do
31
+ context 'decorated object has a value at that field' do
32
+ it 'should return true on object' do
33
+ decorated.stub(:test_property).and_return(double('real value'))
34
+
35
+ subject.valid?(decorated).should be true
36
+ end
37
+
38
+ it 'should return true on non-empty string' do
39
+ decorated.stub(:test_property).and_return('real value')
40
+
41
+ subject.valid?(decorated).should be true
42
+ end
43
+ end
44
+
45
+ context 'decorated object has nil/empty string at that field' do
46
+ it 'should return false on empty string' do
47
+ decorated.stub(:test_property).and_return('')
48
+
49
+ subject.valid?(decorated).should be false
50
+ end
51
+
52
+ it 'should return false on whitespace string' do
53
+ decorated.stub(:test_property).and_return(" \t\r\n\f")
54
+
55
+ subject.valid?(decorated).should be false
56
+ end
57
+
58
+ it 'should return false on nil' do
59
+ subject.valid?(decorated).should be false
60
+ end
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,116 @@
1
+ #--
2
+ # Copyright (c) 2014 Tenjin Inc.
3
+ #
4
+ # Permission is hereby granted, free of charge, to any person obtaining
5
+ # a copy of this software and associated documentation files (the
6
+ # "Software"), to deal in the Software without restriction, including
7
+ # without limitation the rights to use, copy, modify, merge, publish,
8
+ # distribute, sublicense, and/or sell copies of the Software, and to
9
+ # permit persons to whom the Software is furnished to do so, subject to
10
+ # the following conditions:
11
+ #
12
+ # The above copyright notice and this permission notice shall be
13
+ # included in all copies or substantial portions of the Software.
14
+ #
15
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
+ #++
23
+
24
+ require './spec/isolations/spec_helper'
25
+
26
+ module Dirt
27
+ describe Role do
28
+ let(:decorated) { double('decorated', test_method: nil) }
29
+
30
+ subject do
31
+ Role.new(decorated)
32
+ end
33
+
34
+ describe '#method_missing' do
35
+ context 'the method is supported' do
36
+ before(:each) { decorated.stub(:respond_to?).and_return(true) }
37
+
38
+ it 'should call the method on the decorated object' do
39
+ decorated.should_receive(:test_method).with([], nil)
40
+
41
+ subject.method_missing(:test_method, [], nil)
42
+ end
43
+ end
44
+
45
+ context 'the method is not supported' do
46
+ before(:each) { decorated.stub(:respond_to?).and_return(false) }
47
+
48
+ it 'should call the method on the decorated object' do
49
+ decorated.should_receive(:test_method)
50
+
51
+ subject.method_missing(:test_method, [], nil)
52
+ end
53
+ end
54
+ end
55
+
56
+ describe '#respond_to?' do
57
+ context 'the method is supported directly' do
58
+ before(:each) { subject.stub(:test_method) }
59
+
60
+ it 'should return true' do
61
+ decorated.should_not_receive(:respond_to?)
62
+
63
+ subject.respond_to?(:test_method).should == true
64
+ end
65
+ end
66
+
67
+ context 'the method is not supported directly' do
68
+ it 'should ask the decorated object' do
69
+ decorated.should_receive(:respond_to?).with(:test_method, false).and_return(true)
70
+
71
+ subject.respond_to?(:test_method).should == true
72
+ end
73
+ end
74
+
75
+ context 'the method is not supported at all' do
76
+ it 'should ask the decorated object' do
77
+ decorated.should_receive(:respond_to?).with(:another_method, false).and_return(false)
78
+
79
+ subject.respond_to?(:another_method).should == false
80
+ end
81
+ end
82
+ end
83
+
84
+ describe '#== ' do
85
+ it 'should be equal with identical contents' do
86
+ subject.should == Persisting.new(decorated)
87
+ end
88
+
89
+ it 'should equal itself' do
90
+ subject.should == subject
91
+ end
92
+
93
+ it 'should equal the decorated object' do
94
+ subject.should == decorated
95
+ end
96
+
97
+ it 'should not equal a different object' do
98
+ subject.should_not == double('something else entirely')
99
+ end
100
+
101
+ context 'equivalent contents' do
102
+ let(:decorated) { [5] }
103
+
104
+ it 'should be equal with equivalent contents' do
105
+ clone = [5]
106
+ decorated.should == clone
107
+ subject.should == Persisting.new(clone)
108
+ end
109
+ end
110
+
111
+ it 'should not equal others with different contents' do
112
+ subject.should_not == Persisting.new(double('something else entirely'))
113
+ end
114
+ end
115
+ end
116
+ end
@@ -0,0 +1,64 @@
1
+ #--
2
+ # Copyright (c) 2014 Tenjin Inc.
3
+ #
4
+ # Permission is hereby granted, free of charge, to any person obtaining
5
+ # a copy of this software and associated documentation files (the
6
+ # "Software"), to deal in the Software without restriction, including
7
+ # without limitation the rights to use, copy, modify, merge, publish,
8
+ # distribute, sublicense, and/or sell copies of the Software, and to
9
+ # permit persons to whom the Software is furnished to do so, subject to
10
+ # the following conditions:
11
+ #
12
+ # The above copyright notice and this permission notice shall be
13
+ # included in all copies or substantial portions of the Software.
14
+ #
15
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
+ #++
23
+
24
+ require './spec/isolations/spec_helper'
25
+
26
+ describe SelfExistenceValidator do
27
+ let(:id) { double('id') }
28
+ let(:persister) { double('persister') }
29
+ let(:decorated) { double('decorated') }
30
+
31
+ subject { SelfExistenceValidator.new(RSpec::Mocks::TestDouble, id) }
32
+
33
+ before(:each) do
34
+ Persister.for(RSpec::Mocks::TestDouble, persister)
35
+ end
36
+
37
+ after(:each) do
38
+ Persister.clear
39
+ end
40
+
41
+ describe '#valid?' do
42
+ context 'decorated object exists in the persister' do
43
+ before(:each) do
44
+ persister.stub(:exists?).and_return(true)
45
+ end
46
+
47
+ it 'should return true' do
48
+ subject.valid?(decorated).should be true
49
+ end
50
+ end
51
+
52
+ context 'decorated object does not exist in persister' do
53
+ before(:each) do
54
+ persister.stub(:exists?).and_return(false)
55
+ end
56
+
57
+ it 'should return false' do
58
+ decorated.stub(:test_property).and_return('')
59
+
60
+ subject.valid?(decorated).should be false
61
+ end
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,26 @@
1
+ #--
2
+ # Copyright (c) 2014 Tenjin Inc.
3
+ #
4
+ # Permission is hereby granted, free of charge, to any person obtaining
5
+ # a copy of this software and associated documentation files (the
6
+ # "Software"), to deal in the Software without restriction, including
7
+ # without limitation the rights to use, copy, modify, merge, publish,
8
+ # distribute, sublicense, and/or sell copies of the Software, and to
9
+ # permit persons to whom the Software is furnished to do so, subject to
10
+ # the following conditions:
11
+ #
12
+ # The above copyright notice and this permission notice shall be
13
+ # included in all copies or substantial portions of the Software.
14
+ #
15
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
+ #++
23
+
24
+ require 'rspec'
25
+
26
+ require 'dirt/core'
@@ -0,0 +1,88 @@
1
+ #--
2
+ # Copyright (c) 2014 Tenjin Inc.
3
+ #
4
+ # Permission is hereby granted, free of charge, to any person obtaining
5
+ # a copy of this software and associated documentation files (the
6
+ # "Software"), to deal in the Software without restriction, including
7
+ # without limitation the rights to use, copy, modify, merge, publish,
8
+ # distribute, sublicense, and/or sell copies of the Software, and to
9
+ # permit persons to whom the Software is furnished to do so, subject to
10
+ # the following conditions:
11
+ #
12
+ # The above copyright notice and this permission notice shall be
13
+ # included in all copies or substantial portions of the Software.
14
+ #
15
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
+ #++
23
+
24
+ require './spec/isolations/spec_helper'
25
+
26
+ describe Validating do
27
+ let(:validator1) { double('validator') }
28
+ let(:validator2) { double('validator2') }
29
+ let(:decorated) { double('decorated') }
30
+
31
+ subject { Validating.new(decorated, [validator1, validator2]) }
32
+
33
+ describe '#valid?' do
34
+ context 'all validators pass' do
35
+ it 'should return true' do
36
+ validator1.stub(:valid?).and_return(true)
37
+ validator2.stub(:valid?).and_return(true)
38
+
39
+ subject.valid?.should be true
40
+ end
41
+ end
42
+
43
+ context 'one of the validators fails' do
44
+ it 'should return false' do
45
+ validator1.stub(:valid?).and_return(true)
46
+ validator2.stub(:valid?).and_return(false)
47
+
48
+ subject.valid?.should be false
49
+ end
50
+ end
51
+ end
52
+
53
+ describe '#errors' do
54
+ context 'all validators pass' do
55
+ it 'should return true' do
56
+ validator1.stub(:valid?).and_return(true)
57
+ validator2.stub(:valid?).and_return(true)
58
+
59
+ subject.errors.should == []
60
+ end
61
+ end
62
+
63
+ context 'one of the validators fails' do
64
+ it 'should return false' do
65
+ msg = double('a msg')
66
+ validator1.stub(:valid?).and_return(true)
67
+ validator2.stub(:valid?).and_return(false)
68
+ validator2.stub(:error_message).and_return(msg)
69
+
70
+ subject.errors.should == [msg]
71
+ end
72
+ end
73
+
74
+ context 'multiple validators fail' do
75
+ it 'should return false' do
76
+ msg = double('a msg')
77
+ msg2 = double('another msg')
78
+
79
+ validator1.stub(:valid?).and_return(false)
80
+ validator2.stub(:valid?).and_return(false)
81
+ validator1.stub(:error_message).and_return(msg)
82
+ validator2.stub(:error_message).and_return(msg2)
83
+
84
+ subject.errors.should == [msg, msg2]
85
+ end
86
+ end
87
+ end
88
+ end
metadata ADDED
@@ -0,0 +1,161 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: dirt-core
3
+ version: !ruby/object:Gem::Version
4
+ version: 2.2.3
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Tenjin
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2015-04-07 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: activesupport
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '3.2'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '3.2'
30
+ description: ! 'Provides a convenient basis to begin creating DCI style applications. '
31
+ email: contact@tenjin.ca
32
+ executables: []
33
+ extensions: []
34
+ extra_rdoc_files: []
35
+ files:
36
+ - Gemfile
37
+ - Gemfile.lock
38
+ - MIT-LICENSE
39
+ - README
40
+ - doc/BlockValidator.html
41
+ - doc/ClosureValidator.html
42
+ - doc/Dirt.html
43
+ - doc/Dirt/FooBar.html
44
+ - doc/Dirt/HerpZerp.html
45
+ - doc/Dirt/HerpZerp/DerpGerp.html
46
+ - doc/Dirt/HerpZerp/DerpGerp/FooBar.html
47
+ - doc/Dirt/MemoryPersister.html
48
+ - doc/Dirt/MemoryRecord.html
49
+ - doc/Dirt/MissingRecordError.html
50
+ - doc/Dirt/Model.html
51
+ - doc/Dirt/NoPersisterError.html
52
+ - doc/Dirt/Relation.html
53
+ - doc/Dirt/Role.html
54
+ - doc/Dirt/TooManyRecordsError.html
55
+ - doc/Dirt/TransactionError.html
56
+ - doc/ExistenceValidator.html
57
+ - doc/FooBar.html
58
+ - doc/Gemfile.html
59
+ - doc/HerpZerp.html
60
+ - doc/HerpZerp/DerpGerp.html
61
+ - doc/HerpZerp/DerpGerp/FooBar.html
62
+ - doc/Persister.html
63
+ - doc/Persisting.html
64
+ - doc/PresenceValidator.html
65
+ - doc/README.html
66
+ - doc/Role.html
67
+ - doc/Scheduler.html
68
+ - doc/SelfExistenceValidator.html
69
+ - doc/TestPersister.html
70
+ - doc/Validating.html
71
+ - doc/created.rid
72
+ - doc/images/add.png
73
+ - doc/images/brick.png
74
+ - doc/images/brick_link.png
75
+ - doc/images/bug.png
76
+ - doc/images/bullet_black.png
77
+ - doc/images/bullet_toggle_minus.png
78
+ - doc/images/bullet_toggle_plus.png
79
+ - doc/images/date.png
80
+ - doc/images/delete.png
81
+ - doc/images/find.png
82
+ - doc/images/loadingAnimation.gif
83
+ - doc/images/macFFBgHack.png
84
+ - doc/images/package.png
85
+ - doc/images/page_green.png
86
+ - doc/images/page_white_text.png
87
+ - doc/images/page_white_width.png
88
+ - doc/images/plugin.png
89
+ - doc/images/ruby.png
90
+ - doc/images/tag_blue.png
91
+ - doc/images/tag_green.png
92
+ - doc/images/transparent.png
93
+ - doc/images/wrench.png
94
+ - doc/images/wrench_orange.png
95
+ - doc/images/zoom.png
96
+ - doc/index.html
97
+ - doc/js/darkfish.js
98
+ - doc/js/jquery.js
99
+ - doc/js/navigation.js
100
+ - doc/js/search.js
101
+ - doc/js/search_index.js
102
+ - doc/js/searcher.js
103
+ - doc/rdoc.css
104
+ - doc/table_of_contents.html
105
+ - lib/dirt/bdd/matchers.rb
106
+ - lib/dirt/bdd/persister_spec_helper.rb
107
+ - lib/dirt/bdd/shared_examples.rb
108
+ - lib/dirt/contexts/context.rb
109
+ - lib/dirt/core.rb
110
+ - lib/dirt/errors/missing_record_error.rb
111
+ - lib/dirt/errors/no_persister_error.rb
112
+ - lib/dirt/errors/too_many_records_error.rb
113
+ - lib/dirt/errors/transaction_error.rb
114
+ - lib/dirt/models/model_behaviour.rb
115
+ - lib/dirt/persisters/memory_persister.rb
116
+ - lib/dirt/persisters/persister.rb
117
+ - lib/dirt/persisters/relation.rb
118
+ - lib/dirt/roles/persisting.rb
119
+ - lib/dirt/roles/role.rb
120
+ - lib/dirt/roles/validating.rb
121
+ - lib/dirt/roles/validation/closure_validator.rb
122
+ - lib/dirt/roles/validation/existence_validator.rb
123
+ - lib/dirt/roles/validation/presence_validator.rb
124
+ - lib/dirt/roles/validation/self_existence_validator.rb
125
+ - spec/isolations/closure_validator_spec.rb
126
+ - spec/isolations/context_spec.rb
127
+ - spec/isolations/existence_validator_spec.rb
128
+ - spec/isolations/memory_persister_spec.rb
129
+ - spec/isolations/model_spec.rb
130
+ - spec/isolations/persister_spec.rb
131
+ - spec/isolations/persisting_spec.rb
132
+ - spec/isolations/presence_validator_spec.rb
133
+ - spec/isolations/role_spec.rb
134
+ - spec/isolations/self_existence_validator_spec.rb
135
+ - spec/isolations/spec_helper.rb
136
+ - spec/isolations/validating_spec.rb
137
+ homepage: http://www.tenjin.ca
138
+ licenses: []
139
+ post_install_message:
140
+ rdoc_options: []
141
+ require_paths:
142
+ - lib
143
+ required_ruby_version: !ruby/object:Gem::Requirement
144
+ none: false
145
+ requirements:
146
+ - - ! '>='
147
+ - !ruby/object:Gem::Version
148
+ version: 1.9.3
149
+ required_rubygems_version: !ruby/object:Gem::Requirement
150
+ none: false
151
+ requirements:
152
+ - - ! '>='
153
+ - !ruby/object:Gem::Version
154
+ version: '0'
155
+ requirements: []
156
+ rubyforge_project:
157
+ rubygems_version: 1.8.24
158
+ signing_key:
159
+ specification_version: 3
160
+ summary: DCI Framework for Ruby
161
+ test_files: []