diff options
Diffstat (limited to 'spec/services/users/email_verification/generate_token_service_spec.rb')
-rw-r--r-- | spec/services/users/email_verification/generate_token_service_spec.rb | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/spec/services/users/email_verification/generate_token_service_spec.rb b/spec/services/users/email_verification/generate_token_service_spec.rb new file mode 100644 index 00000000000..e7aa1bf8306 --- /dev/null +++ b/spec/services/users/email_verification/generate_token_service_spec.rb @@ -0,0 +1,37 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Users::EmailVerification::GenerateTokenService do + using RSpec::Parameterized::TableSyntax + + let(:service) { described_class.new(attr: attr) } + let(:token) { 'token' } + let(:digest) { Devise.token_generator.digest(User, attr, token) } + + describe '#execute' do + context 'with a valid attribute' do + where(:attr) { [:unlock_token, :confirmation_token] } + + with_them do + before do + allow_next_instance_of(described_class) do |service| + allow(service).to receive(:generate_token).and_return(token) + end + end + + it "returns a token and it's digest" do + expect(service.execute).to eq([token, digest]) + end + end + end + + context 'with an invalid attribute' do + let(:attr) { :xxx } + + it 'raises an error' do + expect { service.execute }.to raise_error(ArgumentError, 'Invalid attribute') + end + end + end +end |