def test_get_shares(self): bet = BetFactory.create(value=99) MemberFactory.create(share=bet.share, name="Tom Doe") MemberFactory.create(share=bet.share, name="Sarah Foe") BetFactory.create(value=102) response = self.app.get(f"/api/v1/shares") expected = {'shares': [{'archived': False, 'bets': [{'end_date': None, 'id': 1, 'share_id': 1, 'start_date': '2018-01-01T00:00:00', 'value': 99}], 'id': 1, 'name': 'Sarah Foe & Tom Doe', 'note': None, 'station_id': 1}, {'archived': False, 'bets': [{'end_date': None, 'id': 2, 'share_id': 2, 'start_date': '2018-01-01T00:00:00', 'value': 102}], 'id': 2, 'name': '', 'note': None, 'station_id': 2}]} self.assertEqual(response.status_code, 200) self.assertEqual(response.json, expected)
def test_join_date(self): share = ShareFactory() BetFactory(share=share, start_date=date(2019, 1, 1)) BetFactory(share=share, start_date=date(2018, 1, 1), end_date=date(2018, 12, 31)) assert share.join_date == datetime(2018, 1, 1)
def test_expected_today(self): bet = BetFactory.create( start_date=date(2017, 1, 1), end_date=date(2017, 3, 31), value=100, ) assert bet.expected_today == 300
def test_get_shares(self): # The tests for making sure that the right amout is calculated for the # expected value are in test_models # This should only be for the api station = StationFactory.create(name="Our Station") share = ShareFactory.create(station=station) bet = BetFactory.create(value=99, start_date=date(2019, 1, 1), end_date=date(2019, 2, 1), share=share) person = PersonFactory.create(share=bet.share) DepositFactory.create(person=person, amount=99) response = self.app.get(f"/api/v1/shares/payment_status") expected = {'shares': [{'archived': False, 'difference_today': 0, 'expected_today': 99, 'id': 1, 'name': '', 'note': None, 'number_of_deposits': 1, 'station_name': "Our Station", 'total_deposits': 99.0}]} self.assertEqual(response.status_code, 200) self.assertEqual(response.json, expected)
def test_members_expired(self): member1 = MemberFactory.create() member2 = MemberFactory.create() station1 = StationFactory.create() station2 = StationFactory.create() valid_bet = BetFactory.create() expired_bet = BetFactory.create(end_date=date(2016, 1, 1)) ShareFactory.create(members=[member1], station=station1, bets=[expired_bet]) ShareFactory.create(members=[member2], station=station2, bets=[valid_bet]) response: Response = self.app.get(f"/api/v1/members?active=true") self.assertEqual(response.status_code, 200) self.assertEqual(len(response.json["members"]), 1)
def test_edit_bet(self): bet = BetFactory.create(value=20) response = self.app.post(f"/api/v1/shares/{bet.share.id}/bets", json={"id": bet.id, "value": "99"}) self.assertEqual(response.status_code, 200) self.assertEqual(db.session.query(Bet).count(), 1) updated_bet = db.session.query(Bet).first() self.assertEqual(updated_bet.value, 99) self.assertEqual(updated_bet.start_date, bet.start_date) self.assertEqual(updated_bet.end_date, bet.end_date)
def test_delete_bet_unkown_bet(self): from solawi.models import Bet, Share bet = BetFactory.create() share = bet.share self.assertEqual(db.session.query(Bet).count(), 1) response = self.app.delete(f"/api/v1/shares/{share.id}/bets/{bet.id + 1}") self.assertEqual(response.status_code, 404)
def test_jsonify(self): share = ShareFactory.create() bet = BetFactory(share=share) expected = { 'start_date': datetime(2018, 1, 1, 0, 0), 'end_date': None, 'id': bet.id, 'value': Decimal('90'), 'share_id': share.id } assert bet.json == expected
def test_members(self): member1 = MemberFactory.create(email="*****@*****.**", name="Peter Farmer", phone="001234") member2 = MemberFactory.create(email="*****@*****.**", name="Paula Farmer", phone="001234") member3 = MemberFactory.create(email="*****@*****.**", name="Jane Doe", phone="0055689") station1 = StationFactory.create(name="Station 1") station2 = StationFactory.create(name="Station 2") share1 = ShareFactory.create(members=[member1, member2], station=station1) share2 = ShareFactory.create(members=[member3], station=station2) BetFactory.create(share=share1, start_date=date(2018, 1, 1), end_date=date(2018, 12, 1)) BetFactory.create(share=share1, start_date=date(2019, 1, 1)) BetFactory.create(share=share2, start_date=date(2019, 1, 15)) expected = [ { "email": "*****@*****.**", "id": member1.id, "name": "Peter Farmer", "phone": "001234", "share_id": share1.id, "station_name": "Station 1", "join_date": "2018-01-01T00:00:00" }, { "email": "*****@*****.**", "id": member2.id, "name": "Paula Farmer", "phone": "001234", "share_id": share1.id, "station_name": "Station 1", "join_date": "2018-01-01T00:00:00" }, { "email": "*****@*****.**", "id": member3.id, "name": "Jane Doe", "phone": "0055689", "share_id": share2.id, "station_name": "Station 2", "join_date": "2019-01-15T00:00:00" } ] response: Response = self.app.get(f"/api/v1/members") self.assertEqual(response.status_code, 200) self.maxDiff = None self.assertEqual(response.json, {"members": expected})
def test_merge_one_way(self): share1 = ShareFactory.create() share2 = ShareFactory.create() MemberFactory.create(share=share1) MemberFactory.create(share=share2) MemberFactory.create(share=share2) BetFactory.create(share=share1) BetFactory.create(share=share1) BetFactory.create(share=share2) assert Share.query.count() == 2 assert Bet.query.count() == 3 merge(share1.id, share2.id) updated_share = Share.query.one() assert Share.query.count() == 1 assert len(updated_share.members) == 3 assert len(updated_share.bets) == 3 assert Member.query.count() == 3 assert Bet.query.count() == 3