Пример #1
0
        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);
        }