muck-users 0.3.3 → 0.3.4
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/VERSION +1 -1
- data/app/controllers/admin/muck/access_codes_controller.rb +17 -11
- data/app/views/admin/access_codes/bulk.html.erb +30 -15
- data/app/views/password_resets/edit.html.erb +2 -2
- data/config/muck_users_routes.rb +1 -1
- data/lib/active_record/acts/muck_access_code.rb +2 -2
- data/lib/active_record/acts/muck_access_code_request.rb +18 -2
- data/locales/en.yml +8 -3
- data/muck-users.gemspec +4 -2
- data/test/rails_root/test/functional/admin/access_codes_controller_test.rb +44 -30
- data/test/rails_root/test/unit/access_code_request_test.rb +58 -0
- data/test/rails_root/test/unit/access_code_test.rb +3 -2
- metadata +4 -2
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.3.
|
1
|
+
0.3.4
|
@@ -1,6 +1,4 @@
|
|
1
1
|
class Admin::Muck::AccessCodesController < Admin::Muck::BaseController
|
2
|
-
|
3
|
-
before_filter :setup_access_code, :except => [:index, :new, :create, :bulk, :bulk_create]
|
4
2
|
|
5
3
|
def index
|
6
4
|
@codes = AccessCode.by_alpha.paginate(:page => @page, :per_page => @per_page)
|
@@ -8,6 +6,7 @@ class Admin::Muck::AccessCodesController < Admin::Muck::BaseController
|
|
8
6
|
end
|
9
7
|
|
10
8
|
def show
|
9
|
+
@access_code = AccessCode.find(params[:id])
|
11
10
|
render :template => 'admin/access_codes/show'
|
12
11
|
end
|
13
12
|
|
@@ -27,13 +26,19 @@ class Admin::Muck::AccessCodesController < Admin::Muck::BaseController
|
|
27
26
|
def bulk
|
28
27
|
@access_code = AccessCode.new
|
29
28
|
@access_code.code = AccessCode.random_code
|
29
|
+
@access_code_requests_count = AccessCodeRequest.unfullfilled.count
|
30
30
|
render :template => 'admin/access_codes/bulk'
|
31
31
|
end
|
32
32
|
|
33
33
|
def bulk_create
|
34
34
|
@access_code = AccessCode.new(params[:access_code])
|
35
35
|
@access_code.bulk_valid?
|
36
|
-
|
36
|
+
if send_requests = @access_code.send_requests
|
37
|
+
access_code_requests = AccessCodeRequest.get_requests(@access_code.send_request_limit)
|
38
|
+
emails = access_code_requests.map(&:email)
|
39
|
+
else
|
40
|
+
emails = @access_code.emails.split(',')
|
41
|
+
end
|
37
42
|
use_random_code = @access_code.code.blank?
|
38
43
|
emails.each do |email|
|
39
44
|
if use_random_code
|
@@ -47,18 +52,22 @@ class Admin::Muck::AccessCodesController < Admin::Muck::BaseController
|
|
47
52
|
end
|
48
53
|
UserMailer.deliver_access_code(email, @access_code.subject, @access_code.message, @access_code.code)
|
49
54
|
end
|
55
|
+
AccessCodeRequest.mark_fullfilled(access_code_requests) if access_code_requests
|
50
56
|
flash[:notice] = translate('muck.users.bulk_access_codes_created', :email_count => emails.count)
|
51
|
-
redirect_to
|
52
|
-
|
57
|
+
redirect_to bulk_admin_access_codes_path
|
58
|
+
|
53
59
|
rescue ActiveRecord::RecordInvalid => ex
|
60
|
+
@access_code_requests_count = AccessCodeRequest.unfullfilled.count
|
54
61
|
render :template => "admin/access_codes/bulk"
|
55
62
|
end
|
56
|
-
|
63
|
+
|
57
64
|
def edit
|
65
|
+
@access_code = AccessCode.find(params[:id])
|
58
66
|
render :template => "admin/access_codes/edit", :layout => false
|
59
67
|
end
|
60
|
-
|
68
|
+
|
61
69
|
def update
|
70
|
+
@access_code = AccessCode.find(params[:id])
|
62
71
|
if @access_code.update_attributes(params[:access_code])
|
63
72
|
ajax_update_access_code
|
64
73
|
else
|
@@ -67,6 +76,7 @@ class Admin::Muck::AccessCodesController < Admin::Muck::BaseController
|
|
67
76
|
end
|
68
77
|
|
69
78
|
def destroy
|
79
|
+
@access_code = AccessCode.find(params[:id])
|
70
80
|
if @access_code.users.length <= 0
|
71
81
|
success = @access_code.destroy
|
72
82
|
flash[:notice] = translate('muck.users.access_code_delete_error') unless success
|
@@ -88,10 +98,6 @@ class Admin::Muck::AccessCodesController < Admin::Muck::BaseController
|
|
88
98
|
|
89
99
|
protected
|
90
100
|
|
91
|
-
def setup_access_code
|
92
|
-
@access_code = AccessCode.find(params[:id])
|
93
|
-
end
|
94
|
-
|
95
101
|
def ajax_update_access_code
|
96
102
|
render :template => 'admin/access_codes/ajax_update_access_code'
|
97
103
|
end
|
@@ -2,21 +2,36 @@
|
|
2
2
|
<p><%=translate('muck.users.bulk_access_codes_description') %></p>
|
3
3
|
<%= output_errors(translate('muck.users.bulk_access_code_problem'), {:class => 'help-box'}, @access_code) %>
|
4
4
|
<% custom_form_for :access_code, :url => bulk_create_admin_access_codes_path, :html => {:class => "standard-form alt"} do |f| -%>
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
5
|
+
<div class="span-11 column colborder">
|
6
|
+
<%= f.text_field :code, { :label => translate('muck.users.access_code'),
|
7
|
+
:tip => translate('muck.users.bulk_access_code_tip'),
|
8
|
+
:hide_required => true } -%>
|
9
|
+
<%= f.text_field :use_limit, { :label => translate('muck.users.use_limit'),
|
10
|
+
:tip => translate('muck.users.use_limit_tip') } -%>
|
11
|
+
<%= f.check_box :unlimited, { :label => translate('muck.users.unlimited'),
|
12
|
+
:tip => translate('muck.users.unlimited_tip') } -%>
|
13
|
+
<%= f.text_field :expires_at, { :label => translate('muck.users.expiration_date'),
|
14
|
+
:tip => translate('muck.users.expiration_date_tip'),
|
15
|
+
:class => 'date_pick' } -%>
|
16
|
+
<%= f.text_field :subject, { :label => translate('muck.users.bulk_access_code_subject') } -%>
|
17
|
+
<%= f.text_area :message, { :label => translate('muck.users.bulk_access_code_message') } -%>
|
18
|
+
</div>
|
19
|
+
<div class="span-11 column">
|
20
|
+
<%= f.text_area :emails, { :label => translate('muck.users.bulk_access_code_emails'),
|
21
|
+
:tip => translate('muck.users.bulk_access_code_emails_tip') } -%>
|
22
|
+
|
23
|
+
<% if @access_code_requests_count > 0 -%>
|
24
|
+
<p><%=translate('muck.users.access_code_request_count', :access_code_requests_count => @access_code_requests_count) %></p>
|
25
|
+
<%= f.check_box :send_requests, { :label => translate('muck.users.access_code_fullfill_invites'),
|
26
|
+
:tip => translate('muck.users.access_code_fullfill_invites_tip') } -%>
|
27
|
+
|
28
|
+
<%= f.text_field :send_request_limit, { :label => translate('muck.users.access_code_fullfill_invites_limit'),
|
29
|
+
:tip => translate('muck.users.access_code_fullfill_invites_limit_tip') } -%>
|
30
|
+
<% end -%>
|
31
|
+
</div>
|
32
|
+
<div class="span-24 column center">
|
33
|
+
<%= f.submit translate('muck.users.save') %>
|
34
|
+
</div>
|
20
35
|
<% end -%>
|
21
36
|
<script type="text/javascript" language="JavaScript">
|
22
37
|
jQuery(document).ready(function(){
|
@@ -2,8 +2,8 @@
|
|
2
2
|
<h1><%= t('muck.users.select_new_password') %></h1>
|
3
3
|
<%= output_errors(t('muck.users.select_new_password'), {:class => 'help-box'}) %>
|
4
4
|
<% custom_form_for @user, :url => password_reset_path, :html => {:method => :put} do |f| -%>
|
5
|
-
<%= f.
|
6
|
-
<%= f.
|
5
|
+
<%= f.password_field :password, { :label => t('muck.users.password'), :hide_required => true } -%>
|
6
|
+
<%= f.password_field :password_confirmation, { :label => t('muck.users.confirm_password'), :hide_required => true } -%>
|
7
7
|
<%= submit_tag t('muck.users.confirm_select_new_password') %>
|
8
8
|
<% end -%>
|
9
9
|
</div>
|
data/config/muck_users_routes.rb
CHANGED
@@ -55,7 +55,7 @@ ActionController::Routing::Routes.draw do |map|
|
|
55
55
|
map.namespace :admin do |a|
|
56
56
|
a.resources :users, :controller => 'muck/users', :member => { :permissions => :get }, :collection => { :inactive => :get, :inactive_emails => :get, :activate_all => :get, :search => :post, :ajax_search => :post }
|
57
57
|
a.resources :roles, :controller => 'muck/roles'
|
58
|
-
a.resources :access_codes, :controller => 'muck/access_codes', :collection => {:bulk => :get, :bulk_create => :post}
|
58
|
+
a.resources :access_codes, :controller => 'muck/access_codes', :collection => { :bulk => :get, :bulk_create => :post }
|
59
59
|
end
|
60
60
|
|
61
61
|
end
|
@@ -19,7 +19,7 @@ module ActiveRecord
|
|
19
19
|
named_scope :active, :conditions => 'access_codes.expires_at > Now() AND access_codes.uses <= use_limit'
|
20
20
|
|
21
21
|
# Used to make bulk access code easier to deal with
|
22
|
-
attr_accessor :emails, :subject, :message
|
22
|
+
attr_accessor :emails, :subject, :message, :send_requests, :send_request_limit
|
23
23
|
|
24
24
|
include ActiveRecord::Acts::MuckAccessCode::InstanceMethods
|
25
25
|
extend ActiveRecord::Acts::MuckAccessCode::SingletonMethods
|
@@ -57,7 +57,7 @@ module ActiveRecord
|
|
57
57
|
module InstanceMethods
|
58
58
|
|
59
59
|
def bulk_valid?
|
60
|
-
errors.add(:emails, I18n.translate('muck.users.validation_are_required')) if self.emails.blank?
|
60
|
+
errors.add(:emails, I18n.translate('muck.users.validation_are_required')) if self.emails.blank? && !self.send_requests
|
61
61
|
errors.add(:subject, I18n.translate('muck.users.validation_is_required')) if self.subject.blank?
|
62
62
|
errors.add(:message, I18n.translate('muck.users.validation_is_required')) if self.message.blank?
|
63
63
|
raise RecordInvalid.new(self) if !errors.empty?
|
@@ -12,7 +12,9 @@ module ActiveRecord
|
|
12
12
|
validates_presence_of :email
|
13
13
|
validates_uniqueness_of :email
|
14
14
|
|
15
|
-
named_scope :
|
15
|
+
named_scope :unfullfilled, :conditions => 'access_code_requests.code_sent_at IS NULL'
|
16
|
+
named_scope :by_newest, :order => "created_at DESC"
|
17
|
+
named_scope :by_oldest, :order => "created_at ASC"
|
16
18
|
|
17
19
|
include ActiveRecord::Acts::MuckAccessCodeRequest::InstanceMethods
|
18
20
|
extend ActiveRecord::Acts::MuckAccessCodeRequest::SingletonMethods
|
@@ -21,7 +23,21 @@ module ActiveRecord
|
|
21
23
|
end
|
22
24
|
|
23
25
|
module SingletonMethods
|
24
|
-
|
26
|
+
|
27
|
+
def get_requests(limit = nil)
|
28
|
+
if limit && limit.to_i > 0
|
29
|
+
self.by_oldest.unfullfilled.all(:limit => limit)
|
30
|
+
else
|
31
|
+
self.by_oldest.unfullfilled
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def mark_fullfilled(access_code_requests)
|
36
|
+
access_code_requests.each do |request|
|
37
|
+
request.update_attribute(:code_sent_at, DateTime.now)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
25
41
|
end
|
26
42
|
|
27
43
|
module InstanceMethods
|
data/locales/en.yml
CHANGED
@@ -8,6 +8,7 @@ en:
|
|
8
8
|
join_application_name: Join and get it done
|
9
9
|
email_help: Please use a valid, current e-mail address. We will never share or spam your e-mail address.
|
10
10
|
logout_required: ""
|
11
|
+
access_code_fullfill_invites_limit_tip: Enter a number to limit the number of requests sent out. For example, entering 100 will limit the invites to the most recent 100 requests
|
11
12
|
access_required_warning: Site access is currently restricted. You need a valid access code to sign up.
|
12
13
|
login_out_success: You have been logged out.
|
13
14
|
sign_out_title: Sign Out
|
@@ -27,6 +28,7 @@ en:
|
|
27
28
|
deleting_user: deleting user...
|
28
29
|
forgot_your_username: Forgot your username?
|
29
30
|
email: Email
|
31
|
+
access_code_fullfill_invites_tip: Check here to send invites to users who have requested an invite. This will ignore any emails specified above.
|
30
32
|
login_requred: You must be logged in to access this feature.
|
31
33
|
recover_password: Recover Password
|
32
34
|
confirm_delete_account: Are you sure you want to delete your account?\nThis can not be undone.
|
@@ -35,6 +37,7 @@ en:
|
|
35
37
|
username_sent: Your username has been sent emailed to you. Please check your Email.
|
36
38
|
add_permission: (Add Permission)
|
37
39
|
access_code_delete_error: An error occured while trying to delete the access code
|
40
|
+
access_code_fullfill_invites: Fulfill Invite Requests
|
38
41
|
access_code_unlimited: Unlimited
|
39
42
|
welcome: Welcome
|
40
43
|
bulk_access_codes_created: Bulk access codes created and emailed to {{email_count}} emails.
|
@@ -58,13 +61,13 @@ en:
|
|
58
61
|
bulk_access_code_subject: Subject
|
59
62
|
access_code_delete_link: Delete Access Code
|
60
63
|
request_access_code: Request Access Code
|
61
|
-
validation_is_required: is required.
|
62
64
|
first_name: First Name
|
63
65
|
forgot_username: Forgot Username
|
64
66
|
updated_permissions: Updated Permissions
|
65
67
|
account_activated: Your account has been activated! You can now login.
|
66
68
|
already_logged_in: You are already logged in and don't need to recover your password.
|
67
69
|
email_invalid: Invalid email
|
70
|
+
validation_is_required: is required.
|
68
71
|
user_disabled: User disabled
|
69
72
|
invalid_username: Invalid username
|
70
73
|
update: Update
|
@@ -116,9 +119,9 @@ en:
|
|
116
119
|
password_reset: Password reset.
|
117
120
|
access_code_uses: Uses
|
118
121
|
recover_password_prompt: (If you forgot your password recover it here)
|
122
|
+
username: Username
|
119
123
|
user_marked_active: User has been marked as active
|
120
124
|
all_users: All Users
|
121
|
-
username: Username
|
122
125
|
access_code_request_tip: Enter your email and we'll send you an access code as soon as one is available. Thank you!
|
123
126
|
password_mismatch: Password mismatch.
|
124
127
|
add_role_dialog_title: Add Role
|
@@ -138,6 +141,7 @@ en:
|
|
138
141
|
search_users: Search Users
|
139
142
|
user_marked_inactive: User has been marked as inactive
|
140
143
|
access_code_request_thank_you: Thank you for your request. We'll be in touch as soon as possible.
|
144
|
+
access_code_fullfill_invites_limit: Invite Request Limit
|
141
145
|
bulk_access_code_tip: Optional. If a code is specified then that code will be sent to all users. Leave this field empty to send a unique code to each user.
|
142
146
|
role: Role
|
143
147
|
bulk_access_codes_title: Bulk Access Codes
|
@@ -186,8 +190,9 @@ en:
|
|
186
190
|
request_username_subject: Forgotten username
|
187
191
|
could_not_find_reset_code: Could not find a password reset code. Please try resetting your password again.
|
188
192
|
register_for_account: Register for an account
|
193
|
+
access_code_request_count: There are currently {{access_code_requests_count}} access code requests
|
189
194
|
bulk_access_code_message: Message
|
190
|
-
bulk_access_codes:
|
195
|
+
bulk_access_codes: Bulk Access Codes
|
191
196
|
add_access_code: Add Access Code
|
192
197
|
user_update: You're user information has been updated.
|
193
198
|
update_profile: Update your profile
|
data/muck-users.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{muck-users}
|
8
|
-
s.version = "0.3.
|
8
|
+
s.version = "0.3.4"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Justin Ball", "Joel Duffin"]
|
12
|
-
s.date = %q{2010-02-
|
12
|
+
s.date = %q{2010-02-08}
|
13
13
|
s.description = %q{Easily add user signup, login and other features to your application}
|
14
14
|
s.email = %q{justin@tatemae.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -1300,6 +1300,7 @@ Gem::Specification.new do |s|
|
|
1300
1300
|
"test/rails_root/test/integration/.keep",
|
1301
1301
|
"test/rails_root/test/test_helper.rb",
|
1302
1302
|
"test/rails_root/test/unit/.keep",
|
1303
|
+
"test/rails_root/test/unit/access_code_request_test.rb",
|
1303
1304
|
"test/rails_root/test/unit/access_code_test.rb",
|
1304
1305
|
"test/rails_root/test/unit/permission_test.rb",
|
1305
1306
|
"test/rails_root/test/unit/role_test.rb",
|
@@ -1356,6 +1357,7 @@ Gem::Specification.new do |s|
|
|
1356
1357
|
"test/rails_root/test/functional/username_request_controller_test.rb",
|
1357
1358
|
"test/rails_root/test/functional/users_controller_test.rb",
|
1358
1359
|
"test/rails_root/test/test_helper.rb",
|
1360
|
+
"test/rails_root/test/unit/access_code_request_test.rb",
|
1359
1361
|
"test/rails_root/test/unit/access_code_test.rb",
|
1360
1362
|
"test/rails_root/test/unit/permission_test.rb",
|
1361
1363
|
"test/rails_root/test/unit/role_test.rb",
|
@@ -11,7 +11,10 @@ class Admin::Muck::AccessCodesControllerTest < ActionController::TestCase
|
|
11
11
|
:login_url => '/login'
|
12
12
|
|
13
13
|
context "access codes controller" do
|
14
|
-
|
14
|
+
setup do
|
15
|
+
@access_code = Factory(:access_code)
|
16
|
+
end
|
17
|
+
|
15
18
|
context "logged in not admin" do
|
16
19
|
setup do
|
17
20
|
@user = Factory(:user)
|
@@ -32,11 +35,6 @@ class Admin::Muck::AccessCodesControllerTest < ActionController::TestCase
|
|
32
35
|
@admin.roles << @admin_role
|
33
36
|
activate_authlogic
|
34
37
|
login_as @admin
|
35
|
-
|
36
|
-
# Add a couple of access codes
|
37
|
-
@one = Factory(:access_code)
|
38
|
-
@two = Factory(:access_code)
|
39
|
-
@access_code = Factory(:access_code)
|
40
38
|
end
|
41
39
|
|
42
40
|
context "GET index" do
|
@@ -57,27 +55,40 @@ class Admin::Muck::AccessCodesControllerTest < ActionController::TestCase
|
|
57
55
|
|
58
56
|
context "bulk create" do
|
59
57
|
setup do
|
60
|
-
@
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
58
|
+
@params = { :emails => 'test@example.com',
|
59
|
+
:subject => 'test subject',
|
60
|
+
:message => 'test message',
|
61
|
+
:code => 'testcode',
|
62
|
+
:expires_at => Date.new((DateTime.now.year + 2), 10, 10) }
|
65
63
|
end
|
66
64
|
|
67
65
|
context "valid" do
|
68
66
|
setup do
|
69
|
-
post :bulk_create,
|
67
|
+
post :bulk_create, :access_code => @params
|
70
68
|
end
|
71
69
|
should_set_the_flash_to(I18n.translate('muck.users.bulk_access_codes_created', :email_count => 1))
|
72
|
-
should_redirect_to("bulk access code page") {
|
70
|
+
should_redirect_to("bulk access code page") { bulk_admin_access_codes_path }
|
73
71
|
end
|
74
72
|
|
73
|
+
context "valid - sent invites" do
|
74
|
+
setup do
|
75
|
+
AccessCodeRequest.destroy_all
|
76
|
+
Factory(:access_code_request)
|
77
|
+
post :bulk_create, :access_code => @params.merge(:send_requests => true)
|
78
|
+
end
|
79
|
+
should_set_the_flash_to(I18n.translate('muck.users.bulk_access_codes_created', :email_count => 1))
|
80
|
+
should_redirect_to("bulk access code page") { bulk_admin_access_codes_path }
|
81
|
+
should "set all access codes as fullfilled" do
|
82
|
+
assert_equal 0, AccessCodeRequest.unfullfilled.length
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
75
86
|
context "valid - no access code provided" do
|
76
87
|
setup do
|
77
|
-
post :bulk_create,
|
88
|
+
post :bulk_create, :access_code => @params.merge(:code => nil)
|
78
89
|
end
|
79
90
|
should_set_the_flash_to(I18n.translate('muck.users.bulk_access_codes_created', :email_count => 1))
|
80
|
-
should_redirect_to("bulk access code page") {
|
91
|
+
should_redirect_to("bulk access code page") { bulk_admin_access_codes_path }
|
81
92
|
should "set a random code" do
|
82
93
|
assert !assigns(:access_code).code.blank?
|
83
94
|
end
|
@@ -85,12 +96,13 @@ class Admin::Muck::AccessCodesControllerTest < ActionController::TestCase
|
|
85
96
|
|
86
97
|
context "no emails provided" do
|
87
98
|
setup do
|
88
|
-
post :bulk_create,
|
99
|
+
post :bulk_create, :access_code => @params.merge(:emails => '')
|
89
100
|
end
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
101
|
+
should_not_set_the_flash
|
102
|
+
should_respond_with :success
|
103
|
+
should_render_template "admin/access_codes/bulk"
|
104
|
+
should "set errors on access_code" do
|
105
|
+
assert assigns(:access_code).errors.on(:emails)
|
94
106
|
end
|
95
107
|
end
|
96
108
|
|
@@ -106,17 +118,17 @@ class Admin::Muck::AccessCodesControllerTest < ActionController::TestCase
|
|
106
118
|
|
107
119
|
context "POST to create" do
|
108
120
|
setup do
|
109
|
-
post :create, :access_code => { :code => 'testcode', :expires_at => Date.new((DateTime.now.year + 2), 10, 10) }
|
121
|
+
post :create, :access_code => { :code => 'testcode', :expires_at => Date.new((DateTime.now.year + 2), 10, 10) }, :format => 'js'
|
110
122
|
end
|
111
|
-
|
123
|
+
should_respond_with :success
|
124
|
+
should_render_template :ajax_create_access_code
|
112
125
|
end
|
113
126
|
|
114
127
|
context "fail on POST to create" do
|
115
128
|
setup do
|
116
|
-
post :create, :access_code => {:code => nil, :expires_at => Date.new((DateTime.now.year + 2), 10, 10) }
|
129
|
+
post :create, :access_code => {:code => nil, :expires_at => Date.new((DateTime.now.year + 2), 10, 10) }, :format => 'js'
|
117
130
|
end
|
118
131
|
should_respond_with :success
|
119
|
-
should_render_template :new
|
120
132
|
should "have errors on access code's 'code' field" do
|
121
133
|
assert assigns(:access_code).errors.on(:code)
|
122
134
|
end
|
@@ -132,17 +144,19 @@ class Admin::Muck::AccessCodesControllerTest < ActionController::TestCase
|
|
132
144
|
|
133
145
|
context "PUT to update" do
|
134
146
|
setup do
|
135
|
-
put :update, :id => @access_code.to_param, :access_code => {:code => 'testcodetoo', :expires_at => Date.new((DateTime.now.year + 2), 10, 10) }
|
147
|
+
put :update, :id => @access_code.to_param, :access_code => {:code => 'testcodetoo', :expires_at => Date.new((DateTime.now.year + 2), 10, 10) }, :format => 'js'
|
148
|
+
end
|
149
|
+
should_respond_with :success
|
150
|
+
should "not have errors" do
|
151
|
+
assert assigns(:access_code).errors.empty?
|
136
152
|
end
|
137
|
-
should_redirect_to("show access code") { admin_access_code_path(assigns(:access_code)) }
|
138
153
|
end
|
139
154
|
|
140
155
|
context "fail on PUT to update" do
|
141
156
|
setup do
|
142
|
-
put :update, :id => @access_code.to_param, :access_code => {:code => nil, :expires_at => Date.new((DateTime.now.year + 2), 10, 10) }
|
157
|
+
put :update, :id => @access_code.to_param, :access_code => {:code => nil, :expires_at => Date.new((DateTime.now.year + 2), 10, 10) }, :format => 'js'
|
143
158
|
end
|
144
159
|
should_respond_with :success
|
145
|
-
should_render_template :edit
|
146
160
|
should "have errors on access code's 'code' field" do
|
147
161
|
assert assigns(:access_code).errors.on(:code)
|
148
162
|
end
|
@@ -150,9 +164,9 @@ class Admin::Muck::AccessCodesControllerTest < ActionController::TestCase
|
|
150
164
|
|
151
165
|
context "DELETE to destroy" do
|
152
166
|
setup do
|
153
|
-
delete :destroy, :id => @access_code.id
|
167
|
+
delete :destroy, :id => @access_code.id, :format => 'js'
|
154
168
|
end
|
155
|
-
|
169
|
+
should_respond_with :success
|
156
170
|
should "destroy the access code provided" do
|
157
171
|
after_code = AccessCode.find(@access_code.id) rescue nil
|
158
172
|
assert_equal nil, after_code
|
@@ -0,0 +1,58 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../test_helper'
|
2
|
+
|
3
|
+
class AccessCodeRequestTest < ActiveSupport::TestCase
|
4
|
+
|
5
|
+
context "access code request instance" do
|
6
|
+
|
7
|
+
setup do
|
8
|
+
@access_code_request = Factory(:access_code_request)
|
9
|
+
end
|
10
|
+
|
11
|
+
subject { @access_code_request }
|
12
|
+
|
13
|
+
should_validate_presence_of :email
|
14
|
+
should_validate_uniqueness_of :email
|
15
|
+
|
16
|
+
context "named scopes" do
|
17
|
+
should_scope_by_newest
|
18
|
+
should_scope_by_oldest
|
19
|
+
|
20
|
+
context "unfullfilled" do
|
21
|
+
#named_scope :unfilled, :conditions => 'access_code_requests.code_sent_at IS NULL'
|
22
|
+
setup do
|
23
|
+
AccessCodeRequest.delete_all
|
24
|
+
@fullfilled = Factory(:access_code_request, :code_sent_at => DateTime.now)
|
25
|
+
@unfullfilled = Factory(:access_code_request)
|
26
|
+
end
|
27
|
+
should "sort by code" do
|
28
|
+
assert !AccessCodeRequest.unfullfilled.include?(@fullfilled)
|
29
|
+
assert AccessCodeRequest.unfullfilled.include?(@unfullfilled)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
|
35
|
+
context "get emails" do
|
36
|
+
setup do
|
37
|
+
# setup a few access codes
|
38
|
+
Factory(:access_code_request)
|
39
|
+
Factory(:access_code_request)
|
40
|
+
Factory(:access_code_request)
|
41
|
+
end
|
42
|
+
should "get 1 access code request" do
|
43
|
+
access_code_requests = AccessCodeRequest.get_requests(1)
|
44
|
+
assert_equal 1, access_code_requests.length
|
45
|
+
end
|
46
|
+
should "get all access code requests" do
|
47
|
+
access_code_requests = AccessCodeRequest.get_requests('')
|
48
|
+
assert access_code_requests.length > 0
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
context "mark_fullfilled" do
|
53
|
+
AccessCodeRequest.mark_fullfilled(AccessCodeRequest.get_requests)
|
54
|
+
end
|
55
|
+
|
56
|
+
end
|
57
|
+
|
58
|
+
end
|
@@ -17,11 +17,12 @@ require File.dirname(__FILE__) + '/../test_helper'
|
|
17
17
|
class AccessCodeTest < ActiveSupport::TestCase
|
18
18
|
|
19
19
|
context "access code instance" do
|
20
|
-
|
21
20
|
setup do
|
22
|
-
Factory(:access_code)
|
21
|
+
@access_code = Factory(:access_code)
|
23
22
|
end
|
24
23
|
|
24
|
+
subject { @access_code }
|
25
|
+
|
25
26
|
should_validate_presence_of :code, :uses
|
26
27
|
should_validate_uniqueness_of :code
|
27
28
|
should_have_many :users
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: muck-users
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Justin Ball
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2010-02-
|
13
|
+
date: 2010-02-08 00:00:00 -07:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -1356,6 +1356,7 @@ files:
|
|
1356
1356
|
- test/rails_root/test/integration/.keep
|
1357
1357
|
- test/rails_root/test/test_helper.rb
|
1358
1358
|
- test/rails_root/test/unit/.keep
|
1359
|
+
- test/rails_root/test/unit/access_code_request_test.rb
|
1359
1360
|
- test/rails_root/test/unit/access_code_test.rb
|
1360
1361
|
- test/rails_root/test/unit/permission_test.rb
|
1361
1362
|
- test/rails_root/test/unit/role_test.rb
|
@@ -1433,6 +1434,7 @@ test_files:
|
|
1433
1434
|
- test/rails_root/test/functional/username_request_controller_test.rb
|
1434
1435
|
- test/rails_root/test/functional/users_controller_test.rb
|
1435
1436
|
- test/rails_root/test/test_helper.rb
|
1437
|
+
- test/rails_root/test/unit/access_code_request_test.rb
|
1436
1438
|
- test/rails_root/test/unit/access_code_test.rb
|
1437
1439
|
- test/rails_root/test/unit/permission_test.rb
|
1438
1440
|
- test/rails_root/test/unit/role_test.rb
|