Exemplo n.º 1
0
        public Money GetPriceForHealing(Hospital hospital, Citizen citizen)
        {
            HealingPrice healingPrice = hospitalRepository.GetHealingPrice(hospital.CompanyID, citizen.ID);
            var          currency     = Persistent.Currencies.GetById(healingPrice.CurrencyID);

            return(new Money(currency, healingPrice.Cost ?? 0m));
        }
Exemplo n.º 2
0
        public void HealCitizen_simple_test()
        {
            var hospital     = new HospitalDummyCreator().Create();
            var citizen      = new CitizenDummyCreator().Create();
            var healingPrice = new HealingPrice()
            {
                Cost = 12.34m, CurrencyID = 1
            };

            hospitalRepository.Setup(x => x.GetHealingPrice(It.IsAny <int>(), It.IsAny <int>())).Returns(healingPrice);
            transactionsService.Setup(x => x.PayForHealing(It.IsAny <Hospital>(), It.IsAny <Citizen>(), It.IsAny <HealingPrice>()));
            equipmentService.Setup(x => x.RemoveProductsFromEquipment(It.IsAny <ProductTypeEnum>(), It.IsAny <int>(), It.IsAny <int>(), It.IsAny <Equipment>()));

            hospitalService.HealCitizen(citizen, hospital);


            transactionsService.Verify(x => x.PayForHealing(
                                           It.Is <Hospital>(h => h == hospital),
                                           It.Is <Citizen>(c => c == citizen),
                                           It.Is <HealingPrice>(h => h == healingPrice)), Times.Once);

            equipmentService.Verify(e => e.RemoveProductsFromEquipment(
                                        It.Is <ProductTypeEnum>(t => t == ProductTypeEnum.MedicalSupplies),
                                        It.Is <int>(amount => amount == 1),
                                        It.Is <int>(quality => quality == hospital.Company.Quality),
                                        It.Is <Equipment>(eq => eq == hospital.Company.Entity.Equipment)), Times.Once);
        }
Exemplo n.º 3
0
        public void HealCitizen(Citizen citizen, Hospital hospital)
        {
            equipmentService.RemoveProductsFromEquipment(ProductTypeEnum.MedicalSupplies, 1, hospital.Company.Quality, hospital.Company.Entity.Equipment);
            HealingPrice healingPrice = hospitalRepository.GetHealingPrice(hospital.CompanyID, citizen.ID);

            if (healingPrice.Cost.HasValue)
            {
                transactionsService.PayForHealing(hospital, citizen, healingPrice);
            }

            HealCitizenProcess(citizen, hospital.Company.Quality);
            ConditionalSaveChanges(hospitalRepository);
        }
Exemplo n.º 4
0
        public void HealCitizen_freeHealing_test()
        {
            var hospital     = new HospitalDummyCreator().Create();
            var citizen      = new CitizenDummyCreator().Create();
            var healingPrice = new HealingPrice()
            {
                Cost = null, CurrencyID = 1
            };

            hospitalRepository.Setup(x => x.GetHealingPrice(It.IsAny <int>(), It.IsAny <int>())).Returns(healingPrice);

            hospitalService.HealCitizen(citizen, hospital);

            transactionsService.Verify(x => x.PayForHealing(
                                           It.IsAny <Hospital>(),
                                           It.IsAny <Citizen>(),
                                           It.IsAny <HealingPrice>()), Times.Never);
        }
Exemplo n.º 5
0
        public void PayForHealing_simple_test()
        {
            var hospital     = new HospitalDummyCreator().Create();
            var citizen      = new CitizenDummyCreator().Create();
            var currency     = new CurrencyDummyCreator().Create();
            var healingPrice = new HealingPrice()
            {
                CurrencyID = currency.ID,
                Cost       = 12.34m
            };

            transactionsService.PayForHealing(hospital, citizen, healingPrice);

            mockTransactionsService.Verify(x => x.MakeTransaction(It.Is <Transaction>(
                                                                      t => t.TransactionType == TransactionTypeEnum.Healing &&
                                                                      t.DestinationEntityID == hospital.CompanyID &&
                                                                      t.SourceEntityID == citizen.ID &&
                                                                      t.Money.Currency == currency &&
                                                                      t.Money.Amount == healingPrice.Cost
                                                                      ), It.IsAny <bool>()));
        }
Exemplo n.º 6
0
        public TransactionResult PayForHealing(Hospital hospital, Citizen citizen, HealingPrice healinPrice)
        {
            var hospitalEntity = hospital.Company.Entity;
            var citizenEntity  = citizen.Entity;

            var currency = Persistent.Currencies.GetById(healinPrice.CurrencyID);

            var money = new Money(currency, healinPrice.Cost.Value);

            var transaction = new Transaction()
            {
                Arg1 = "Healing",
                Arg2 = string.Format("{0}({1}) paid for healing in {2}({3})",
                                     citizenEntity.Name, citizenEntity.EntityID, hospitalEntity.Name, hospitalEntity.EntityID),
                DestinationEntityID = hospitalEntity.EntityID,
                SourceEntityID      = citizenEntity.EntityID,
                Money           = money,
                TransactionType = TransactionTypeEnum.Healing
            };

            return(MakeTransaction(transaction, false));
        }