public void IncreaseTheOwnerResourcesByTheTotalAmountOfProfitsFromTheirStations_WhenInvoked() { // Arrange int validIdentificationNumber = 1; string validNickName = "Pesho"; var stationsList = new List <ITeleportStation>(); var stationOwner = new BusinessOwner(validIdentificationNumber, validNickName, stationsList); stationOwner.Resources.BronzeCoins = 10; stationOwner.Resources.SilverCoins = 10; stationOwner.Resources.GoldCoins = 10; var stationMapStub = new List <IPath>(); var stationLocationStub = new Mock <ILocation>(); var teleportStationFake = new TeleportStationFake(stationOwner, stationMapStub, stationLocationStub.Object); teleportStationFake.ResoursesExposed.BronzeCoins = 20; teleportStationFake.ResoursesExposed.SilverCoins = 20; teleportStationFake.ResoursesExposed.GoldCoins = 20; stationOwner.TeleportStations.Add(teleportStationFake); // Act stationOwner.CollectProfits(); // Assert Assert.AreEqual((10 + 20), stationOwner.Resources.BronzeCoins); Assert.AreEqual((10 + 20), stationOwner.Resources.SilverCoins); Assert.AreEqual((10 + 20), stationOwner.Resources.GoldCoins); }
public void CauseTeleportStationToObtainPaymentFromUnitToTeleport_WhenAllValidationsPassSuccessfully() { // Arrange var stationOwnerStub = new Mock <IBusinessOwner>(); var unitToTeleportStub = new Mock <IUnit>(); var stationLocationStub = new Mock <ILocation>(); stationLocationStub.SetupGet(l => l.Planet.Galaxy.Name).Returns("Milky way"); stationLocationStub.SetupGet(l => l.Planet.Name).Returns("Earth"); stationLocationStub.SetupGet(l => l.Planet.Units).Returns(new List <IUnit> { unitToTeleportStub.Object }); var targetLocationStub = new Mock <ILocation>(); targetLocationStub.SetupGet(d => d.Planet.Galaxy.Name).Returns("Andromeda"); targetLocationStub.SetupGet(d => d.Planet.Name).Returns("Kobe"); var pathCostsStub = new Mock <IResources>(); pathCostsStub.SetupGet(r => r.BronzeCoins).Returns(20); pathCostsStub.SetupGet(r => r.SilverCoins).Returns(20); pathCostsStub.SetupGet(r => r.GoldCoins).Returns(20); var pathStub = new Mock <IPath>(); pathStub.SetupGet(p => p.TargetLocation.Planet.Galaxy.Name).Returns("Andromeda"); pathStub.SetupGet(p => p.TargetLocation.Planet.Name).Returns("Kobe"); pathStub.SetupGet(p => p.TargetLocation.Planet.Units).Returns(new List <IUnit>()); pathStub.SetupGet(p => p.Cost).Returns(pathCostsStub.Object); var stationMapStub = new List <IPath> { pathStub.Object }; var teleport = new TeleportStationFake(stationOwnerStub.Object, stationMapStub, stationLocationStub.Object); teleport.ResoursesExposed.BronzeCoins = 0; teleport.ResoursesExposed.SilverCoins = 0; teleport.ResoursesExposed.GoldCoins = 0; unitToTeleportStub.Setup(u => u.CurrentLocation).Returns(stationLocationStub.Object); unitToTeleportStub.Setup(u => u.CanPay(It.IsAny <IResources>())).Returns(true); unitToTeleportStub.Setup(u => u.Pay(It.IsAny <IResources>())).Returns(pathCostsStub.Object); unitToTeleportStub.Setup(u => u.Resources).Returns(pathCostsStub.Object); // Act teleport.TeleportUnit(unitToTeleportStub.Object, targetLocationStub.Object); // Assert Assert.AreEqual(20, teleport.ResoursesExposed.BronzeCoins); Assert.AreEqual(20, teleport.ResoursesExposed.SilverCoins); Assert.AreEqual(20, teleport.ResoursesExposed.GoldCoins); }
public void SetAllProvidedFields_WhenPassedValidParameters() { // Arrange var ownerStub = new Mock <IBusinessOwner>(); var mapStub = new List <IPath> { new Mock <IPath>().Object }; var locationStub = new Mock <ILocation>(); // Act var teleportFake = new TeleportStationFake(ownerStub.Object, mapStub, locationStub.Object); // Assert Assert.AreSame(ownerStub.Object, teleportFake.OwnerExposed); Assert.AreSame(mapStub, teleportFake.GalacticMapExposed); Assert.AreSame(locationStub.Object, teleportFake.LocationExposed); }
public void ReturnTotalAmountOfResourcesGeneratedUsingTeleportService_WhenPassedActualOwnerOfTheService() { // Arrange var stationOwnerStub = new Mock <IBusinessOwner>(); var stationLocationMock = new Mock <ILocation>(); var stationMapStub = new List <IPath> { new Mock <IPath>().Object }; var teleport = new TeleportStationFake(stationOwnerStub.Object, stationMapStub, stationLocationMock.Object); teleport.ResoursesExposed.BronzeCoins = 20; teleport.ResoursesExposed.SilverCoins = 20; teleport.ResoursesExposed.GoldCoins = 20; // Act var totalAmount = teleport.PayProfits(stationOwnerStub.Object); // Assert Assert.AreEqual(20, totalAmount.BronzeCoins); Assert.AreEqual(20, totalAmount.SilverCoins); Assert.AreEqual(20, totalAmount.GoldCoins); }