postgres_tree 0.0.1

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 (53) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/Rakefile +34 -0
  4. data/lib/postgres_tree/concerns/model/active_record.rb +81 -0
  5. data/lib/postgres_tree/engine.rb +4 -0
  6. data/lib/postgres_tree/version.rb +3 -0
  7. data/lib/postgres_tree.rb +2 -0
  8. data/lib/tasks/postgres_tree_tasks.rake +4 -0
  9. data/test/dummy/README.rdoc +28 -0
  10. data/test/dummy/Rakefile +6 -0
  11. data/test/dummy/app/assets/javascripts/application.js +13 -0
  12. data/test/dummy/app/assets/stylesheets/application.css +15 -0
  13. data/test/dummy/app/controllers/application_controller.rb +5 -0
  14. data/test/dummy/app/helpers/application_helper.rb +2 -0
  15. data/test/dummy/app/models/person.rb +3 -0
  16. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  17. data/test/dummy/bin/bundle +3 -0
  18. data/test/dummy/bin/rails +4 -0
  19. data/test/dummy/bin/rake +4 -0
  20. data/test/dummy/config/application.rb +23 -0
  21. data/test/dummy/config/boot.rb +5 -0
  22. data/test/dummy/config/database.yml +87 -0
  23. data/test/dummy/config/database.yml.travis +4 -0
  24. data/test/dummy/config/environment.rb +5 -0
  25. data/test/dummy/config/environments/development.rb +37 -0
  26. data/test/dummy/config/environments/production.rb +78 -0
  27. data/test/dummy/config/environments/test.rb +39 -0
  28. data/test/dummy/config/initializers/assets.rb +8 -0
  29. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  30. data/test/dummy/config/initializers/cookies_serializer.rb +3 -0
  31. data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  32. data/test/dummy/config/initializers/inflections.rb +16 -0
  33. data/test/dummy/config/initializers/mime_types.rb +4 -0
  34. data/test/dummy/config/initializers/session_store.rb +3 -0
  35. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  36. data/test/dummy/config/locales/en.yml +23 -0
  37. data/test/dummy/config/routes.rb +56 -0
  38. data/test/dummy/config/secrets.yml +22 -0
  39. data/test/dummy/config.ru +4 -0
  40. data/test/dummy/db/migrate/20140918023556_create_people.rb +10 -0
  41. data/test/dummy/db/schema.rb +26 -0
  42. data/test/dummy/log/development.log +64 -0
  43. data/test/dummy/log/test.log +3233 -0
  44. data/test/dummy/public/404.html +67 -0
  45. data/test/dummy/public/422.html +67 -0
  46. data/test/dummy/public/500.html +66 -0
  47. data/test/dummy/public/favicon.ico +0 -0
  48. data/test/dummy/test/fixtures/people.yml +15 -0
  49. data/test/dummy/test/models/person_test.rb +86 -0
  50. data/test/integration/navigation_test.rb +10 -0
  51. data/test/postgres_tree_test.rb +7 -0
  52. data/test/test_helper.rb +41 -0
  53. metadata +182 -0
@@ -0,0 +1,67 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>The page you were looking for doesn't exist (404)</title>
5
+ <meta name="viewport" content="width=device-width,initial-scale=1">
6
+ <style>
7
+ body {
8
+ background-color: #EFEFEF;
9
+ color: #2E2F30;
10
+ text-align: center;
11
+ font-family: arial, sans-serif;
12
+ margin: 0;
13
+ }
14
+
15
+ div.dialog {
16
+ width: 95%;
17
+ max-width: 33em;
18
+ margin: 4em auto 0;
19
+ }
20
+
21
+ div.dialog > div {
22
+ border: 1px solid #CCC;
23
+ border-right-color: #999;
24
+ border-left-color: #999;
25
+ border-bottom-color: #BBB;
26
+ border-top: #B00100 solid 4px;
27
+ border-top-left-radius: 9px;
28
+ border-top-right-radius: 9px;
29
+ background-color: white;
30
+ padding: 7px 12% 0;
31
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
32
+ }
33
+
34
+ h1 {
35
+ font-size: 100%;
36
+ color: #730E15;
37
+ line-height: 1.5em;
38
+ }
39
+
40
+ div.dialog > p {
41
+ margin: 0 0 1em;
42
+ padding: 1em;
43
+ background-color: #F7F7F7;
44
+ border: 1px solid #CCC;
45
+ border-right-color: #999;
46
+ border-left-color: #999;
47
+ border-bottom-color: #999;
48
+ border-bottom-left-radius: 4px;
49
+ border-bottom-right-radius: 4px;
50
+ border-top-color: #DADADA;
51
+ color: #666;
52
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
53
+ }
54
+ </style>
55
+ </head>
56
+
57
+ <body>
58
+ <!-- This file lives in public/404.html -->
59
+ <div class="dialog">
60
+ <div>
61
+ <h1>The page you were looking for doesn't exist.</h1>
62
+ <p>You may have mistyped the address or the page may have moved.</p>
63
+ </div>
64
+ <p>If you are the application owner check the logs for more information.</p>
65
+ </div>
66
+ </body>
67
+ </html>
@@ -0,0 +1,67 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>The change you wanted was rejected (422)</title>
5
+ <meta name="viewport" content="width=device-width,initial-scale=1">
6
+ <style>
7
+ body {
8
+ background-color: #EFEFEF;
9
+ color: #2E2F30;
10
+ text-align: center;
11
+ font-family: arial, sans-serif;
12
+ margin: 0;
13
+ }
14
+
15
+ div.dialog {
16
+ width: 95%;
17
+ max-width: 33em;
18
+ margin: 4em auto 0;
19
+ }
20
+
21
+ div.dialog > div {
22
+ border: 1px solid #CCC;
23
+ border-right-color: #999;
24
+ border-left-color: #999;
25
+ border-bottom-color: #BBB;
26
+ border-top: #B00100 solid 4px;
27
+ border-top-left-radius: 9px;
28
+ border-top-right-radius: 9px;
29
+ background-color: white;
30
+ padding: 7px 12% 0;
31
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
32
+ }
33
+
34
+ h1 {
35
+ font-size: 100%;
36
+ color: #730E15;
37
+ line-height: 1.5em;
38
+ }
39
+
40
+ div.dialog > p {
41
+ margin: 0 0 1em;
42
+ padding: 1em;
43
+ background-color: #F7F7F7;
44
+ border: 1px solid #CCC;
45
+ border-right-color: #999;
46
+ border-left-color: #999;
47
+ border-bottom-color: #999;
48
+ border-bottom-left-radius: 4px;
49
+ border-bottom-right-radius: 4px;
50
+ border-top-color: #DADADA;
51
+ color: #666;
52
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
53
+ }
54
+ </style>
55
+ </head>
56
+
57
+ <body>
58
+ <!-- This file lives in public/422.html -->
59
+ <div class="dialog">
60
+ <div>
61
+ <h1>The change you wanted was rejected.</h1>
62
+ <p>Maybe you tried to change something you didn't have access to.</p>
63
+ </div>
64
+ <p>If you are the application owner check the logs for more information.</p>
65
+ </div>
66
+ </body>
67
+ </html>
@@ -0,0 +1,66 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>We're sorry, but something went wrong (500)</title>
5
+ <meta name="viewport" content="width=device-width,initial-scale=1">
6
+ <style>
7
+ body {
8
+ background-color: #EFEFEF;
9
+ color: #2E2F30;
10
+ text-align: center;
11
+ font-family: arial, sans-serif;
12
+ margin: 0;
13
+ }
14
+
15
+ div.dialog {
16
+ width: 95%;
17
+ max-width: 33em;
18
+ margin: 4em auto 0;
19
+ }
20
+
21
+ div.dialog > div {
22
+ border: 1px solid #CCC;
23
+ border-right-color: #999;
24
+ border-left-color: #999;
25
+ border-bottom-color: #BBB;
26
+ border-top: #B00100 solid 4px;
27
+ border-top-left-radius: 9px;
28
+ border-top-right-radius: 9px;
29
+ background-color: white;
30
+ padding: 7px 12% 0;
31
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
32
+ }
33
+
34
+ h1 {
35
+ font-size: 100%;
36
+ color: #730E15;
37
+ line-height: 1.5em;
38
+ }
39
+
40
+ div.dialog > p {
41
+ margin: 0 0 1em;
42
+ padding: 1em;
43
+ background-color: #F7F7F7;
44
+ border: 1px solid #CCC;
45
+ border-right-color: #999;
46
+ border-left-color: #999;
47
+ border-bottom-color: #999;
48
+ border-bottom-left-radius: 4px;
49
+ border-bottom-right-radius: 4px;
50
+ border-top-color: #DADADA;
51
+ color: #666;
52
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
53
+ }
54
+ </style>
55
+ </head>
56
+
57
+ <body>
58
+ <!-- This file lives in public/500.html -->
59
+ <div class="dialog">
60
+ <div>
61
+ <h1>We're sorry, but something went wrong.</h1>
62
+ </div>
63
+ <p>If you are the application owner check the logs for more information.</p>
64
+ </div>
65
+ </body>
66
+ </html>
File without changes
@@ -0,0 +1,15 @@
1
+ # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
2
+
3
+ grandad:
4
+ id: 1
5
+ name: 'Grandad'
6
+
7
+ dad:
8
+ id: 2
9
+ name: 'Dad'
10
+ parent_id: 1
11
+
12
+ son:
13
+ id: 3
14
+ name: 'Son'
15
+ parent_id: 2
@@ -0,0 +1,86 @@
1
+ require 'test_helper'
2
+
3
+ class PersonTest < ActiveSupport::TestCase
4
+
5
+ # Test that we actually have fixtures loaded
6
+ test "person fixtures loaded" do
7
+ record = Person.first
8
+ refute record == nil
9
+ end
10
+
11
+ # Base methods
12
+ test "responds to all methods" do
13
+ record = Person.first
14
+ assert_respond_to record, :ancestors
15
+ assert_respond_to record, :self_and_ancestors
16
+ assert_respond_to record, :descendents
17
+ assert_respond_to record, :self_and_descendents
18
+ end
19
+
20
+ # Magic methods with _includes?
21
+ test "respond to all magic methods" do
22
+ record = Person.first
23
+ assert_respond_to record, :ancestors_include?
24
+ assert_respond_to record, :self_and_ancestors_include?
25
+ assert_respond_to record, :descendents_include?
26
+ assert_respond_to record, :self_and_descendents_include?
27
+ end
28
+
29
+ # Scopes
30
+ test "tree_roots scope" do
31
+ assert_equal 1, Person.tree_roots.count
32
+ end
33
+
34
+ # Ancestors
35
+ # Test when we have ancestors
36
+ test "dad ancestors" do
37
+ grandad = Person.find 1
38
+ dad = Person.find 2
39
+ ancestors = dad.ancestors
40
+ assert_equal 1, ancestors.count
41
+ assert ancestors.include? grandad
42
+
43
+ assert dad.ancestors_include? grandad
44
+
45
+ ancestors = dad.self_and_ancestors
46
+ assert_equal 2, ancestors.count
47
+ assert ancestors.include? grandad
48
+ assert ancestors.include? dad
49
+
50
+ assert dad.self_and_ancestors_include? grandad
51
+ assert dad.self_and_ancestors_include? dad
52
+ end
53
+ # Test when we have no ancestors
54
+ test "grandad ancestors" do
55
+ grandad = Person.find 1
56
+ ancestors = grandad.ancestors
57
+ assert_equal 0, ancestors.count
58
+ end
59
+
60
+ # Descendents
61
+ # Test when we have descendents
62
+ test "dad descendents" do
63
+ dad = Person.find 2
64
+ son = Person.find 3
65
+ descendents = dad.descendents
66
+ assert_equal 1, descendents.count
67
+ assert_equal son, descendents.first
68
+
69
+ assert dad.descendents_include? son
70
+
71
+ descendents = dad.self_and_descendents
72
+ assert_equal 2, descendents.count
73
+ assert descendents.include? dad
74
+ assert descendents.include? son
75
+
76
+ assert dad.self_and_descendents_include? dad
77
+ assert dad.self_and_descendents_include? son
78
+ end
79
+ # Test when we have no descendents
80
+ test "son descendents" do
81
+ son = Person.find 3
82
+ descendents = son.descendents
83
+ assert_equal 0, descendents.count
84
+ end
85
+
86
+ end
@@ -0,0 +1,10 @@
1
+ require 'test_helper'
2
+
3
+ class NavigationTest < ActionDispatch::IntegrationTest
4
+ fixtures :all
5
+
6
+ # test "the truth" do
7
+ # assert true
8
+ # end
9
+ end
10
+
@@ -0,0 +1,7 @@
1
+ require 'test_helper'
2
+
3
+ class PostgresTreeTest < ActiveSupport::TestCase
4
+ test "truth" do
5
+ assert_kind_of Module, PostgresTree
6
+ end
7
+ end
@@ -0,0 +1,41 @@
1
+ require 'coveralls'
2
+ Coveralls.wear!
3
+
4
+ # Configure Rails Environment
5
+ ENV["RAILS_ENV"] = "test"
6
+
7
+ require File.expand_path("../dummy/config/environment.rb", __FILE__)
8
+ require "rails/test_help"
9
+
10
+ Rails.backtrace_cleaner.remove_silencers!
11
+
12
+ # Load support files
13
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
14
+
15
+ # Load fixtures from the engine
16
+ if ActiveSupport::TestCase.method_defined?(:fixture_path=)
17
+ ActiveSupport::TestCase.fixture_path = File.expand_path("../fixtures", __FILE__)
18
+ end
19
+
20
+ # Below for issue: can't use fixtures with a created engine #4971
21
+ # https://github.com/rails/rails/issues/4971
22
+
23
+ # Drop all tables
24
+ ActiveRecord::Base.establish_connection
25
+ ActiveRecord::Base.connection.execute("drop schema public cascade;")
26
+ ActiveRecord::Base.connection.execute("create schema public;")
27
+
28
+ # Run any available migration (part of issue above but test db isn't migrating...)
29
+ # Should just load schema but haven't looked up how to do that.
30
+ ActiveRecord::Migrator.migrate File.expand_path("../dummy/db/migrate/", __FILE__)
31
+
32
+ # I had to add in /dummy/test to the path to find the fixtures correcty.
33
+ # No one else had mentioned this but it works for me.
34
+ ActiveSupport::TestCase.fixture_path = File.expand_path("../dummy/test/fixtures", __FILE__)
35
+
36
+ class ActiveSupport::TestCase
37
+ fixtures :all
38
+ end
39
+
40
+ # Other issues if using a mountable engine around namespaces can also be resolved
41
+ # with information in the above github issue.
metadata ADDED
@@ -0,0 +1,182 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: postgres_tree
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Dyson Simmons
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-09-18 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rails
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '4.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '4.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: pg
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: coveralls
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ description: Include PostgresTree::ActiveRecordConcern in your models along with a
56
+ parent_id field and get access to ancestors and descendents in one query.
57
+ email:
58
+ - dysonsimmons@gmail.com
59
+ executables: []
60
+ extensions: []
61
+ extra_rdoc_files: []
62
+ files:
63
+ - MIT-LICENSE
64
+ - Rakefile
65
+ - lib/postgres_tree.rb
66
+ - lib/postgres_tree/concerns/model/active_record.rb
67
+ - lib/postgres_tree/engine.rb
68
+ - lib/postgres_tree/version.rb
69
+ - lib/tasks/postgres_tree_tasks.rake
70
+ - test/dummy/README.rdoc
71
+ - test/dummy/Rakefile
72
+ - test/dummy/app/assets/javascripts/application.js
73
+ - test/dummy/app/assets/stylesheets/application.css
74
+ - test/dummy/app/controllers/application_controller.rb
75
+ - test/dummy/app/helpers/application_helper.rb
76
+ - test/dummy/app/models/person.rb
77
+ - test/dummy/app/views/layouts/application.html.erb
78
+ - test/dummy/bin/bundle
79
+ - test/dummy/bin/rails
80
+ - test/dummy/bin/rake
81
+ - test/dummy/config.ru
82
+ - test/dummy/config/application.rb
83
+ - test/dummy/config/boot.rb
84
+ - test/dummy/config/database.yml
85
+ - test/dummy/config/database.yml.travis
86
+ - test/dummy/config/environment.rb
87
+ - test/dummy/config/environments/development.rb
88
+ - test/dummy/config/environments/production.rb
89
+ - test/dummy/config/environments/test.rb
90
+ - test/dummy/config/initializers/assets.rb
91
+ - test/dummy/config/initializers/backtrace_silencers.rb
92
+ - test/dummy/config/initializers/cookies_serializer.rb
93
+ - test/dummy/config/initializers/filter_parameter_logging.rb
94
+ - test/dummy/config/initializers/inflections.rb
95
+ - test/dummy/config/initializers/mime_types.rb
96
+ - test/dummy/config/initializers/session_store.rb
97
+ - test/dummy/config/initializers/wrap_parameters.rb
98
+ - test/dummy/config/locales/en.yml
99
+ - test/dummy/config/routes.rb
100
+ - test/dummy/config/secrets.yml
101
+ - test/dummy/db/migrate/20140918023556_create_people.rb
102
+ - test/dummy/db/schema.rb
103
+ - test/dummy/log/development.log
104
+ - test/dummy/log/test.log
105
+ - test/dummy/public/404.html
106
+ - test/dummy/public/422.html
107
+ - test/dummy/public/500.html
108
+ - test/dummy/public/favicon.ico
109
+ - test/dummy/test/fixtures/people.yml
110
+ - test/dummy/test/models/person_test.rb
111
+ - test/integration/navigation_test.rb
112
+ - test/postgres_tree_test.rb
113
+ - test/test_helper.rb
114
+ homepage: http://www.dysonsimmons.com
115
+ licenses:
116
+ - MIT
117
+ metadata: {}
118
+ post_install_message:
119
+ rdoc_options: []
120
+ require_paths:
121
+ - lib
122
+ required_ruby_version: !ruby/object:Gem::Requirement
123
+ requirements:
124
+ - - ">="
125
+ - !ruby/object:Gem::Version
126
+ version: '0'
127
+ required_rubygems_version: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ requirements: []
133
+ rubyforge_project:
134
+ rubygems_version: 2.2.2
135
+ signing_key:
136
+ specification_version: 4
137
+ summary: ActiveRecord tree structures using PostgreSQL
138
+ test_files:
139
+ - test/integration/navigation_test.rb
140
+ - test/test_helper.rb
141
+ - test/dummy/README.rdoc
142
+ - test/dummy/db/migrate/20140918023556_create_people.rb
143
+ - test/dummy/db/schema.rb
144
+ - test/dummy/test/fixtures/people.yml
145
+ - test/dummy/test/models/person_test.rb
146
+ - test/dummy/app/controllers/application_controller.rb
147
+ - test/dummy/app/views/layouts/application.html.erb
148
+ - test/dummy/app/assets/stylesheets/application.css
149
+ - test/dummy/app/assets/javascripts/application.js
150
+ - test/dummy/app/helpers/application_helper.rb
151
+ - test/dummy/app/models/person.rb
152
+ - test/dummy/config.ru
153
+ - test/dummy/log/development.log
154
+ - test/dummy/log/test.log
155
+ - test/dummy/public/404.html
156
+ - test/dummy/public/favicon.ico
157
+ - test/dummy/public/422.html
158
+ - test/dummy/public/500.html
159
+ - test/dummy/bin/rails
160
+ - test/dummy/bin/bundle
161
+ - test/dummy/bin/rake
162
+ - test/dummy/Rakefile
163
+ - test/dummy/config/application.rb
164
+ - test/dummy/config/database.yml.travis
165
+ - test/dummy/config/environment.rb
166
+ - test/dummy/config/initializers/cookies_serializer.rb
167
+ - test/dummy/config/initializers/wrap_parameters.rb
168
+ - test/dummy/config/initializers/filter_parameter_logging.rb
169
+ - test/dummy/config/initializers/session_store.rb
170
+ - test/dummy/config/initializers/backtrace_silencers.rb
171
+ - test/dummy/config/initializers/mime_types.rb
172
+ - test/dummy/config/initializers/assets.rb
173
+ - test/dummy/config/initializers/inflections.rb
174
+ - test/dummy/config/environments/production.rb
175
+ - test/dummy/config/environments/test.rb
176
+ - test/dummy/config/environments/development.rb
177
+ - test/dummy/config/secrets.yml
178
+ - test/dummy/config/database.yml
179
+ - test/dummy/config/routes.rb
180
+ - test/dummy/config/boot.rb
181
+ - test/dummy/config/locales/en.yml
182
+ - test/postgres_tree_test.rb