Beispiel #1
0
    def setUp(self):
        self.pankki_mock = Mock()
        self.varasto_mock = Mock()
        self.viitegeneraattori_mock = Mock()
        self.kauppa = Kauppa(self.varasto_mock, self.pankki_mock,
                             self.viitegeneraattori_mock)
        self.viitegeneraattori_mock.uusi.side_effect = [42, 43, 44]

        tuotteet = {
            1: (Tuote(1, "maito", 5), 10),
            2: (Tuote(2, "liha", 10), 20),
            3: (Tuote(3, "tofu", 10), 0)
        }

        def varasto_saldo(tuote_id):
            return tuotteet[tuote_id][1]

        def varasto_hae_tuote(tuote_id):
            return tuotteet[tuote_id][0]

        self.varasto_mock.saldo.side_effect = varasto_saldo
        self.varasto_mock.hae_tuote.side_effect = varasto_hae_tuote

        self.kauppa = Kauppa(self.varasto_mock, self.pankki_mock,
                             self.viitegeneraattori_mock)
Beispiel #2
0
    def setUp(self):
        self.pankki_mock = Mock()
        self.viitegeneraattori_mock = Mock(wraps=Viitegeneraattori())

        self.varasto_mock = Mock()

        # tehdään toteutus saldo-metodille
        def varasto_saldo(tuote_id):
            if tuote_id == 1:
                return 10
            if tuote_id == 2:
                return 24
            if tuote_id == 3:
                return 0

        # tehdään toteutus hae_tuote-metodille
        def varasto_hae_tuote(tuote_id):
            if tuote_id == 1:
                return Tuote(1, "maito", 5)
            if tuote_id == 2:
                return Tuote(2, "kalja", 10)
            if tuote_id == 3:
                return Tuote(3, "leipä", 3)

        # otetaan toteutukset käyttöön
        self.varasto_mock.saldo.side_effect = varasto_saldo
        self.varasto_mock.hae_tuote.side_effect = varasto_hae_tuote

        self.kauppa = Kauppa(self.varasto_mock, self.pankki_mock,
                             self.viitegeneraattori_mock)
    def test_ostoksen_paaytyttya_pankin_metodia_tilisiirto_kutsutaan(self):
        pankki_mock = Mock()
        viitegeneraattori_mock = Mock()

        # palautetaan aina arvo 42
        viitegeneraattori_mock.uusi.return_value = 42

        varasto_mock = Mock()

        # tehdään toteutus saldo-metodille
        def varasto_saldo(tuote_id):
            if tuote_id == 1:
                return 10

        # tehdään toteutus hae_tuote-metodille
        def varasto_hae_tuote(tuote_id):
            if tuote_id == 1:
                return Tuote(1, "maito", 5)

        # otetaan toteutukset käyttöön
        varasto_mock.saldo.side_effect = varasto_saldo
        varasto_mock.hae_tuote.side_effect = varasto_hae_tuote

        # alustetaan kauppa
        kauppa = Kauppa(varasto_mock, pankki_mock, viitegeneraattori_mock)

        # tehdään ostokset
        kauppa.aloita_asiointi()
        kauppa.lisaa_koriin(1)
        kauppa.tilimaksu("pekka", "12345")

        # varmistetaan, että metodia tilisiirto on kutsuttu
        pankki_mock.tilisiirto.assert_called()
    def test_pankin_metodia_tilisiirto_kutsutaan_kun_lisataan_kaksi_tuotetta(self):
        pankki_mock = Mock()
        viitegeneraattori_mock = Mock()
        viitegeneraattori_mock.uusi.return_value = 42

        varasto_mock = Mock()

         
        def varasto_saldo(tuote_id):
            if tuote_id == 1:
                return 10
            if tuote_id == 2:
                return 20

        
        def varasto_hae_tuote(tuote_id):
            if tuote_id == 1:
                return Tuote(1, "maito", 5)
            if tuote_id == 2:
                return Tuote(2, "lihis", 5)

        varasto_mock.saldo.side_effect = varasto_saldo
        varasto_mock.hae_tuote.side_effect = varasto_hae_tuote

        
        kauppa = Kauppa(varasto_mock, pankki_mock, viitegeneraattori_mock)

        kauppa.aloita_asiointi()
        kauppa.lisaa_koriin(1)
        kauppa.lisaa_koriin(2)
        kauppa.tilimaksu("pekka", "12345")

        pankki_mock.tilisiirto.assert_called_with("pekka",42,"12345", "33333-44455", 10)
    def test_negatiivinen_saldo_ei_tee_mitaan(self):

        pankki_mock = Mock()
        viitegeneraattori_mock = Mock()
        viitegeneraattori_mock.uusi.return_value = 42

        varasto_mock = Mock()

         
        def varasto_saldo(tuote_id):
            return -10
            

        
        def varasto_hae_tuote(tuote_id):
            if tuote_id == 1:
                return Tuote(1, "maito", 5)
            

        varasto_mock.saldo.side_effect = varasto_saldo
        varasto_mock.hae_tuote.side_effect = varasto_hae_tuote

        
        kauppa = Kauppa(varasto_mock, pankki_mock, viitegeneraattori_mock)

        kauppa.aloita_asiointi()
        kauppa.lisaa_koriin(1)
        kauppa.tilimaksu("pekka", "12345")

        pankki_mock.tilisiirto.assert_called_with("pekka",42,"12345", "33333-44455", 0)
Beispiel #6
0
    def setUp(self):
        self.pankki_mock = pankki_mock = Mock()
        self.viitegeneraattori_mock = viitegeneraattori_mock = Mock()

        # palautetaan aina arvo 42
        viitegeneraattori_mock.uusi.return_value = 42

        varasto_mock = Mock()

        # tehdään toteutus saldo-metodille
        def varasto_saldo(tuote_id):
            if tuote_id == 1:
                return 10
            if tuote_id == 2:
                return 10
            if tuote_id == 3:
                return 0

        # tehdään toteutus hae_tuote-metodille
        def varasto_hae_tuote(tuote_id):
            if tuote_id == 1:
                return Tuote(1, "maito", 5)
            if tuote_id == 2:
                return Tuote(2, "jauheliha", 10)
            if tuote_id == 3:
                return Tuote(3, "porkkana", 3)

        # otetaan toteutukset käyttöön
        varasto_mock.saldo.side_effect = varasto_saldo
        varasto_mock.hae_tuote.side_effect = varasto_hae_tuote

        # alustetaan kauppa
        self.kauppa = Kauppa(varasto_mock, pankki_mock, viitegeneraattori_mock)
Beispiel #7
0
def main():
    #viitegeneraattori = Viitegeneraattori()
    #kirjanpito = Kirjanpito()
    #varasto = Varasto(kirjanpito)
    #pankki = Pankki(kirjanpito)
    #kauppa = Kauppa(varasto, pankki, viitegeneraattori)
    kauppa = Kauppa()

    # kauppa hoitaa yhden asiakkaan kerrallaan seuraavaan tapaan:
    kauppa.aloita_asiointi()
    kauppa.lisaa_koriin(1)
    kauppa.lisaa_koriin(3)
    kauppa.lisaa_koriin(3)
    kauppa.poista_korista(1)
    kauppa.tilimaksu("Pekka Mikkola", "1234-12345")

    # seuraava asiakas
    kauppa.aloita_asiointi()

    for _ in range(0, 24):
        kauppa.lisaa_koriin(5)

    kauppa.tilimaksu("Arto Vihavainen", "3425-1652")

    # kirjanpito
    for tapahtuma in kauppa._pankki._kirjanpito.tapahtumat:
        print(tapahtuma)
Beispiel #8
0
    def setUp(self):

        self.pankki_mock = Mock()
        self.viitegeneraattori_mock = Mock()

        # palautetaan aina arvo 42
        self.viitegeneraattori_mock.uusi.return_value = 42

        self.varasto_mock = Mock()

        # tehdään toteutus saldo-metodille
        def varasto_saldo(tuote_id):
            if tuote_id == 1:
                return 10
            if tuote_id == 2:
                return 10

        # tehdään toteutus hae_tuote-metodille
        def varasto_hae_tuote(tuote_id):
            if tuote_id == 1:
                return Tuote(1, "maito", 5)
            if tuote_id == 2:
                return Tuote(2, "piimä", 6)

        # otetaan toteutukset käyttöön
        self.varasto_mock.saldo.side_effect = varasto_saldo
        self.varasto_mock.hae_tuote.side_effect = varasto_hae_tuote

        # alustetaan kauppa
        self.kauppa = Kauppa(self.varasto_mock, self.pankki_mock,
                             self.viitegeneraattori_mock)
Beispiel #9
0
    def test_kaytetaan_perakkaisten_viitekutsujen_arvoja(self):
        pankki_mock = Mock()
        viitegeneraattori_mock = Mock()

        # määritellään että metodi palauttaa ensimmäisellä kutsulla 1, toisella 2 ja kolmannella 3
        viitegeneraattori_mock.uusi.side_effect = [1, 2, 3]

        kauppa = Kauppa(pankki_mock, viitegeneraattori_mock)

        kauppa.aloita_ostokset()
        kauppa.lisaa_ostos(5)
        kauppa.maksa("1111")

        # varmistetaan, että nyt käytössä ensimmäinen viite
        pankki_mock.maksa.assert_called_with(ANY, ANY, 1)

        kauppa.aloita_ostokset()
        kauppa.lisaa_ostos(1)
        kauppa.maksa("1222")

        # ...toinen viite
        pankki_mock.maksa.assert_called_with(ANY, ANY, 2)

        kauppa.aloita_ostokset()
        kauppa.lisaa_ostos(1)
        kauppa.maksa("4321")

        # ...ja kolmas viite
        pankki_mock.maksa.assert_called_with(ANY, ANY, 3)
Beispiel #10
0
    def setUp(self):
        self.pankki_mock = Mock()
        self.viitegeneraattori_mock = Mock()
        self.varasto_mock = Mock()

        self.viitegeneraattori_mock.uusi.return_value = 42

        def varasto_saldo(tuote_id):
            if tuote_id == 1:
                return 10
            elif tuote_id == 2:
                return 15
            elif tuote_id == 3:
                return 0

        def varasto_hae_tuote(tuote_id):
            if tuote_id == 1:
                return Tuote(1, "maito", 5)
            elif tuote_id == 2:
                return Tuote(2, "Voi", 3)
            elif tuote_id == 3:
                return Tuote(3, "Keksi", 8)

        self.varasto_mock.saldo.side_effect = varasto_saldo
        self.varasto_mock.hae_tuote.side_effect = varasto_hae_tuote

        self.kauppa = Kauppa(
                self.varasto_mock, self.
                pankki_mock, self.
                viitegeneraattori_mock
                )
Beispiel #11
0
    def test_pyydetaan_uusi_viite_jokaiseen_maksuun(self):
        pankki_mock = Mock()
        viitegeneraattori_mock = Mock(wraps=Viitegeneraattori())

        kauppa = Kauppa(pankki_mock, viitegeneraattori_mock)

        kauppa.aloita_ostokset()
        kauppa.lisaa_ostos(5)
        kauppa.maksa("1111")

        # tarkistetaan että tässä vaiheessa viitegeneraattorin metodia uusi on kutsuttu kerran
        self.assertEqual(viitegeneraattori_mock.uusi.call_count, 1)

        kauppa.aloita_ostokset()
        kauppa.lisaa_ostos(1)
        kauppa.maksa("1234")

        # tarkistetaan että tässä vaiheessa viitegeneraattorin metodia uusi on kutsuttu kaksi kertaa
        self.assertEqual(viitegeneraattori_mock.uusi.call_count, 2)

        kauppa.aloita_ostokset()
        kauppa.lisaa_ostos(3)
        kauppa.maksa("4444")

        # tarkistetaan että tässä vaiheessa viitegeneraattorin metodia uusi on kutsuttu kolme kertaa
        self.assertEqual(viitegeneraattori_mock.uusi.call_count, 3)
Beispiel #12
0
def main():
    
    kirjanpito = kp.kirjanpito
    kauppa = Kauppa()


    # kauppa hoitaa yhden asiakkaan kerrallaan seuraavaan tapaan:
    kauppa.aloita_asiointi()
    kauppa.lisaa_koriin(1)
    kauppa.lisaa_koriin(3)
    kauppa.lisaa_koriin(3)
    kauppa.poista_korista(1)
    kauppa.tilimaksu("Pekka Mikkola", "1234-12345")

    # seuraava asiakas
    kauppa.aloita_asiointi()

    for _ in range(0, 24):
        kauppa.lisaa_koriin(5)

    kauppa.tilimaksu("Arto Vihavainen", "3425-1652")

    # kirjanpito
    for tapahtuma in kirjanpito.tapahtumat:
        print(tapahtuma)
Beispiel #13
0
    def test_kahden_saman_tuotteen_ostaminen_onnistuu(self):

        self.kauppa = Kauppa(self.varasto_mock, self.pankki_mock,
                             self.viitegeneraattori_mock)

        self.kauppa.aloita_asiointi()
        self.kauppa.lisaa_koriin(2)
        self.kauppa.lisaa_koriin(2)
        self.kauppa.tilimaksu("jokumuu", "54321")

        self.pankki_mock.tilisiirto.assert_called_with("jokumuu", ANY, "54321",
                                                       ANY, 20)
Beispiel #14
0
    def test_kutsutaan_pankkia_oikealla_tilinumerolla_ja_summalla(self):
        pankki_mock = Mock()
        viitegeneraattori_mock = Mock(wraps=Viitegeneraattori())

        kauppa = Kauppa(pankki_mock, viitegeneraattori_mock)

        kauppa.aloita_ostokset()
        kauppa.lisaa_ostos(5)
        kauppa.lisaa_ostos(5)
        kauppa.maksa("1111")

        # katsotaan, että ensimmäisen ja toisen parametrin arvo on oikea
        pankki_mock.maksa.assert_called_with("1111", 10, ANY)
Beispiel #15
0
    def test_kutsutaan_pankki(self):
        pankki_mock = Mock()
        # laitetaan Mock-olio toteuttamaan Viitegeneraattori-luokan metodit
        viitegeneraattori_mock = Mock(wraps=Viitegeneraattori())

        kauppa = Kauppa(pankki_mock, viitegeneraattori_mock)

        kauppa.aloita_ostokset()
        kauppa.lisaa_ostos(5)
        kauppa.lisaa_ostos(5)
        kauppa.maksa("1111")

        pankki_mock.maksa.assert_called()
Beispiel #16
0
def main():
    my_net_bank = Pankki()
    viitteet = Viitegeneraattori()
    kumpula_bier_shop = Kauppa(my_net_bank, viitteet)

    kumpula_bier_shop.aloita_ostokset()
    kumpula_bier_shop.lisaa_ostos(10)
    kumpula_bier_shop.lisaa_ostos(7)
    kumpula_bier_shop.maksa("1234-1234")

    kumpula_bier_shop.aloita_ostokset()
    kumpula_bier_shop.lisaa_ostos(1)
    kumpula_bier_shop.lisaa_ostos(1)
    kumpula_bier_shop.lisaa_ostos(2)
    kumpula_bier_shop.lisaa_ostos(2)
    kumpula_bier_shop.maksa("4444-1111")
Beispiel #17
0
    def test_kaytetaan_maksussa_palautettua_viitetta(self):
        pankki_mock = Mock()
        viitegeneraattori_mock = Mock()

        # palautetaan aina arvo 55
        viitegeneraattori_mock.uusi.return_value = 55

        kauppa = Kauppa(pankki_mock, viitegeneraattori_mock)

        kauppa.aloita_ostokset()
        kauppa.lisaa_ostos(5)
        kauppa.lisaa_ostos(5)
        kauppa.maksa("1111")

        # katsotaan, että kolmannen parametrin arvo on oikea
        pankki_mock.maksa.assert_called_with(ANY, ANY, 55)