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_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_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!"); }