Beispiel #1
0
    def test_assign_roles(self):
        """
        Verify that method `assign_organization_role' assign course-user-roles except
        CourseTeam role for the organization against a course.
        """
        self.assertFalse(self.course2.course_user_roles.all())

        # create default roles for organization
        factories.OrganizationUserRoleFactory(
            role=PublisherUserRole.ProjectCoordinator,
            organization=self.org_extension_2.organization)
        factories.OrganizationUserRoleFactory(
            role=PublisherUserRole.MarketingReviewer,
            organization=self.org_extension_2.organization)

        factories.OrganizationUserRoleFactory(
            role=PublisherUserRole.CourseTeam,
            organization=self.org_extension_2.organization)

        self.course2.assign_organization_role(
            self.org_extension_2.organization)
        self.assertEqual(len(self.course2.course_user_roles.all()), 2)

        self.assertNotIn(PublisherUserRole.CourseTeam,
                         self.course2.course_user_roles.all())
Beispiel #2
0
 def test_only_org_roles(self):
     """
     Verify that view only returns results for the given org.
     """
     factories.OrganizationUserRoleFactory(role=self.pub_slug)
     response = self.query()
     self.assertExpectedRoles(response)  # new role above won't be included
Beispiel #3
0
    def test_role_param(self):
        """
        Verify that view accepts a role query param.
        """
        factories.OrganizationUserRoleFactory(organization=self.organization,
                                              role=self.pub_slug)
        factories.OrganizationUserRoleFactory(organization=self.organization,
                                              role=self.pub_slug)
        factories.OrganizationUserRoleFactory(organization=self.organization,
                                              role=self.pm_slug)

        # Single role
        response = self.query(param='role=%s' % self.pm_slug)
        self.assertExpectedRoles(response, [self.pm_slug])

        # Two roles
        response = self.query(param=f'role={self.pm_slug},{self.pub_slug}')
        self.assertExpectedRoles(response,
                                 [self.pm_slug, self.pub_slug, self.pub_slug])
Beispiel #4
0
    def setUp(self):
        super().setUp()

        self.user = UserFactory.create(username="******",
                                       password=USER_PASSWORD)
        self.client.login(username=self.user.username, password=USER_PASSWORD)
        self.internal_user_group = Group.objects.get(
            name=INTERNAL_USER_GROUP_NAME)
        self.user.groups.add(self.internal_user_group)
        self.pc_slug = InternalUserRole.ProjectCoordinator
        self.pm_slug = InternalUserRole.PartnerManager
        self.pub_slug = InternalUserRole.Publisher
        self.role = factories.OrganizationUserRoleFactory(user=self.user,
                                                          role=self.pc_slug)
        self.organization = self.role.organization
Beispiel #5
0
    def test_published(self):
        person = PersonFactory()
        org = OrganizationFactory()
        primary = DiscoveryCourseRunFactory(key=self.course_run.lms_course_id, staff=[person],
                                            status=CourseRunStatus.Unpublished, announcement=None,
                                            course__partner=self.partner, end=None, enrollment_end=None)
        second = DiscoveryCourseRunFactory(course=primary.course, status=CourseRunStatus.Published, end=None,
                                           enrollment_end=None, start=(primary.start + datetime.timedelta(days=1)))
        third = DiscoveryCourseRunFactory(course=primary.course, status=CourseRunStatus.Published,
                                          end=datetime.datetime(2010, 1, 1, tzinfo=UTC), enrollment_end=None)
        primary.course.authoring_organizations.add(org)
        self.course.organizations.add(org)
        ensure_draft_world(DiscoveryCourse.objects.get(pk=primary.course.pk))

        pc = UserFactory()
        factories.CourseUserRoleFactory(course=self.course, role=PublisherUserRole.ProjectCoordinator, user=pc)
        factories.OrganizationUserRoleFactory(organization=org, role=InternalUserRole.ProjectCoordinator, user=pc)

        self.mock_api_client()

        lookup_value = getattr(primary, self.publisher.unique_field)
        self.mock_node_retrieval(self.publisher.node_lookup_field, lookup_value)
        lookup_value = getattr(third, self.publisher.unique_field)
        self.mock_node_retrieval(self.publisher.node_lookup_field, lookup_value)

        self.mock_get_redirect_form()
        self.mock_add_redirect()

        self.course_run.course_run_state.name = CourseRunStateChoices.Approved
        self.course_run.course_run_state.change_state(CourseRunStateChoices.Published, self.user, self.site)
        primary.refresh_from_db()
        second.refresh_from_db()
        third.refresh_from_db()

        self.assertIsNotNone(primary.announcement)
        self.assertEqual(primary.status, CourseRunStatus.Published)
        self.assertEqual(second.status, CourseRunStatus.Published)  # doesn't change end=None runs
        self.assertEqual(third.status, CourseRunStatus.Unpublished)  # does change archived runs

        # Check email was sent (only one - from old publisher, not new publisher flow)
        assert len(mail.outbox) == 1
        message = mail.outbox[0]
        self.assertTrue(message.subject.startswith('Publication complete: '))
        self.assertEqual(message.to, [self.user.email])
        self.assertEqual(message.cc, [pc.email])
 def setUp(self):
     super(OrganizationUserRoleTests, self).setUp()
     self.org_user_role = factories.OrganizationUserRoleFactory(role=PublisherUserRole.ProjectCoordinator)
Beispiel #7
0
 def setUp(self):
     super().setUp()
     self.org_user_role = factories.OrganizationUserRoleFactory(role=InternalUserRole.ProjectCoordinator)