Commit 1dcb7111 authored by James Lopez's avatar James Lopez
Browse files

refactor emails service

parent ea44e4a29e0d
......@@ -155,7 +155,7 @@ def destroy
def remove_email
email = user.emails.find(params[:email_id])
success = Emails::DestroyService.new(current_user, user, email: email.email).execute
success = Emails::DestroyService.new(current_user, user: user, email: email.email).execute
respond_to do |format|
if success
......
......@@ -5,7 +5,7 @@ def index
end
def create
@email = Emails::CreateService.new(current_user, current_user, email_params).execute
@email = Emails::CreateService.new(current_user, email_params.merge(user: current_user)).execute
if @email.errors.blank?
NotificationService.new.new_email(@email)
......@@ -19,7 +19,7 @@ def create
def destroy
@email = current_user.emails.find(params[:id])
Emails::DestroyService.new(current_user, current_user, email: @email.email).execute
Emails::DestroyService.new(current_user, user: current_user, email: @email.email).execute
respond_to do |format|
format.html { redirect_to profile_emails_url, status: 302 }
......
......@@ -526,8 +526,8 @@ def owns_public_email
def update_emails_with_primary_email
primary_email_record = emails.find_by(email: email)
if primary_email_record
Emails::DestroyService.new(self, self, email: email).execute
Emails::CreateService.new(self, self, email: email_was).execute
Emails::DestroyService.new(self, user: self, email: email).execute
Emails::CreateService.new(self, user: self, email: email_was).execute
end
end
......
module Emails
class BaseService
def initialize(current_user, user, opts)
def initialize(current_user, opts)
@current_user = current_user
@user = user
@user = opts.delete(:user)
@email = opts[:email]
end
end
......
......@@ -326,7 +326,7 @@ def find_user_by_id(params)
user = User.find_by(id: params.delete(:id))
not_found!('User') unless user
email = Emails::CreateService.new(current_user, user, declared_params(include_missing: false)).execute
email = Emails::CreateService.new(current_user, declared_params(include_missing: false).merge(user: user)).execute
if email.errors.blank?
NotificationService.new.new_email(email)
......@@ -367,7 +367,7 @@ def find_user_by_id(params)
not_found!('Email') unless email
destroy_conditionally!(email) do |email|
Emails::DestroyService.new(current_user, user, email: email.email).execute
Emails::DestroyService.new(current_user, user: user, email: email.email).execute
end
user.update_secondary_emails!
......@@ -672,7 +672,7 @@ def find_impersonation_token
requires :email, type: String, desc: 'The new email'
end
post "emails" do
email = Emails::CreateService.new(current_user, current_user, declared_params).execute
email = Emails::CreateService.new(current_user, declared_params.merge(user: current_user)).execute
if email.errors.blank?
NotificationService.new.new_email(email)
......@@ -691,7 +691,7 @@ def find_impersonation_token
not_found!('Email') unless email
destroy_conditionally!(email) do |email|
Emails::DestroyService.new(current_user, current_user, email: email.email).execute
Emails::DestroyService.new(current_user, user: current_user, email: email.email).execute
end
current_user.update_secondary_emails!
......
......@@ -2,9 +2,9 @@
describe Emails::CreateService do
let(:user) { create(:user) }
let(:opts) { { email: 'new@email.com' } }
let(:opts) { { email: 'new@email.com', user: user } }
subject(:service) { described_class.new(user, user, opts) }
subject(:service) { described_class.new(user, opts) }
describe '#execute' do
it 'creates an email with valid attributes' do
......
......@@ -4,7 +4,7 @@
let!(:user) { create(:user) }
let!(:email) { create(:email, user: user) }
subject(:service) { described_class.new(user, user, email: email.email) }
subject(:service) { described_class.new(user, user: user, email: email.email) }
describe '#execute' do
it 'removes an email' do
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment