summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAya Jaff <ayajaff@hotmail.com>2015-09-04 14:01:49 +0200
committerankonym <ankonym@gmail.com>2015-09-28 15:12:46 +0200
commit2ce3d14cfa77f985b6849dd4431db65e9abd0226 (patch)
tree14f59ede560a51ee639407bbda90f86440e48920
parentd13e2d841a632385031a0b98a15773d8b90d05e9 (diff)
Fixed the signup bug that wrongly consumes the invite code.
-rw-r--r--app/models/account.rb5
-rw-r--r--app/models/invite_code_validator.rb4
-rw-r--r--test/unit/account_test.rb20
-rw-r--r--test/unit/invite_code_test.rb16
-rw-r--r--test/unit/invite_code_validator_test.rb2
5 files changed, 25 insertions, 22 deletions
diff --git a/app/models/account.rb b/app/models/account.rb
index a57e3f7..c398d93 100644
--- a/app/models/account.rb
+++ b/app/models/account.rb
@@ -19,8 +19,8 @@ class Account
identity = nil
user = nil
user = User.new(attrs)
-
user.save
+
if !user.tmp? && user.persisted?
identity = user.identity
identity.user_id = user.id
@@ -28,6 +28,9 @@ class Account
identity.errors.each do |attr, msg|
user.errors.add(attr, msg)
end
+ user_invite_code = InviteCode.find_by_invite_code user.invite_code
+ user_invite_code.invite_count += 1
+ user_invite_code.save
end
rescue StandardError => ex
user.errors.add(:base, ex.to_s) if user
diff --git a/app/models/invite_code_validator.rb b/app/models/invite_code_validator.rb
index d03d510..127dc57 100644
--- a/app/models/invite_code_validator.rb
+++ b/app/models/invite_code_validator.rb
@@ -8,10 +8,6 @@ class InviteCodeValidator < ActiveModel::Validator
elsif count_greater_than_zero?(user_invite_code.invite_count)
add_error_to_user("This code has already been used", user)
-
- else
- user_invite_code.invite_count += 1
- user_invite_code.save
end
end
diff --git a/test/unit/account_test.rb b/test/unit/account_test.rb
index 8c66853..0882c43 100644
--- a/test/unit/account_test.rb
+++ b/test/unit/account_test.rb
@@ -49,4 +49,24 @@ class AccountTest < ActiveSupport::TestCase
user.account.destroy
end
+ test "Invite code count goes up by 1 when the invite code is entered" do
+
+ user = Account.create(FactoryGirl.attributes_for(:user, :invite_code => @testcode.invite_code))
+ user_code = InviteCode.find_by_invite_code user.invite_code
+ user_code.save
+ user.save
+ assert user.persisted?
+ assert_equal 1, user_code.invite_count
+
+ end
+
+ test "Invite code stays zero when invite code is not used" do
+ #user = Account.create(FactoryGirl.attributes_for(:user, :invite_code => @testcode.invite_code))
+ invalid_user = FactoryGirl.build(:user, :invite_code => @testcode.invite_code)
+ invalid_user.save
+ user_code = InviteCode.find_by_invite_code invalid_user.invite_code
+ user_code.save
+
+ assert_equal 0, user_code.invite_count
+ end
end
diff --git a/test/unit/invite_code_test.rb b/test/unit/invite_code_test.rb
index 2c9e33f..1b6a002 100644
--- a/test/unit/invite_code_test.rb
+++ b/test/unit/invite_code_test.rb
@@ -20,22 +20,6 @@ class InviteCodeTest < ActiveSupport::TestCase
assert_equal code1.invite_count, 0
end
- test "Invite code count goes up by 1 when the invite code is entered" do
- #TODO but onlz if there are no other errors on the form
-
- validator = InviteCodeValidator.new nil
-
- user = FactoryGirl.build :user
- user_code = InviteCode.new
- user_code.save
- user.invite_code = user_code.invite_code
-
- validator.validate(user)
-
- user_code.reload
- assert_equal 1, user_code.invite_count
-
- end
test "Invite count >0 is not accepted for new account signup" do
validator = InviteCodeValidator.new nil
diff --git a/test/unit/invite_code_validator_test.rb b/test/unit/invite_code_validator_test.rb
index 62768e3..75e691d 100644
--- a/test/unit/invite_code_validator_test.rb
+++ b/test/unit/invite_code_validator_test.rb
@@ -16,7 +16,7 @@ class InviteCodeValidatorTest < ActiveSupport::TestCase
end
test "trying to create a user with invalid invite code should add error" do
- invalid_user = FactoryGirl.build(:user)
+ invalid_user = FactoryGirl.build(:user, :invite_code => "a non-existent code")
invalid_user.valid?