Commit aaeb37419ac00ed065f1c88f617db5788ada8525
1 parent
2c32574a
Exists in
master
and in
4 other branches
Send notifiation on create UserProject relation (access granted)
Showing
6 changed files
with
78 additions
and
0 deletions
Show diff stats
app/mailers/notify.rb
... | ... | @@ -76,6 +76,13 @@ class Notify < ActionMailer::Base |
76 | 76 | mail(to: recipient(recipient_id), subject: subject("changed issue ##{@issue.id}", @issue.title)) |
77 | 77 | end |
78 | 78 | |
79 | + def project_access_granted_email(user_project_id) | |
80 | + @users_project = UsersProject.find user_project_id | |
81 | + @project = @users_project.project | |
82 | + mail(to: @users_project.user.email, | |
83 | + subject: subject("access to project was granted")) | |
84 | + end | |
85 | + | |
79 | 86 | private |
80 | 87 | |
81 | 88 | # Look up a User by their ID and return their email address | ... | ... |
... | ... | @@ -0,0 +1,14 @@ |
1 | +%td.content{align: "left", style: "font-family: Helvetica, Arial, sans-serif; padding: 20px 0 0;", valign: "top", width: "600"} | |
2 | + %table{border: "0", cellpadding: "0", cellspacing: "0", style: "color: #717171; font: normal 11px Helvetica, Arial, sans-serif; margin: 0; padding: 0;", width: "600"} | |
3 | + %tr | |
4 | + %td{style: "font-size: 1px; line-height: 1px;", width: "21"} | |
5 | + %td{align: "left", style: "padding: 20px 0 0;"} | |
6 | + %h2{style: "color:#646464; font-weight: bold; margin: 0; padding: 0; line-height: 26px; font-size: 18px; font-family: Helvetica, Arial, sans-serif; "} | |
7 | + = "You got granted #{@users_project.project_access_human} access to project" | |
8 | + %td{style: "font-size: 1px; line-height: 1px;", width: "21"} | |
9 | + %tr | |
10 | + %td{style: "font-size: 1px; line-height: 1px;", width: "21"} | |
11 | + %td{align: "left", style: "padding: 20px 0 0;"} | |
12 | + %h2{style: "color:#646464 !important; font-weight: bold; margin: 0; padding: 0; line-height: 26px; font-size: 18px; font-family: Helvetica, Arial, sans-serif; "} | |
13 | + = link_to_gfm truncate(@project.name, length: 45), project_url(@project), title: @project.name | |
14 | + %br | ... | ... |
spec/factories.rb
... | ... | @@ -90,3 +90,8 @@ Factory.add(:milestone, Milestone) do |obj| |
90 | 90 | obj.title = Faker::Lorem.sentence |
91 | 91 | obj.due_date = Date.today + 1.month |
92 | 92 | end |
93 | + | |
94 | +Factory.add(:users_project, UsersProject) do |obj| | |
95 | + obj.user = Factory :user | |
96 | + obj.project = Factory :project | |
97 | +end | ... | ... |
spec/mailers/notify_spec.rb
... | ... | @@ -145,6 +145,26 @@ describe Notify do |
145 | 145 | end |
146 | 146 | end |
147 | 147 | |
148 | + describe 'project access changed' do | |
149 | + let(:project) { Factory.create(:project, | |
150 | + path: "Fuu", | |
151 | + code: "Fuu") } | |
152 | + let(:user) { Factory.create :user } | |
153 | + let(:users_project) { Factory.create(:users_project, | |
154 | + project: project, | |
155 | + user: user) } | |
156 | + subject { Notify.project_access_granted_email(users_project.id) } | |
157 | + it 'has the correct subject' do | |
158 | + should have_subject /access to project was granted/ | |
159 | + end | |
160 | + it 'contains name of project' do | |
161 | + should have_body_text /#{project.name}/ | |
162 | + end | |
163 | + it 'contains new user role' do | |
164 | + should have_body_text /#{users_project.project_access_human}/ | |
165 | + end | |
166 | + end | |
167 | + | |
148 | 168 | context 'items that are noteable, the email for a note' do |
149 | 169 | let(:note_author) { Factory.create(:user, name: 'author_name') } |
150 | 170 | let(:note) { Factory.create(:note, project: project, author: note_author) } | ... | ... |
... | ... | @@ -0,0 +1,27 @@ |
1 | +require 'spec_helper' | |
2 | + | |
3 | +describe UsersProjectObserver do | |
4 | + let(:user) { Factory.create :user } | |
5 | + let(:project) { Factory.create(:project, | |
6 | + code: "Fuu", | |
7 | + path: "Fuu" ) } | |
8 | + let(:users_project) { Factory.create(:users_project, | |
9 | + project: project, | |
10 | + user: user )} | |
11 | + subject { UsersProjectObserver.instance } | |
12 | + | |
13 | + describe "#after_create" do | |
14 | + it "should called when UsersProject created" do | |
15 | + subject.should_receive(:after_create) | |
16 | + UsersProject.observers.enable :users_project_observer do | |
17 | + Factory.create(:users_project, | |
18 | + project: project, | |
19 | + user: user) | |
20 | + end | |
21 | + end | |
22 | + it "should send email to user" do | |
23 | + Notify.should_receive(:project_access_granted_email).with(users_project.id).and_return(double(deliver: true)) | |
24 | + subject.after_create(users_project) | |
25 | + end | |
26 | + end | |
27 | +end | ... | ... |