public void AddTest()
        {
            var userName       = Guid.NewGuid().ToString();
            var costName       = Guid.NewGuid().ToString();
            var rnd            = new Random();
            var userController = new UserController(userName);
            var costController = new CostsController(userController.CurrentUser);
            var cost           = new CostsList(costName, rnd.Next(100, 500));

            costController.Add(cost, rnd.Next(100, 500));
            Assert.AreEqual(cost.Name, costController.Costs.First().Name);
        }
        static void Main(string[] args)
        {
            Console.WriteLine("Вас приветствует приложение для записи Доходов и Расходов!");
            Console.WriteLine("Введите Логин: ");
            var name             = Console.ReadLine();
            var userController   = new UserController(name);
            var costsController  = new CostsController(userController.CurrentUser);
            var incomeController = new IncomeController(userController.CurrentUser);

            if (userController.IsNewUser)
            {
                Console.WriteLine("Введите свой пол: ");
                var gender = Console.ReadLine();
                userController.SetNewUsersData(gender);
            }
            Console.WriteLine(userController.CurrentUser);

            while (true)
            {
                Console.WriteLine("Выберите следующее действие: ");
                Console.WriteLine("E - Ввод расходов.");
                Console.WriteLine("A - Ввод доходов.");
                Console.WriteLine("Q - Выйти и закрыть.");
                var key = Console.ReadKey();
                Console.WriteLine();
                switch (key.Key)
                {
                case ConsoleKey.E:
                    var costs = EnterCosts();
                    costsController.Add(costs.Cost, costs.Amount);
                    foreach (var item in costsController.CostsList.Costs)
                    {
                        Console.WriteLine(item.Key + " " + item.Value);
                    }
                    break;

                case ConsoleKey.A:
                    var income = EnterIncomes();
                    incomeController.Add(income.Income, income.Amount);
                    foreach (var item in incomeController.IncomeList.Incomes)
                    {
                        Console.WriteLine(item.Key + " " + item.Value);
                    }
                    break;

                case ConsoleKey.Q:
                    Environment.Exit(0);
                    break;
                }
            }
        }
        public void Ping()
        {
            PingObject ping = new PingObject()
            {
                PostgresMessage = "Postgres status: OK",
                RabbitMessage   = "Rabbit status: OK"
            };
            var mock = new Mock <IPingService>();

            mock.Setup(m => m.Ping()).Returns(ping);

            var controller = new CostsController(
                (new Mock <ICostsService>()).Object,
                (new Mock <ILoggerManager>()).Object,
                mock.Object);

            var result   = controller.Ping();
            var okResult = result as OkObjectResult;

            mock.VerifyAll();

            Assert.AreEqual(200, okResult.StatusCode);
        }
        public async Task GetCostsTest()
        {
            DateTime from = new DateTime(2020, 1, 1);
            DateTime to   = new DateTime(2020, 12, 1);

            List <MonthCost> returnedList = new List <MonthCost>();

            PeriodCost periodMonth2 = new PeriodCost()
            {
                month = 2,
                year  = 2020
            };
            Cost bugsCostMonth2 = new Cost()
            {
                cant     = 100,
                unitCost = 2,
            };
            Cost usersCostMonth2 = new Cost()
            {
                cant     = 13,
                unitCost = 5,
            };
            PeriodCost periodMonth5 = new PeriodCost()
            {
                month = 5,
                year  = 2020
            };
            Cost bugsCostMonth5 = new Cost()
            {
                cant     = 167,
                unitCost = 4,
            };
            Cost usersCostMonth5 = new Cost()
            {
                cant     = 7,
                unitCost = 6,
            };

            MonthCost monthCost2 = new MonthCost()
            {
                id     = 1,
                bugs   = bugsCostMonth2,
                users  = usersCostMonth2,
                period = periodMonth2
            };
            MonthCost monthCost5 = new MonthCost()
            {
                id     = 2,
                bugs   = bugsCostMonth5,
                users  = usersCostMonth5,
                period = periodMonth5
            };

            returnedList.Add(monthCost2);
            returnedList.Add(monthCost5);

            var mockCostService = new Mock <ICostsService>();

            mockCostService.Setup(m => m.GetCosts(from, to, 1)).Returns(returnedList);

            var controller = new CostsController(
                mockCostService.Object,
                (new Mock <ILoggerManager>()).Object,
                (new Mock <IPingService>()).Object);

            controller.ControllerContext             = new ControllerContext();
            controller.ControllerContext.HttpContext = new DefaultHttpContext();

            User usr = new User()
            {
                id = 1, organizationId = 1
            };
            TokenContent tokenCont = new TokenContent()
            {
                user = usr, organizationId = 1
            };
            Token token = new Token()
            {
                exp = 10000, iat = 10000, data = tokenCont
            };

            controller.ControllerContext.HttpContext.Items["Token"] = token;

            var queryParam = new CostsFilterOptions()
            {
                From = from, To = to
            };

            var result = await controller.Get(queryParam);

            var okResult = result as OkObjectResult;

            List <MonthCost> model = okResult.Value as List <MonthCost>;

            mockCostService.VerifyAll();

            Assert.AreEqual(200, okResult.StatusCode);
            Assert.IsFalse(model == null);
            Assert.AreEqual(model.Count, 2);
        }