summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelipe Artur <felipefac@gmail.com>2016-06-02 12:20:24 -0300
committerFelipe Artur <felipefac@gmail.com>2016-06-13 15:51:11 -0300
commitdc2ca594331ff532b1bbb0ba53725644dc4cdc41 (patch)
treef2e7b9dd5553237f8b375d61a3015849c7a1abd6
parente60999ec5c789f1e4e91dd5c71f7c28348164b03 (diff)
downloadgitlab-ce-dc2ca594331ff532b1bbb0ba53725644dc4cdc41.tar.gz
Expose notification setting events in API
-rw-r--r--lib/api/entities.rb3
-rw-r--r--spec/requests/api/projects_spec.rb29
2 files changed, 26 insertions, 6 deletions
diff --git a/lib/api/entities.rb b/lib/api/entities.rb
index 14370ac218d..76f40df96ae 100644
--- a/lib/api/entities.rb
+++ b/lib/api/entities.rb
@@ -275,7 +275,8 @@ module API
expose :access_level
expose :notification_level do |member, options|
if member.notification_setting
- NotificationSetting.levels[member.notification_setting.level]
+ setting = member.notification_setting
+ { level: NotificationSetting.levels[setting.level], events: setting.events }
end
end
end
diff --git a/spec/requests/api/projects_spec.rb b/spec/requests/api/projects_spec.rb
index f167813e07d..2a2ac8710ee 100644
--- a/spec/requests/api/projects_spec.rb
+++ b/spec/requests/api/projects_spec.rb
@@ -428,8 +428,9 @@ describe API::API, api: true do
describe 'permissions' do
context 'all projects' do
- it 'Contains permission information' do
- project.team << [user, :master]
+ before { project.team << [user, :master] }
+
+ it 'contains permission information' do
get api("/projects", user)
expect(response.status).to eq(200)
@@ -437,10 +438,18 @@ describe API::API, api: true do
to eq(Gitlab::Access::MASTER)
expect(json_response.first['permissions']['group_access']).to be_nil
end
+
+ it 'contains notification level information' do
+ get api("/projects", user)
+
+ expect(response.status).to eq(200)
+ expect(json_response.first['permissions']['project_access']['notification_level']['level']).to eq(NotificationSetting.levels[:global])
+ expect(json_response.first['permissions']['project_access']['notification_level'].keys).to include('events')
+ end
end
context 'personal project' do
- it 'Sets project access and returns 200' do
+ it 'sets project access and returns 200' do
project.team << [user, :master]
get api("/projects/#{project.id}", user)
@@ -452,9 +461,11 @@ describe API::API, api: true do
end
context 'group project' do
+ let(:project2) { create(:project, group: create(:group)) }
+
+ before { project2.group.add_owner(user) }
+
it 'should set the owner and return 200' do
- project2 = create(:project, group: create(:group))
- project2.group.add_owner(user)
get api("/projects/#{project2.id}", user)
expect(response.status).to eq(200)
@@ -462,6 +473,14 @@ describe API::API, api: true do
expect(json_response['permissions']['group_access']['access_level']).
to eq(Gitlab::Access::OWNER)
end
+
+ it 'shows notification level information' do
+ get api("/projects/#{project2.id}", user)
+
+ expect(response.status).to eq(200)
+ expect(json_response['permissions']['group_access']['notification_level']['level']).to eq(NotificationSetting.levels[:global])
+ expect(json_response['permissions']['group_access']['notification_level'].keys).to include('events')
+ end
end
end
end