Example #1
0
    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)
Example #2
0
 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
Example #3
0
    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)
Example #4
0
    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)
Example #5
0
    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)
Example #6
0
    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)
Example #7
0
    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)
Example #8
0
    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_merge_other_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(share2.id, share1.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
Example #10
0
    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})
Example #11
0
    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