judit-pickle 0.4.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (75) hide show
  1. data/.gitignore +6 -0
  2. data/Gemfile +20 -0
  3. data/Gemfile.lock +98 -0
  4. data/History.txt +409 -0
  5. data/License.txt +20 -0
  6. data/README.rdoc +367 -0
  7. data/Rakefile +20 -0
  8. data/Rakefile.d/cucumber.rake +24 -0
  9. data/Rakefile.d/jeweler.rake +23 -0
  10. data/Rakefile.d/rcov.rake +18 -0
  11. data/Rakefile.d/rspec.rake +7 -0
  12. data/Rakefile.d/yard.rake +5 -0
  13. data/Todo.txt +3 -0
  14. data/VERSION +1 -0
  15. data/features/app/app.rb +122 -0
  16. data/features/app/blueprints.rb +11 -0
  17. data/features/app/factories.rb +23 -0
  18. data/features/app/views/notifier/email.erb +1 -0
  19. data/features/app/views/notifier/user_email.erb +6 -0
  20. data/features/email/email.feature +64 -0
  21. data/features/generator/generators.feature +59 -0
  22. data/features/path/models_page.feature +44 -0
  23. data/features/path/named_route_page.feature +10 -0
  24. data/features/pickle/create_from_active_record.feature +76 -0
  25. data/features/pickle/create_from_factory_girl.feature +63 -0
  26. data/features/pickle/create_from_machinist.feature +39 -0
  27. data/features/step_definitions/email_steps.rb +63 -0
  28. data/features/step_definitions/extra_email_steps.rb +7 -0
  29. data/features/step_definitions/fork_steps.rb +4 -0
  30. data/features/step_definitions/generator_steps.rb +46 -0
  31. data/features/step_definitions/path_steps.rb +14 -0
  32. data/features/step_definitions/pickle_steps.rb +100 -0
  33. data/features/step_definitions/raise_error_steps.rb +3 -0
  34. data/features/support/email.rb +21 -0
  35. data/features/support/env.rb +52 -0
  36. data/features/support/paths.rb +47 -0
  37. data/features/support/pickle.rb +26 -0
  38. data/features/support/pickle_app.rb +4 -0
  39. data/init.rb +0 -0
  40. data/lib/generators/pickle_generator.rb +69 -0
  41. data/lib/pickle/adapter.rb +137 -0
  42. data/lib/pickle/adapters/active_record.rb +57 -0
  43. data/lib/pickle/adapters/data_mapper.rb +42 -0
  44. data/lib/pickle/adapters/mongoid.rb +44 -0
  45. data/lib/pickle/config.rb +49 -0
  46. data/lib/pickle/email/parser.rb +18 -0
  47. data/lib/pickle/email/world.rb +13 -0
  48. data/lib/pickle/email.rb +77 -0
  49. data/lib/pickle/parser/matchers.rb +87 -0
  50. data/lib/pickle/parser.rb +65 -0
  51. data/lib/pickle/path/world.rb +5 -0
  52. data/lib/pickle/path.rb +45 -0
  53. data/lib/pickle/session/parser.rb +34 -0
  54. data/lib/pickle/session.rb +205 -0
  55. data/lib/pickle/version.rb +9 -0
  56. data/lib/pickle/world.rb +14 -0
  57. data/lib/pickle.rb +26 -0
  58. data/pickle.gemspec +134 -0
  59. data/rails_generators/pickle/pickle_generator.rb +33 -0
  60. data/rails_generators/pickle/templates/email.rb +21 -0
  61. data/rails_generators/pickle/templates/email_steps.rb +63 -0
  62. data/rails_generators/pickle/templates/paths.rb +47 -0
  63. data/rails_generators/pickle/templates/pickle.rb +28 -0
  64. data/rails_generators/pickle/templates/pickle_steps.rb +100 -0
  65. data/spec/pickle/adapter_spec.rb +186 -0
  66. data/spec/pickle/config_spec.rb +109 -0
  67. data/spec/pickle/email/parser_spec.rb +51 -0
  68. data/spec/pickle/email_spec.rb +166 -0
  69. data/spec/pickle/parser/matchers_spec.rb +70 -0
  70. data/spec/pickle/parser_spec.rb +161 -0
  71. data/spec/pickle/path_spec.rb +101 -0
  72. data/spec/pickle/session_spec.rb +434 -0
  73. data/spec/pickle_spec.rb +24 -0
  74. data/spec/spec_helper.rb +8 -0
  75. metadata +199 -0
data/.gitignore ADDED
@@ -0,0 +1,6 @@
1
+ pkg
2
+ doc/*
3
+ .yardoc
4
+ pickle-email*
5
+ cucumber_test_app
6
+ .bundle
data/Gemfile ADDED
@@ -0,0 +1,20 @@
1
+ source "http://rubygems.org"
2
+
3
+ gem "yard"
4
+ gem "rake"
5
+ gem "cucumber", ">=0.8"
6
+ gem "rspec"
7
+
8
+ group :test do
9
+ gem "rspec-rails"
10
+ gem "rails", "~>2.3"
11
+ gem "cucumber-rails", ">=0.3.2"
12
+ gem "factory_girl"
13
+ gem "machinist"
14
+ gem "jeweler"
15
+ gem "rcov"
16
+ gem "database_cleaner"
17
+ gem "capybara"
18
+ gem "webrat"
19
+ gem "sqlite3-ruby"
20
+ end
data/Gemfile.lock ADDED
@@ -0,0 +1,98 @@
1
+ GEM
2
+ remote: http://rubygems.org/
3
+ specs:
4
+ actionmailer (2.3.8)
5
+ actionpack (= 2.3.8)
6
+ actionpack (2.3.8)
7
+ activesupport (= 2.3.8)
8
+ rack (~> 1.1.0)
9
+ activerecord (2.3.8)
10
+ activesupport (= 2.3.8)
11
+ activeresource (2.3.8)
12
+ activesupport (= 2.3.8)
13
+ activesupport (2.3.8)
14
+ builder (2.1.2)
15
+ capybara (0.3.9)
16
+ culerity (>= 0.2.4)
17
+ mime-types (>= 1.16)
18
+ nokogiri (>= 1.3.3)
19
+ rack (>= 1.0.0)
20
+ rack-test (>= 0.5.4)
21
+ selenium-webdriver (>= 0.0.3)
22
+ cucumber (0.8.5)
23
+ builder (~> 2.1.2)
24
+ diff-lcs (~> 1.1.2)
25
+ gherkin (~> 2.1.4)
26
+ json_pure (~> 1.4.3)
27
+ term-ansicolor (~> 1.0.4)
28
+ cucumber-rails (0.3.2)
29
+ cucumber (>= 0.8.0)
30
+ culerity (0.2.10)
31
+ database_cleaner (0.5.2)
32
+ diff-lcs (1.1.2)
33
+ factory_girl (1.3.2)
34
+ ffi (0.6.3)
35
+ rake (>= 0.8.7)
36
+ gemcutter (0.6.1)
37
+ gherkin (2.1.5)
38
+ trollop (~> 1.16.2)
39
+ git (1.2.5)
40
+ jeweler (1.4.0)
41
+ gemcutter (>= 0.1.0)
42
+ git (>= 1.2.5)
43
+ rubyforge (>= 2.0.0)
44
+ json_pure (1.4.6)
45
+ machinist (1.0.6)
46
+ mime-types (1.16)
47
+ nokogiri (1.4.3.1)
48
+ rack (1.1.0)
49
+ rack-test (0.5.4)
50
+ rack (>= 1.0)
51
+ rails (2.3.8)
52
+ actionmailer (= 2.3.8)
53
+ actionpack (= 2.3.8)
54
+ activerecord (= 2.3.8)
55
+ activeresource (= 2.3.8)
56
+ activesupport (= 2.3.8)
57
+ rake (>= 0.8.3)
58
+ rake (0.8.7)
59
+ rcov (0.9.8)
60
+ rspec (1.3.0)
61
+ rspec-rails (1.3.2)
62
+ rack (>= 1.0.0)
63
+ rspec (>= 1.3.0)
64
+ rubyforge (2.0.4)
65
+ json_pure (>= 1.1.7)
66
+ rubyzip (0.9.4)
67
+ selenium-webdriver (0.0.27)
68
+ ffi (>= 0.6.1)
69
+ json_pure
70
+ rubyzip
71
+ sqlite3-ruby (1.3.1)
72
+ term-ansicolor (1.0.5)
73
+ trollop (1.16.2)
74
+ webrat (0.7.1)
75
+ nokogiri (>= 1.2.0)
76
+ rack (>= 1.0)
77
+ rack-test (>= 0.5.3)
78
+ yard (0.5.8)
79
+
80
+ PLATFORMS
81
+ ruby
82
+
83
+ DEPENDENCIES
84
+ capybara
85
+ cucumber (>= 0.8)
86
+ cucumber-rails (>= 0.3.2)
87
+ database_cleaner
88
+ factory_girl
89
+ jeweler
90
+ machinist
91
+ rails (~> 2.3)
92
+ rake
93
+ rcov
94
+ rspec
95
+ rspec-rails
96
+ sqlite3-ruby
97
+ webrat
98
+ yard
data/History.txt ADDED
@@ -0,0 +1,409 @@
1
+ == 0.4.2
2
+
3
+ * 1 bugfix
4
+ * Use mongoid finder syntax, which requires a :conditions key [Marc Lee]
5
+
6
+
7
+ == 0.4.1
8
+ Docfix
9
+
10
+ * 1 improvement
11
+ * documentation fixes, and example of writing your own pickle steps
12
+
13
+
14
+ == 0.4.0
15
+ Mongoid adapter, fallback ORM adapter for those not using machinist or active_record, bugfixes
16
+
17
+ * 2 major improvements
18
+ * adapter for Mongoid [Sebastian Zuchmanski]
19
+ * replace ActiveRecord 'factory' adapter with Orm adapter.
20
+
21
+ If you don't have machinist or factory_girl, the Orm factory adapter will fallback to your Orm to create classes.
22
+
23
+ BC: if you have a line like this:
24
+ Pickle.configure do |config|
25
+ config.adapters = [:active_record]
26
+ end
27
+
28
+ You need to replace it with :orm
29
+ Pickle.configure do |config|
30
+ config.adapters = [:orm]
31
+ end
32
+
33
+ * 1 minor improvement
34
+ * Pickle::Session::ModelNotKnownError is raised instead of a generic RuntimeError
35
+
36
+ * 1 bugfix
37
+ * references to unknown models in fields now raise ModelNotKnownError instead of silently assigning nil
38
+
39
+
40
+ == 0.3.5
41
+
42
+ * 3 improvements
43
+ * bundler is used for setting up development dependencies
44
+ * gemspec specifies dependencies for using pickle
45
+ * Machinist 2 compatability [giddie]
46
+
47
+ * 1 bugfix
48
+ * find_models now works with a factory name with spaces in it [#27]
49
+
50
+
51
+ == 0.3.4
52
+
53
+ * 2 minor improvements
54
+ * Fix problem where email body is not a string, but is string like [#26] [Tom Meier]
55
+ * Minor code refactoring
56
+
57
+
58
+ == 0.3.3
59
+
60
+ * 1 minor improvement
61
+ * Pickle respects the default build strategy for factory girl. [Sean Hussey]
62
+
63
+
64
+ == 0.3.2
65
+
66
+ * 3 minor improvements
67
+ * Document how to use machinist named blueprints [Christopher Darroch]
68
+ * Email links now visit the url, rather than just the path, this allows for features that
69
+ make use of the domain to function correctly
70
+ * Deprecation warnings for Rails 3 removed [Brian Rose & Kevin Olsen]
71
+
72
+
73
+ == 0.3.1
74
+
75
+ * 1 major improvement
76
+ * Rails 3 support for generators [H.J. Blok, szimek]
77
+
78
+
79
+ == 0.3.0
80
+
81
+ * 2 major improvements
82
+ * Mechanism for registering ORM adapters for pickle [Daniel Neighman]
83
+ * Adapters for ActiveRecord and DataMapper [Josh Bassett, Daniel Neighman]
84
+
85
+
86
+ == 0.2.12
87
+
88
+ * 1 bugfix
89
+ * script/generate pickle paths now works correctly with cucumber-rails 0.3.2
90
+
91
+
92
+ == 0.2.11
93
+
94
+ * 1 improvement
95
+ * use correct type when converting STI pickle model to attributes
96
+
97
+
98
+ == 0.2.10
99
+
100
+ * 2 improvements
101
+ * pickle backend is rails 3 compatible (but generators are not yet)
102
+ * modular Rakefile, devs can run only what they're interested in without having to install all gems
103
+
104
+
105
+ == 0.2.9 - 27 Apr 2010 (the #railscamp7 release)
106
+
107
+ * 5 improvements
108
+ * Fixed problem with verifying model attribute using strings with escaped quotes [Michael MacDonald]
109
+ * Added handling for positive and negative floats [Michael MacDonald, #railscamp7]
110
+ * Added handling of ruby integer syntax (e.g. 1_000_000) [Ian White]
111
+ * Modified the way pickle handles predicates to match rspec [Michael MacDonald, #railscamp7]
112
+ * Added step to assert size of an association (e.g. Then the user should have 4 friends) [Ian White]
113
+
114
+
115
+ == 0.2.8 - 5 Apr 2010
116
+
117
+ * 1 minor improvement
118
+ * 'Then show me the email' works as expected now [#18]
119
+
120
+
121
+ == 0.2.7 - 5 Apr 2010
122
+
123
+ * 1 minor improvement
124
+ * just rake 'rake cucumber' and a rails app will be setup for you if required (rails 2.3 only ATM)
125
+
126
+
127
+ == 0.2.6 - 5 Apr 2010
128
+
129
+ * 2 improvements
130
+ * running specs is now doable without being in a rails app - just do 'rake spec'
131
+ * running features is more straightforward, 'rake cucumber' then follow the instructions
132
+
133
+
134
+ == 0.2.5 - 17 Mar 2010
135
+
136
+ * 2 improvements
137
+ * Bugfix for find_models_via_table (failing to find models was not causing an error) [Chris Flipse]
138
+ * find_models_via_table & create_models_via_table return the found/created models [Chris Flipse, Ian White]
139
+
140
+
141
+ == 0.2.4 - 9 Mar 2010
142
+
143
+ * 1 major improvement
144
+ * Finding models via a table now works in the same way as creating models via a table (0.2.3), you
145
+ can create pickle refs
146
+
147
+
148
+ == 0.2.3 - 9 Mar 2010
149
+
150
+ * 1 major improvement
151
+ * You can now use pickle refs in tables. If you add a column which is the single factory name, the
152
+ contents of the column will be used as the pickle ref. [Stephan Hagemann]
153
+ e.g.
154
+ Given the following users exist:
155
+ | user | name | status |
156
+ | jack | Jack Spratt | alone |
157
+ | pete | Pete Sprong | dead |
158
+
159
+ * 1 minor improvement
160
+ * Fix bug in error message for when pickle ref can't be found [Myron Marston]
161
+
162
+
163
+ == 0.2.2 - 25 Feb 2010
164
+
165
+ * 3 improvements
166
+ * Added ability to follow links in emails (see email_steps.rb) [Michael Moen]
167
+ * Added a step definition for doing stuff like: Then the user's name should be "Tobi" [Tobi Knaup]
168
+ * Docfixes, mostly about testing [Nicholas Rutherford]
169
+
170
+
171
+ == 0.2.1 - 1 Dec 2009
172
+
173
+ * 2 minor improvements
174
+ * Allow nil as field value [#14]
175
+ * Added negative email step for delivered to
176
+
177
+
178
+ == 0.2.0 - 24 Nov 2009
179
+
180
+ * 4 major improvements
181
+ * Added support for finding models using tables
182
+ Example:
183
+ Then the following users should exist:
184
+ | name |
185
+ | Fred |
186
+ | Ethel |
187
+ And the 1st user should be male
188
+ And the 2nd user should be female
189
+
190
+ * tables now support pickle refs in cells (see features/pickle/create_from_factory_girl.rb#37)
191
+
192
+ * features/support/email.rb adds an email helper for mapping names to email addresses (similar to NavigationHelper in paths.rb)
193
+
194
+ * Added ability for path_to_pickle to handle arbitrary segments
195
+ Example:
196
+ path_to_pickle('account', 'the enquiry') => account_enquiry_path(<enquiry>)
197
+
198
+ * 2 minor improvements
199
+ * fail faster in pickle steps when a pickle ref can't be found, by using model! in most places
200
+
201
+ * generated pickle steps are less picky about possessives so that pickle mappings accepted in more places
202
+ e.g. when you have
203
+ config.map 'my', 'I', 'myself', :to => 'user: "me"'
204
+ you can now do
205
+ Given I exist
206
+ ...
207
+ Then the project should be one of my assigned projects
208
+
209
+
210
+ == 0.1.23 - 22 Nov 2009
211
+
212
+ * 1 major improvement
213
+ * script/generate pickle now adds its own pickle.rb support file, making it easier to regenerate cucumber
214
+ when a new release of cucumber appears [schlick, ianwhite]
215
+
216
+ * 1 minor improvement
217
+ * docs: more links
218
+
219
+
220
+ == 0.1.22 - 7 Nov 2009
221
+
222
+ * 2 minor enhancements
223
+ * Improved docs to include instructions for FactoryGirl users, and links/resources for pickle users
224
+ * Ruby 1.9.1 compatibility changes
225
+
226
+
227
+ == 0.1.21
228
+
229
+ * 1 minor enhancement
230
+ * Added 'should not' steps corresponding to model existence, and association exitsence [schlick]
231
+
232
+
233
+ == 0.1.20
234
+
235
+ * 1 minor enhancement
236
+ * Pickle now matches numeric field values preceded with a positive and negative sign eg +1.5 and -1 [schlick]
237
+
238
+
239
+ == 0.1.19
240
+
241
+ * 1 minor enhancement
242
+ * Add support for Cucumber tables [Tobi Knaup]
243
+
244
+
245
+ == 0.1.16, 0.1.17, 0.1.18 - 13 Oct 2009
246
+
247
+ * 1 minor enhancement
248
+ * release gem on gemcutter and code on github
249
+
250
+
251
+ == 0.1.15 - 28 Aug 2009
252
+
253
+ * 1 minor enhancement
254
+ * avoid namespace collision on replace by renaming mapping#replace -> mapping#replacement [nruth]
255
+
256
+
257
+ == 0.1.14 - 9 July 2009
258
+
259
+ * 1 minor enhancement
260
+ * update specs and features for latest cucumber and machinist changes
261
+
262
+
263
+ == 0.1.13 - 16 June 2009
264
+
265
+ * 2 minor enhancements
266
+ * model! and created_model! raise an error if pickle name can't be found
267
+ * path_to_pickle uses the above to give back a better error message
268
+
269
+
270
+ == 0.1.12 - 7 Apr 2009
271
+
272
+ * 2 minor enhancements
273
+ * rationalised Rakefile
274
+ * update World extensions for latest cucumber changes
275
+
276
+
277
+ == 0.1.11 - 22 Feb 2009
278
+
279
+ * 2 minor enhancements
280
+ * Pickle now supports multiple machinist blueprints
281
+ * Fix confusing adapter/adaptor comment generator comment
282
+
283
+
284
+ == 0.1.10 - 13 Feb 2009
285
+
286
+ * 2 minor enhancements
287
+ * Made pickle paths generator compatible with latest cucumber
288
+ * Simplified and Rakefile, including auto push api docs to gh-pages on ci build
289
+
290
+
291
+ == 0.1.9 - 29 Jan 2009
292
+
293
+ * 1 minor enhancement
294
+ * Pickle::Adapter.model_classes excludes those without tables
295
+
296
+
297
+ == 0.1.8 - 29 Jan 2009
298
+
299
+ * API change
300
+ * pickle_path becomes path_to_pickle, to avoid named route clashes
301
+
302
+ * 2 minor enhancements
303
+ * Updated features for cucumber 0.2 compat
304
+ * Made paths allow for optional possesives
305
+
306
+
307
+ == 0,1,7
308
+
309
+ * 2 API changes
310
+ * script/generate pickle path[s] now amends the features/support/paths.rb file
311
+ instead of creating pge_to_path and path_steps.
312
+
313
+ * pickle_email_steps is renamed email_steps
314
+
315
+
316
+ == 0.1.6
317
+
318
+ * 1 API change
319
+ * to use pickle env.rb should contain "require 'pickle/world'". You should remove all trace of
320
+ pickle from features/support/env.rb and re run script/generate pickle
321
+
322
+ * 2 major enhancements
323
+
324
+ * generate email steps with `script/generate pickle email`
325
+ email steps allow you to do things like this:
326
+
327
+ Then 2 emails should be delivered
328
+ And the first email should be delivered to fred@gmail.com
329
+ And the 2nd email should be delivered to the user: "ethel"
330
+
331
+ Then 1 email should be delivered with subject: "Activate your account"
332
+ And the email should link to the user's page
333
+
334
+ take a look at features/step_definitions/pickle_email_steps.rb
335
+
336
+ * generate path steps with `script/generate pickle path`
337
+ path steps allow you to do things like this
338
+
339
+ When I go to the comment's page
340
+ Then I should be at the user's new comment page
341
+
342
+ take a look at features/step_definitions/pickle_path_steps.rb, and modify page_to_path to suit your needs
343
+
344
+ * 4 minor enhancements
345
+ * Improved documentation
346
+ * abstract models no longer kill pickle
347
+ * Actually test that the generators work
348
+ * Made Pickle::Session a plain ole mixin, as a separate class was unnecessary
349
+ * Pickle uses the cucumber World API
350
+
351
+
352
+ == 0.1.5
353
+
354
+ * API change
355
+ * CaptureModel, etc are now 'capture_model' methods
356
+
357
+ * 3 major enhancements
358
+ * Steps for asserting that <n> models exist, matching certain criteria
359
+ * Steps for asserting associations added to generated pickle steps
360
+ 'Then the user should be in the post's commenters'
361
+ 'Then the forum: "awesome" should be the 2nd post's forum'
362
+ * configuration can now occur any time before a step is defined, which makes
363
+ for much more intuitive env.rb
364
+
365
+ * 2 minor enhancement
366
+ * predicate matching is less prone to step conflicts because we preload a
367
+ big list of all the predicate and column methods
368
+ * field values now handle booleans and numerics
369
+
370
+
371
+ == 0.1.4
372
+
373
+ * 1 major enhancement
374
+ * You can create multiple models with ease, for eg.
375
+ 'Given 10 users exist with role: "admin"'
376
+
377
+ * 1 minor enhancement
378
+ * You can do Pickle.configure (just like Webrat.configure)
379
+
380
+
381
+ == 0.1.3 - Bugfix release
382
+
383
+ * 1 minor enhancement
384
+ * make generated steps compatible with Rails 2.1
385
+
386
+
387
+ == 0.1.2
388
+
389
+ * 2 major enhancements
390
+ * create your pickle steps with script/generate pickle
391
+ * Adapter based architecture, supports Machinist, FactoryGirl, and vanilla ActiveRecord
392
+
393
+ * 1 minor enhancement
394
+ * model_names now defaults to subclasses of AR::Base
395
+ * #original_model => #created_model
396
+
397
+
398
+ == 0.1.1
399
+
400
+ * 1 major enhancement:
401
+ * made pickle a github gem
402
+
403
+ * 1 minor enhancement:
404
+ * Added intentions for pickle in README.textile
405
+
406
+
407
+ == Prior to gems
408
+
409
+ * Initial release: everything is subject to sweeping change
data/License.txt ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2008-2010 Ian White - ian.w.white@gmail.com
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.