mack-data_factory 0.7.1 → 0.7.1.1

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 (38) hide show
  1. data/lib/mack-data_factory/content_generator.rb +1 -1
  2. data/lib/mack-data_factory/core_extensions/kernel.rb +13 -17
  3. data/lib/mack-data_factory/data_factory.rb +128 -19
  4. data/lib/mack-data_factory/field.rb +1 -1
  5. data/lib/mack-data_factory/field_manager.rb +1 -1
  6. data/lib/mack-data_factory/orm_api_bridge/bridge.rb +69 -1
  7. data/lib/mack-data_factory/orm_api_bridge/orm/active_record.rb +2 -2
  8. data/lib/mack-data_factory/orm_api_bridge/orm/data_mapper.rb +2 -2
  9. data/lib/mack-data_factory/orm_api_bridge/orm/default.rb +1 -1
  10. metadata +2 -30
  11. data/doc/classes/Kernel.html +0 -207
  12. data/doc/classes/Mack.html +0 -137
  13. data/doc/classes/Mack/Data/Bridge.html +0 -269
  14. data/doc/classes/Mack/Data/Factory.html +0 -171
  15. data/doc/classes/Mack/Data/Factory/ClassMethods.html +0 -290
  16. data/doc/classes/Mack/Data/Factory/FieldContentGenerator.html +0 -685
  17. data/doc/classes/Mack/Data/Field.html +0 -271
  18. data/doc/classes/Mack/Data/FieldMgr.html +0 -217
  19. data/doc/classes/Mack/Data/OrmBridge/ActiveRecord.html +0 -267
  20. data/doc/classes/Mack/Data/OrmBridge/DataMapper.html +0 -267
  21. data/doc/classes/Mack/Data/OrmBridge/Default.html +0 -266
  22. data/doc/created.rid +0 -1
  23. data/doc/files/README.html +0 -107
  24. data/doc/files/lib/mack-data_factory/content_generator_rb.html +0 -108
  25. data/doc/files/lib/mack-data_factory/core_extensions/kernel_rb.html +0 -101
  26. data/doc/files/lib/mack-data_factory/data_factory_rb.html +0 -101
  27. data/doc/files/lib/mack-data_factory/field_manager_rb.html +0 -101
  28. data/doc/files/lib/mack-data_factory/field_rb.html +0 -101
  29. data/doc/files/lib/mack-data_factory/orm_api_bridge/bridge_rb.html +0 -101
  30. data/doc/files/lib/mack-data_factory/orm_api_bridge/orm/active_record_rb.html +0 -101
  31. data/doc/files/lib/mack-data_factory/orm_api_bridge/orm/data_mapper_rb.html +0 -101
  32. data/doc/files/lib/mack-data_factory/orm_api_bridge/orm/default_rb.html +0 -101
  33. data/doc/files/lib/mack-data_factory_rb.html +0 -108
  34. data/doc/fr_class_index.html +0 -37
  35. data/doc/fr_file_index.html +0 -37
  36. data/doc/fr_method_index.html +0 -79
  37. data/doc/index.html +0 -24
  38. data/doc/rdoc-style.css +0 -208
@@ -1,171 +0,0 @@
1
- <?xml version="1.0" encoding="iso-8859-1"?>
2
- <!DOCTYPE html
3
- PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
-
6
- <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7
- <head>
8
- <title>Module: Mack::Data::Factory</title>
9
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
- <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
- <link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
12
- <script type="text/javascript">
13
- // <![CDATA[
14
-
15
- function popupCode( url ) {
16
- window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
17
- }
18
-
19
- function toggleCode( id ) {
20
- if ( document.getElementById )
21
- elem = document.getElementById( id );
22
- else if ( document.all )
23
- elem = eval( "document.all." + id );
24
- else
25
- return false;
26
-
27
- elemStyle = elem.style;
28
-
29
- if ( elemStyle.display != "block" ) {
30
- elemStyle.display = "block"
31
- } else {
32
- elemStyle.display = "none"
33
- }
34
-
35
- return true;
36
- }
37
-
38
- // Make codeblocks hidden by default
39
- document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
40
-
41
- // ]]>
42
- </script>
43
-
44
- </head>
45
- <body>
46
-
47
-
48
-
49
- <div id="classHeader">
50
- <table class="header-table">
51
- <tr class="top-aligned-row">
52
- <td><strong>Module</strong></td>
53
- <td class="class-name-in-header">Mack::Data::Factory</td>
54
- </tr>
55
- <tr class="top-aligned-row">
56
- <td><strong>In:</strong></td>
57
- <td>
58
- <a href="../../../files/lib/mack-data_factory/content_generator_rb.html">
59
- lib/mack-data_factory/content_generator.rb
60
- </a>
61
- <br />
62
- <a href="../../../files/lib/mack-data_factory/data_factory_rb.html">
63
- lib/mack-data_factory/data_factory.rb
64
- </a>
65
- <br />
66
- </td>
67
- </tr>
68
-
69
- </table>
70
- </div>
71
- <!-- banner header -->
72
-
73
- <div id="bodyContent">
74
-
75
-
76
-
77
- <div id="contextContent">
78
-
79
- <div id="description">
80
- <p>
81
- Add factory capability to a class.
82
- </p>
83
- <p>
84
- A factory is able to define which field it want to generate content for,
85
- define a scope for different situation, and set a custom content generator
86
- for field that doesn&#8216;t want to use the default content generator.
87
- </p>
88
- <p>
89
- For more information and usage, please read README file
90
- </p>
91
- <p>
92
- author: Darsono Sutedja July 2008
93
- </p>
94
-
95
- </div>
96
-
97
-
98
- </div>
99
-
100
- <div id="method-list">
101
- <h3 class="section-bar">Methods</h3>
102
-
103
- <div class="name-list">
104
- <a href="#M000001">included</a>&nbsp;&nbsp;
105
- </div>
106
- </div>
107
-
108
- </div>
109
-
110
-
111
- <!-- if includes -->
112
-
113
- <div id="section">
114
-
115
- <div id="class-list">
116
- <h3 class="section-bar">Classes and Modules</h3>
117
-
118
- Module <a href="Factory/ClassMethods.html" class="link">Mack::Data::Factory::ClassMethods</a><br />
119
- Class <a href="Factory/FieldContentGenerator.html" class="link">Mack::Data::Factory::FieldContentGenerator</a><br />
120
-
121
- </div>
122
-
123
-
124
-
125
-
126
-
127
-
128
-
129
- <!-- if method_list -->
130
- <div id="methods">
131
- <h3 class="section-bar">Public Class methods</h3>
132
-
133
- <div id="method-M000001" class="method-detail">
134
- <a name="M000001"></a>
135
-
136
- <div class="method-heading">
137
- <a href="#M000001" class="method-signature">
138
- <span class="method-name">included</span><span class="method-args">(base)</span>
139
- </a>
140
- </div>
141
-
142
- <div class="method-description">
143
- <p>
144
- make sure the data factory API is available to the class that includes it
145
- </p>
146
- <p><a class="source-toggle" href="#"
147
- onclick="toggleCode('M000001-source');return false;">[Source]</a></p>
148
- <div class="method-source-code" id="M000001-source">
149
- <pre>
150
- <span class="ruby-comment cmt"># File lib/mack-data_factory/data_factory.rb, line 18</span>
151
- 18: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">included</span>(<span class="ruby-identifier">base</span>)
152
- 19: <span class="ruby-identifier">base</span>.<span class="ruby-identifier">extend</span> <span class="ruby-constant">ClassMethods</span>
153
- 20: <span class="ruby-keyword kw">end</span>
154
- </pre>
155
- </div>
156
- </div>
157
- </div>
158
-
159
-
160
- </div>
161
-
162
-
163
- </div>
164
-
165
-
166
- <div id="validator-badges">
167
- <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
168
- </div>
169
-
170
- </body>
171
- </html>
@@ -1,290 +0,0 @@
1
- <?xml version="1.0" encoding="iso-8859-1"?>
2
- <!DOCTYPE html
3
- PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
-
6
- <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7
- <head>
8
- <title>Module: Mack::Data::Factory::ClassMethods</title>
9
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
- <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
- <link rel="stylesheet" href="../../../.././rdoc-style.css" type="text/css" media="screen" />
12
- <script type="text/javascript">
13
- // <![CDATA[
14
-
15
- function popupCode( url ) {
16
- window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
17
- }
18
-
19
- function toggleCode( id ) {
20
- if ( document.getElementById )
21
- elem = document.getElementById( id );
22
- else if ( document.all )
23
- elem = eval( "document.all." + id );
24
- else
25
- return false;
26
-
27
- elemStyle = elem.style;
28
-
29
- if ( elemStyle.display != "block" ) {
30
- elemStyle.display = "block"
31
- } else {
32
- elemStyle.display = "none"
33
- }
34
-
35
- return true;
36
- }
37
-
38
- // Make codeblocks hidden by default
39
- document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
40
-
41
- // ]]>
42
- </script>
43
-
44
- </head>
45
- <body>
46
-
47
-
48
-
49
- <div id="classHeader">
50
- <table class="header-table">
51
- <tr class="top-aligned-row">
52
- <td><strong>Module</strong></td>
53
- <td class="class-name-in-header">Mack::Data::Factory::ClassMethods</td>
54
- </tr>
55
- <tr class="top-aligned-row">
56
- <td><strong>In:</strong></td>
57
- <td>
58
- <a href="../../../../files/lib/mack-data_factory/data_factory_rb.html">
59
- lib/mack-data_factory/data_factory.rb
60
- </a>
61
- <br />
62
- </td>
63
- </tr>
64
-
65
- </table>
66
- </div>
67
- <!-- banner header -->
68
-
69
- <div id="bodyContent">
70
-
71
-
72
-
73
- <div id="contextContent">
74
-
75
-
76
-
77
- </div>
78
-
79
- <div id="method-list">
80
- <h3 class="section-bar">Methods</h3>
81
-
82
- <div class="name-list">
83
- <a href="#M000004">association</a>&nbsp;&nbsp;
84
- <a href="#M000002">create</a>&nbsp;&nbsp;
85
- <a href="#M000003">field</a>&nbsp;&nbsp;
86
- <a href="#M000005">scope_for</a>&nbsp;&nbsp;
87
- </div>
88
- </div>
89
-
90
- </div>
91
-
92
-
93
- <!-- if includes -->
94
-
95
- <div id="section">
96
-
97
-
98
-
99
-
100
-
101
-
102
-
103
-
104
- <!-- if method_list -->
105
- <div id="methods">
106
- <h3 class="section-bar">Public Instance methods</h3>
107
-
108
- <div id="method-M000004" class="method-detail">
109
- <a name="M000004"></a>
110
-
111
- <div class="method-heading">
112
- <a href="#M000004" class="method-signature">
113
- <span class="method-name">association</span><span class="method-args">(model_attrib_sym, assoc_map, assoc_rule = :spread)</span>
114
- </a>
115
- </div>
116
-
117
- <div class="method-description">
118
- <p>
119
- Define an <a href="ClassMethods.html#M000004">association</a> rule for this
120
- <a href="ClassMethods.html#M000003">field</a>
121
- </p>
122
- <p><a class="source-toggle" href="#"
123
- onclick="toggleCode('M000004-source');return false;">[Source]</a></p>
124
- <div class="method-source-code" id="M000004-source">
125
- <pre>
126
- <span class="ruby-comment cmt"># File lib/mack-data_factory/data_factory.rb, line 88</span>
127
- 88: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">association</span>(<span class="ruby-identifier">model_attrib_sym</span>, <span class="ruby-identifier">assoc_map</span>, <span class="ruby-identifier">assoc_rule</span> = <span class="ruby-identifier">:spread</span>)
128
- 89: <span class="ruby-identifier">field</span>(<span class="ruby-identifier">model_attrib_sym</span>, {<span class="ruby-identifier">:default</span> =<span class="ruby-operator">&gt;</span> {<span class="ruby-identifier">:df_assoc_map</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">assoc_map</span>}, <span class="ruby-identifier">:assoc</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">assoc_rule</span>})
129
- 90: <span class="ruby-keyword kw">end</span>
130
- </pre>
131
- </div>
132
- </div>
133
- </div>
134
-
135
- <div id="method-M000002" class="method-detail">
136
- <a name="M000002"></a>
137
-
138
- <div class="method-heading">
139
- <a href="#M000002" class="method-signature">
140
- <span class="method-name">create</span><span class="method-args">(num, scope = :default)</span>
141
- </a>
142
- </div>
143
-
144
- <div class="method-description">
145
- <p>
146
- Run the factory to produce n number of objects.
147
- </p>
148
- <p>
149
- Example: class CarFactory
150
- </p>
151
- <pre>
152
- include Mack::Data::Factory
153
- field :name, :default =&gt; &quot;honda&quot; { |def_value, rules, index| &quot;#{def_value} #{['civic', 'accord', 'pilot'].randomize[0]}&quot;}
154
- </pre>
155
- <p>
156
- end
157
- </p>
158
- <p>
159
- CarFactory.create(100) #=&gt; will produce 100 cars whose name is
160
- &quot;honda xxx&quot; where xxx is a random item from [&#8216;civic&#8217;,
161
- &#8216;accord&#8217;, &#8216;pilot&#8217;]
162
- </p>
163
- <p>
164
- params:
165
- </p>
166
- <ul>
167
- <li>num - how many objects to produce
168
-
169
- </li>
170
- <li>scope - run the factory in a named scope
171
-
172
- </li>
173
- </ul>
174
- <p><a class="source-toggle" href="#"
175
- onclick="toggleCode('M000002-source');return false;">[Source]</a></p>
176
- <div class="method-source-code" id="M000002-source">
177
- <pre>
178
- <span class="ruby-comment cmt"># File lib/mack-data_factory/data_factory.rb, line 39</span>
179
- 39: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">create</span>(<span class="ruby-identifier">num</span>, <span class="ruby-identifier">scope</span> = <span class="ruby-identifier">:default</span>)
180
- 40: <span class="ruby-identifier">factory_name</span> = <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">name</span>.<span class="ruby-identifier">underscore</span>
181
- 41:
182
- 42: <span class="ruby-comment cmt"># retrieve the model name from the factory class. </span>
183
- 43: <span class="ruby-identifier">model_name</span> = <span class="ruby-identifier">factory_name</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-value str">'_factory'</span>, <span class="ruby-value str">''</span>)
184
- 44:
185
- 45: <span class="ruby-comment cmt"># if user is running custom scope, then merge the fields </span>
186
- 46: <span class="ruby-comment cmt"># defined for that scope with the default one, before we run the factory</span>
187
- 47: <span class="ruby-identifier">scoped_fields</span> = <span class="ruby-identifier">field_manager</span>.<span class="ruby-identifier">scopes</span>[<span class="ruby-identifier">scope</span>]
188
- 48: <span class="ruby-identifier">fields</span> = <span class="ruby-identifier">field_manager</span>.<span class="ruby-identifier">scopes</span>[<span class="ruby-identifier">:default</span>].<span class="ruby-identifier">merge</span>(<span class="ruby-identifier">scoped_fields</span>)
189
- 49:
190
- 50: <span class="ruby-identifier">ret_arr</span> = []
191
- 51:
192
- 52: <span class="ruby-constant">Mack</span><span class="ruby-operator">::</span><span class="ruby-constant">Data</span><span class="ruby-operator">::</span><span class="ruby-constant">RegistryMap</span>.<span class="ruby-identifier">reset!</span>
193
- 53: <span class="ruby-identifier">num</span>.<span class="ruby-identifier">times</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">i</span><span class="ruby-operator">|</span>
194
- 54: <span class="ruby-comment cmt">#puts &quot;Creating #{model_name} ##{i+1}&quot;</span>
195
- 55: <span class="ruby-identifier">obj</span> = <span class="ruby-identifier">model_name</span>.<span class="ruby-identifier">camelcase</span>.<span class="ruby-identifier">constantize</span>.<span class="ruby-identifier">new</span>
196
- 56:
197
- 57: <span class="ruby-identifier">fields</span>.<span class="ruby-identifier">each_pair</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">k</span>, <span class="ruby-identifier">v</span><span class="ruby-operator">|</span>
198
- 58: <span class="ruby-identifier">field_name</span> = <span class="ruby-identifier">k</span>.<span class="ruby-identifier">to_s</span>
199
- 59: <span class="ruby-identifier">field_value</span> = <span class="ruby-identifier">v</span>.<span class="ruby-identifier">get_value</span>(<span class="ruby-identifier">i</span>)
200
- 60: <span class="ruby-identifier">assert_method</span>(<span class="ruby-identifier">obj</span>, <span class="ruby-node">&quot;#{field_name}=&quot;</span>, <span class="ruby-node">&quot;#{model_name.camelcase} doesn't have #{field_name}= method!&quot;</span>) <span class="ruby-keyword kw">do</span>
201
- 61: <span class="ruby-identifier">obj</span>.<span class="ruby-identifier">send</span>(<span class="ruby-node">&quot;#{field_name}=&quot;</span>, <span class="ruby-identifier">field_value</span>)
202
- 62: <span class="ruby-keyword kw">end</span>
203
- 63: <span class="ruby-keyword kw">end</span>
204
- 64:
205
- 65: <span class="ruby-identifier">assert_method</span>(<span class="ruby-identifier">obj</span>, <span class="ruby-value str">&quot;save&quot;</span>, <span class="ruby-node">&quot;#{model_name.camelcase} doesn't have save method. Data will not be saved!&quot;</span>) <span class="ruby-keyword kw">do</span>
206
- 66: <span class="ruby-identifier">obj</span>.<span class="ruby-identifier">save</span>
207
- 67: <span class="ruby-keyword kw">end</span>
208
- 68:
209
- 69: <span class="ruby-identifier">ret_arr</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">obj</span>
210
- 70: <span class="ruby-keyword kw">end</span>
211
- 71: <span class="ruby-constant">Mack</span><span class="ruby-operator">::</span><span class="ruby-constant">Data</span><span class="ruby-operator">::</span><span class="ruby-constant">RegistryMap</span>.<span class="ruby-identifier">reset!</span>
212
- 72:
213
- 73: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">ret_arr</span>[<span class="ruby-value">0</span>] <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">ret_arr</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">==</span> <span class="ruby-value">1</span>
214
- 74: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">ret_arr</span>
215
- 75: <span class="ruby-keyword kw">end</span>
216
- </pre>
217
- </div>
218
- </div>
219
- </div>
220
-
221
- <div id="method-M000003" class="method-detail">
222
- <a name="M000003"></a>
223
-
224
- <div class="method-heading">
225
- <a href="#M000003" class="method-signature">
226
- <span class="method-name">field</span><span class="method-args">(model_attrib_sym, options = {}, &amp;block)</span>
227
- </a>
228
- </div>
229
-
230
- <div class="method-description">
231
- <p>
232
- Define a <a href="ClassMethods.html#M000003">field</a> with its default
233
- value and rules and an optional content generator for this factory
234
- </p>
235
- <p><a class="source-toggle" href="#"
236
- onclick="toggleCode('M000003-source');return false;">[Source]</a></p>
237
- <div class="method-source-code" id="M000003-source">
238
- <pre>
239
- <span class="ruby-comment cmt"># File lib/mack-data_factory/data_factory.rb, line 81</span>
240
- 81: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">field</span>(<span class="ruby-identifier">model_attrib_sym</span>, <span class="ruby-identifier">options</span> = {}, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
241
- 82: <span class="ruby-identifier">field_manager</span>.<span class="ruby-identifier">add</span>(<span class="ruby-identifier">scope</span>, <span class="ruby-identifier">model_attrib_sym</span>, <span class="ruby-identifier">options</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
242
- 83: <span class="ruby-keyword kw">end</span>
243
- </pre>
244
- </div>
245
- </div>
246
- </div>
247
-
248
- <div id="method-M000005" class="method-detail">
249
- <a name="M000005"></a>
250
-
251
- <div class="method-heading">
252
- <a href="#M000005" class="method-signature">
253
- <span class="method-name">scope_for</span><span class="method-args">(tag) {|| ...}</span>
254
- </a>
255
- </div>
256
-
257
- <div class="method-description">
258
- <p>
259
- Define a scope in the factory. Any <a
260
- href="ClassMethods.html#M000003">field</a> defined in a scope will
261
- overwrite its cousin in the default scope.
262
- </p>
263
- <p><a class="source-toggle" href="#"
264
- onclick="toggleCode('M000005-source');return false;">[Source]</a></p>
265
- <div class="method-source-code" id="M000005-source">
266
- <pre>
267
- <span class="ruby-comment cmt"># File lib/mack-data_factory/data_factory.rb, line 96</span>
268
- 96: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">scope_for</span>(<span class="ruby-identifier">tag</span>)
269
- 97: <span class="ruby-identifier">set_scope</span>(<span class="ruby-identifier">tag</span>)
270
- 98: <span class="ruby-keyword kw">yield</span>
271
- 99: <span class="ruby-identifier">set_scope</span>(<span class="ruby-identifier">:default</span>)
272
- 100: <span class="ruby-keyword kw">end</span>
273
- </pre>
274
- </div>
275
- </div>
276
- </div>
277
-
278
-
279
- </div>
280
-
281
-
282
- </div>
283
-
284
-
285
- <div id="validator-badges">
286
- <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
287
- </div>
288
-
289
- </body>
290
- </html>