public void TestAirConditioner_WithCorrectInput_ShouldAddCorrectReport() { Mock<IAirConditioner> fakeAC = new Mock<IAirConditioner>(); fakeAC.Setup(x => x.Manufacturer).Returns("Toshiba"); fakeAC.Setup(x => x.Model).Returns("EX200"); fakeAC.Setup(x => x.Test()).Returns(false); Mock<IAirConditionerTesterDatabase> databaseMock = new Mock<IAirConditionerTesterDatabase>(); Mock<IRepository<IAirConditioner>> fakeACrepository = new Mock<IRepository<IAirConditioner>>(); Mock<IReportsRepository> fakeReportsRepository = new Mock<IReportsRepository>(); databaseMock.Setup(x => x.AirConditioners).Returns(fakeACrepository.Object); databaseMock.Setup(x => x.Reports).Returns(fakeReportsRepository.Object); fakeACrepository.Setup(x => x.GetItem(It.IsAny<string>(), It.IsAny<string>())).Returns(fakeAC.Object); IReport report = null; fakeReportsRepository.Setup(x => x.Add(It.IsAny<IReport>())).Callback<IReport>(r => report = r); IAirConditionerTesterDatabase fakeDatabase = databaseMock.Object; var controller = new AirConditionerTesterSystem(fakeDatabase); controller.TestAirConditioner("Toshiba", "EX200"); Assert.AreEqual("Toshiba", report.Manufacturer, "Manufacturer did not match!"); Assert.AreEqual("EX200", report.Model, "Model did not match!"); Assert.AreEqual(Mark.Failed, report.Mark, "Mark did not match!"); }
public void TestAirConditioner_WithCorrectInput_ShouldCallAirConditionerTestMethod() { Mock<IAirConditioner> fakeAC = new Mock<IAirConditioner>(); Mock<IAirConditionerTesterDatabase> databaseMock = new Mock<IAirConditionerTesterDatabase>(); Mock<IRepository<IAirConditioner>> fakeACrepository = new Mock<IRepository<IAirConditioner>>(); Mock<IReportsRepository> fakeReportsRepository = new Mock<IReportsRepository>(); databaseMock.Setup(x => x.AirConditioners).Returns(fakeACrepository.Object); databaseMock.Setup(x => x.Reports).Returns(fakeReportsRepository.Object); fakeACrepository.Setup(x => x.GetItem(It.IsAny<string>(), It.IsAny<string>())).Returns(fakeAC.Object); IAirConditionerTesterDatabase fakeDatabase = databaseMock.Object; var controller = new AirConditionerTesterSystem(fakeDatabase); controller.TestAirConditioner("Toshiba", "EX100"); fakeAC.Verify(x => x.Test(), Times.Exactly(1)); }
public void TestAirConditioner_WithoutAlreadyExistingReport_ShouldThrowCorrectDuplicateEntryException() { Mock<IAirConditioner> fakeAC = new Mock<IAirConditioner>(); fakeAC.Setup(x => x.Test()).Returns(true); Mock<IAirConditionerTesterDatabase> databaseMock = new Mock<IAirConditionerTesterDatabase>(); Mock<IRepository<IAirConditioner>> fakeACrepository = new Mock<IRepository<IAirConditioner>>(); Mock<IReportsRepository> fakeReportsRepository = new Mock<IReportsRepository>(); databaseMock.Setup(x => x.AirConditioners).Returns(fakeACrepository.Object); databaseMock.Setup(x => x.Reports).Returns(fakeReportsRepository.Object); fakeACrepository.Setup(x => x.GetItem(It.IsAny<string>(), It.IsAny<string>())).Returns(fakeAC.Object); fakeReportsRepository.Setup(x => x.Add(It.IsAny<IReport>())) .Throws(new DuplicateEntryException(Constants.DuplicateEntry)); IAirConditionerTesterDatabase fakeDatabase = databaseMock.Object; var controller = new AirConditionerTesterSystem(fakeDatabase); controller.TestAirConditioner("Toshiba", "EX100"); try { controller.TestAirConditioner("Toshiba", "EX100"); } catch (DuplicateEntryException ex) { Assert.AreEqual(string.Format(Constants.DuplicateEntry), ex.Message, "Expected message did not match!"); throw new DuplicateEntryException(Constants.DuplicateEntry); } }
public void TestAirConditioner_WithoutExistingEntry_ShouldThrowCorrectNonExistantEntryException() { Mock<IAirConditionerTesterDatabase> databaseMock = new Mock<IAirConditionerTesterDatabase>(); Mock<IRepository<IAirConditioner>> fakeACrepository = new Mock<IRepository<IAirConditioner>>(); databaseMock.Setup(x => x.AirConditioners).Returns(fakeACrepository.Object); fakeACrepository.Setup(x => x.GetItem(It.IsAny<string>(), It.IsAny<string>())).Throws(new NonExistantEntryException(Constants.NonExistantEntry)); IAirConditionerTesterDatabase fakeDatabase = databaseMock.Object; var controller = new AirConditionerTesterSystem(fakeDatabase); try { controller.TestAirConditioner("Toshiba", "EX100"); } catch (NonExistantEntryException ex) { Assert.AreEqual(Constants.NonExistantEntry, ex.Message, "Expected message did not match!"); throw new NonExistantEntryException(""); } }
public void TestAirConditioner_WithCorrectInput_ShouldReturnSuccessMessage() { Mock<IAirConditioner> fakeAC = new Mock<IAirConditioner>(); fakeAC.Setup(x => x.Manufacturer).Returns("Toshiba"); fakeAC.Setup(x => x.Model).Returns("EX200"); fakeAC.Setup(x => x.Test()).Returns(false); Mock<IAirConditionerTesterDatabase> databaseMock = new Mock<IAirConditionerTesterDatabase>(); Mock<IRepository<IAirConditioner>> fakeACrepository = new Mock<IRepository<IAirConditioner>>(); Mock<ReportsRepository> fakeReportsRepository = new Mock<ReportsRepository>(); databaseMock.Setup(x => x.AirConditioners).Returns(fakeACrepository.Object); databaseMock.Setup(x => x.Reports).Returns(fakeReportsRepository.Object); fakeACrepository.Setup(x => x.GetItem(It.IsAny<string>(), It.IsAny<string>())).Returns(fakeAC.Object); IAirConditionerTesterDatabase fakeDatabase = databaseMock.Object; var controller = new AirConditionerTesterSystem(fakeDatabase); var result = controller.TestAirConditioner("Toshiba", "EX200"); Assert.AreEqual("Air Conditioner model EX200 from Toshiba tested successfully.", result, "Expected messages did not match!"); }