Skip to content
Snippets Groups Projects
Commit 1dcb7111 authored by James Lopez's avatar James Lopez
Browse files

refactor emails service

parent e07819cb
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -155,7 +155,7 @@ class Admin::UsersController < Admin::ApplicationController
 
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
Loading
Loading
Loading
Loading
@@ -5,7 +5,7 @@ class Profiles::EmailsController < Profiles::ApplicationController
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)
Loading
Loading
@@ -19,7 +19,7 @@ class Profiles::EmailsController < Profiles::ApplicationController
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 }
Loading
Loading
Loading
Loading
@@ -526,8 +526,8 @@ class User < ActiveRecord::Base
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
 
Loading
Loading
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
Loading
Loading
Loading
Loading
@@ -326,7 +326,7 @@ module API
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)
Loading
Loading
@@ -367,7 +367,7 @@ module API
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!
Loading
Loading
@@ -672,7 +672,7 @@ module API
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)
Loading
Loading
@@ -691,7 +691,7 @@ module API
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!
Loading
Loading
Loading
Loading
@@ -2,9 +2,9 @@ require 'spec_helper'
 
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
Loading
Loading
Loading
Loading
@@ -4,7 +4,7 @@ describe Emails::DestroyService do
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
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment