muck-users 0.3.3 → 0.3.4

Sign up to get free protection for your applications and to get access to all the features.
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