Commit 839c3b19 authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets

Merge branch 'feature/email_when_added_to_group' of /home/git/repositories/gitlab/gitlabhq

parents 069a6dfa c1dd31cf
module Emails
module Groups
def group_access_granted_email(user_group_id)
@membership = UsersGroup.find(user_group_id)
@group = @membership.group
mail(to: @membership.user.email,
subject: subject("access to group was granted"))
end
end
end
module Emails
module Profile
def new_user_email(user_id, password)
@user = User.find(user_id)
@password = password
mail(to: @user.email, subject: subject("Account was created for you"))
end
def new_ssh_key_email(key_id)
@key = Key.find(key_id)
@user = @key.user
mail(to: @user.email, subject: subject("SSH key was added to your account"))
end
end
end
......@@ -7,7 +7,6 @@ module Emails
subject: subject("access to project was granted"))
end
def project_was_moved_email(project_id, user_id)
@user = User.find user_id
@project = Project.find project_id
......
......@@ -3,6 +3,8 @@ class Notify < ActionMailer::Base
include Emails::MergeRequests
include Emails::Notes
include Emails::Projects
include Emails::Profile
include Emails::Groups
add_template_helper ApplicationHelper
add_template_helper GitlabMarkdownHelper
......@@ -20,18 +22,6 @@ class Notify < ActionMailer::Base
delay_for(2.seconds)
end
def new_user_email(user_id, password)
@user = User.find(user_id)
@password = password
mail(to: @user.email, subject: subject("Account was created for you"))
end
def new_ssh_key_email(key_id)
@key = Key.find(key_id)
@user = @key.user
mail(to: @user.email, subject: subject("SSH key was added to your account"))
end
private
# Look up a User by their ID and return their email address
......
class UsersGroupObserver < BaseObserver
def after_create(membership)
notification.new_group_member(membership)
end
def after_update(membership)
notification.update_group_member(membership)
end
end
......@@ -148,6 +148,14 @@ class NotificationService
mailer.project_access_granted_email(users_project.id)
end
def new_group_member(users_group)
mailer.group_access_granted_email(users_group.id)
end
def update_group_member(users_group)
mailer.group_access_granted_email(users_group.id)
end
protected
# Get project users with WATCH notification level
......
%p
= "You have been granted #{@membership.human_access} access to group"
%p
= link_to group_url(@group) do
= @group.name
You have been granted <%= @membership.human_access %> access to group <%= @group.name %>
<%= url_for(group_url(@group)) %>
......@@ -32,6 +32,7 @@ module Gitlab
:project_observer,
:system_hook_observer,
:user_observer,
:users_group_observer,
:users_project_observer
# Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
......
......@@ -347,4 +347,24 @@ describe Notify do
end
end
end
describe 'group access changed' do
let(:group) { create(:group) }
let(:user) { create(:user) }
let(:membership) { create(:users_group, group: group, user: user) }
subject { Notify.group_access_granted_email(membership.id) }
it 'has the correct subject' do
should have_subject /access to group was granted/
end
it 'contains name of project' do
should have_body_text /#{group.name}/
end
it 'contains new user role' do
should have_body_text /#{membership.human_access}/
end
end
end
require 'spec_helper'
describe UsersGroupObserver do
before(:each) { enable_observers }
after(:each) { disable_observers }
subject { UsersGroupObserver.instance }
before { subject.stub(notification: mock('NotificationService').as_null_object) }
describe "#after_create" do
it "should send email to user" do
subject.should_receive(:notification)
create(:users_group)
end
end
describe "#after_update" do
before do
@membership = create :users_group
end
it "should send email to user" do
subject.should_receive(:notification)
@membership.update_attribute(:group_access, UsersGroup::MASTER)
end
end
end
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