public void GetSimulations_ReturnsProperCollectionOfSimulations_IncludingLastUpdateTimestamps() { //Arrange Mock <ISimulationRepository> mockedRepository = new Mock <ISimulationRepository>(); List <SimulationDto> dtos = new List <SimulationDto>(); SimulationDto simulationDto1 = new SimulationDto() { Id = 1, Name = "a" }; SimulationDto simulationDto2 = new SimulationDto() { Id = 2, Name = "b" }; SimulationDto simulationDto3 = new SimulationDto() { Id = 3, Name = "c" }; dtos.AddRange(new SimulationDto[] { simulationDto1, simulationDto2, simulationDto3 }); List <AnalysisTimestampDto> timestamps = new List <AnalysisTimestampDto>(); AnalysisTimestampDto timestamp1 = new AnalysisTimestampDto() { Id = 1, AssetId = 1, TimeframeId = 1, SimulationId = 1, AnalysisTypeId = 2, LastAnalysedItem = new DateTime(2016, 5, 2, 12, 0, 0) }; AnalysisTimestampDto timestamp2 = new AnalysisTimestampDto() { Id = 2, AssetId = 1, TimeframeId = 1, SimulationId = 1, AnalysisTypeId = 3, LastAnalysedItem = new DateTime(2016, 5, 2, 13, 0, 0) }; AnalysisTimestampDto timestamp3 = new AnalysisTimestampDto() { Id = 3, AssetId = 1, TimeframeId = 2, SimulationId = 1, AnalysisTypeId = 3, LastAnalysedItem = new DateTime(2016, 5, 2, 14, 0, 0) }; AnalysisTimestampDto timestamp4 = new AnalysisTimestampDto() { Id = 4, AssetId = 1, TimeframeId = 1, SimulationId = 2, AnalysisTypeId = 2, LastAnalysedItem = new DateTime(2016, 5, 2, 12, 0, 0) }; AnalysisTimestampDto timestamp5 = new AnalysisTimestampDto() { Id = 5, AssetId = 1, TimeframeId = 1, SimulationId = 2, AnalysisTypeId = 3, LastAnalysedItem = new DateTime(2016, 5, 2, 13, 0, 0) }; AnalysisTimestampDto timestamp6 = new AnalysisTimestampDto() { Id = 6, AssetId = 1, TimeframeId = 2, SimulationId = 2, AnalysisTypeId = 4, LastAnalysedItem = new DateTime(2016, 5, 2, 14, 0, 0) }; timestamps.AddRange(new AnalysisTimestampDto[] { timestamp1, timestamp2, timestamp3, timestamp4, timestamp5, timestamp6 }); mockedRepository.Setup(r => r.GetSimulations()).Returns(dtos); mockedRepository.Setup(r => r.GetAnalysisTimestampsForSimulation(1)).Returns(new AnalysisTimestampDto[] { timestamp1, timestamp2, timestamp3 }); mockedRepository.Setup(r => r.GetAnalysisTimestampsForSimulation(2)).Returns(new AnalysisTimestampDto[] { timestamp4, timestamp5, timestamp6 }); //Act SimulationService service = new SimulationService(mockedRepository.Object); var actualSimultations = service.GetSimulations(); //Assert List <Simulation> expectedSimulations = new List <Simulation>(); Simulation simulation1 = new Simulation() { Id = 1, Name = "a" }; simulation1.AddLastUpdate(timestamp1); simulation1.AddLastUpdate(timestamp2); simulation1.AddLastUpdate(timestamp3); Simulation simulation2 = new Simulation() { Id = 2, Name = "b" }; simulation2.AddLastUpdate(timestamp4); simulation2.AddLastUpdate(timestamp5); simulation2.AddLastUpdate(timestamp6); Simulation simulation3 = new Simulation() { Id = 3, Name = "c" }; expectedSimulations.AddRange(new Simulation[] { simulation1, simulation2, simulation3 }); bool areEqual = expectedSimulations.HasEqualItems(actualSimultations); Assert.IsTrue(areEqual); }