public void GetMeasurementStatistic_Statistics()
        {
            // Arrange
            MeasurementsController measurementController = new MeasurementsController();

            // Act
            MeasurementsRepository.ClearAllMeasurements();

            var fromtimeValue = DateTime.UtcNow;

            MockData.SaveMeasurement(fromtimeValue.ToString());

            var totimeValue = DateTime.UtcNow.AddSeconds(3);

            MockData.SaveMeasurement(totimeValue.ToString());

            var response       = measurementController.GetMeasurementStatistics(MockData.PrepareMetricData(), MockData.PrepareStatsData(), fromtimeValue.ToString(), totimeValue.ToString());
            var actualResponse = response as OkNegotiatedContentResult <IList <Statistic> >;

            var returnResponse = (IList <Statistic>)actualResponse.Content;

            //Assert
            Assert.IsNotNull(response);
            Assert.IsTrue(returnResponse.Count > 1, "It should contain statistics ");
        }
        public void GetMeasurementStatistic_NoData_Statistics()
        {
            // Arrange
            MeasurementsController measurementController = new MeasurementsController();

            // Act
            MeasurementsRepository.ClearAllMeasurements();

            var fromtimeValue = DateTime.UtcNow;

            MockData.SaveMeasurement(fromtimeValue.ToString());

            var totimeValue = DateTime.UtcNow.AddSeconds(3);

            MockData.SaveMeasurement(totimeValue.ToString());

            var response       = measurementController.GetMeasurementStatistics(MockData.PrepareMetricData(), MockData.PrepareStatsData(), fromtimeValue.AddDays(1).ToString(), totimeValue.AddDays(3).ToString());
            var actualResponse = response as OkNegotiatedContentResult <String>;



            //Assert
            Assert.IsNotNull(actualResponse);
            Assert.AreEqual(actualResponse.Content, "No Data available");
        }
Пример #3
0
 /// <summary>
 /// Return measurement for timeStamp
 /// If timestamp is null it will return null
 /// </summary>
 /// <param name="timeStamp"></param>
 /// <returns></returns>
 private Measurement GetMeasurementForTimeStamp(DateTime?timeStamp)
 {
     if (timeStamp != null)
     {
         var mesurementValues = MeasurementsRepository.GetMeasurementsForTimeStamp((DateTime)timeStamp);
         return(mesurementValues);
     }
     else
     {
         return(null);
     }
 }
Пример #4
0
 public UnitOfWork(ApplicationDbContext context)
 {
     _context     = context;
     Workouts     = new WorkoutRepository(context);
     Exercises    = new ExerciseRepository(context);
     Cardios      = new CardioRepository(context);
     Achievements = new AchievementsRepository(context);
     Users        = new ApplicationUserRepository(context);
     DailyMenus   = new DailyMenuRepository(context);
     Foods        = new FoodsRepository(context);
     Measurements = new MeasurementsRepository(context);
 }
Пример #5
0
        /// <summary>
        /// Return list of measurement between start
        /// it will return null if no data found
        /// </summary>
        /// <param name="startDate"></param>
        /// <param name="endDate"></param>
        /// <returns></returns>
        private IList <Measurement> GetMeasurementInRange(DateTime startDate, DateTime endDate)
        {
            var mesurementValues = MeasurementsRepository.GetMeasurementInRange(startDate, endDate);

            if (mesurementValues != null && mesurementValues.Count > 0)
            {
                return(mesurementValues);
            }
            else
            {
                return(null);
            }
        }
Пример #6
0
        /// <summary>
        /// Add/Update measurement for given timestamp
        /// </summary>
        /// <param name="measurement">return true if successfully save else false</param>
        public Boolean SaveMeasurement(MeasurementVM measurementVM)
        {
            bool isSaved   = false;
            var  timeStamp = GetDateTime(measurementVM.TimeStampStr);

            //Check if valid metricData collection && ValidDateTime
            if (measurementVM.MeasurementValues != null && measurementVM.MeasurementValues.Count > 1 && IsValidDate(timeStamp))
            {
                var measurement = CreateMeasurementObject(measurementVM.MeasurementValues, timeStamp);
                //Add measurement in cache
                MeasurementsRepository.SaveMeasurements((DateTime)timeStamp, measurement);
                isSaved = true;
            }
            return(isSaved);
        }
        public void GetMeasurementsForTime_NowDate_ForDate()
        {
            // Arrange
            MeasurementsController measurementController = new MeasurementsController();

            // Act
            MeasurementsRepository.ClearAllMeasurements();

            var response       = measurementController.GetMeasurementsForTime(DateTime.Now.ToShortDateString());
            var actualResponse = response as NotFoundResult;


            //Assert
            Assert.IsNotNull(actualResponse);
        }
        public void GetMeasurementsForTime_ProperData_ForDate()
        {
            // Arrange
            MeasurementsController measurementController = new MeasurementsController();

            // Act
            MeasurementsRepository.ClearAllMeasurements();

            var timeValue = DateTime.UtcNow.ToString();

            MockData.SaveMeasurement(timeValue);
            var response       = measurementController.GetMeasurementsForTime(timeValue);
            var actualResponse = response as OkNegotiatedContentResult <IList <Measurement> >;
            var returnValue    = actualResponse.Content as IList <Measurement>;

            //Assert
            Assert.IsNotNull(actualResponse);
            Assert.IsTrue(returnValue.Count == 1, "Return value should be 1 because Added one measurement.");
        }
Пример #9
0
        /// <summary>
        /// Return the List of statistic data
        /// </summary>
        /// <param name="metrics"></param>
        /// <param name="stats"></param>
        /// <param name="fromDateTime"></param>
        /// <param name="toDateTime"></param>
        /// <returns></returns>
        public IList <Statistic> CalculateStaticts(IList <string> metrics, IList <string> stats, string fromDateTime, string toDateTime)
        {
            DateTime from;
            DateTime to;

            // parse date into ISO-8061
            DateTime.TryParse(fromDateTime, null, System.Globalization.DateTimeStyles.RoundtripKind, out from);
            DateTime.TryParse(toDateTime, null, System.Globalization.DateTimeStyles.RoundtripKind, out to);

            //Get the measurment list between fromDateTime and to date
            var measurementList = MeasurementsRepository.GetMeasurementInRange(from, to);

            if (measurementList != null && measurementList.Count > 0)
            {
                var statisticList = calculateStatistics(metrics, stats, measurementList);
                return(statisticList);
            }
            return(null);
        }
        public void SaveMeasurementsForTime_BadRequest_ForNullMetricData()
        {
            // Arrange
            MeasurementsController measurementController = new MeasurementsController();

            // Act
            MeasurementsRepository.ClearAllMeasurements();

            var           metricDataList  = MockData.PrepareMetricDataCollection();
            MeasurementVM measurementdata = new MeasurementVM
            {
                TimeStampStr      = DateTime.UtcNow.ToString(),
                MeasurementValues = null
            };
            var response       = measurementController.SaveMeasurementsForTime(measurementdata);
            var actualResponse = response as BadRequestErrorMessageResult;

            //Assert
            Assert.IsNotNull(response);
            Assert.AreEqual(actualResponse.Message, "Measurement cannot be added with invalid values");
        }
        public void SaveMeasurementsForTime_Created()
        {
            // Arrange
            MeasurementsController measurementController = new MeasurementsController();

            // Act
            MeasurementsRepository.ClearAllMeasurements();

            var           metricDataList  = MockData.PrepareMetricDataCollection();
            var           timeValue       = DateTime.UtcNow.ToString();
            MeasurementVM measurementdata = new MeasurementVM
            {
                TimeStampStr      = timeValue,
                MeasurementValues = MockData.PrepareMetricDataCollection()
            };
            var response       = measurementController.SaveMeasurementsForTime(measurementdata);
            var actualResponse = response as CreatedNegotiatedContentResult <string>;

            //Assert
            Assert.IsNotNull(actualResponse);
            Assert.IsInstanceOfType(response, typeof(CreatedNegotiatedContentResult <string>));
            Assert.AreEqual(actualResponse.Location, "api/Measurements", "Route should be api/Measurements");
            Assert.AreEqual(actualResponse.Content, timeValue, $"Measurement should be save for {timeValue}");
        }
        public void GetMeasurementsForTime_InRange_ForDate()
        {
            // Arrange
            MeasurementsController measurementController = new MeasurementsController();

            // Act
            MeasurementsRepository.ClearAllMeasurements();

            var fromtimeValue = DateTime.UtcNow;

            MockData.SaveMeasurement(fromtimeValue.ToString());

            var totimeValue = DateTime.UtcNow.AddSeconds(3);

            MockData.SaveMeasurement(totimeValue.ToString());

            var response       = measurementController.GetMeasurementsForTime(fromtimeValue.ToString(), null);
            var actualResponse = response as OkNegotiatedContentResult <IList <Measurement> >;
            var returnValue    = actualResponse.Content as IList <Measurement>;

            //Assert
            Assert.IsNotNull(actualResponse);
            Assert.IsTrue(returnValue.Count == 2, "Return value should be 2 because Added 2 measurement with in time range");
        }
        public void GetMeasurementsForTime_NoValue_ForDate()
        {
            // Arrange
            MeasurementsController measurementController = new MeasurementsController();

            // Act
            MeasurementsRepository.ClearAllMeasurements();

            var fromtimeValue = DateTime.UtcNow;

            MockData.SaveMeasurement(fromtimeValue.ToString());



            var totimeValue = DateTime.UtcNow.AddSeconds(3);

            MockData.SaveMeasurement(totimeValue.ToString());

            var response       = measurementController.GetMeasurementsForTime(fromtimeValue.ToString(), totimeValue.AddHours(1).ToString());
            var actualResponse = response as NotFoundResult;

            //Assert
            Assert.IsNotNull(actualResponse);
        }
        public void GetMeasurementStatistic_StatsNull()
        {
            // Arrange
            MeasurementsController measurementController = new MeasurementsController();

            // Act
            MeasurementsRepository.ClearAllMeasurements();

            var fromtimeValue = DateTime.UtcNow;

            MockData.SaveMeasurement(fromtimeValue.ToString());

            var totimeValue = DateTime.UtcNow.AddSeconds(3);

            MockData.SaveMeasurement(totimeValue.ToString());

            var response       = measurementController.GetMeasurementStatistics(MockData.PrepareMetricData(), null, fromtimeValue.ToString(), totimeValue.ToString());
            var actualResponse = response as BadRequestErrorMessageResult;


            //Assert
            Assert.IsNotNull(response);
            Assert.AreEqual(actualResponse.Message, "Parameters are not valid");
        }