def test_update_user(orig_share_amt, share_add_amt, share_del_amt,
                     update_name):
    if share_del_amt > orig_share_amt:
        return
    serializer = UserSerializer()
    user = random_users(1)[0]
    orig_shares = random_shares(orig_share_amt)
    orig_time = user.updated_at
    for share in orig_shares:
        share.users.add(user)

    validated_data = {'name': user.name + random_str(2)} if update_name else {}

    if share_add_amt + share_del_amt > 0:
        added = random_shares(share_add_amt)
        new_shares = orig_shares[:-share_del_amt] + added
        deleted = orig_shares[-share_del_amt:]
        validated_data['shares'] = new_shares
    else:
        deleted = []
        new_shares = list(orig_shares)

    serializer.update(user, validated_data)
    assert_update_time(orig_time, user)

    assert user.name == validated_data.get('name', user.name)
    user_shares = user.shares
    assert user_shares.count() == len(new_shares)
    assert set(user_shares) == set(new_shares)
    for deleted_share in deleted:
        assert deleted_share not in user_shares
示例#2
0
class UserSerializerTest(SerializerTest):
    def setUp(self):
        self.serializer = UserSerializer()

    def test_user_creation(self):
        user = self.serializer.create(self.USER_DATA)
        auth_role = AuthRole.get_auth_role(user.pk)

        self.assertIsInstance(user, User)
        self.assertEqual(auth_role,
                         AuthRole.RoleTypes.USER,
                         msg='Auth role is user')
        self.assertEqual(user.first_name, self.USER_DATA.get('first_name'))
        self.assertEqual(user.last_name, self.USER_DATA.get('last_name'))
        self.assertEqual(user.email, self.USER_DATA.get('email'))
        self.assertEqual(user.username, self.USER_DATA.get('username'))
        self.assertEqual(user.check_password(self.USER_DATA.get('password')),
                         True)

    def test_user_update(self):
        manager = self.create_manager()
        manager = self.serializer.update(manager, self.TEST_DATA)  # type: User
        manager_role = AuthRole.get_auth_role(manager.pk)

        self.assertIsInstance(manager, User)
        self.assertEqual(manager_role,
                         AuthRole.RoleTypes.MANAGER,
                         msg='Auth role is manager')
        self.assertEqual(manager.first_name, self.TEST_DATA.get('first_name'))
        self.assertEqual(manager.last_name, self.TEST_DATA.get('last_name'))
        self.assertEqual(manager.email, self.TEST_DATA.get('email'))
        self.assertEqual(manager.username, self.TEST_DATA.get('username'))
        self.assertEqual(
            manager.check_password(self.TEST_DATA.get('password')), True)