public void P_WorkoutDeletePerformanceTest()
        {
            double            expectedTime = 1;
            WorkoutCollection result;
            var workouts = workoutService.GetWorkouts().Where(w => w.workout_note.Equals("MockUser", StringComparison.InvariantCultureIgnoreCase)).ToList();

            Stopwatch stopwatch = new Stopwatch();

            stopwatch.Start();
            if (workouts != null && workouts.Count() > 0)
            {
                System.Threading.Tasks.Parallel.ForEach(workouts, workout =>
                {
                    var controller           = new WorkoutTrackerController(workoutService, categoryService, _logManager);
                    var input                = Helper.CastObject <WorkoutCollection>(workout);
                    controller.Request       = new HttpRequestMessage();
                    controller.Configuration = new HttpConfiguration();
                    controller.Request.Headers.Add("Accept", "application/json");
                    var response = controller.DeleteWorkout(input);
                    result       = response.Content.ReadAsAsync <WorkoutCollection>().Result;
                    response.Dispose();
                });
            }

            stopwatch.Stop();
            var res = stopwatch.Elapsed.TotalMinutes <= expectedTime;

            Assert.IsTrue(res);
        }
        public void J_EndWorkoutApiTest()
        {
            WorkoutCollection result;
            var           wc         = workoutService.GetWorkouts().Where(w => w.workout_title.Equals("TestApiWorkoutUpdated", StringComparison.InvariantCultureIgnoreCase)).FirstOrDefault();
            var           waRes      = workoutService.GetActiveWorkouts(wc.workout_id).FirstOrDefault();
            var           controller = new WorkoutTrackerController(workoutService, categoryService, _logManager);
            WorkoutActive wa         = new WorkoutActive()
            {
                workout_id = wc.workout_id,
                sid        = waRes.sid,
                start_date = waRes.start_date,
                start_time = waRes.start_time,
                end_date   = DateTime.UtcNow.Date,
                end_time   = DateTime.UtcNow.TimeOfDay,
                status     = true,
                comment    = "Ended"
            };

            controller.Request       = new HttpRequestMessage();
            controller.Configuration = new HttpConfiguration();
            controller.Request.Headers.Add("Accept", "application/json");
            var response = controller.EndWorkout(wa);

            result = response.Content.ReadAsAsync <WorkoutCollection>().Result;
            Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);
            Assert.AreNotEqual(null, result);
            Assert.AreNotEqual(null, result.workout_active);
            Assert.AreNotEqual(0, result.workout_active.Count());
            Assert.AreNotEqual(null, result.workout_active.FirstOrDefault().end_date);
            Assert.AreNotEqual(null, result.workout_active.FirstOrDefault().end_time);
            Assert.AreEqual(true, result.workout_active.FirstOrDefault().status);
            Assert.AreNotEqual(null, result.workout_active.FirstOrDefault().comment);
            response.Dispose();
        }
        public void F_AddWorkoutApiTest()
        {
            WorkoutCollection result;
            var category_name    = "WebApiTestCategoryUpdated";
            var cat              = categoryService.GetWorkoutCategories().Where(c => c.category_name.Equals(category_name, StringComparison.InvariantCultureIgnoreCase)).FirstOrDefault();
            var user             = _userService.GetUsers().FirstOrDefault();
            var catCon           = Helper.CastObject <WorkoutCategory>(cat);
            var userCon          = Helper.CastObject <User>(user);
            WorkoutCollection wc = new WorkoutCollection()
            {
                workout_id            = 0,
                workout_title         = "TestApiWorkout",
                workout_note          = string.Empty,
                workout_category      = catCon,
                workout_active        = null,
                calories_burn_per_min = 0,
                category_id           = catCon.category_id,
                user    = userCon,
                user_id = userCon.user_id
            };
            var controller = new WorkoutTrackerController(workoutService, categoryService, _logManager);

            controller.Request       = new HttpRequestMessage();
            controller.Configuration = new HttpConfiguration();
            controller.Request.Headers.Add("Accept", "application/json");
            var response = controller.AddWorkout(wc);

            result = response.Content.ReadAsAsync <WorkoutCollection>().Result;
            Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);
            Assert.AreNotEqual(null, result);
            Assert.AreNotEqual(0, result.workout_id);
            response.Dispose();
        }
        public void B_GetCategoriesApiTest()
        {
            IEnumerable <WorkoutCategory> result = null;
            var controller = new WorkoutTrackerController(workoutService, categoryService, _logManager);

            controller.Request       = new HttpRequestMessage();
            controller.Configuration = new HttpConfiguration();
            controller.Request.Headers.Add("Accept", "application/json");
            var response = controller.GetCategories();

            result = response.Content.ReadAsAsync <IEnumerable <WorkoutCategory> >().Result;
            Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);
            Assert.AreNotEqual(null, result);
            response.Dispose();
        }
        public void M_DeleteWorkoutApiTest()
        {
            WorkoutCollection result;
            var wc         = workoutService.GetWorkouts().Where(w => w.workout_title.Equals("TestApiWorkoutUpdated", StringComparison.InvariantCultureIgnoreCase)).FirstOrDefault();
            var controller = new WorkoutTrackerController(workoutService, categoryService, _logManager);
            var input      = Helper.CastObject <WorkoutCollection>(wc);

            controller.Request       = new HttpRequestMessage();
            controller.Configuration = new HttpConfiguration();
            controller.Request.Headers.Add("Accept", "application/json");
            var response = controller.DeleteWorkout(input);

            result = response.Content.ReadAsAsync <WorkoutCollection>().Result;
            Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);
            Assert.AreNotEqual(null, result);
            response.Dispose();
        }
        public void C_GetCategoryApiTest()
        {
            WorkoutCategory result;
            var             category_name = "WebApiTestCategory";
            var             cat           = categoryService.GetWorkoutCategories().Where(c => c.category_name.Equals(category_name, StringComparison.InvariantCultureIgnoreCase)).FirstOrDefault();
            var             input         = Helper.CastObject <WorkoutCategory>(cat);
            var             controller    = new WorkoutTrackerController(workoutService, categoryService, _logManager);

            controller.Request       = new HttpRequestMessage();
            controller.Configuration = new HttpConfiguration();
            controller.Request.Headers.Add("Accept", "application/json");
            var response = controller.GetCategory(input);

            result = response.Content.ReadAsAsync <WorkoutCategory>().Result;
            Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);
            Assert.AreNotEqual(null, result);
            response.Dispose();
        }
        public void E_GetAllWorkOutsByUserApiTest()
        {
            IEnumerable <WorkoutCollection> result;
            var user       = _userService.GetUsers().FirstOrDefault();
            var controller = new WorkoutTrackerController(workoutService, categoryService, _logManager);
            var input      = Helper.CastObject <User>(user);

            controller.Request       = new HttpRequestMessage();
            controller.Configuration = new HttpConfiguration();
            controller.Request.Headers.Add("Accept", "application/json");
            var response = controller.GetAllWorkOutsByUser(input);

            result = response.Content.ReadAsAsync <IEnumerable <WorkoutCollection> >().Result;
            Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);
            if (result != null && result.Count() > 0)
            {
                Assert.AreNotEqual(null, result);
                Assert.AreNotEqual(0, result.Count());
            }
            response.Dispose();
        }
        public void O_WorkoutLoadTest()
        {
            double    expectedTime = 1;
            var       locker       = new Object();
            int       count        = 0;
            Stopwatch stopwatch    = new Stopwatch();

            stopwatch.Start();
            System.Threading.Tasks.Parallel.For
                (0
                , 1000
                , new System.Threading.Tasks.ParallelOptions {
                MaxDegreeOfParallelism = 5
            }
                , (i) =>
            {
                System.Threading.Interlocked.Increment(ref count);
                lock (locker)
                {
                    IEnumerable <WorkoutCollection> result;
                    var user                 = _userService.GetUsers().FirstOrDefault();
                    var controller           = new WorkoutTrackerController(workoutService, categoryService, _logManager);
                    var input                = Helper.CastObject <User>(user);
                    controller.Request       = new HttpRequestMessage();
                    controller.Configuration = new HttpConfiguration();
                    controller.Request.Headers.Add("Accept", "application/json");
                    var response = controller.GetAllWorkOutsByUser(input);
                    result       = response.Content.ReadAsAsync <IEnumerable <WorkoutCollection> >().Result;
                    response.Dispose();
                    System.Threading.Thread.Sleep(10);
                }
                System.Threading.Interlocked.Decrement(ref count);
            }
                );

            stopwatch.Stop();
            var res = stopwatch.Elapsed.TotalMinutes <= expectedTime;

            Assert.IsTrue(res);
        }
        public void N_WorkoutAddPerformanceTest()
        {
            int               noOfCalls    = 500;
            double            expectedTime = 1;
            WorkoutCollection result;
            var               cat        = categoryService.GetWorkoutCategories().FirstOrDefault();
            var               user       = _userService.GetUsers().FirstOrDefault();
            var               catCon     = Helper.CastObject <WorkoutCategory>(cat);
            var               userCon    = Helper.CastObject <User>(user);
            var               controller = new WorkoutTrackerController(workoutService, categoryService, _logManager);

            Stopwatch stopwatch = new Stopwatch();

            stopwatch.Start();
            for (int i = 0; i < noOfCalls; i++)
            {
                WorkoutCollection wc = new WorkoutCollection()
                {
                    workout_id            = 0,
                    workout_title         = "TestApiWorkout_LoadTest" + i.ToString(),
                    workout_note          = "MockUser",
                    workout_category      = catCon,
                    workout_active        = null,
                    calories_burn_per_min = i * 10,
                    category_id           = catCon.category_id,
                    user    = userCon,
                    user_id = userCon.user_id
                };
                controller.Request       = new HttpRequestMessage();
                controller.Configuration = new HttpConfiguration();
                controller.Request.Headers.Add("Accept", "application/json");
                var response = controller.AddWorkout(wc);
                result = response.Content.ReadAsAsync <WorkoutCollection>().Result;
                response.Dispose();
            }
            stopwatch.Stop();
            var res = stopwatch.Elapsed.TotalMinutes <= expectedTime;

            Assert.IsTrue(res);
        }
        public void A_AddCategoryApiTest()
        {
            WorkoutCategory  result;
            workout_category wc = new workout_category()
            {
                category_id        = 0,
                category_name      = "WebApiTestCategory",
                workout_collection = null
            };
            var input      = Helper.CastObject <WorkoutCategory>(wc);
            var controller = new WorkoutTrackerController(workoutService, categoryService, _logManager);

            controller.Request       = new HttpRequestMessage();
            controller.Configuration = new HttpConfiguration();
            controller.Request.Headers.Add("Accept", "application/json");
            var response = controller.AddCategory(input);

            result = response.Content.ReadAsAsync <WorkoutCategory>().Result;
            Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);
            Assert.AreNotEqual(null, result);
            response.Dispose();
        }