diff options
author | ankonym <ankonym@gmail.com> | 2015-10-02 20:58:29 +0200 |
---|---|---|
committer | ankonym <ankonym@gmail.com> | 2015-10-02 20:58:29 +0200 |
commit | 6f09343e85ab23c4d81f827bbd47a720f3e2cf7b (patch) | |
tree | 0b0cdcdf0646f09a8d17baf9199e993b3151b188 | |
parent | 82a33300818dd8f6e06856944fe7c658746efca1 (diff) |
Update rake task to allow generation of multi-use invites
The rake task now takes a second (optional) argument that sets the number of uses per invite code.
If this is omitted, the default number of uses is 1.
(This commit also contains some minor code cleanup that removes some stuff that I'd commented out but not removed.)
-rw-r--r-- | app/models/invite_code_validator.rb | 8 | ||||
-rw-r--r-- | lib/tasks/invite_code.rake | 21 | ||||
-rw-r--r-- | test/unit/invite_code_test.rb | 17 |
3 files changed, 16 insertions, 30 deletions
diff --git a/app/models/invite_code_validator.rb b/app/models/invite_code_validator.rb index d52e698..9dfe6fa 100644 --- a/app/models/invite_code_validator.rb +++ b/app/models/invite_code_validator.rb @@ -1,4 +1,5 @@ class InviteCodeValidator < ActiveModel::Validator + def validate(user) user_invite_code = InviteCode.find_by_invite_code user.invite_code @@ -8,9 +9,6 @@ class InviteCodeValidator < ActiveModel::Validator elsif has_no_uses_left?(user_invite_code) add_error_to_user("This code has already been used", user) - - # elsif count_greater_than_zero?(user_invite_code) - # add_error_to_user("This code has already been used", user) end end @@ -23,10 +21,6 @@ class InviteCodeValidator < ActiveModel::Validator code.invite_count >= code.invite_max_uses end - # def count_greater_than_zero?(code) - # code.invite_count > 0 - # end - def add_error_to_user(error, user) user.errors[:invite_code] << error end diff --git a/lib/tasks/invite_code.rake b/lib/tasks/invite_code.rake index f3bafac..6623640 100644 --- a/lib/tasks/invite_code.rake +++ b/lib/tasks/invite_code.rake @@ -1,16 +1,25 @@ desc "Generate a batch of invite codes" -task :generate_invites, [:n] => :environment do |task, args| +task :generate_invites, [:n, :u] => :environment do |task, args| - codes = args.n - codes = codes.to_i + codes = args.n + codes = codes.to_i - codes.times do |x| + if args.u == nil + max_uses = 1 + + elsif + max_uses = args.u + max_uses = max_uses.to_i + end + + codes.times do |x| x = InviteCode.new + x.invite_max_uses = max_uses x.save - puts "#{x.invite_code} Code generated." - + puts "#{x.invite_code} Code generated with #{x.invite_max_uses} uses." end + end diff --git a/test/unit/invite_code_test.rb b/test/unit/invite_code_test.rb index 7e14a03..adaf397 100644 --- a/test/unit/invite_code_test.rb +++ b/test/unit/invite_code_test.rb @@ -20,23 +20,6 @@ class InviteCodeTest < ActiveSupport::TestCase assert_equal code1.invite_count, 0 end - - # test "Invite count >0 is not accepted for new account signup" do - # validator = InviteCodeValidator.new nil - # - # user_code = InviteCode.new - # user_code.invite_count = 1 - # user_code.save - # - # user = FactoryGirl.build :user - # user.invite_code = user_code.invite_code - # - # validator.validate(user) - # - # assert_equal ["This code has already been used"], user.errors[:invite_code] - # - # end - test "Invite count >= invite max uses is not accepted for new account signup" do validator = InviteCodeValidator.new nil |