From c18b08351649a04351c2c389fb25f48b08394e0e Mon Sep 17 00:00:00 2001 From: rhymes Date: Wed, 14 Apr 2021 14:36:51 +0200 Subject: [PATCH] Restore test using Validatable and support both scenarios --- lib/devise_invitable/models.rb | 4 +++- test/models/invitable_test.rb | 10 ++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/lib/devise_invitable/models.rb b/lib/devise_invitable/models.rb index 83ce68db..cb1755a4 100644 --- a/lib/devise_invitable/models.rb +++ b/lib/devise_invitable/models.rb @@ -397,8 +397,10 @@ def after_invitation_accepted(*args, &blk) # lower + upper case, a digit and a symbol. # For more unusual rules, this method can be overridden. def random_password + length = respond_to?(:password_length) ? password_length : Devise.password_length + prefix = 'aA1!' - prefix + Devise.friendly_token(Devise.password_length.last - prefix.length) + prefix + Devise.friendly_token(length.last - prefix.length) end end end diff --git a/test/models/invitable_test.rb b/test/models/invitable_test.rb index 3449a783..a594730d 100644 --- a/test/models/invitable_test.rb +++ b/test/models/invitable_test.rb @@ -1,6 +1,10 @@ require 'test_helper' require 'model_tests_helper' +class Validatable < User + devise :validatable, password_length: 10..20 +end + class InvitableTest < ActiveSupport::TestCase def setup @@ -766,4 +770,10 @@ def assert_callbacks_status(callback, user, fired) assert_empty user.errors assert_equal Devise.password_length.last, user.password.length end + + test 'should set initial passsword using :validatable with custom password_length' do + user = Validatable.invite!(email: 'valid@email.com') + assert_empty user.errors + assert_equal Validatable.password_length.last, user.password.length + end end