class TestPachinko(Harness):

    def setUp(self):
        Harness.setUp(self)
        self.payday = Payday(self.db)

    def test_get_participants_gets_participants(self):
        a_team = self.make_participant('a_team', claimed_time='now', number='plural', balance=20)
        a_team.add_member(self.make_participant('alice', claimed_time='now'))
        a_team.add_member(self.make_participant('bob', claimed_time='now'))

        ts_start = self.payday.start()

        actual = [p.username for p in self.payday.get_participants(ts_start)]
        expected = ['a_team', 'alice', 'bob']
        assert actual == expected

    def test_pachinko_pachinkos(self):
        a_team = self.make_participant('a_team', claimed_time='now', number='plural', balance=20, pending=0)
        a_team.add_member(self.make_participant('alice', claimed_time='now', balance=0, pending=0))
        a_team.add_member(self.make_participant('bob', claimed_time='now', balance=0, pending=0))

        ts_start = self.payday.start()

        participants = self.payday.genparticipants(ts_start, ts_start)
        self.payday.pachinko(ts_start, participants)
Exemplo n.º 2
0
class TestPachinko(Harness):
    def setUp(self):
        Harness.setUp(self)
        self.payday = Payday(self.db)

    def test_get_participants_gets_participants(self):
        a_team = self.make_participant('a_team',
                                       claimed_time='now',
                                       number='plural',
                                       balance=20)
        a_team.add_member(self.make_participant('alice', claimed_time='now'))
        a_team.add_member(self.make_participant('bob', claimed_time='now'))

        ts_start = self.payday.start()

        actual = [p.username for p in self.payday.get_participants(ts_start)]
        expected = ['a_team', 'alice', 'bob']
        assert actual == expected

    def test_pachinko_pachinkos(self):
        a_team = self.make_participant('a_team',
                                       claimed_time='now',
                                       number='plural',
                                       balance=20,
                                       pending=0)
        a_team.add_member(
            self.make_participant('alice',
                                  claimed_time='now',
                                  balance=0,
                                  pending=0))
        a_team.add_member(
            self.make_participant('bob',
                                  claimed_time='now',
                                  balance=0,
                                  pending=0))

        ts_start = self.payday.start()

        participants = self.payday.genparticipants(ts_start, ts_start)
        self.payday.pachinko(ts_start, participants)
class TestPachinko(Harness):

    def setUp(self):
        Harness.setUp(self)
        self.payday = Payday(self.db)

    def test_get_participants_gets_participants(self):
        a_team = self.make_participant('a_team', claimed_time='now', number='plural', balance=20)
        a_team.add_member(self.make_participant('alice', claimed_time='now'))
        a_team.add_member(self.make_participant('bob', claimed_time='now'))

        ts_start = self.payday.start()

        actual = [p.username for p in self.payday.get_participants(ts_start)]
        expected = ['a_team', 'alice', 'bob']
        assert actual == expected

    def test_pachinko_pachinkos(self):
        a_team = self.make_participant('a_team', claimed_time='now', number='plural', balance=20, \
                                                                                         pending=0)
        a_team.add_member(self.make_participant('alice', claimed_time='now', balance=0, pending=0))
        a_team.add_member(self.make_participant('bob', claimed_time='now', balance=0, pending=0))

        ts_start = self.payday.start()

        participants = self.payday.genparticipants(ts_start, LOOP_PACHINKO)
        self.payday.pachinko(ts_start, participants)

        assert Participant.from_username('alice').pending == D('0.01')
        assert Participant.from_username('bob').pending == D('0.01')

    def test_pachinko_sees_current_take(self):
        a_team = self.make_participant('a_team', claimed_time='now', number='plural', balance=20, \
                                                                                         pending=0)
        alice = self.make_participant('alice', claimed_time='now', balance=0, pending=0)
        a_team.add_member(alice)
        a_team.set_take_for(alice, D('1.00'), alice)

        ts_start = self.payday.start()

        participants = self.payday.genparticipants(ts_start, LOOP_PACHINKO)
        self.payday.pachinko(ts_start, participants)

        assert Participant.from_username('alice').pending == D('1.00')

    def test_pachinko_ignores_take_set_after_payday_starts(self):
        a_team = self.make_participant('a_team', claimed_time='now', number='plural', balance=20, \
                                                                                         pending=0)
        alice = self.make_participant('alice', claimed_time='now', balance=0, pending=0)
        a_team.add_member(alice)
        a_team.set_take_for(alice, D('0.33'), alice)

        ts_start = self.payday.start()
        a_team.set_take_for(alice, D('1.00'), alice)

        participants = self.payday.genparticipants(ts_start, LOOP_PACHINKO)
        self.payday.pachinko(ts_start, participants)

        assert Participant.from_username('alice').pending == D('0.33')

    def test_pachinko_ignores_take_thats_already_been_processed(self):
        a_team = self.make_participant('a_team', claimed_time='now', number='plural', balance=20, \
                                                                                         pending=0)
        alice = self.make_participant('alice', claimed_time='now', balance=0, pending=0)
        a_team.add_member(alice)
        a_team.set_take_for(alice, D('0.33'), alice)

        ts_start = self.payday.start()
        a_team.set_take_for(alice, D('1.00'), alice)

        for i in range(4):
            participants = self.payday.genparticipants(ts_start, LOOP_PACHINKO)
            self.payday.pachinko(ts_start, participants)

        assert Participant.from_username('alice').pending == D('0.33')
class TestPachinko(Harness):
    def setUp(self):
        Harness.setUp(self)
        self.payday = Payday(self.db)

    def test_get_participants_gets_participants(self):
        a_team = self.make_participant("a_team", claimed_time="now", number="plural", balance=20)
        a_team.add_member(self.make_participant("alice", claimed_time="now"))
        a_team.add_member(self.make_participant("bob", claimed_time="now"))

        ts_start = self.payday.start()

        actual = [p.username for p in self.payday.get_participants(ts_start)]
        expected = ["a_team", "alice", "bob"]
        assert actual == expected

    def test_pachinko_pachinkos(self):
        a_team = self.make_participant("a_team", claimed_time="now", number="plural", balance=20, pending=0)
        a_team.add_member(self.make_participant("alice", claimed_time="now", balance=0, pending=0))
        a_team.add_member(self.make_participant("bob", claimed_time="now", balance=0, pending=0))

        ts_start = self.payday.start()

        participants = self.payday.genparticipants(ts_start, LOOP_PACHINKO)
        self.payday.pachinko(ts_start, participants)

        assert Participant.from_username("alice").pending == D("0.01")
        assert Participant.from_username("bob").pending == D("0.01")

    def test_pachinko_sees_current_take(self):
        a_team = self.make_participant("a_team", claimed_time="now", number="plural", balance=20, pending=0)
        alice = self.make_participant("alice", claimed_time="now", balance=0, pending=0)
        a_team.add_member(alice)
        a_team.set_take_for(alice, D("1.00"), alice)

        ts_start = self.payday.start()

        participants = self.payday.genparticipants(ts_start, LOOP_PACHINKO)
        self.payday.pachinko(ts_start, participants)

        assert Participant.from_username("alice").pending == D("1.00")

    def test_pachinko_ignores_take_set_after_payday_starts(self):
        a_team = self.make_participant("a_team", claimed_time="now", number="plural", balance=20, pending=0)
        alice = self.make_participant("alice", claimed_time="now", balance=0, pending=0)
        a_team.add_member(alice)
        a_team.set_take_for(alice, D("0.33"), alice)

        ts_start = self.payday.start()
        a_team.set_take_for(alice, D("1.00"), alice)

        participants = self.payday.genparticipants(ts_start, LOOP_PACHINKO)
        self.payday.pachinko(ts_start, participants)

        assert Participant.from_username("alice").pending == D("0.33")

    def test_pachinko_ignores_take_thats_already_been_processed(self):
        a_team = self.make_participant("a_team", claimed_time="now", number="plural", balance=20, pending=0)
        alice = self.make_participant("alice", claimed_time="now", balance=0, pending=0)
        a_team.add_member(alice)
        a_team.set_take_for(alice, D("0.33"), alice)

        ts_start = self.payday.start()
        a_team.set_take_for(alice, D("1.00"), alice)

        for i in range(4):
            participants = self.payday.genparticipants(ts_start, LOOP_PACHINKO)
            self.payday.pachinko(ts_start, participants)

        assert Participant.from_username("alice").pending == D("0.33")
class TestPachinko(Harness):
    def setUp(self):
        Harness.setUp(self)
        self.payday = Payday(self.db)

    def test_get_participants_gets_participants(self):
        a_team = self.make_participant('a_team',
                                       claimed_time='now',
                                       number='plural',
                                       balance=20)
        a_team.add_member(self.make_participant('alice', claimed_time='now'))
        a_team.add_member(self.make_participant('bob', claimed_time='now'))

        ts_start = self.payday.start()

        actual = [p.username for p in self.payday.get_participants(ts_start)]
        expected = ['a_team', 'alice', 'bob']
        assert actual == expected

    def test_pachinko_pachinkos(self):
        a_team = self.make_participant('a_team', claimed_time='now', number='plural', balance=20, \
                                                                                         pending=0)
        a_team.add_member(
            self.make_participant('alice',
                                  claimed_time='now',
                                  balance=0,
                                  pending=0))
        a_team.add_member(
            self.make_participant('bob',
                                  claimed_time='now',
                                  balance=0,
                                  pending=0))

        ts_start = self.payday.start()

        participants = self.payday.genparticipants(ts_start, LOOP_PACHINKO)
        self.payday.pachinko(ts_start, participants)

        assert Participant.from_username('alice').pending == D('0.01')
        assert Participant.from_username('bob').pending == D('0.01')

    def test_pachinko_sees_current_take(self):
        a_team = self.make_participant('a_team', claimed_time='now', number='plural', balance=20, \
                                                                                         pending=0)
        alice = self.make_participant('alice',
                                      claimed_time='now',
                                      balance=0,
                                      pending=0)
        a_team.add_member(alice)
        a_team.set_take_for(alice, D('1.00'), alice)

        ts_start = self.payday.start()

        participants = self.payday.genparticipants(ts_start, LOOP_PACHINKO)
        self.payday.pachinko(ts_start, participants)

        assert Participant.from_username('alice').pending == D('1.00')

    def test_pachinko_ignores_take_set_after_payday_starts(self):
        a_team = self.make_participant('a_team', claimed_time='now', number='plural', balance=20, \
                                                                                         pending=0)
        alice = self.make_participant('alice',
                                      claimed_time='now',
                                      balance=0,
                                      pending=0)
        a_team.add_member(alice)
        a_team.set_take_for(alice, D('0.33'), alice)

        ts_start = self.payday.start()
        a_team.set_take_for(alice, D('1.00'), alice)

        participants = self.payday.genparticipants(ts_start, LOOP_PACHINKO)
        self.payday.pachinko(ts_start, participants)

        assert Participant.from_username('alice').pending == D('0.33')

    def test_pachinko_ignores_take_thats_already_been_processed(self):
        a_team = self.make_participant('a_team', claimed_time='now', number='plural', balance=20, \
                                                                                         pending=0)
        alice = self.make_participant('alice',
                                      claimed_time='now',
                                      balance=0,
                                      pending=0)
        a_team.add_member(alice)
        a_team.set_take_for(alice, D('0.33'), alice)

        ts_start = self.payday.start()
        a_team.set_take_for(alice, D('1.00'), alice)

        for i in range(4):
            participants = self.payday.genparticipants(ts_start, LOOP_PACHINKO)
            self.payday.pachinko(ts_start, participants)

        assert Participant.from_username('alice').pending == D('0.33')