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 CHANGED
@@ -1 +1 @@
1
- 0.3.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
- emails = @access_code.emails.split(',')
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 bulk_create_admin_access_codes_path
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
- <%= f.text_field :code, { :label => translate('muck.users.access_code'),
6
- :tip => translate('muck.users.bulk_access_code_tip'),
7
- :hide_required => true } -%>
8
- <%= f.text_field :use_limit, { :label => translate('muck.users.use_limit'),
9
- :tip => translate('muck.users.use_limit_tip') } -%>
10
- <%= f.check_box :unlimited, { :label => translate('muck.users.unlimited'),
11
- :tip => translate('muck.users.unlimited_tip') } -%>
12
- <%= f.text_field :expires_at, { :label => translate('muck.users.expiration_date'),
13
- :tip => translate('muck.users.expiration_date_tip'),
14
- :class => 'date_pick' } -%>
15
- <%= f.text_field :subject, { :label => translate('muck.users.bulk_access_code_subject') } -%>
16
- <%= f.text_area :message, { :label => translate('muck.users.bulk_access_code_message') } -%>
17
- <%= f.text_area :emails, { :label => translate('muck.users.bulk_access_code_emails'),
18
- :tip => translate('muck.users.bulk_access_code_emails_tip') } -%>
19
- <%= f.submit translate('muck.users.save') %>
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.text_field :password, { :label => t('muck.users.password'), :hide_required => true } -%>
6
- <%= f.text_field :password_confirmation, { :label => t('muck.users.confirm_password'), :hide_required => true } -%>
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>
@@ -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 :unfilled, :conditions => 'access_code_requests.code_sent_at IS NULL'
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: Email 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.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-04}
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
- @code = 'randomcode'
61
- @emails = 'test@example.com'
62
- @subject = 'test subject'
63
- @message = 'test message'
64
- @params = {:code => 'testcode', :expires_at => Date.new((DateTime.now.year + 2), 10, 10) }
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, {:access_code => @params, :emails => @emails, :subject => @subject, :message => @message}
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") { bulk_create_admin_access_codes_path }
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, {:access_code => @params.merge(:code => nil), :emails => @emails, :subject => @subject, :message => @message}
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") { bulk_create_admin_access_codes_path }
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, {:access_code => @params, :emails => '', :subject => @subject, :message => @message}
99
+ post :bulk_create, :access_code => @params.merge(:emails => '')
89
100
  end
90
- should_set_the_flash_to(I18n.translate('muck.users.bulk_access_codes_created', :email_count => 0))
91
- should_redirect_to("bulk access code page") { bulk_create_admin_access_codes_path }
92
- should "not setup an access code" do
93
- assert_equal nil, assigns(:access_code)
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
- should_redirect_to("show access code") { admin_access_code_path(assigns(:access_code)) }
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
- should_redirect_to("show access codes") { admin_access_codes_path }
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.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-04 00:00:00 -07:00
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