public void KuuluisiKerryttaaEtupisteetBonusasiakkaalle() { BonusAsiakas asiakas = new BonusAsiakas(); Assert.AreEqual(0, asiakas.Etupisteet); asiakas.KerrytaEtupisteita(75); Assert.AreEqual(1.5, asiakas.Etupisteet); asiakas.KerrytaEtupisteita(75); Assert.AreEqual(3.0, asiakas.Etupisteet); asiakas.KerrytaEtupisteita(25); Assert.AreEqual(3.5, asiakas.Etupisteet); }
public void KuuluisiPaivittaaAsiakkaanEtupisteidenMuutokset() { BonusAsiakas asiakasTietokannasta = asiakasDb.Hae(1); asiakasTietokannasta.KerrytaEtupisteita(200); asiakasTietokannasta.KerrytaEtupisteita(142); asiakasTietokannasta.KerrytaEtupisteita(360); Assert.AreEqual(14.04, asiakasTietokannasta.Etupisteet, 0.1); asiakasDb.TallennaMuutokset(asiakasTietokannasta); BonusAsiakas asiakasTietokannasta2 = asiakasDb.Hae(1); Assert.AreEqual(1, asiakasTietokannasta2.Id); Assert.AreEqual(14.04, asiakasTietokannasta2.Etupisteet, 0.1); double maksettavaSumma = asiakasTietokannasta2.OstaEtupisteilla(90); asiakasDb.TallennaMuutokset(asiakasTietokannasta2); BonusAsiakas asiakasTietokannasta3 = asiakasDb.Hae(1); Assert.AreEqual(1, asiakasTietokannasta3.Id); Assert.AreEqual(0, asiakasTietokannasta3.Etupisteet, 0.1); Assert.AreEqual(75.96, maksettavaSumma, 0.1); }
/// <summary> /// VastaanotaTilaus(Tilaus tilaus) /// /// Metodi suorittaa toimenpiteitä, joita tehdään ennen ja jälkeen /// tilauksen vahvistamisen. VastaanotaTilaus -metodi koostaa ohjelman /// muiden olioiden toimintoja yhteen. Suoritettavat toimenpiteet ovat /// seuraavat: /// /// 1. Metodi saa tilauksen tiedot sille annetusta parametrista. /// /// 2. Tarkistetaan tiedot virhesyötteiden varalta. Virhetilanteen /// sattuessa tilausta ei vahvisteta ja siitä luodaan virheilmoitus. /// Virheen sattuessa se siepataan virheenkäsittelyllä ja annetaan /// metodia kutsuttavan luokan hoitaa sen käsittely. /// /// 2.1 VIRHE: Tilausrivien määrä on 0 tai alle. /// 2.2 VIRHE: Tilaukseen ei ole määritetty asiakasta. /// 2.3 VIRHE: Tilaukseen ei ole määritetty pöytää. /// 2.4 VIRHE: Valitty pöytä on jo varattu. /// 2.5 VIRHE: Tilaus epäonnistuu muusta kuin yllämainituista syistä. /// /// 3. Vahvistetaan tilaus. /// 4. Luodaan uusi tilaus tietokantaan. /// 5. Merkitään pöytä varatuksi. /// 6. Tarkistetaan onko asiakas bonusasiakas /// 6.1 Jos on bonusasiakas, kerrytetään etupisteitä ja /// tallennetaan bonusasiakkaan tiedot tietokantaan. /// </summary> /// <param name="tilaus"></param> public void VastaanotaTilaus(Tilaus tilaus) { try { if (tilaus.Tilausrivit.Count <= 0) { throw new Exception("Tilaus ei sisällä tilausrivejä."); } if (tilaus.Asiakas == null) { throw new Exception("Tilaus ei sisällä asiakasta."); } if (tilaus.Poyta == null) { throw new Exception("Pöytää ei ole valittu. Tilausta ei voitu vahvistaa."); } Poyta poyta = poytaDb.Hae(tilaus.Poyta.Id); if (poyta.OnkoVarattu()) { throw new Exception("Pöytä on jo varattu. Tilausta ei voitu vahvistaa."); } tilaus.VahvistaTilaus(); tilausDb.Uusi(tilaus); poytaDb.VaraaPoyta(poyta.Id); if (tilaus.Asiakas.GetType() == typeof(BonusAsiakas)) { BonusAsiakas asiakas = (BonusAsiakas)tilaus.Asiakas; asiakas.KerrytaEtupisteita(tilaus.LaskeVerollinenKokonaishinta()); asiakasDb.Uusi(asiakas); } } catch (Exception) { throw; } }
public void KuuluisiOstaaEtupisteillaJaPaivitaaEtupisteidenMaara() { BonusAsiakas asiakas = new BonusAsiakas(1, 245); Assert.AreEqual(0, asiakas.OstaEtupisteilla(120)); Assert.AreEqual(125, asiakas.Etupisteet); Assert.AreEqual(48, asiakas.OstaEtupisteilla(173)); Assert.AreEqual(0, asiakas.Etupisteet); asiakas.KerrytaEtupisteita(75); asiakas.KerrytaEtupisteita(75); asiakas.KerrytaEtupisteita(75); asiakas.KerrytaEtupisteita(75); asiakas.KerrytaEtupisteita(75); asiakas.KerrytaEtupisteita(75); asiakas.KerrytaEtupisteita(50); Assert.AreEqual(10, asiakas.Etupisteet); Assert.AreEqual(33, asiakas.OstaEtupisteilla(43)); Assert.AreEqual(0, asiakas.Etupisteet); }