demarches-normaliennes/spec/controllers/email_checker_controller_spec.rb
2024-10-18 16:22:13 +02:00

57 lines
1.5 KiB
Ruby

# frozen_string_literal: true
describe EmailCheckerController, type: :controller do
describe '#show' do
render_views
before { get :show, format: :json, params: params }
let(:body) { JSON.parse(response.body, symbolize_names: true) }
context 'valid email' do
let(:params) { { email: 'martin@orange.fr' } }
it do
expect(response).to have_http_status(:success)
expect(body).to eq({ success: true })
end
end
context 'email with typo' do
let(:params) { { email: 'martin@orane.fr' } }
it do
expect(response).to have_http_status(:success)
expect(body).to eq({ success: true, suggestions: ['martin@orange.fr'] })
end
end
context 'empty' do
let(:params) { { email: '' } }
it do
expect(response).to have_http_status(:success)
expect(body).to eq({ success: false })
end
end
context 'notanemail' do
let(:params) { { email: 'clarkkent' } }
it do
expect(response).to have_http_status(:success)
expect(body).to eq({ success: false })
end
end
context 'incomplete' do
let(:params) { { email: 'bikram.subedi81@' } }
it do
expect(response).to have_http_status(:success)
expect(body).to eq({ success: false })
end
end
context 'malformed' do
let(:params) { { email: { some: 'hash' } } }
it do
expect(response).to have_http_status(:success)
expect(body).to eq({ success: false })
end
end
end
end