user_query 0.1.0

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 (69) hide show
  1. data/ChangeLog +4 -0
  2. data/README +45 -0
  3. data/Rakefile +359 -0
  4. data/Releases +6 -0
  5. data/TODO +0 -0
  6. data/examples/userqueryex/HOWTO.txt +5 -0
  7. data/examples/userqueryex/README +183 -0
  8. data/examples/userqueryex/Rakefile +10 -0
  9. data/examples/userqueryex/WHAT.txt +16 -0
  10. data/examples/userqueryex/app/controllers/application.rb +4 -0
  11. data/examples/userqueryex/app/controllers/entries_controller.rb +68 -0
  12. data/examples/userqueryex/app/helpers/application_helper.rb +3 -0
  13. data/examples/userqueryex/app/helpers/entries_helper.rb +2 -0
  14. data/examples/userqueryex/app/models/entry.rb +8 -0
  15. data/examples/userqueryex/app/views/entries/_form.rhtml +20 -0
  16. data/examples/userqueryex/app/views/entries/edit.rhtml +9 -0
  17. data/examples/userqueryex/app/views/entries/list.rhtml +75 -0
  18. data/examples/userqueryex/app/views/entries/new.rhtml +8 -0
  19. data/examples/userqueryex/app/views/entries/show.rhtml +8 -0
  20. data/examples/userqueryex/app/views/layouts/entries.rhtml +13 -0
  21. data/examples/userqueryex/config/boot.rb +44 -0
  22. data/examples/userqueryex/config/database.yml +36 -0
  23. data/examples/userqueryex/config/environment.rb +54 -0
  24. data/examples/userqueryex/config/environments/development.rb +21 -0
  25. data/examples/userqueryex/config/environments/production.rb +18 -0
  26. data/examples/userqueryex/config/environments/test.rb +19 -0
  27. data/examples/userqueryex/config/routes.rb +22 -0
  28. data/examples/userqueryex/db/migrate/001_entry_migration.rb +16 -0
  29. data/examples/userqueryex/db/schema.rb +15 -0
  30. data/examples/userqueryex/doc/README_FOR_APP +2 -0
  31. data/examples/userqueryex/public/404.html +8 -0
  32. data/examples/userqueryex/public/500.html +8 -0
  33. data/examples/userqueryex/public/dispatch.cgi +10 -0
  34. data/examples/userqueryex/public/dispatch.fcgi +24 -0
  35. data/examples/userqueryex/public/dispatch.rb +10 -0
  36. data/examples/userqueryex/public/favicon.ico +0 -0
  37. data/examples/userqueryex/public/images/rails.png +0 -0
  38. data/examples/userqueryex/public/javascripts/application.js +2 -0
  39. data/examples/userqueryex/public/javascripts/controls.js +815 -0
  40. data/examples/userqueryex/public/javascripts/dragdrop.js +913 -0
  41. data/examples/userqueryex/public/javascripts/effects.js +958 -0
  42. data/examples/userqueryex/public/javascripts/prototype.js +2006 -0
  43. data/examples/userqueryex/public/robots.txt +1 -0
  44. data/examples/userqueryex/public/stylesheets/scaffold.css +74 -0
  45. data/examples/userqueryex/script/about +3 -0
  46. data/examples/userqueryex/script/breakpointer +3 -0
  47. data/examples/userqueryex/script/console +3 -0
  48. data/examples/userqueryex/script/destroy +3 -0
  49. data/examples/userqueryex/script/generate +3 -0
  50. data/examples/userqueryex/script/performance/benchmarker +3 -0
  51. data/examples/userqueryex/script/performance/profiler +3 -0
  52. data/examples/userqueryex/script/plugin +3 -0
  53. data/examples/userqueryex/script/process/reaper +3 -0
  54. data/examples/userqueryex/script/process/spawner +3 -0
  55. data/examples/userqueryex/script/runner +3 -0
  56. data/examples/userqueryex/script/server +3 -0
  57. data/examples/userqueryex/test/fixtures/entries.yml +5 -0
  58. data/examples/userqueryex/test/functional/entries_controller_test.rb +88 -0
  59. data/examples/userqueryex/test/test_helper.rb +28 -0
  60. data/examples/userqueryex/test/unit/entry_test.rb +10 -0
  61. data/lib/user_query.rb +10 -0
  62. data/lib/user_query/generator.rb +219 -0
  63. data/lib/user_query/parameters.rb +93 -0
  64. data/lib/user_query/parser.rb +762 -0
  65. data/lib/user_query/schema.rb +159 -0
  66. data/lib/user_query/user_query_version.rb +6 -0
  67. data/test/parser_test.rb +539 -0
  68. data/test/schema_test.rb +142 -0
  69. metadata +148 -0
@@ -0,0 +1,142 @@
1
+ # $Id$
2
+ #require File.dirname(__FILE__) + '/../test_helper'
3
+
4
+ require 'test/unit'
5
+ require 'user_query'
6
+ #require 'active_record' # OPTIONAL
7
+
8
+ module UserQuery
9
+
10
+ class SchemaTest < Test::Unit::TestCase
11
+
12
+ @@has_currency = false
13
+ begin
14
+ Kernel.require 'currency' # For :type => :money
15
+ @@has_currency = true
16
+ rescue Object => err
17
+ $stderr.puts "Error loading currency: skipping Currency tests\n#{err}"
18
+ @@has_currency = false
19
+ end
20
+
21
+ def setup
22
+ super
23
+ end
24
+
25
+ ############################################
26
+ # Simple stuff.
27
+ #
28
+
29
+ def test_create(params = {})
30
+ @params = params
31
+ assert_not_nil @p = UserQuery::Parameters.
32
+ new(params)
33
+ assert_not_nil @s = UserQuery::Schema.
34
+ new(:table => 'foo',
35
+ :field => [
36
+ [ :id, :number ],
37
+ [ :n, :number ],
38
+ [ :date, :datetime ],
39
+ [ :memo, :string ],
40
+ [ :amount, :money ]
41
+ ]
42
+ )
43
+ end
44
+
45
+ def test_empty
46
+ test_create
47
+ assert_equal nil, @s.sql(@params)
48
+ end
49
+
50
+ def test_NULL
51
+ test_create({:n => "NULL"})
52
+ # @s.verbose = true
53
+ assert_equal "(foo.n IS NULL)", @s.sql(@params, @p)
54
+
55
+ test_create({:n => "! NULL"})
56
+ assert_equal "NOT ((foo.n IS NULL))", @s.sql(@params, @p)
57
+
58
+ test_create({:n => "NOT NULL"})
59
+ assert_equal "NOT ((foo.n IS NULL))", @s.sql(@params, @p)
60
+ end
61
+
62
+ def test_syntax_error
63
+ test_create({:memo => "$!"})
64
+ assert_equal nil, @s.sql(@params, @p)
65
+ assert ! @p.errors.empty?
66
+ assert @p.errors[:memo] =~ /invalid character .* at "\$/
67
+ # $stderr.puts @p.errors[:memo]
68
+ end
69
+
70
+ def test_id
71
+ test_create({:id => "500"})
72
+ assert_equal "(foo.id = 500)", @s.sql(@params, @p)
73
+ end
74
+
75
+ def test_id_gt
76
+ test_create({:id => ">500"})
77
+ assert_equal "(foo.id > 500)", @s.sql(@params, @p)
78
+
79
+ end
80
+
81
+ def test_number_like
82
+ test_create({:n => "LIKE 50"})
83
+ assert_equal "(foo.n LIKE '%50%')", @s.sql(@params, @p)
84
+ end
85
+
86
+ def test_like
87
+ test_create({:memo => "~foo"})
88
+ assert_equal "(foo.memo LIKE '%foo%')", @s.sql(@params, @p)
89
+
90
+ test_create({:memo => 'LIKE "95%"'})
91
+ assert_equal "(foo.memo LIKE '%95\\%%')", @s.sql(@params, @p)
92
+
93
+ test_create({:memo => 'LIKE "UNDER_SCORE"'})
94
+ assert_equal "(foo.memo LIKE '%UNDER\\_SCORE%')", @s.sql(@params, @p)
95
+ end
96
+
97
+ def test_number_errors
98
+ test_create({:n => "foo"})
99
+ assert_equal nil, @s.sql(@params, @p)
100
+ assert ! @p.errors.empty?
101
+ # $stderr.puts "p.errors = #{@p.errors.inspect}"
102
+ assert @p.errors[:n] =~ /invalid character .* at "foo"$/
103
+ end
104
+
105
+ def test_date
106
+ test_create({:date => "12/31/2005"})
107
+ assert_equal "((foo.date >= '2005-12-31 00:00:00') AND (foo.date < '2006-01-01 00:00:00'))", @s.sql(@params, @p)
108
+
109
+ test_create({:date => "12/31/2005 12:00:00am"})
110
+ assert_equal "((foo.date >= '2005-12-31 00:00:00') AND (foo.date < '2005-12-31 00:00:01'))", @s.sql(@params, @p)
111
+
112
+ test_create({:date => "12/31/2005 11:59:59pm"})
113
+ assert_equal "((foo.date >= '2005-12-31 23:59:59') AND (foo.date < '2006-01-01 00:00:00'))", @s.sql(@params, @p)
114
+
115
+ test_create({:date => "BEFORE 2005"})
116
+ assert_equal "(foo.date < '2005-01-01 00:00:00')", @s.sql(@params, @p)
117
+ end
118
+
119
+ def test_money
120
+
121
+ return true unless @@has_currency
122
+
123
+ test_create({:amount => ".56"})
124
+ assert_equal "(foo.amount = 56)", @s.sql(@params, @p)
125
+
126
+ test_create({:amount => "-.41"})
127
+ assert_equal "(foo.amount = -41)", @s.sql(@params, @p)
128
+
129
+ test_create({:amount => "1,234.56"})
130
+ assert_equal "(foo.amount = 123456)", @s.sql(@params, @p)
131
+
132
+ test_create({:amount => "LESS THAN $123.01"})
133
+ assert_equal "(foo.amount < 12301)", @s.sql(@params, @p)
134
+
135
+ test_create({:amount => "-123.01"})
136
+ assert_equal "(foo.amount = -12301)", @s.sql(@params, @p)
137
+ end
138
+
139
+ end
140
+
141
+ end # module
142
+
metadata ADDED
@@ -0,0 +1,148 @@
1
+ --- !ruby/object:Gem::Specification
2
+ rubygems_version: 0.8.11
3
+ specification_version: 1
4
+ name: user_query
5
+ version: !ruby/object:Gem::Version
6
+ version: 0.1.0
7
+ date: 2006-10-30 00:00:00 -05:00
8
+ summary: UserQuery GEM
9
+ require_paths:
10
+ - lib
11
+ email: ruby-user_query@umleta.com
12
+ homepage: http://user_query.rubyforge.org
13
+ rubyforge_project: user_query
14
+ description: UserQuery generates SQL WHERE clauses from a simple user query expression. Can integrate with ActiveRecord or be used stand-alone.
15
+ autorequire:
16
+ default_executable:
17
+ bindir: bin
18
+ has_rdoc: false
19
+ required_ruby_version: !ruby/object:Gem::Version::Requirement
20
+ requirements:
21
+ - - ">"
22
+ - !ruby/object:Gem::Version
23
+ version: 0.0.0
24
+ version:
25
+ platform: ruby
26
+ signing_key:
27
+ cert_chain:
28
+ authors:
29
+ - Kurt Stephens
30
+ files:
31
+ - Rakefile
32
+ - ChangeLog
33
+ - Releases
34
+ - TODO
35
+ - README
36
+ - examples/userqueryex
37
+ - examples/userqueryex/app
38
+ - examples/userqueryex/config
39
+ - examples/userqueryex/components
40
+ - examples/userqueryex/db
41
+ - examples/userqueryex/doc
42
+ - examples/userqueryex/lib
43
+ - examples/userqueryex/public
44
+ - examples/userqueryex/script
45
+ - examples/userqueryex/test
46
+ - examples/userqueryex/vendor
47
+ - examples/userqueryex/tmp
48
+ - examples/userqueryex/Rakefile
49
+ - examples/userqueryex/README
50
+ - examples/userqueryex/HOWTO.txt
51
+ - examples/userqueryex/WHAT.txt
52
+ - examples/userqueryex/app/controllers
53
+ - examples/userqueryex/app/helpers
54
+ - examples/userqueryex/app/models
55
+ - examples/userqueryex/app/views
56
+ - examples/userqueryex/app/controllers/application.rb
57
+ - examples/userqueryex/app/controllers/entries_controller.rb
58
+ - examples/userqueryex/app/helpers/application_helper.rb
59
+ - examples/userqueryex/app/helpers/entries_helper.rb
60
+ - examples/userqueryex/app/models/entry.rb
61
+ - examples/userqueryex/app/views/layouts
62
+ - examples/userqueryex/app/views/entries
63
+ - examples/userqueryex/app/views/layouts/entries.rhtml
64
+ - examples/userqueryex/app/views/entries/_form.rhtml
65
+ - examples/userqueryex/app/views/entries/list.rhtml
66
+ - examples/userqueryex/app/views/entries/show.rhtml
67
+ - examples/userqueryex/app/views/entries/new.rhtml
68
+ - examples/userqueryex/app/views/entries/edit.rhtml
69
+ - examples/userqueryex/config/environments
70
+ - examples/userqueryex/config/database.yml
71
+ - examples/userqueryex/config/routes.rb
72
+ - examples/userqueryex/config/boot.rb
73
+ - examples/userqueryex/config/environment.rb
74
+ - examples/userqueryex/config/environments/production.rb
75
+ - examples/userqueryex/config/environments/development.rb
76
+ - examples/userqueryex/config/environments/test.rb
77
+ - examples/userqueryex/db/migrate
78
+ - examples/userqueryex/db/schema.rb
79
+ - examples/userqueryex/db/migrate/001_entry_migration.rb
80
+ - examples/userqueryex/doc/README_FOR_APP
81
+ - examples/userqueryex/lib/tasks
82
+ - examples/userqueryex/public/images
83
+ - examples/userqueryex/public/javascripts
84
+ - examples/userqueryex/public/stylesheets
85
+ - examples/userqueryex/public/dispatch.rb
86
+ - examples/userqueryex/public/dispatch.cgi
87
+ - examples/userqueryex/public/dispatch.fcgi
88
+ - examples/userqueryex/public/404.html
89
+ - examples/userqueryex/public/500.html
90
+ - examples/userqueryex/public/favicon.ico
91
+ - examples/userqueryex/public/robots.txt
92
+ - examples/userqueryex/public/images/rails.png
93
+ - examples/userqueryex/public/javascripts/prototype.js
94
+ - examples/userqueryex/public/javascripts/effects.js
95
+ - examples/userqueryex/public/javascripts/dragdrop.js
96
+ - examples/userqueryex/public/javascripts/controls.js
97
+ - examples/userqueryex/public/javascripts/application.js
98
+ - examples/userqueryex/public/stylesheets/scaffold.css
99
+ - examples/userqueryex/script/performance
100
+ - examples/userqueryex/script/process
101
+ - examples/userqueryex/script/about
102
+ - examples/userqueryex/script/breakpointer
103
+ - examples/userqueryex/script/console
104
+ - examples/userqueryex/script/destroy
105
+ - examples/userqueryex/script/generate
106
+ - examples/userqueryex/script/runner
107
+ - examples/userqueryex/script/server
108
+ - examples/userqueryex/script/plugin
109
+ - examples/userqueryex/script/performance/benchmarker
110
+ - examples/userqueryex/script/performance/profiler
111
+ - examples/userqueryex/script/process/reaper
112
+ - examples/userqueryex/script/process/spawner
113
+ - examples/userqueryex/test/fixtures
114
+ - examples/userqueryex/test/functional
115
+ - examples/userqueryex/test/integration
116
+ - examples/userqueryex/test/mocks
117
+ - examples/userqueryex/test/unit
118
+ - examples/userqueryex/test/test_helper.rb
119
+ - examples/userqueryex/test/fixtures/entries.yml
120
+ - examples/userqueryex/test/functional/entries_controller_test.rb
121
+ - examples/userqueryex/test/mocks/development
122
+ - examples/userqueryex/test/mocks/test
123
+ - examples/userqueryex/test/unit/entry_test.rb
124
+ - examples/userqueryex/vendor/plugins
125
+ - examples/userqueryex/tmp/sockets
126
+ - examples/userqueryex/tmp/cache
127
+ - lib/user_query.rb
128
+ - lib/user_query/schema.rb
129
+ - lib/user_query/generator.rb
130
+ - lib/user_query/parser.rb
131
+ - lib/user_query/parameters.rb
132
+ - lib/user_query/user_query_version.rb
133
+ - test/schema_test.rb
134
+ - test/parser_test.rb
135
+ test_files: []
136
+
137
+ rdoc_options: []
138
+
139
+ extra_rdoc_files: []
140
+
141
+ executables: []
142
+
143
+ extensions: []
144
+
145
+ requirements: []
146
+
147
+ dependencies: []
148
+