def test_create_user_with_non_existing_referral(self): request = testing.DummyRequest() request.params['email'] = '*****@*****.**' test_uuid = str(uuid.uuid4()) request.params['referral'] = test_uuid mock_referral = mock(Referral) mock_referral.num_referrals = 0 mock_referral.user_id = 1 request.dbsession = mock(sqlalchemy.orm.session.Session) mock_user = mock(User) mock_user.id = 1 # TODO: take another look at mocking this constructor when(referral_program.models.user).User( email=ANY(str)).thenReturn(mock_user) when(request.dbsession).add(ANY(User)) mock_referral_query = query.Query([]) when(request.dbsession).query(Referral).thenReturn(mock_referral_query) err = IntegrityError('', params=None, orig=None) err.args = [ '''(psycopg2.errors.ForeignKeyViolation) insert or update on table "referral" violates foreign key constraint "fk_referral_user_id_user"\nDETAIL: Key (user_id)=(360) is not present in table "user".\n ''' ] when(mock_referral_query).filter_by(id=ANY).thenRaise(err) view_being_tested = ReferralView(request) response = view_being_tested.create_user() self.assertEqual(response.status_code, 400)
def test_update_error(self, mock_upd, simple_model, memory_db): memory_db() err = IntegrityError(None, None, None, None) err.args = ('duplicate',) mock_upd.side_effect = err with pytest.raises(JHTTPConflict) as ex: simple_model(id=4).update({'name': 'q'}) assert 'There was a conflict' in str(ex.value)
def test_save_error(self, obj_session, simple_model, memory_db): memory_db() err = IntegrityError(None, None, None, None) err.args = ('duplicate',) obj_session().flush.side_effect = err with pytest.raises(JHTTPConflict) as ex: simple_model(id=4).save() assert 'There was a conflict' in str(ex.value)
def test_update_error(self, mock_upd, simple_model, memory_db): memory_db() err = IntegrityError(None, None, None, None) err.args = ('duplicate', ) mock_upd.side_effect = err with pytest.raises(JHTTPConflict) as ex: simple_model(id=4).update({'name': 'q'}) assert 'There was a conflict' in str(ex.value)
def test_save_error(self, obj_session, simple_model, memory_db): memory_db() err = IntegrityError(None, None, None, None) err.args = ('duplicate', ) obj_session().flush.side_effect = err with pytest.raises(JHTTPConflict) as ex: simple_model(id=4).save() assert 'There was a conflict' in str(ex.value)
def test_create_referral_with_invalid_user(self): from referral_program.views.views import ReferralView # Setup our dummy request before using it request = testing.DummyRequest() request.matchdict['user_id'] = '777' request.dbsession = mock(sqlalchemy.orm.session.Session) when(request.dbsession).add(ANY(Referral)) err = IntegrityError('', params=None, orig=None) err.args = [ '''(psycopg2.errors.ForeignKeyViolation) insert or update on table "referral" violates foreign key constraint "fk_referral_user_id_user"\nDETAIL: Key (user_id)=(360) is not present in table "user".\n '''] when(request.dbsession).flush().thenRaise(err) view_being_tested = ReferralView(request) response = view_being_tested.create_referral() self.assertEqual(response.status_code, 400)
def test_create_user_non_existing_referral(self): """ For this test we use a uuid which is not in the system """ # Setup our dummy request before using it request = testing.DummyRequest() request.params['email'] = '*****@*****.**' test_uuid = str(uuid.uuid4()) request.params['referral'] = test_uuid request.dbsession = mock(sqlalchemy.orm.session.Session) err = IntegrityError('', params=None, orig=None) err.args = [ '''(psycopg2.errors.ForeignKeyViolation) insert or update on table "referral" violates foreign key constraint "fk_referral_user_id_user"\nDETAIL: Key (user_id)=(360) is not present in table "user".\n ''' ] when(request.dbsession).add(ANY(User)).thenRaise(err) view_being_tested = ReferralView(request) response = view_being_tested.create_user() self.assertEqual(response.status_code, 400)