user_query 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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
+