rails_sql_views 0.6.1 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. data/CHANGELOG +5 -1
  2. data/LICENSE +7 -0
  3. data/Rakefile +30 -72
  4. data/TODO +2 -0
  5. data/lib/active_record/view.rb +76 -0
  6. data/lib/core_ext/module.rb +11 -9
  7. data/lib/rails_sql_views.rb +16 -21
  8. data/lib/rails_sql_views/connection_adapters/abstract/schema_definitions.rb +2 -6
  9. data/lib/rails_sql_views/connection_adapters/abstract/schema_statements.rb +26 -9
  10. data/lib/rails_sql_views/connection_adapters/abstract_adapter.rb +24 -3
  11. data/lib/rails_sql_views/connection_adapters/mysql_adapter.rb +36 -9
  12. data/lib/rails_sql_views/connection_adapters/oci_adapter.rb +5 -4
  13. data/lib/rails_sql_views/connection_adapters/oracle_adapter.rb +5 -4
  14. data/lib/rails_sql_views/connection_adapters/oracleenhanced_adapter.rb +39 -0
  15. data/lib/rails_sql_views/connection_adapters/oracleenhanced_adapter.rb.orig +72 -0
  16. data/lib/rails_sql_views/connection_adapters/postgresql_adapter.rb +28 -2
  17. data/lib/rails_sql_views/connection_adapters/postgresql_adapter.rb.orig +69 -0
  18. data/lib/rails_sql_views/connection_adapters/sqlite_adapter.rb +66 -0
  19. data/lib/rails_sql_views/connection_adapters/sqlserver_adapter.rb +11 -4
  20. data/lib/rails_sql_views/loader.rb +18 -0
  21. data/lib/rails_sql_views/schema_dumper.rb +53 -16
  22. data/lib/rails_sql_views/version.rb +2 -2
  23. data/test/adapter_test.rb +82 -0
  24. data/test/connection/native_mysql/connection.rb +32 -0
  25. data/test/connection/native_postgresql/connection.rb +31 -0
  26. data/test/connection/oracle_enhanced/connection.rb +29 -0
  27. data/test/models/item.rb +4 -0
  28. data/test/models/person.rb +5 -0
  29. data/test/models/person2.rb +3 -0
  30. data/test/models/place.rb +2 -0
  31. data/test/models/v_person.rb +4 -0
  32. data/test/models/v_profile.rb +3 -0
  33. data/test/schema.native_mysql.expected.rb +51 -0
  34. data/test/schema.native_postgresql.expected.rb +51 -0
  35. data/test/schema.oracle_enhanced.expected.rb +51 -0
  36. data/test/schema_dumper_test.rb +117 -0
  37. data/test/test_helper.rb +30 -0
  38. data/test/view_model_test.rb +63 -0
  39. data/test/view_operations_test.rb +36 -0
  40. metadata +88 -57
@@ -0,0 +1,30 @@
1
+ $:.unshift(File.dirname(__FILE__) + '/../lib')
2
+ $:.unshift(File.dirname(__FILE__))
3
+
4
+ require 'rubygems'
5
+ require 'test/unit'
6
+ require 'pp'
7
+ require 'flexmock/test_unit'
8
+
9
+ require 'active_record'
10
+ #$connection = (ENV['DB'] || 'native_mysql')
11
+ $connection = (ENV['DB'] || 'native_postgresql')
12
+ require "connection/#{$connection}/connection"
13
+ require 'rails_sql_views'
14
+
15
+ require 'models/person'
16
+ require 'models/person2'
17
+ require 'models/v_person'
18
+
19
+ class Test::Unit::TestCase
20
+ def create_people_view
21
+ ActiveRecord::Base.connection.create_view(:v_people,
22
+ 'select id, first_name, last_name, ssn, address_id from people', :force => true) do |v|
23
+ v.column :id
24
+ v.column :f_name
25
+ v.column :l_name
26
+ v.column :social_security
27
+ v.column :address_id
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,63 @@
1
+ require "#{File.dirname(__FILE__)}/test_helper"
2
+
3
+ require 'models/item'
4
+ require 'models/place'
5
+
6
+ class ViewModelTest < Test::Unit::TestCase
7
+
8
+ def setup
9
+ create_people_view
10
+ VPerson.send(:based_on, Person)
11
+
12
+ @address = Place.create!
13
+ @person = Person.create!(:first_name => 'Primus', :address => @address)
14
+ @items = [ @person.owned_items.create!, @person.owned_items.create! ]
15
+ @sharable_items = [ Item.create!, Item.create!, Item.create! ]
16
+ @person.shared_items << @sharable_items[0]
17
+ @person.shared_items << @sharable_items[2]
18
+
19
+ @vperson = VPerson.find(@person.id)
20
+ end
21
+
22
+ def cleanup
23
+ Item.delete_all
24
+ Person.delete_all
25
+ Place.delete_all
26
+ end
27
+
28
+ def test_same_person
29
+ assert_equal @person.id, @vperson.id
30
+ end
31
+
32
+ def test_cloned_belongs_to_association_exists
33
+ reflection = VPerson.reflect_on_association(:address)
34
+ assert_not_nil reflection
35
+ end
36
+
37
+ def test_access_cloned_belongs_to_association
38
+ assert_equal @address, @vperson.address
39
+ end
40
+
41
+ def test_cloned_has_many_association_exists
42
+ reflection = VPerson.reflect_on_association(:owned_items)
43
+ assert_not_nil reflection
44
+ end
45
+
46
+ def test_access_cloned_has_many_association
47
+ items = @vperson.owned_items
48
+ assert_equal 2, items.size
49
+ assert_equal @items.sort_by(&:id), items.sort_by(&:id)
50
+ end
51
+
52
+ def test_cloned_habtm_association_exists
53
+ reflection = VPerson.reflect_on_association(:shared_items)
54
+ assert_not_nil reflection
55
+ end
56
+
57
+ def test_access_cloned_habtm_association
58
+ items = @vperson.shared_items
59
+ assert_equal 2, items.size
60
+ expected_items = [ @sharable_items[0], @sharable_items[2] ]
61
+ assert_equal expected_items.sort_by(&:id), items.sort_by(&:id)
62
+ end
63
+ end
@@ -0,0 +1,36 @@
1
+ require "#{File.dirname(__FILE__)}/test_helper"
2
+
3
+ class ViewOperationsTest < Test::Unit::TestCase
4
+ def test_create_view
5
+ Person.create(:first_name => 'John', :last_name => 'Doe', :ssn => '123456789')
6
+ assert_nothing_raised do
7
+ ActiveRecord::Base.connection.create_view(:v_people,
8
+ 'select first_name, last_name, ssn from people', :force => true) do |v|
9
+ v.column :f_name
10
+ v.column :l_name
11
+ v.column :social_security
12
+ end
13
+ end
14
+ p = Person.find(:first)
15
+ vp = VPerson.find(:first)
16
+ assert_equal p.first_name, vp.f_name
17
+ end
18
+ def test_drop_view
19
+ assert_nothing_raised do
20
+ ActiveRecord::Base.connection.create_view(:v_place,
21
+ 'select address, city, cstate, country from places', :force => true) do |v|
22
+ v.column :v_address
23
+ v.column :v_city
24
+ v.column :v_state
25
+ v.column :v_country
26
+ end
27
+ ActiveRecord::Base.connection.drop_view(:v_place)
28
+ end
29
+ assert_raises(ActiveRecord::StatementInvalid) do
30
+ ActiveRecord::Base.connection.execute "SELECT * FROM v_place"
31
+ end
32
+ end
33
+ def test_no_view_raises_error
34
+ assert_raises(RuntimeError) { ActiveRecord::Base.connection.view_select_statement('foo') }
35
+ end
36
+ end
metadata CHANGED
@@ -1,82 +1,113 @@
1
1
  --- !ruby/object:Gem::Specification
2
- rubygems_version: 0.9.2
3
- specification_version: 1
4
2
  name: rails_sql_views
5
3
  version: !ruby/object:Gem::Version
6
- version: 0.6.1
7
- date: 2007-06-06 00:00:00 -04:00
8
- summary: Adds SQL Views to Rails.
9
- require_paths:
10
- - lib
11
- email: anthonyeden@gmail.com
12
- homepage: http://activewarehouse.rubyforge.org/rails_sql_views
13
- rubyforge_project: activewarehouse
14
- description: Library which adds SQL Views to Rails.
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:
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 8
8
+ - 0
9
+ version: 0.8.0
25
10
  platform: ruby
26
- signing_key:
27
- cert_chain:
28
- post_install_message:
29
11
  authors:
30
12
  - Anthony Eden
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2010-08-25 00:00:00 -04:00
18
+ default_executable:
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: activerecord
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ segments:
28
+ - 0
29
+ version: "0"
30
+ type: :runtime
31
+ version_requirements: *id001
32
+ description: Adds support for using SQL views within ActiveRecord
33
+ email: josh@technicalpickles.com
34
+ executables: []
35
+
36
+ extensions: []
37
+
38
+ extra_rdoc_files:
39
+ - LICENSE
40
+ - README
41
+ - TODO
31
42
  files:
32
43
  - CHANGELOG
33
44
  - README
34
45
  - Rakefile
35
- - lib/core_ext
46
+ - lib/active_record/view.rb
36
47
  - lib/core_ext/module.rb
37
- - lib/rails_sql_views
38
- - lib/rails_sql_views/connection_adapters
39
- - lib/rails_sql_views/connection_adapters/abstract
48
+ - lib/rails_sql_views.rb
40
49
  - lib/rails_sql_views/connection_adapters/abstract/schema_definitions.rb
41
50
  - lib/rails_sql_views/connection_adapters/abstract/schema_statements.rb
42
51
  - lib/rails_sql_views/connection_adapters/abstract_adapter.rb
43
52
  - lib/rails_sql_views/connection_adapters/mysql_adapter.rb
44
53
  - lib/rails_sql_views/connection_adapters/oci_adapter.rb
45
54
  - lib/rails_sql_views/connection_adapters/oracle_adapter.rb
55
+ - lib/rails_sql_views/connection_adapters/oracleenhanced_adapter.rb
56
+ - lib/rails_sql_views/connection_adapters/oracleenhanced_adapter.rb.orig
46
57
  - lib/rails_sql_views/connection_adapters/postgresql_adapter.rb
58
+ - lib/rails_sql_views/connection_adapters/postgresql_adapter.rb.orig
59
+ - lib/rails_sql_views/connection_adapters/sqlite_adapter.rb
47
60
  - lib/rails_sql_views/connection_adapters/sqlserver_adapter.rb
61
+ - lib/rails_sql_views/loader.rb
48
62
  - lib/rails_sql_views/schema_dumper.rb
49
63
  - lib/rails_sql_views/version.rb
50
- - lib/rails_sql_views.rb
51
- test_files: []
64
+ - LICENSE
65
+ - TODO
66
+ has_rdoc: true
67
+ homepage: http://activewarehouse.rubyforge.org/rails_sql_views
68
+ licenses: []
52
69
 
70
+ post_install_message:
53
71
  rdoc_options:
54
- - --exclude
55
- - .
56
- extra_rdoc_files: []
57
-
58
- executables: []
59
-
60
- extensions: []
61
-
72
+ - --charset=UTF-8
73
+ require_paths:
74
+ - lib
75
+ required_ruby_version: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ segments:
80
+ - 0
81
+ version: "0"
82
+ required_rubygems_version: !ruby/object:Gem::Requirement
83
+ requirements:
84
+ - - ">="
85
+ - !ruby/object:Gem::Version
86
+ segments:
87
+ - 0
88
+ version: "0"
62
89
  requirements: []
63
90
 
64
- dependencies:
65
- - !ruby/object:Gem::Dependency
66
- name: activerecord
67
- version_requirement:
68
- version_requirements: !ruby/object:Gem::Version::Requirement
69
- requirements:
70
- - - ">="
71
- - !ruby/object:Gem::Version
72
- version: 1.14.4
73
- version:
74
- - !ruby/object:Gem::Dependency
75
- name: rake
76
- version_requirement:
77
- version_requirements: !ruby/object:Gem::Version::Requirement
78
- requirements:
79
- - - ">="
80
- - !ruby/object:Gem::Version
81
- version: 0.7.1
82
- version:
91
+ rubyforge_project:
92
+ rubygems_version: 1.3.6
93
+ signing_key:
94
+ specification_version: 3
95
+ summary: Library which adds SQL Views to ActiveRecord.
96
+ test_files:
97
+ - test/adapter_test.rb
98
+ - test/connection/native_mysql/connection.rb
99
+ - test/connection/native_postgresql/connection.rb
100
+ - test/connection/oracle_enhanced/connection.rb
101
+ - test/models/item.rb
102
+ - test/models/person.rb
103
+ - test/models/person2.rb
104
+ - test/models/place.rb
105
+ - test/models/v_person.rb
106
+ - test/models/v_profile.rb
107
+ - test/schema.native_mysql.expected.rb
108
+ - test/schema.native_postgresql.expected.rb
109
+ - test/schema.oracle_enhanced.expected.rb
110
+ - test/schema_dumper_test.rb
111
+ - test/test_helper.rb
112
+ - test/view_model_test.rb
113
+ - test/view_operations_test.rb