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.
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: []