open_porch 0.5.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.
- data/Gemfile +41 -0
- data/Gemfile.lock +130 -0
- data/README.md +170 -0
- data/Rakefile +19 -0
- data/VERSION +1 -0
- data/app/controllers/admin/areas/base_controller.rb +11 -0
- data/app/controllers/admin/areas/issues_controller.rb +67 -0
- data/app/controllers/admin/areas/memberships_controller.rb +7 -0
- data/app/controllers/admin/areas/posts_controller.rb +44 -0
- data/app/controllers/admin/areas_controller.rb +89 -0
- data/app/controllers/admin/base_controller.rb +16 -0
- data/app/controllers/admin/user_activity_controller.rb +29 -0
- data/app/controllers/admin/users_controller.rb +57 -0
- data/app/controllers/application_controller.rb +15 -0
- data/app/controllers/areas/base_controller.rb +25 -0
- data/app/controllers/areas/issues_controller.rb +35 -0
- data/app/controllers/areas/posts_controller.rb +28 -0
- data/app/controllers/areas_controller.rb +30 -0
- data/app/controllers/passwords_controller.rb +42 -0
- data/app/controllers/registrations_controller.rb +42 -0
- data/app/controllers/sessions_controller.rb +33 -0
- data/app/controllers/users_controller.rb +77 -0
- data/app/helpers/open_porch_helper.rb +24 -0
- data/app/mailers/user_mailer.rb +35 -0
- data/app/models/address.rb +57 -0
- data/app/models/area.rb +171 -0
- data/app/models/area_activity.rb +24 -0
- data/app/models/email_message.rb +104 -0
- data/app/models/issue.rb +66 -0
- data/app/models/issue_number.rb +22 -0
- data/app/models/membership.rb +27 -0
- data/app/models/post.rb +64 -0
- data/app/models/session_user.rb +69 -0
- data/app/models/user.rb +140 -0
- data/app/models/user_activity.rb +31 -0
- data/app/models/user_authority_check.rb +14 -0
- data/app/views/admin/areas/_form.html.haml +8 -0
- data/app/views/admin/areas/_nav.html.haml +12 -0
- data/app/views/admin/areas/edit.html.haml +22 -0
- data/app/views/admin/areas/edit_borders.html.haml +44 -0
- data/app/views/admin/areas/index.html.haml +61 -0
- data/app/views/admin/areas/issues/_post.html.haml +15 -0
- data/app/views/admin/areas/issues/add_posts.js.rjs +3 -0
- data/app/views/admin/areas/issues/edit.html.haml +37 -0
- data/app/views/admin/areas/issues/index.html.haml +31 -0
- data/app/views/admin/areas/issues/remove_posts.js.rjs +3 -0
- data/app/views/admin/areas/issues/show.html.haml +13 -0
- data/app/views/admin/areas/memberships/index.html.haml +17 -0
- data/app/views/admin/areas/new.html.haml +6 -0
- data/app/views/admin/areas/new.js.haml +4 -0
- data/app/views/admin/areas/posts/_edit.html.haml +6 -0
- data/app/views/admin/areas/posts/_post_status.html.haml +1 -0
- data/app/views/admin/areas/posts/destroy.js.rjs +1 -0
- data/app/views/admin/areas/posts/edit.js.rjs +1 -0
- data/app/views/admin/areas/posts/show.js.rjs +1 -0
- data/app/views/admin/areas/posts/toggle_reviewed_by.js.rjs +1 -0
- data/app/views/admin/areas/posts/update.js.rjs +5 -0
- data/app/views/admin/areas/show.html.haml +5 -0
- data/app/views/admin/user_activity/show.html.haml +5 -0
- data/app/views/admin/users/_form.html.haml +21 -0
- data/app/views/admin/users/edit.html.haml +5 -0
- data/app/views/admin/users/index.html.haml +31 -0
- data/app/views/admin/users/new.html.haml +5 -0
- data/app/views/areas/issues/index.html.haml +31 -0
- data/app/views/areas/issues/show.html.haml +22 -0
- data/app/views/areas/posts/_post.html.haml +8 -0
- data/app/views/areas/posts/_posts_search_form.html.haml +8 -0
- data/app/views/areas/posts/index.html.haml +27 -0
- data/app/views/areas/posts/new.html.haml +10 -0
- data/app/views/areas/show.html.haml +47 -0
- data/app/views/layouts/_account_nav.html.haml +18 -0
- data/app/views/layouts/_flash_message.html.haml +4 -0
- data/app/views/layouts/_footer.html.haml +9 -0
- data/app/views/layouts/_head.html.haml +16 -0
- data/app/views/layouts/admin/_nav.html.haml +13 -0
- data/app/views/layouts/admin.html.haml +15 -0
- data/app/views/layouts/application.html.haml +14 -0
- data/app/views/layouts/area_editor.html.haml +11 -0
- data/app/views/passwords/edit.html.haml +9 -0
- data/app/views/passwords/new.html.haml +13 -0
- data/app/views/registrations/_address_form.html.haml +7 -0
- data/app/views/registrations/create.html.haml +49 -0
- data/app/views/registrations/index.html.haml +30 -0
- data/app/views/registrations/new.html.haml +17 -0
- data/app/views/sessions/new.html.haml +18 -0
- data/app/views/stylesheets/common.sass +239 -0
- data/app/views/stylesheets/content.sass +193 -0
- data/app/views/stylesheets/reset.sass +46 -0
- data/app/views/stylesheets/structure.sass +11 -0
- data/app/views/stylesheets/typography.sass +57 -0
- data/app/views/user_mailer/email_verification.html.erb +5 -0
- data/app/views/user_mailer/email_verification.text.erb +7 -0
- data/app/views/user_mailer/new_issue.html.erb +32 -0
- data/app/views/user_mailer/new_issue.text.erb +26 -0
- data/app/views/user_mailer/password_reset.html.erb +7 -0
- data/app/views/user_mailer/password_reset.text.erb +6 -0
- data/app/views/users/_form.html.haml +5 -0
- data/app/views/users/edit.html.haml +11 -0
- data/app/views/users/new.html.haml +41 -0
- data/app/views/users/show.html.haml +30 -0
- data/bin/open_porch_engine +135 -0
- data/config/application.rb +43 -0
- data/config/boot.rb +13 -0
- data/config/database_example.yml +59 -0
- data/config/environment.rb +5 -0
- data/config/environments/development.rb +26 -0
- data/config/environments/production.rb +49 -0
- data/config/environments/test.rb +35 -0
- data/config/initializers/backtrace_silencers.rb +7 -0
- data/config/initializers/email_regex.rb +38 -0
- data/config/initializers/geokit_config.rb +61 -0
- data/config/initializers/inflections.rb +20 -0
- data/config/initializers/meta_search.rb +7 -0
- data/config/initializers/mime_types.rb +5 -0
- data/config/initializers/open_porch.rb +41 -0
- data/config/initializers/sass.rb +1 -0
- data/config/initializers/secret_token.rb +7 -0
- data/config/initializers/session_store.rb +8 -0
- data/config/initializers/states_provinces.rb +2 -0
- data/config/initializers/will_paginate.rb +2 -0
- data/config/locales/en.yml +5 -0
- data/config/open_porch_example.yml +23 -0
- data/config/routes.rb +54 -0
- data/config/schedule.rb +9 -0
- data/config.ru +4 -0
- data/db/migrate/01_create_areas.rb +21 -0
- data/db/migrate/02_create_users.rb +28 -0
- data/db/migrate/03_create_memberships.rb +14 -0
- data/db/migrate/04_create_posts.rb +20 -0
- data/db/migrate/05_create_issue_numbers.rb +13 -0
- data/db/migrate/06_create_issues.rb +21 -0
- data/db/migrate/20110204173301_add_published_to_areas.rb +10 -0
- data/db/migrate/20110204194840_create_user_activities.rb +13 -0
- data/db/migrate/20110208163604_add_zip_to_areas.rb +11 -0
- data/db/migrate/20110209175723_add_counters_to_areas.rb +11 -0
- data/db/migrate/20110209182244_remove_subject_from_issues.rb +9 -0
- data/db/migrate/20110209190146_add_reviewer_info_to_posts.rb +9 -0
- data/db/migrate/20110215173144_add_email_validation_key_to_users.rb +13 -0
- data/db/migrate/20110215182716_remove_published_from_areas.rb +10 -0
- data/db/migrate/20110215211012_create_area_activities.rb +19 -0
- data/db/migrate/20110215213802_create_email_messages.rb +19 -0
- data/db/migrate/20110217165018_change_send_mode_to_string.rb +17 -0
- data/db/migrate/20110223160609_denormalize_user_info_in_posts.rb +19 -0
- data/db/seeds.rb +7 -0
- data/doc/README_FOR_APP +2 -0
- data/lib/generators/open_porch_generator.rb +37 -0
- data/lib/open_porch/engine.rb +20 -0
- data/lib/open_porch.rb +3 -0
- data/lib/tasks/.gitkeep +0 -0
- data/lib/tasks/open_porch.rake +10 -0
- data/lib/tasks/postageapp_tasks.rake +78 -0
- data/open_porch.gemspec +335 -0
- data/public/404.html +26 -0
- data/public/422.html +26 -0
- data/public/500.html +26 -0
- data/public/favicon.ico +0 -0
- data/public/images/icons/ajax-loader.gif +0 -0
- data/public/images/icons/calendar.png +0 -0
- data/public/images/icons/post_new.png +0 -0
- data/public/images/icons/post_reviewed.png +0 -0
- data/public/javascripts/application.js +3 -0
- data/public/javascripts/google_maps.js +153 -0
- data/public/javascripts/highcharts.js +162 -0
- data/public/javascripts/highcharts_init.js +30 -0
- data/public/javascripts/issue_edit.js +57 -0
- data/public/javascripts/jquery-ui.min.js +191 -0
- data/public/javascripts/jquery.js +154 -0
- data/public/javascripts/rails.js +137 -0
- data/public/javascripts/region_editor.js +616 -0
- data/public/javascripts/user_activity.js +29 -0
- data/public/robots.txt +5 -0
- data/public/stylesheets/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
- data/public/stylesheets/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
- data/public/stylesheets/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
- data/public/stylesheets/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
- data/public/stylesheets/images/ui-bg_glass_75_dadada_1x400.png +0 -0
- data/public/stylesheets/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
- data/public/stylesheets/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
- data/public/stylesheets/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
- data/public/stylesheets/images/ui-icons_222222_256x240.png +0 -0
- data/public/stylesheets/images/ui-icons_2e83ff_256x240.png +0 -0
- data/public/stylesheets/images/ui-icons_454545_256x240.png +0 -0
- data/public/stylesheets/images/ui-icons_888888_256x240.png +0 -0
- data/public/stylesheets/images/ui-icons_cd0a0a_256x240.png +0 -0
- data/public/stylesheets/jquery-ui.css +362 -0
- data/script/rails +6 -0
- data/test/dummy/area.rb +5 -0
- data/test/dummy/area_activity.rb +7 -0
- data/test/dummy/issue.rb +4 -0
- data/test/dummy/membership.rb +4 -0
- data/test/dummy/post.rb +12 -0
- data/test/dummy/user.rb +29 -0
- data/test/dummy/user_activity.rb +11 -0
- data/test/functional/admin/areas/issues_controller_test.rb +48 -0
- data/test/functional/admin/areas/memberships_controller_test.rb +45 -0
- data/test/functional/admin/areas/posts_controller_test.rb +54 -0
- data/test/functional/admin/areas_controller_test.rb +134 -0
- data/test/functional/admin/base_controller_test.rb +8 -0
- data/test/functional/admin/user_activity_controller_test.rb +28 -0
- data/test/functional/admin/users_controller_test.rb +144 -0
- data/test/functional/areas/issues_controller_test.rb +33 -0
- data/test/functional/areas/posts_controller_test.rb +50 -0
- data/test/functional/areas_controller_test.rb +12 -0
- data/test/functional/passwords_controller_test.rb +64 -0
- data/test/functional/registrations_controller_test.rb +64 -0
- data/test/functional/sessions_controller_test.rb +120 -0
- data/test/functional/users_controller_test.rb +144 -0
- data/test/performance/browsing_test.rb +9 -0
- data/test/test_helper.rb +92 -0
- data/test/unit/address_test.rb +25 -0
- data/test/unit/area_activity_test.rb +57 -0
- data/test/unit/area_test.rb +92 -0
- data/test/unit/email_message_test.rb +8 -0
- data/test/unit/issue_number_test.rb +25 -0
- data/test/unit/issue_test.rb +154 -0
- data/test/unit/membership_test.rb +20 -0
- data/test/unit/post_test.rb +69 -0
- data/test/unit/session_user_test.rb +65 -0
- data/test/unit/user_activity_test.rb +31 -0
- data/test/unit/user_mailer_test.rb +20 -0
- data/test/unit/user_test.rb +61 -0
- data/vendor/plugins/.gitkeep +0 -0
- metadata +456 -0
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class Admin::AreasControllerTest < ActionController::TestCase
|
|
4
|
+
|
|
5
|
+
def setup
|
|
6
|
+
@user = a User
|
|
7
|
+
assert_created @user
|
|
8
|
+
|
|
9
|
+
@user.update_attribute(:role, 'admin')
|
|
10
|
+
assert @user.is_admin?
|
|
11
|
+
|
|
12
|
+
@area = Area.create_dummy(
|
|
13
|
+
:name => 'Oakledge',
|
|
14
|
+
:border => Polygon.from_coordinates([[
|
|
15
|
+
[44.450713, -73.227265],
|
|
16
|
+
[44.456838, -73.225943],
|
|
17
|
+
[44.455921, -73.218375],
|
|
18
|
+
[44.449365, -73.220694],
|
|
19
|
+
[44.450713, -73.227265]
|
|
20
|
+
]])
|
|
21
|
+
)
|
|
22
|
+
assert_created @area
|
|
23
|
+
|
|
24
|
+
@user.areas << @area
|
|
25
|
+
assert_equal @area, @user.areas.first
|
|
26
|
+
|
|
27
|
+
login_as(@user)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def test_require_admin
|
|
31
|
+
@user.update_attribute(:role, 'regular_user')
|
|
32
|
+
login_as(@user)
|
|
33
|
+
|
|
34
|
+
get :index
|
|
35
|
+
assert_equal "You're not authorized to access that page.", flash[:alert]
|
|
36
|
+
assert_redirected_to area_path(@user.areas.first)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def test_get_index
|
|
40
|
+
get :index
|
|
41
|
+
assert_response :success
|
|
42
|
+
assert_template :index
|
|
43
|
+
assert assigns(:areas)
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def test_get_new
|
|
47
|
+
get :new
|
|
48
|
+
assert_response :success
|
|
49
|
+
assert_template :new
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def test_create
|
|
53
|
+
assert_difference ['Area.count', 'IssueNumber.count'], 1 do
|
|
54
|
+
post :create, :area => area_params
|
|
55
|
+
end
|
|
56
|
+
assert_redirected_to admin_areas_path
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def test_create_fails
|
|
60
|
+
assert_no_difference ['Area.count', 'IssueNumber.count'] do
|
|
61
|
+
post :create, :area => area_params(:name => '')
|
|
62
|
+
end
|
|
63
|
+
assert_response :success
|
|
64
|
+
assert_template :new
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def test_create_from_js
|
|
68
|
+
assert_difference ['Area.count', 'IssueNumber.count'], 1 do
|
|
69
|
+
xhr :post, :create, :area => area_params
|
|
70
|
+
end
|
|
71
|
+
assert_response :success
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
def test_get_edit
|
|
75
|
+
area = an Area
|
|
76
|
+
get :edit, :id => area
|
|
77
|
+
assert_response :success
|
|
78
|
+
assert_template :edit
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
def test_update
|
|
82
|
+
area = an Area
|
|
83
|
+
put :update, :id => area, :area => { :name => '[EDIT] New Area Name'}
|
|
84
|
+
area.reload
|
|
85
|
+
assert_equal '[EDIT] New Area Name', area.name
|
|
86
|
+
assert_redirected_to admin_areas_path
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
def test_update_fails
|
|
90
|
+
area = an Area
|
|
91
|
+
put :update, :id => area, :area => { :name => '' }
|
|
92
|
+
assert_response :success
|
|
93
|
+
assert_template :edit
|
|
94
|
+
assert_not_nil area.name
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
def test_destroy
|
|
98
|
+
area = an Area
|
|
99
|
+
assert_difference ['Area.count', 'IssueNumber.count'], -1 do
|
|
100
|
+
delete :destroy, :id => area
|
|
101
|
+
end
|
|
102
|
+
assert_redirected_to admin_areas_path
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
def test_edit_borders
|
|
106
|
+
get :edit_borders, :id => @area.id
|
|
107
|
+
assert_response :success
|
|
108
|
+
assert_template :edit_borders
|
|
109
|
+
assert_equal [@area], assigns(:areas)
|
|
110
|
+
assert_equal @area, assigns(:selected_area)
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
def test_bulk_update
|
|
114
|
+
skip # < --------------------
|
|
115
|
+
xhr :post, :bulk_update, "areas"=>{
|
|
116
|
+
"0"=>{
|
|
117
|
+
"id"=> @area.id,
|
|
118
|
+
"coordinates"=>{"0"=>["44.471237230753886", "-73.23112146041126"], "1"=>["44.46936923281188", "-73.22386876723499"], "2"=>["44.4617123643827", "-73.22558538100452"]}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
new_area = Area.find(@area.id)
|
|
123
|
+
puts new_area.to_a.to_yaml
|
|
124
|
+
assert_equal [44.450713, -73.227265], [area.border.first.points.first.x, area.border.first.points.first.y]
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
protected
|
|
128
|
+
def area_params(options = {})
|
|
129
|
+
{
|
|
130
|
+
:name => 'New Area',
|
|
131
|
+
:slug => 'new-area'
|
|
132
|
+
}.merge(options)
|
|
133
|
+
end
|
|
134
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class Admin::UserActivityControllerTest < ActionController::TestCase
|
|
4
|
+
|
|
5
|
+
def setup
|
|
6
|
+
login_as(:admin)
|
|
7
|
+
@user_activity = a UserActivity
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def test_require_admin
|
|
11
|
+
user = login_as(:regular_user)
|
|
12
|
+
get :show, :id => @user_activity
|
|
13
|
+
assert_equal "You're not authorized to access that page.", flash[:alert]
|
|
14
|
+
assert_redirected_to area_path(user.areas.first)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def test_get_show
|
|
18
|
+
get :show, :id => @user_activity
|
|
19
|
+
assert_response :success
|
|
20
|
+
assert_template :show
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def test_update
|
|
24
|
+
put :update, :id => @user_activity
|
|
25
|
+
assert (@user_activity.expires_at > Time.now)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
end
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class Admin::UsersControllerTest < ActionController::TestCase
|
|
4
|
+
|
|
5
|
+
def setup
|
|
6
|
+
@user = a User
|
|
7
|
+
assert_created @user
|
|
8
|
+
|
|
9
|
+
@user.update_attribute(:role, 'admin')
|
|
10
|
+
assert @user.is_admin?
|
|
11
|
+
|
|
12
|
+
@area = Area.create_dummy(
|
|
13
|
+
:name => 'Oakledge',
|
|
14
|
+
:border => Polygon.from_coordinates([[
|
|
15
|
+
[44.450713, -73.227265],
|
|
16
|
+
[44.456838, -73.225943],
|
|
17
|
+
[44.455921, -73.218375],
|
|
18
|
+
[44.449365, -73.220694],
|
|
19
|
+
[44.450713, -73.227265]
|
|
20
|
+
]])
|
|
21
|
+
)
|
|
22
|
+
assert_created @area
|
|
23
|
+
|
|
24
|
+
@user.areas << @area
|
|
25
|
+
assert_equal @area, @user.areas.first
|
|
26
|
+
|
|
27
|
+
login_as(@user)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def test_require_admin
|
|
31
|
+
@user.update_attribute(:role, 'regular_user')
|
|
32
|
+
login_as(@user)
|
|
33
|
+
get :index
|
|
34
|
+
assert_equal "You're not authorized to access that page.", flash[:alert]
|
|
35
|
+
assert_redirected_to area_path(@user.areas.first)
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def test_get_index
|
|
39
|
+
get :index
|
|
40
|
+
assert_response :success
|
|
41
|
+
assert_template :index
|
|
42
|
+
assert assigns(:users)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def test_get_new
|
|
46
|
+
get :new
|
|
47
|
+
assert_response :success
|
|
48
|
+
assert_template :new
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def test_create
|
|
52
|
+
assert_difference 'User.count', 1 do
|
|
53
|
+
post :create, :user => user_params(:password => 'testtest', :password_confirmation => 'testtest')
|
|
54
|
+
end
|
|
55
|
+
assert_equal 'User was successfully created.', flash[:notice]
|
|
56
|
+
assert_redirected_to admin_users_path
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def test_creation_fail
|
|
60
|
+
assert_no_difference 'User.count' do
|
|
61
|
+
post :create, :user => user_params(:first_name => '')
|
|
62
|
+
end
|
|
63
|
+
assert_response :success
|
|
64
|
+
assert_template :new
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def test_get_edit
|
|
68
|
+
user = a User
|
|
69
|
+
get :edit, :id => user
|
|
70
|
+
assert_response :success
|
|
71
|
+
assert_template :edit
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
def test_update_from_users
|
|
75
|
+
user = a User
|
|
76
|
+
assert_not_equal 'user@domain.com', user.email
|
|
77
|
+
assert_not_equal 'Test', user.first_name
|
|
78
|
+
assert_not_equal 'Name', user.last_name
|
|
79
|
+
assert_not_equal 'Test Address', user.address
|
|
80
|
+
assert_not_equal 'Test City', user.city
|
|
81
|
+
assert_not_equal 'Test State', user.state
|
|
82
|
+
put :update, :id => user, :user => user_params, :area_id => nil
|
|
83
|
+
user.reload
|
|
84
|
+
assert_equal flash[:notice], 'User has been successfully updated.'
|
|
85
|
+
assert_equal 'user@domain.com', user.email
|
|
86
|
+
assert_equal 'Test', user.first_name
|
|
87
|
+
assert_equal 'Name', user.last_name
|
|
88
|
+
assert_equal 'Test Address', user.address
|
|
89
|
+
assert_equal 'Test City', user.city
|
|
90
|
+
assert_equal 'Test State', user.state
|
|
91
|
+
assert_redirected_to admin_users_path
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
def test_update_from_areas
|
|
95
|
+
area = an Area
|
|
96
|
+
user = a User
|
|
97
|
+
assert_not_equal 'user@domain.com', user.email
|
|
98
|
+
assert_not_equal 'Test', user.first_name
|
|
99
|
+
assert_not_equal 'Name', user.last_name
|
|
100
|
+
assert_not_equal 'Test Address', user.address
|
|
101
|
+
assert_not_equal 'Test City', user.city
|
|
102
|
+
assert_not_equal 'Test State', user.state
|
|
103
|
+
put :update, :id => user, :user => user_params, :area_id => area
|
|
104
|
+
assert_equal flash[:notice], 'User has been successfully updated.'
|
|
105
|
+
assert_equal 'user@domain.com', assigns(:user).email
|
|
106
|
+
assert_equal 'Test', assigns(:user).first_name
|
|
107
|
+
assert_equal 'Name', assigns(:user).last_name
|
|
108
|
+
assert_equal 'Test Address', assigns(:user).address
|
|
109
|
+
assert_equal 'Test City', assigns(:user).city
|
|
110
|
+
assert_equal 'Test State', assigns(:user).state
|
|
111
|
+
assert_redirected_to admin_area_memberships_path(area)
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
def test_update_fails
|
|
115
|
+
user = a User
|
|
116
|
+
put :update, :id => user, :user => { :email => '' }
|
|
117
|
+
assert_response :success
|
|
118
|
+
assert_template :edit
|
|
119
|
+
assert_not_nil assigns(:user).email
|
|
120
|
+
assert assigns(:user).errors[:email].include?("Please enter your email address")
|
|
121
|
+
assert assigns(:user).errors[:email].include?("The email address you entered is to short")
|
|
122
|
+
assert assigns(:user).errors[:email].include?("The email address you entered is not valid")
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
def test_destroy
|
|
126
|
+
user = a User
|
|
127
|
+
assert_difference 'User.count', -1 do
|
|
128
|
+
delete :destroy, :id => user
|
|
129
|
+
end
|
|
130
|
+
assert_redirected_to admin_users_path
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
protected
|
|
134
|
+
def user_params(options = {})
|
|
135
|
+
{
|
|
136
|
+
:email => 'user@domain.com',
|
|
137
|
+
:first_name => 'Test',
|
|
138
|
+
:last_name => 'Name',
|
|
139
|
+
:address => 'Test Address',
|
|
140
|
+
:city => 'Test City',
|
|
141
|
+
:state => 'Test State'
|
|
142
|
+
}.merge(options)
|
|
143
|
+
end
|
|
144
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class Areas::IssuesControllerTest < ActionController::TestCase
|
|
4
|
+
def setup
|
|
5
|
+
login_as(:regular_user)
|
|
6
|
+
@current_user = @controller.current_user
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def test_get_index
|
|
10
|
+
issue = Issue.create_dummy
|
|
11
|
+
@current_user.memberships.create(:area => issue.area)
|
|
12
|
+
get :index, :area_id => issue.area
|
|
13
|
+
assert_response :success
|
|
14
|
+
assert_template :index
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def test_get_show
|
|
18
|
+
issue = an Issue
|
|
19
|
+
issue.update_attribute(:sent_at, Time.now)
|
|
20
|
+
@current_user.memberships.create(:area => issue.area)
|
|
21
|
+
get :show, :area_id => issue.area, :id => issue.number
|
|
22
|
+
assert_response :success
|
|
23
|
+
assert_template :show
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def test_get_archive
|
|
27
|
+
area = an Area
|
|
28
|
+
@current_user.memberships.create(:area => area)
|
|
29
|
+
get :index, :area_id => area, :year => 2011, :month => 01
|
|
30
|
+
assert_response :success
|
|
31
|
+
assert_template :index
|
|
32
|
+
end
|
|
33
|
+
end
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class Areas::PostsControllerTest < ActionController::TestCase
|
|
4
|
+
|
|
5
|
+
def setup
|
|
6
|
+
login_as(:regular_user)
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def test_new
|
|
10
|
+
area = an Area
|
|
11
|
+
assert_created area
|
|
12
|
+
@controller.current_user.memberships.create!(:area => area)
|
|
13
|
+
get :new, :area_id => area
|
|
14
|
+
assert_response :success
|
|
15
|
+
assert_template :new
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def test_create
|
|
19
|
+
area = an Area
|
|
20
|
+
assert_created area
|
|
21
|
+
@controller.current_user.memberships.create!(:area => area)
|
|
22
|
+
assert_difference 'Post.count', 1 do
|
|
23
|
+
post :create, :area_id => area, :post => { :title => "New Post", :content => 'test'}
|
|
24
|
+
end
|
|
25
|
+
assert_redirected_to area_path(area)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def test_create_fails
|
|
29
|
+
area = an Area
|
|
30
|
+
assert_created area
|
|
31
|
+
@controller.current_user.memberships.create!(:area => area)
|
|
32
|
+
assert_no_difference 'Post.count' do
|
|
33
|
+
post :create, :area_id => area
|
|
34
|
+
end
|
|
35
|
+
assert_errors_on assigns(:post), :title, :content
|
|
36
|
+
assert_response :success
|
|
37
|
+
assert_template :new
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def test_shouldnt_post_to_other_forums
|
|
41
|
+
area = an Area
|
|
42
|
+
assert_created area
|
|
43
|
+
assert !@controller.current_user.is_admin?
|
|
44
|
+
assert_no_difference 'Post.count' do
|
|
45
|
+
post :create, :area_id => area
|
|
46
|
+
end
|
|
47
|
+
assert_redirected_to user_path
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
end
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class PasswordsControllerTest < ActionController::TestCase
|
|
4
|
+
def test_new
|
|
5
|
+
get :new
|
|
6
|
+
assert_response :success
|
|
7
|
+
assert_template 'new'
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def test_create
|
|
11
|
+
user = a User
|
|
12
|
+
assert_created user
|
|
13
|
+
assert_difference 'ActionMailer::Base.deliveries.size', 1 do
|
|
14
|
+
assert_emails 1 do
|
|
15
|
+
post :create, :email => user.email
|
|
16
|
+
assert_equal 'Email to reset password successfully sent.', flash[:notice]
|
|
17
|
+
assert_redirected_to login_path
|
|
18
|
+
user.reload
|
|
19
|
+
assert_not_nil user.perishable_token
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
response = ActionMailer::Base.deliveries.last
|
|
23
|
+
assert_equal 2, response.arguments['content'].length
|
|
24
|
+
response.arguments['content'].each do |content_type, body|
|
|
25
|
+
assert_match user.perishable_token, body
|
|
26
|
+
end
|
|
27
|
+
assert_equal user.email, response.to[0]
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def test_edit
|
|
31
|
+
user = a User
|
|
32
|
+
user.reset_perishable_token!
|
|
33
|
+
get :edit, :id => user.perishable_token
|
|
34
|
+
assert_response :success
|
|
35
|
+
assert_template 'edit'
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def test_edit_redirects_on_invalid_perishable_token
|
|
39
|
+
user = a User
|
|
40
|
+
user.reset_perishable_token!
|
|
41
|
+
get :edit, :id => user.perishable_token + 'bogus'
|
|
42
|
+
assert_redirected_to login_path
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def test_update
|
|
46
|
+
user = a User
|
|
47
|
+
user.reset_perishable_token!
|
|
48
|
+
assert !user.password_match?('newpassword')
|
|
49
|
+
put :update, :id => user.perishable_token, :user => {:password => 'newpassword', :password_confirmation => 'newpassword'}
|
|
50
|
+
assert_redirected_to user_path(user)
|
|
51
|
+
user.reload
|
|
52
|
+
assert_nil user.perishable_token
|
|
53
|
+
assert user.password_match?('newpassword')
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def test_update_redirects_on_invalid_perishable_token
|
|
57
|
+
user = a User
|
|
58
|
+
user.reset_perishable_token!
|
|
59
|
+
put :update, :id => user.perishable_token + 'bogus', :user => {:password => 'newpassword', :password_confirmation => 'newpassword'}
|
|
60
|
+
assert_redirected_to login_path
|
|
61
|
+
user.reload
|
|
62
|
+
assert_not_nil user.perishable_token
|
|
63
|
+
end
|
|
64
|
+
end
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class RegistrationsControllerTest < ActionController::TestCase
|
|
4
|
+
include GeoKit::Geocoders
|
|
5
|
+
|
|
6
|
+
def test_index
|
|
7
|
+
get :index
|
|
8
|
+
assert_response :success
|
|
9
|
+
assert_template 'index'
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def test_new
|
|
13
|
+
get :new
|
|
14
|
+
assert_response :success
|
|
15
|
+
assert_template 'new'
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def test_create
|
|
19
|
+
oakledge = Area.create_dummy(
|
|
20
|
+
:name => 'Oakledge',
|
|
21
|
+
:border => Polygon.from_coordinates([[
|
|
22
|
+
[44.450713, -73.227265],
|
|
23
|
+
[44.456838, -73.225943],
|
|
24
|
+
[44.455921, -73.218375],
|
|
25
|
+
[44.449365, -73.220694],
|
|
26
|
+
[44.450713, -73.227265]
|
|
27
|
+
]])
|
|
28
|
+
)
|
|
29
|
+
Geokit::Geocoders::GoogleGeocoder.expects(:geocode).returns(success_geocode(44.4533518, -73.2219273))
|
|
30
|
+
|
|
31
|
+
post :create, :address => {:address=>"123 Fake St", :city=>"Burlington", :state=>"Vermont"}
|
|
32
|
+
assert assigns(:areas).empty?
|
|
33
|
+
assert_equal oakledge, assigns(:selected_area)
|
|
34
|
+
assert_response :success
|
|
35
|
+
assert_template 'create'
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def test_create_with_invalid_address
|
|
39
|
+
Address.any_instance.stubs(:closest_regions).returns([])
|
|
40
|
+
post :create, :address => {:address=>"123 Fake St"}
|
|
41
|
+
assert_redirected_to root_path
|
|
42
|
+
assert !assigns(:address).valid?
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def test_create_with_no_regions
|
|
46
|
+
Address.any_instance.stubs(:closest_regions).returns([])
|
|
47
|
+
post :create, :address => {:address=>"123 Fake St", :city=>"Burlington", :state=>"Vermont"}
|
|
48
|
+
assert_equal flash.now[:alert], "Sorry, we couldn't find any neighbourhoods close to you!"
|
|
49
|
+
assert_redirected_to root_path
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
protected
|
|
53
|
+
def success_geocode(lat, lng)
|
|
54
|
+
@success = Geokit::GeoLoc.new({
|
|
55
|
+
:street_address=>"some address",
|
|
56
|
+
:city=>"SAN FRANCISCO",
|
|
57
|
+
:state=>"CA",
|
|
58
|
+
:country_code=>"US",
|
|
59
|
+
:lat=>lat,
|
|
60
|
+
:lng=>lng})
|
|
61
|
+
@success.success = true
|
|
62
|
+
@success
|
|
63
|
+
end
|
|
64
|
+
end
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class SessionsControllerTest < ActionController::TestCase
|
|
4
|
+
def setup
|
|
5
|
+
@regular_user = a User
|
|
6
|
+
assert_created @regular_user
|
|
7
|
+
|
|
8
|
+
@regular_user.set_email_verification_key
|
|
9
|
+
@regular_user.role = 'regular_user'
|
|
10
|
+
@regular_user.save!
|
|
11
|
+
assert !@regular_user.is_admin?
|
|
12
|
+
assert !@regular_user.is_verified?
|
|
13
|
+
|
|
14
|
+
area = an Area
|
|
15
|
+
assert_created area
|
|
16
|
+
|
|
17
|
+
@regular_user.areas << area
|
|
18
|
+
assert_equal area, @regular_user.areas.first
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# >> Login -----------------------------------------------------------
|
|
22
|
+
|
|
23
|
+
def test_get_new
|
|
24
|
+
get :new
|
|
25
|
+
assert_response :success
|
|
26
|
+
assert_template 'new'
|
|
27
|
+
assert !@controller.logged_in?
|
|
28
|
+
assert_nil @controller.current_user
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def test_should_login_with_email_and_redirect
|
|
32
|
+
@regular_user.update_attribute(:verified_at, Time.now)
|
|
33
|
+
assert @regular_user.is_verified?
|
|
34
|
+
|
|
35
|
+
post :create, :session_user => { :email => @regular_user.email, :password => @regular_user.password }
|
|
36
|
+
assert_equal "Welcome, you are now logged in.", flash[:notice]
|
|
37
|
+
assert_equal session[:user_id], @regular_user.id
|
|
38
|
+
assert_redirected_to area_path(@controller.current_user.areas.first)
|
|
39
|
+
assert @controller.logged_in?
|
|
40
|
+
assert_equal @controller.current_user, @regular_user
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def test_login_errors
|
|
44
|
+
post :create, :session_user => { :email => 'a', :password => 'b' }
|
|
45
|
+
assert_equal "Login failed. Did you mistype?", flash[:alert]
|
|
46
|
+
assert_nil session[:user]
|
|
47
|
+
assert_response :success
|
|
48
|
+
assert_template 'new'
|
|
49
|
+
assert !@controller.logged_in?
|
|
50
|
+
assert_nil @controller.current_user
|
|
51
|
+
|
|
52
|
+
assert !assigns(:session_user).valid?
|
|
53
|
+
assert_errors_on assigns(:session_user), :email, :password
|
|
54
|
+
assert assigns(:session_user).errors[:email].include?("The email address you entered is not valid")
|
|
55
|
+
assert assigns(:session_user).errors[:email].include?("The email address you entered is to short")
|
|
56
|
+
assert assigns(:session_user).errors[:password].include?("The password you entered is too short (minimum is 4 characters)")
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def test_login_with_email_not_verified
|
|
60
|
+
post :create, :session_user => { :email => @regular_user.email, :password => @regular_user.password }
|
|
61
|
+
assert_equal "Login failed. Did you mistype?", flash[:alert]
|
|
62
|
+
assert_nil session[:user]
|
|
63
|
+
assert_response :success
|
|
64
|
+
assert_template 'new'
|
|
65
|
+
assert !@controller.logged_in?
|
|
66
|
+
assert_nil @controller.current_user
|
|
67
|
+
assert_errors_on assigns(:session_user), :email
|
|
68
|
+
assert assigns(:session_user).errors[:email].include?("This email address needs to be verified before you can login. <a href='/resend-email-verification/#{@regular_user.email_verification_key}'>Resend verification</a>")
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def test_new_redirects_if_logged_in
|
|
72
|
+
login_as(@regular_user)
|
|
73
|
+
assert_equal session[:user_id], @regular_user.id
|
|
74
|
+
assert @controller.logged_in?
|
|
75
|
+
assert_equal @controller.current_user, @regular_user
|
|
76
|
+
|
|
77
|
+
get :new
|
|
78
|
+
assert_redirected_to user_path
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
def test_create_redirects_if_logged_in
|
|
82
|
+
login_as(@regular_user)
|
|
83
|
+
assert_equal session[:user_id], @regular_user.id
|
|
84
|
+
assert @controller.logged_in?
|
|
85
|
+
assert_equal @controller.current_user, @regular_user
|
|
86
|
+
|
|
87
|
+
post :create, :session_user => { :email => @regular_user.email, :password => @regular_user.password }
|
|
88
|
+
assert_redirected_to user_path
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
# >> Logout -----------------------------------------------------------
|
|
92
|
+
|
|
93
|
+
def test_should_logout
|
|
94
|
+
login_as(@regular_user)
|
|
95
|
+
assert_equal session[:user_id], @regular_user.id
|
|
96
|
+
assert @controller.logged_in?
|
|
97
|
+
assert_equal @controller.current_user, @regular_user
|
|
98
|
+
|
|
99
|
+
get :destroy
|
|
100
|
+
assert_redirected_to root_path
|
|
101
|
+
assert_nil cookies[:login_token]
|
|
102
|
+
assert_nil session[:user_id]
|
|
103
|
+
@regular_user.reload
|
|
104
|
+
assert_nil @regular_user.remember_token
|
|
105
|
+
assert !@controller.logged_in?
|
|
106
|
+
assert_nil @controller.current_user
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
# >> Remember me -----------------------------------------------------------
|
|
110
|
+
|
|
111
|
+
def test_remember_me
|
|
112
|
+
@regular_user.update_attribute(:verified_at, Time.now)
|
|
113
|
+
assert @regular_user.is_verified?
|
|
114
|
+
|
|
115
|
+
post :create, :session_user => { :email => @regular_user.email, :password => @regular_user.password , :remember_me => '1' }
|
|
116
|
+
assert_equal request.session[:user_id], @regular_user.id
|
|
117
|
+
assert_not_nil assigns(:session_user).user.remember_token
|
|
118
|
+
assert_equal assigns(:session_user).user.remember_token, cookies['login_token']
|
|
119
|
+
end
|
|
120
|
+
end
|