rails_sql_views 0.6.1 → 0.8.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 (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