Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
C
course-discovery
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
edx
course-discovery
Commits
31a294cd
Commit
31a294cd
authored
May 23, 2017
by
Waheed Ahmed
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fixed same role can be added multiple times against an Org or Course.
ECOM-7823
parent
526bda7e
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
57 additions
and
48 deletions
+57
-48
course_discovery/apps/publisher/api/tests/test_views.py
+10
-14
course_discovery/apps/publisher/migrations/0050_auto_20170523_1006.py
+26
-0
course_discovery/apps/publisher/models.py
+4
-2
course_discovery/apps/publisher/tests/test_model.py
+2
-2
course_discovery/apps/publisher/tests/test_views.py
+7
-7
course_discovery/apps/publisher_comments/tests/test_emails.py
+8
-23
No files found.
course_discovery/apps/publisher/api/tests/test_views.py
View file @
31a294cd
...
...
@@ -195,6 +195,7 @@ class UpdateCourseRunViewTests(TestCase):
super
(
UpdateCourseRunViewTests
,
self
)
.
setUp
()
self
.
course_run
=
factories
.
CourseRunFactory
()
self
.
user
=
UserFactory
()
self
.
course_team_user
=
UserFactory
()
self
.
user
.
groups
.
add
(
Group
.
objects
.
get
(
name
=
INTERNAL_USER_GROUP_NAME
))
self
.
organization_extension
=
factories
.
OrganizationExtensionFactory
()
...
...
@@ -210,6 +211,12 @@ class UpdateCourseRunViewTests(TestCase):
user
=
self
.
user
)
factories
.
CourseUserRoleFactory
(
role
=
PublisherUserRole
.
CourseTeam
,
course
=
self
.
course_run
.
course
,
user
=
self
.
course_team_user
)
factories
.
UserAttributeFactory
(
user
=
self
.
user
,
enable_email_notification
=
True
)
toggle_switch
(
'enable_publisher_email_notifications'
,
True
)
self
.
client
.
login
(
username
=
self
.
user
.
username
,
password
=
USER_PASSWORD
)
...
...
@@ -272,11 +279,6 @@ class UpdateCourseRunViewTests(TestCase):
# By default `lms_course_id` and `changed_by` are None
self
.
assert_course_key_and_changed_by
()
# create course team role for email
factories
.
CourseUserRoleFactory
(
course
=
self
.
course_run
.
course
,
role
=
PublisherUserRole
.
CourseTeam
,
user
=
self
.
user
)
lms_course_id
=
'course-v1:edxTest+TC12+2050Q1'
response
=
self
.
client
.
patch
(
self
.
update_course_run_url
,
...
...
@@ -308,7 +310,7 @@ class UpdateCourseRunViewTests(TestCase):
Helper method to assert sent email data.
"""
self
.
assertEqual
(
len
(
mail
.
outbox
),
1
)
self
.
assertEqual
([
self
.
user
.
email
],
mail
.
outbox
[
0
]
.
to
)
self
.
assertEqual
([
self
.
course_team_
user
.
email
],
mail
.
outbox
[
0
]
.
to
)
self
.
assertEqual
(
str
(
mail
.
outbox
[
0
]
.
subject
),
subject
)
body
=
mail
.
outbox
[
0
]
.
body
.
strip
()
...
...
@@ -325,9 +327,6 @@ class UpdateCourseRunViewTests(TestCase):
factories
.
CourseUserRoleFactory
(
course
=
self
.
course_run
.
course
,
role
=
PublisherUserRole
.
Publisher
)
course_team_role
=
factories
.
CourseUserRoleFactory
(
course
=
self
.
course_run
.
course
,
role
=
PublisherUserRole
.
CourseTeam
)
response
=
self
.
_make_request
(
preview_url
)
self
.
assertEqual
(
response
.
status_code
,
200
)
...
...
@@ -340,7 +339,7 @@ class UpdateCourseRunViewTests(TestCase):
run_number
=
course_key
.
run
)
self
.
assertEqual
(
len
(
mail
.
outbox
),
1
)
self
.
assertEqual
([
course_team_role
.
user
.
email
],
mail
.
outbox
[
0
]
.
to
)
self
.
assertEqual
([
self
.
course_team_
user
.
email
],
mail
.
outbox
[
0
]
.
to
)
self
.
assertEqual
(
str
(
mail
.
outbox
[
0
]
.
subject
),
subject
)
def
test_update_with_invalid_preview_url
(
self
):
...
...
@@ -364,10 +363,7 @@ class UpdateCourseRunViewTests(TestCase):
"""
preview_url
=
'https://example.com/abc/course'
factories
.
CourseRunStateFactory
.
create
(
course_run
=
self
.
course_run
,
owner_role
=
PublisherUserRole
.
Publisher
)
course_team_role
=
factories
.
CourseUserRoleFactory
(
course
=
self
.
course_run
.
course
,
role
=
PublisherUserRole
.
CourseTeam
)
factories
.
UserAttributeFactory
(
user
=
course_team_role
.
user
,
enable_email_notification
=
False
)
factories
.
UserAttributeFactory
(
user
=
self
.
course_team_user
,
enable_email_notification
=
False
)
response
=
self
.
_make_request
(
preview_url
)
...
...
course_discovery/apps/publisher/migrations/0050_auto_20170523_1006.py
0 → 100644
View file @
31a294cd
# -*- coding: utf-8 -*-
# Generated by Django 1.10.7 on 2017-05-23 10:06
from
__future__
import
unicode_literals
from
django.conf
import
settings
from
django.db
import
migrations
class
Migration
(
migrations
.
Migration
):
dependencies
=
[
(
'course_metadata'
,
'0054_update_program_type_slug_field'
),
migrations
.
swappable_dependency
(
settings
.
AUTH_USER_MODEL
),
(
'publisher'
,
'0049_auto_20170518_1017'
),
]
operations
=
[
migrations
.
AlterUniqueTogether
(
name
=
'courseuserrole'
,
unique_together
=
set
([(
'course'
,
'user'
),
(
'course'
,
'role'
)]),
),
migrations
.
AlterUniqueTogether
(
name
=
'organizationuserrole'
,
unique_together
=
set
([(
'organization'
,
'role'
),
(
'organization'
,
'user'
)]),
),
]
course_discovery/apps/publisher/models.py
View file @
31a294cd
...
...
@@ -398,7 +398,8 @@ class OrganizationUserRole(TimeStampedModel):
class
Meta
:
unique_together
=
(
(
'organization'
,
'user'
,
'role'
),
(
'organization'
,
'user'
),
(
'organization'
,
'role'
),
)
def
__str__
(
self
):
...
...
@@ -421,7 +422,8 @@ class CourseUserRole(TimeStampedModel, ChangedByMixin):
class
Meta
:
unique_together
=
(
(
'course'
,
'user'
,
'role'
),
(
'course'
,
'user'
),
(
'course'
,
'role'
),
)
def
__str__
(
self
):
...
...
course_discovery/apps/publisher/tests/test_model.py
View file @
31a294cd
...
...
@@ -201,8 +201,8 @@ class CourseTests(TestCase):
permitted to access the course AND have not disabled email notifications.
"""
self
.
assertListEqual
(
s
elf
.
course
.
get_course_users_emails
(
),
[
self
.
user1
.
email
,
self
.
user2
.
email
,
self
.
user3
.
email
]
s
orted
(
self
.
course
.
get_course_users_emails
()
),
sorted
([
self
.
user1
.
email
,
self
.
user2
.
email
,
self
.
user3
.
email
])
)
# The email addresses of users who have disabled email notifications should NOT be returned.
...
...
course_discovery/apps/publisher/tests/test_views.py
View file @
31a294cd
...
...
@@ -1318,9 +1318,9 @@ class DashboardTests(TestCase):
self
.
assert_dashboard_response
(
studio_count
=
0
,
published_count
=
0
,
progress_count
=
0
,
preview_count
=
0
)
# assign user course role
factories
.
CourseUserRoleFactory
(
course
=
self
.
course_run_3
.
course
,
user
=
internal_user
,
role
=
PublisherUserRole
.
ProjectCoordinato
r
)
course_role
=
self
.
course_run_3
.
course
.
course_user_roles
.
get
(
role
=
PublisherUserRole
.
ProjectCoordinator
)
course_role
.
user
=
internal_use
r
course_role
.
save
(
)
# Verify that user can see 1 published course run
response
=
self
.
assert_dashboard_response
(
studio_count
=
0
,
published_count
=
1
,
progress_count
=
0
,
preview_count
=
0
)
...
...
@@ -1767,6 +1767,9 @@ class CourseDetailViewTests(TestCase):
"""
Verify that user can see approval widget on course detail page with `Mark as Reviewed`.
"""
self
.
course_team_role
.
user
=
UserFactory
()
self
.
course_team_role
.
save
()
factories
.
CourseUserRoleFactory
(
course
=
self
.
course
,
user
=
self
.
user
,
role
=
PublisherUserRole
.
MarketingReviewer
)
...
...
@@ -1774,14 +1777,11 @@ class CourseDetailViewTests(TestCase):
self
.
course_state
.
name
=
CourseStateChoices
.
Review
self
.
course_state
.
save
()
self
.
course_team_role
.
user
=
UserFactory
()
self
.
course_team_role
.
save
()
self
.
user
.
groups
.
add
(
self
.
organization_extension
.
group
)
assign_perm
(
OrganizationExtension
.
VIEW_COURSE
,
self
.
organization_extension
.
group
,
self
.
organization_extension
)
response
=
self
.
client
.
get
(
self
.
detail_page_url
)
# Verify that content is sent for review and user can see
Reviewed
button.
# Verify that content is sent for review and user can see
"Mark as Reviewed"
button.
self
.
assertContains
(
response
,
'Mark as Reviewed'
)
self
.
assertContains
(
response
,
'<span class="icon fa fa-check" aria-hidden="true">'
)
self
.
assertContains
(
response
,
'Sent for Review'
)
...
...
course_discovery/apps/publisher_comments/tests/test_emails.py
View file @
31a294cd
...
...
@@ -11,7 +11,7 @@ from testfixtures import LogCapture
from
course_discovery.apps.core.tests.factories
import
UserFactory
from
course_discovery.apps.course_metadata.tests
import
toggle_switch
from
course_discovery.apps.publisher.choices
import
PublisherUserRole
from
course_discovery.apps.publisher.models
import
CourseRun
,
CourseUserRole
from
course_discovery.apps.publisher.models
import
CourseRun
,
CourseUserRole
,
UserAttributes
from
course_discovery.apps.publisher.tests
import
factories
from
course_discovery.apps.publisher.tests.factories
import
UserAttributeFactory
from
course_discovery.apps.publisher_comments.emails
import
log
as
comments_email_logger
...
...
@@ -45,11 +45,11 @@ class CommentsEmailTests(TestCase):
# add user in course-user-role table
factories
.
CourseUserRoleFactory
(
course
=
self
.
course
,
role
=
PublisherUserRole
.
ProjectCoordinato
r
,
user
=
self
.
user
course
=
self
.
course
,
role
=
PublisherUserRole
.
MarketingReviewe
r
,
user
=
self
.
user
)
factories
.
CourseUserRoleFactory
(
course
=
self
.
course
,
role
=
PublisherUserRole
.
ProjectCoordinator
,
user
=
self
.
user_2
course
=
self
.
course
,
role
=
PublisherUserRole
.
CourseTeam
,
user
=
self
.
user_2
)
factories
.
CourseUserRoleFactory
(
...
...
@@ -148,28 +148,16 @@ class CommentsEmailTests(TestCase):
def
test_email_with_roles
(
self
):
""" Verify that emails send to the users against course-user-roles also."""
user_4
=
UserFactory
()
user_5
=
UserFactory
()
# assign the role against a course
factories
.
CourseUserRoleFactory
(
course
=
self
.
course
,
role
=
PublisherUserRole
.
MarketingReviewer
,
user
=
user_4
)
factories
.
CourseUserRoleFactory
(
course
=
self
.
course
,
role
=
PublisherUserRole
.
ProjectCoordinator
,
user
=
user_5
)
UserAttributeFactory
(
user
=
self
.
user_2
,
enable_email_notification
=
True
)
user_attribute
,
__
=
UserAttributes
.
objects
.
get_or_create
(
user
=
self
.
user_3
)
user_attribute
.
enable_email_notification
=
True
user_attribute
.
save
()
self
.
create_comment
(
content_object
=
self
.
course_run
)
self
.
assertEqual
(
len
(
mail
.
outbox
),
1
)
self
.
assertEqual
([
self
.
user_2
.
email
,
user_4
.
email
,
user_5
.
email
],
mail
.
outbox
[
0
]
.
to
)
self
.
assertEqual
([
self
.
user_2
.
email
,
self
.
user_3
.
email
],
mail
.
outbox
[
0
]
.
to
)
def
test_email_for_roles_only
(
self
):
""" Verify the emails send to the course roles users even if groups has no users. """
user_4
=
UserFactory
()
# assign the role against a course
factories
.
CourseUserRoleFactory
(
course
=
self
.
course
,
role
=
PublisherUserRole
.
MarketingReviewer
,
user
=
user_4
)
self
.
create_comment
(
content_object
=
self
.
course
)
self
.
assertEqual
(
len
(
mail
.
outbox
),
1
)
...
...
@@ -192,9 +180,6 @@ class CommentsEmailTests(TestCase):
""" Verify that after editing a comment against a course emails send
to multiple users.
"""
factories
.
CourseUserRoleFactory
(
course
=
self
.
course
,
role
=
PublisherUserRole
.
Publisher
,
user
=
self
.
user
)
comment
=
self
.
create_comment
(
content_object
=
self
.
course_run
)
comment
.
comment
=
'Update the comment'
comment
.
save
()
# pylint: disable=no-member
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment