Esempio n. 1
0
 def setUpTestData(cls):
     cls.current_user = factories.UserFactory()
     cls.workspace = factories.WorkspaceFactory(creator=cls.current_user)
     cls.workspace.grant_membership(cls.current_user,
                                    models.Membership.OWNER)
     cls.user = factories.UserFactory()
     cls.membership, _ = cls.workspace.grant_membership(
         cls.user, models.Membership.READONLY)
     cls.request = collections.namedtuple('Request',
                                          ['user'])(user=cls.current_user)
Esempio n. 2
0
 def test_vote(self):
     """It should cast a vote successfully.
     """
     voter = factories.UserFactory()
     resource = self.factory()
     vote = resource.vote(voter, models.Vote.UP)
     self.assertEqual(type(vote), models.Vote)
Esempio n. 3
0
 def setUpTestData(cls):
     cls.commentable = factories.TableFactory()
     cls.workspace = cls.commentable.workspace
     cls.user = factories.UserFactory()
     cls.comment = cls.commentable.comments.create(
         author=cls.user,
         html='This is a test',
     )
Esempio n. 4
0
    def test_get_vote_when_not_exists(self):
        """It should return the vote if exists.
        """
        voter = factories.UserFactory()
        resource = self.factory()

        self.assertEqual(
            None,
            resource.get_vote(voter),
        )
Esempio n. 5
0
    def test_delete_vote(self):
        """It should delete the vote and update the counters.
        """
        voter = factories.UserFactory()
        resource = self.factory()

        resource.vote(voter, models.Vote.UP)
        resource.delete_vote(voter)

        self.assertEqual(resource.votes.count(), 0)
Esempio n. 6
0
    def test_get_vote_when_exists(self):
        """It should return the vote if exists.
        """
        voter = factories.UserFactory()
        resource = self.factory()
        vote = resource.vote(voter, models.Vote.UP)

        self.assertEqual(
            vote,
            resource.get_vote(voter),
        )
Esempio n. 7
0
    def test_pin(self):
        """It should mark the `pinned_at` timestamp.
        """
        user = factories.UserFactory()
        comment = self.factory()
        comment.pin(user)
        pinned_at = comment.pinned_at
        self.assertTrue(pinned_at is not None)
        self.assertTrue(comment.pinned)

        comment.pin(user)
        self.assertTrue(pinned_at, comment.pinned_at)
Esempio n. 8
0
    def test_valid_update(self):
        """It should create the group membership.
        """
        user = factories.UserFactory()
        self.workspace.grant_membership(user, models.Membership.MEMBER)

        serializer = self.serializer_class(
            instance=self.instance,
            data={'user': user.pk},
            partial=True,
        )

        self.assertTrue(serializer.is_valid())
        self.assertTrue(serializer.save())
        self.assertTrue(user.groups.filter(name=self.instance.name).exists())
Esempio n. 9
0
    def test_vote_when_exists(self):
        """It should update the vote (and counters) accordingly.
        """
        voter = factories.UserFactory()
        resource = self.factory()

        resource.vote(voter, models.Vote.UP)
        self.assertEqual(resource.num_vote_up, 1)
        self.assertEqual(resource.num_vote_down, 0)

        resource.vote(voter, models.Vote.DOWN)
        self.assertEqual(resource.num_vote_up, 0)
        self.assertEqual(resource.num_vote_down, 1)

        self.assertEqual(resource.votes.count(), 1)
Esempio n. 10
0
    def test_remove_revoked_user_from_groups(self):
        """It should remove a User from all workspace groups when membership is revoked.
        """
        user = factories.UserFactory()

        workspace = factories.WorkspaceFactory(name='Metameta')
        workspace.grant_membership(user, models.Membership.READONLY)

        group = factories.GroupFactory(workspace_id=workspace.id)
        group.user_set.add(user)

        self.assertTrue(user.groups.filter(name=group.name).exists())

        workspace.revoke_membership(user)

        self.assertFalse(user.groups.filter(name=group.name).exists())
Esempio n. 11
0
    def test_when_not_team_member(self):
        """It should return an error.
        """
        user = factories.UserFactory()

        serializer = self.serializer_class(
            instance=self.instance,
            data={'user': user.pk},
            partial=True,
        )

        self.assertFalse(serializer.is_valid())
        self.assertEqual(serializer.errors, [{
            'code': 'no_membership',
            'field': 'user',
            'resource': 'User',
        }])
Esempio n. 12
0
    def test_get_custom_properties(self):
        """It should return NULL for non-existent fields.
        """
        user = factories.UserFactory()
        workspace = factories.WorkspaceFactory()
        workspace.grant_membership(user, 'OWNER')

        attributes = {
            'content_type': self.model_class.get_content_type(),
            'workspace': workspace,
        }

        customfields = [
            factories.CustomFieldFactory(field_name='Steward',
                                         field_type=models.CustomField.USER,
                                         **attributes),
            factories.CustomFieldFactory(field_name='Product Area',
                                         field_type=models.CustomField.TEXT,
                                         **attributes),
            factories.CustomFieldFactory(field_name='Team',
                                         field_type=models.CustomField.TEXT,
                                         **attributes),
        ]

        resource = self.factory(
            workspace=workspace,
            custom_properties={
                customfields[0].pk: user.pk,
                customfields[2].pk: 'Data Engineering',
            },
        )

        custom_properties = resource.get_custom_properties()
        for customfield in customfields:
            self.assertTrue(customfield.pk in custom_properties)

        self.assertEqual(custom_properties[customfields[0].pk], {
            'label': 'Steward',
            'value': user
        })

        self.assertEqual(custom_properties[customfields[2].pk], {
            'label': 'Team',
            'value': 'Data Engineering'
        })
Esempio n. 13
0
    def test_saves_with_workspace_id(self):
        """It should automatically add the workspace of the ContentObject.
        """
        user = factories.UserFactory()
        voteable = factories.CommentFactory()

        properties = {
            'content_object': voteable,
            'action': self.model_class.UP,
            'user': user,
        }

        vote = self.model_class.objects.create(**properties)

        self.assertEqual(
            vote.workspace_id,
            voteable.workspace_id,
        )
Esempio n. 14
0
    def test_saves_with_workspace_id(self):
        """It should automatically add the workspace of the ContentObject.
        """
        user = factories.UserFactory()
        commentable = factories.TableFactory()

        properties = {
            'content_object': commentable,
            'author': user,
            'html': helpers.faker.sentence(),
        }

        comment = self.model_class.objects.create(**properties)

        self.assertEqual(
            comment.workspace_id,
            commentable.workspace_id,
        )
Esempio n. 15
0
    def test_membership_granted_when_exists(self, mock_deliver):
        """It should call the Mailer.deliver method with the proper template.
        """
        user = factories.UserFactory()
        workspace = factories.WorkspaceFactory(name='Metameta')

        emails.membership_granted(user.email, workspace,
                                  models.Membership.READONLY)

        mock_deliver.assert_called_with(
            user.email,
            'You have granted the Readonly role to the Metameta workspace',
            {
                'to_address': user.email,
                'workspace_name': workspace.name,
                'user_exists': True,
                'permissions': 'Readonly',
            },
        )
Esempio n. 16
0
    def setUpTestData(cls):
        cls.current_user = factories.UserFactory()
        cls.workspace = factories.WorkspaceFactory(creator=cls.current_user)
        cls.workspace.grant_membership(cls.current_user, auth.Membership.OWNER)
        cls.group = factories.GroupFactory(workspace_id=cls.workspace.id)
        cls.datastore = factories.DatastoreFactory(workspace=cls.workspace)
        cls.attributes = {
            'content_type': cls.datastore.content_type,
            'workspace': cls.workspace,
        }

        cls.customfields = [
            factories.CustomFieldFactory(
                field_name='Steward',
                field_type=models.CustomField.USER,
                validators={},
                **cls.attributes,
            ),
            factories.CustomFieldFactory(
                field_name='Product Area',
                field_type=models.CustomField.TEXT,
                validators={},
                **cls.attributes,
            ),
            factories.CustomFieldFactory(
                field_name='Department',
                field_type=models.CustomField.ENUM,
                validators={
                    'choices': ['Data Engineering', 'Product', 'Design']
                },
                **cls.attributes,
            ),
            factories.CustomFieldFactory(
                field_name='Team',
                field_type=models.CustomField.GROUP,
                **cls.attributes,
            ),
        ]
        cls.request = collections.namedtuple(
            'Request',
            ['user', 'workspace'],
        )(user=cls.current_user, workspace=cls.workspace)
Esempio n. 17
0
    def test_get_custom_properties_deleted_user(self):
        """It should return NULL for a deleted choice.
        """
        user = factories.UserFactory()
        workspace = factories.WorkspaceFactory()
        workspace.grant_membership(user, 'OWNER')

        attributes = {
            'content_type': self.model_class.get_content_type(),
            'workspace': workspace,
        }

        customfield = factories.CustomFieldFactory(
            field_name='Steward',
            field_type=models.CustomField.USER,
            **attributes,
        )

        resource = self.factory(
            workspace=workspace,
            custom_properties={
                customfield.pk: user.pk,
            },
        )

        self.assertEqual(resource.get_custom_properties()[customfield.pk], {
            'label': 'Steward',
            'value': user
        })

        workspace.revoke_membership(user)
        resource.refresh_from_db()

        self.assertEqual(resource.get_custom_properties()[customfield.pk], {
            'label': 'Steward',
            'value': None
        })
Esempio n. 18
0
 def setUpTestData(cls):
     cls.creator = factories.UserFactory()
     cls.resource = cls.factory()
     cls.workspace = cls.factory()
Esempio n. 19
0
 def setUp(self):
     self.client = Client(HTTP_HOST='example.com')
     self.user = factories.UserFactory()
     self.workspace = factories.WorkspaceFactory()
     self.workspace.grant_membership(self.user, 'READONLY')
Esempio n. 20
0
 def setUpTestData(cls):
     cls.commentable = factories.TableFactory()
     cls.workspace = cls.commentable.workspace
     cls.user = factories.UserFactory()