milia 0.3.2 → 0.3.7
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.
- data/Gemfile +0 -1
- data/Gemfile.lock +7 -9
- data/README.rdoc +18 -7
- data/VERSION +1 -1
- data/lib/milia/base.rb +24 -0
- data/lib/milia/control.rb +10 -3
- data/milia.gemspec +22 -7
- data/test/rails_app/Gemfile +4 -0
- data/test/rails_app/Gemfile.lock +25 -12
- data/test/rails_app/app/controllers/application_controller.rb +15 -0
- data/test/rails_app/app/models/author.rb +9 -0
- data/test/rails_app/app/models/calendar.rb +6 -0
- data/test/rails_app/app/models/post.rb +15 -0
- data/test/rails_app/app/models/team.rb +8 -0
- data/test/rails_app/app/models/team_asset.rb +6 -0
- data/test/rails_app/app/models/user.rb +2 -0
- data/test/rails_app/app/models/zine.rb +6 -0
- data/test/rails_app/config/environments/development.rb +5 -0
- data/test/rails_app/config/environments/test.rb +17 -0
- data/test/rails_app/db/migrate/20111012231923_create_posts.rb +15 -0
- data/test/rails_app/db/migrate/20111013050558_create_calendars.rb +14 -0
- data/test/rails_app/db/migrate/20111013050657_create_zines.rb +12 -0
- data/test/rails_app/db/migrate/20111013050753_create_teams.rb +11 -0
- data/test/rails_app/db/migrate/20111013050837_create_team_assets.rb +14 -0
- data/test/rails_app/db/migrate/20111013053403_create_authors.rb +13 -0
- data/test/rails_app/db/schema.rb +68 -1
- data/test/rails_app/script/rails +0 -0
- data/test/rails_app/test/ctlr_test_helper.rb +8 -0
- data/test/rails_app/test/factories/units_factory.rb +84 -0
- data/test/rails_app/test/functional/home_controller_test.rb +1 -1
- data/test/rails_app/test/test_helper.rb +116 -8
- data/test/rails_app/test/unit/author_test.rb +30 -0
- data/test/rails_app/test/unit/calendar_test.rb +28 -0
- data/test/rails_app/test/unit/helpers/home_helper_test.rb +3 -0
- data/test/rails_app/test/unit/post_test.rb +62 -0
- data/test/rails_app/test/unit/team_test.rb +30 -0
- data/test/rails_app/test/unit/user_test.rb +23 -4
- data/test/rails_app/test/unit/zine_test.rb +28 -0
- data/test/rails_app/vendor/plugins/rails_log_stdout/init.rb +43 -0
- metadata +41 -34
- data/test/rails_app/test/fixtures/tenants.yml +0 -2
- data/test/rails_app/test/fixtures/users.yml +0 -11
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class AuthorTest < ActiveSupport::TestCase
|
4
|
+
|
5
|
+
context "an author" do
|
6
|
+
|
7
|
+
setup do
|
8
|
+
setup_world()
|
9
|
+
@author = Factory( :author ) # stock object for validation testing
|
10
|
+
end
|
11
|
+
|
12
|
+
# validate multi-tenanting structure
|
13
|
+
should have_db_column(:tenant_id)
|
14
|
+
should_not allow_mass_assignment_of(:tenant_id)
|
15
|
+
should "define the current tenant" do
|
16
|
+
assert Thread.current[:tenant_id]
|
17
|
+
end
|
18
|
+
should "match the current tenant" do
|
19
|
+
assert_equal @author.tenant_id, Thread.current[:tenant_id]
|
20
|
+
end
|
21
|
+
|
22
|
+
# validate the model
|
23
|
+
should belong_to( :user )
|
24
|
+
should have_many( :posts )
|
25
|
+
should have_many( :team_assets )
|
26
|
+
should have_many( :teams ).through( :team_assets )
|
27
|
+
|
28
|
+
end # context author
|
29
|
+
|
30
|
+
end # class author
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class CalendarTest < ActiveSupport::TestCase
|
4
|
+
|
5
|
+
context "a calendar" do
|
6
|
+
|
7
|
+
setup do
|
8
|
+
setup_world()
|
9
|
+
@calendar = Factory( :calendar ) # stock object for validation testing
|
10
|
+
end
|
11
|
+
|
12
|
+
# validate multi-tenanting structure
|
13
|
+
should have_db_column(:tenant_id)
|
14
|
+
should_not allow_mass_assignment_of(:tenant_id)
|
15
|
+
should "define the current tenant" do
|
16
|
+
assert Thread.current[:tenant_id]
|
17
|
+
end
|
18
|
+
should "match the current tenant" do
|
19
|
+
assert_equal @calendar.tenant_id, Thread.current[:tenant_id]
|
20
|
+
end
|
21
|
+
|
22
|
+
# validate the model
|
23
|
+
should have_many( :zines )
|
24
|
+
should belong_to( :team )
|
25
|
+
|
26
|
+
end # context calendar
|
27
|
+
|
28
|
+
end # class CalendarTest
|
@@ -0,0 +1,62 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class PostTest < ActiveSupport::TestCase
|
4
|
+
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
5
|
+
|
6
|
+
context "a post" do
|
7
|
+
|
8
|
+
setup do
|
9
|
+
setup_world()
|
10
|
+
@post = Factory( :post ) # stock object for validation testing
|
11
|
+
end
|
12
|
+
|
13
|
+
# validate multi-tenanting structure
|
14
|
+
should have_db_column(:tenant_id)
|
15
|
+
should_not allow_mass_assignment_of(:tenant_id)
|
16
|
+
should "define the current tenant" do
|
17
|
+
assert Thread.current[:tenant_id]
|
18
|
+
end
|
19
|
+
should "match the current tenant" do
|
20
|
+
assert_equal @post.tenant_id, Thread.current[:tenant_id]
|
21
|
+
end
|
22
|
+
|
23
|
+
# validate the model
|
24
|
+
should belong_to( :author )
|
25
|
+
should belong_to( :zine )
|
26
|
+
|
27
|
+
# model-specific tests
|
28
|
+
should "get all posts within mangoland" do
|
29
|
+
ActiveSupport::TestCase.set_tenant( @mangoland )
|
30
|
+
assert_equal (@max_users * @max_teams) + 1, Post.count
|
31
|
+
end
|
32
|
+
|
33
|
+
should "get only author posts in mangoland" do
|
34
|
+
ActiveSupport::TestCase.set_tenant( @mangoland )
|
35
|
+
x = Author.all[1] # pick an author
|
36
|
+
assert_equal 1, x.posts.size
|
37
|
+
end
|
38
|
+
|
39
|
+
should "not get any non-world user posts in mangoland" do
|
40
|
+
ActiveSupport::TestCase.set_tenant( @mangoland )
|
41
|
+
x = User.all.last # should be from islesmile
|
42
|
+
assert x.posts.size.zero?
|
43
|
+
end
|
44
|
+
|
45
|
+
should "see jemell in two tenants with dif posts" do
|
46
|
+
ActiveSupport::TestCase.set_tenant( @mangoland )
|
47
|
+
assert_equal 2, @jemell.posts.size
|
48
|
+
ActiveSupport::TestCase.set_tenant( @islesmile )
|
49
|
+
assert_equal 1, @jemell.posts.size
|
50
|
+
end
|
51
|
+
|
52
|
+
should "zoom get all team posts" do
|
53
|
+
ActiveSupport::TestCase.set_tenant( @mangoland )
|
54
|
+
list = Post.get_team_posts( Author.first.teams.first.id ).all
|
55
|
+
assert_equal 3,list.size
|
56
|
+
end
|
57
|
+
|
58
|
+
end # context post
|
59
|
+
|
60
|
+
# _____________________________________________________________________________
|
61
|
+
|
62
|
+
end # class test
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class TeamTest < ActiveSupport::TestCase
|
4
|
+
|
5
|
+
context "a team" do
|
6
|
+
|
7
|
+
setup do
|
8
|
+
setup_world()
|
9
|
+
@team = Factory( :team ) # stock object for validation testing
|
10
|
+
end
|
11
|
+
|
12
|
+
should have_db_column(:tenant_id)
|
13
|
+
should_not allow_mass_assignment_of(:tenant_id)
|
14
|
+
should "define the current tenant" do
|
15
|
+
assert Thread.current[:tenant_id]
|
16
|
+
end
|
17
|
+
should "match the current tenant" do
|
18
|
+
assert_equal @team.tenant_id, Thread.current[:tenant_id]
|
19
|
+
end
|
20
|
+
|
21
|
+
should have_many( :team_assets )
|
22
|
+
should have_many( :team_members ).through( :team_assets )
|
23
|
+
|
24
|
+
should 'ensure team asset creation' do
|
25
|
+
assert @team.team_assets.size > 1
|
26
|
+
end
|
27
|
+
|
28
|
+
end # context team
|
29
|
+
|
30
|
+
end # team
|
@@ -1,7 +1,26 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
3
|
class UserTest < ActiveSupport::TestCase
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
4
|
+
|
5
|
+
context "a user" do
|
6
|
+
|
7
|
+
setup do
|
8
|
+
setup_world()
|
9
|
+
@user = Factory( :user )
|
10
|
+
end
|
11
|
+
|
12
|
+
should have_one( :author )
|
13
|
+
should have_many( :posts ).through( :author )
|
14
|
+
should_not allow_value("wild blue").for(:email)
|
15
|
+
should have_db_column(:tenant_id)
|
16
|
+
should_not allow_mass_assignment_of(:tenant_id)
|
17
|
+
should "define the current tenant" do
|
18
|
+
assert Thread.current[:tenant_id]
|
19
|
+
end
|
20
|
+
|
21
|
+
end # context user
|
22
|
+
|
23
|
+
protected
|
24
|
+
|
25
|
+
|
26
|
+
end # class
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class ZineTest < ActiveSupport::TestCase
|
4
|
+
|
5
|
+
context "a zine" do
|
6
|
+
|
7
|
+
setup do
|
8
|
+
setup_world()
|
9
|
+
@zine = Factory( :zine ) # stock object for validation testing
|
10
|
+
end
|
11
|
+
|
12
|
+
# validate multi-tenanting structure
|
13
|
+
should have_db_column(:tenant_id)
|
14
|
+
should_not allow_mass_assignment_of(:tenant_id)
|
15
|
+
should "define the current tenant" do
|
16
|
+
assert Thread.current[:tenant_id]
|
17
|
+
end
|
18
|
+
should "match the current tenant" do
|
19
|
+
assert_equal @zine.tenant_id, Thread.current[:tenant_id]
|
20
|
+
end
|
21
|
+
|
22
|
+
# validate the model
|
23
|
+
should have_many( :posts )
|
24
|
+
should belong_to( :calendar )
|
25
|
+
|
26
|
+
end # context zine
|
27
|
+
|
28
|
+
end # class ZineTest
|
@@ -0,0 +1,43 @@
|
|
1
|
+
begin
|
2
|
+
|
3
|
+
STDOUT.sync = true
|
4
|
+
|
5
|
+
def Rails.heroku_stdout_logger
|
6
|
+
logger = Logger.new(STDOUT)
|
7
|
+
logger.level = Logger.const_get(([ENV['LOG_LEVEL'].to_s.upcase, "INFO"] & %w[DEBUG INFO WARN ERROR FATAL UNKNOWN]).compact.first)
|
8
|
+
logger
|
9
|
+
end
|
10
|
+
|
11
|
+
unless Rails.env.test?
|
12
|
+
case Rails::VERSION::MAJOR
|
13
|
+
when 3 then Rails.logger = Rails.application.config.logger = Rails.heroku_stdout_logger
|
14
|
+
when 2 then
|
15
|
+
# redefine Rails.logger
|
16
|
+
def Rails.logger
|
17
|
+
@@logger ||= Rails.heroku_stdout_logger
|
18
|
+
end
|
19
|
+
%w(
|
20
|
+
ActiveSupport::Dependencies
|
21
|
+
ActiveRecord::Base
|
22
|
+
ActionController::Base
|
23
|
+
ActionMailer::Base
|
24
|
+
ActionView::Base
|
25
|
+
ActiveResource::Base
|
26
|
+
).each do |klass_name|
|
27
|
+
begin
|
28
|
+
klass = Object
|
29
|
+
klass_name.split("::").each { |part| klass = klass.const_get(part) }
|
30
|
+
klass.logger = Rails.logger
|
31
|
+
rescue
|
32
|
+
end
|
33
|
+
end
|
34
|
+
Rails.cache.logger = Rails.logger rescue nil
|
35
|
+
end
|
36
|
+
end # unless env.test?
|
37
|
+
|
38
|
+
|
39
|
+
rescue Exception => ex
|
40
|
+
|
41
|
+
puts "WARNING: Exception during rails_log_stdout init: #{ex.message}"
|
42
|
+
|
43
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: milia
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.7
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-
|
12
|
+
date: 2011-11-05 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
16
|
-
requirement: &
|
16
|
+
requirement: &73897630 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '3.1'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *73897630
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: devise
|
27
|
-
requirement: &
|
27
|
+
requirement: &73896940 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: 1.4.8
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *73896940
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: pg
|
38
|
-
requirement: &
|
38
|
+
requirement: &73896110 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *73896110
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: shoulda
|
49
|
-
requirement: &
|
49
|
+
requirement: &73894450 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *73894450
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: bundler
|
60
|
-
requirement: &
|
60
|
+
requirement: &73910280 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ~>
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: 1.0.0
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *73910280
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: jeweler
|
71
|
-
requirement: &
|
71
|
+
requirement: &73909880 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ~>
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: 1.6.4
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *73909880
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: rcov
|
82
|
-
requirement: &
|
82
|
+
requirement: &73909540 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ! '>='
|
@@ -87,10 +87,10 @@ dependencies:
|
|
87
87
|
version: '0'
|
88
88
|
type: :development
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *73909540
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
name: rdoc
|
93
|
-
requirement: &
|
93
|
+
requirement: &73909030 !ruby/object:Gem::Requirement
|
94
94
|
none: false
|
95
95
|
requirements:
|
96
96
|
- - ! '>='
|
@@ -98,21 +98,10 @@ dependencies:
|
|
98
98
|
version: '0'
|
99
99
|
type: :development
|
100
100
|
prerelease: false
|
101
|
-
version_requirements: *
|
102
|
-
- !ruby/object:Gem::Dependency
|
103
|
-
name: test-unit
|
104
|
-
requirement: &78100830 !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
|
-
requirements:
|
107
|
-
- - ! '>='
|
108
|
-
- !ruby/object:Gem::Version
|
109
|
-
version: '0'
|
110
|
-
type: :development
|
111
|
-
prerelease: false
|
112
|
-
version_requirements: *78100830
|
101
|
+
version_requirements: *73909030
|
113
102
|
- !ruby/object:Gem::Dependency
|
114
103
|
name: turn
|
115
|
-
requirement: &
|
104
|
+
requirement: &73908220 !ruby/object:Gem::Requirement
|
116
105
|
none: false
|
117
106
|
requirements:
|
118
107
|
- - ! '>='
|
@@ -120,7 +109,7 @@ dependencies:
|
|
120
109
|
version: '0'
|
121
110
|
type: :development
|
122
111
|
prerelease: false
|
123
|
-
version_requirements: *
|
112
|
+
version_requirements: *73908220
|
124
113
|
description: Transparent Multi-tenanting for hosted Rails 3.1+/Ruby 1.9.2 applications
|
125
114
|
email: dsaronin@gmail.com
|
126
115
|
executables: []
|
@@ -164,8 +153,14 @@ files:
|
|
164
153
|
- test/rails_app/app/helpers/home_helper.rb
|
165
154
|
- test/rails_app/app/mailers/.gitkeep
|
166
155
|
- test/rails_app/app/models/.gitkeep
|
156
|
+
- test/rails_app/app/models/author.rb
|
157
|
+
- test/rails_app/app/models/calendar.rb
|
158
|
+
- test/rails_app/app/models/post.rb
|
159
|
+
- test/rails_app/app/models/team.rb
|
160
|
+
- test/rails_app/app/models/team_asset.rb
|
167
161
|
- test/rails_app/app/models/tenant.rb
|
168
162
|
- test/rails_app/app/models/user.rb
|
163
|
+
- test/rails_app/app/models/zine.rb
|
169
164
|
- test/rails_app/app/views/home/index.html.erb
|
170
165
|
- test/rails_app/app/views/layouts/application.html.erb
|
171
166
|
- test/rails_app/config.ru
|
@@ -190,6 +185,12 @@ files:
|
|
190
185
|
- test/rails_app/db/migrate/20111012050532_create_tenants.rb
|
191
186
|
- test/rails_app/db/migrate/20111012050600_create_tenants_users.rb
|
192
187
|
- test/rails_app/db/migrate/20111012060818_add_sessions_table.rb
|
188
|
+
- test/rails_app/db/migrate/20111012231923_create_posts.rb
|
189
|
+
- test/rails_app/db/migrate/20111013050558_create_calendars.rb
|
190
|
+
- test/rails_app/db/migrate/20111013050657_create_zines.rb
|
191
|
+
- test/rails_app/db/migrate/20111013050753_create_teams.rb
|
192
|
+
- test/rails_app/db/migrate/20111013050837_create_team_assets.rb
|
193
|
+
- test/rails_app/db/migrate/20111013053403_create_authors.rb
|
193
194
|
- test/rails_app/db/schema.rb
|
194
195
|
- test/rails_app/db/seeds.rb
|
195
196
|
- test/rails_app/lib/assets/.gitkeep
|
@@ -200,20 +201,26 @@ files:
|
|
200
201
|
- test/rails_app/public/500.html
|
201
202
|
- test/rails_app/public/favicon.ico
|
202
203
|
- test/rails_app/script/rails
|
204
|
+
- test/rails_app/test/ctlr_test_helper.rb
|
205
|
+
- test/rails_app/test/factories/units_factory.rb
|
203
206
|
- test/rails_app/test/fixtures/.gitkeep
|
204
|
-
- test/rails_app/test/fixtures/tenants.yml
|
205
|
-
- test/rails_app/test/fixtures/users.yml
|
206
207
|
- test/rails_app/test/functional/.gitkeep
|
207
208
|
- test/rails_app/test/functional/home_controller_test.rb
|
208
209
|
- test/rails_app/test/integration/.gitkeep
|
209
210
|
- test/rails_app/test/performance/browsing_test.rb
|
210
211
|
- test/rails_app/test/test_helper.rb
|
211
212
|
- test/rails_app/test/unit/.gitkeep
|
213
|
+
- test/rails_app/test/unit/author_test.rb
|
214
|
+
- test/rails_app/test/unit/calendar_test.rb
|
212
215
|
- test/rails_app/test/unit/helpers/home_helper_test.rb
|
216
|
+
- test/rails_app/test/unit/post_test.rb
|
217
|
+
- test/rails_app/test/unit/team_test.rb
|
213
218
|
- test/rails_app/test/unit/tenant_test.rb
|
214
219
|
- test/rails_app/test/unit/user_test.rb
|
220
|
+
- test/rails_app/test/unit/zine_test.rb
|
215
221
|
- test/rails_app/vendor/assets/stylesheets/.gitkeep
|
216
222
|
- test/rails_app/vendor/plugins/.gitkeep
|
223
|
+
- test/rails_app/vendor/plugins/rails_log_stdout/init.rb
|
217
224
|
- test/test_milia.rb
|
218
225
|
homepage: http://github.com/dsaronin/milia
|
219
226
|
licenses:
|
@@ -230,7 +237,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
230
237
|
version: '0'
|
231
238
|
segments:
|
232
239
|
- 0
|
233
|
-
hash: -
|
240
|
+
hash: -201367885
|
234
241
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
235
242
|
none: false
|
236
243
|
requirements:
|