Example #1
0
        public void Can_Paginate()
        {
            Mock <IPhoneRepository> mock = new Mock <IPhoneRepository>();

            mock.Setup(m => m.Phones).Returns(new List <Phone>
            {
                new Phone {
                    PhoneId = 1, Mark = "Sony1"
                },
                new Phone {
                    PhoneId = 2, Mark = "Sony2"
                },
                new Phone {
                    PhoneId = 3, Mark = "Sony3"
                },
                new Phone {
                    PhoneId = 4, Mark = "Sony4"
                },
                new Phone {
                    PhoneId = 5, Mark = "Sony5"
                }
            });

            PhonesController controller = new PhonesController(mock.Object);

            controller.pageSize = 3;

            PhonesListViewModel result = (PhonesListViewModel)controller.List(null, 2).Model;

            List <Phone> phones = result.Phones.ToList();

            Assert.IsTrue(phones.Count == 2);
            Assert.AreEqual(phones[0].Mark, "Sony4");
            Assert.AreEqual(phones[1].Mark, "Sony5");
        }
Example #2
0
        public void Can_Filter_Phones()
        {
            Mock <IPhoneRepository> mock = new Mock <IPhoneRepository>();

            mock.Setup(m => m.Phones).Returns(new List <Phone>
            {
                new Phone {
                    PhoneId = 1, Mark = "Sony1", Category = "Category1"
                },
                new Phone {
                    PhoneId = 2, Mark = "Sony2", Category = "Category2"
                },
                new Phone {
                    PhoneId = 3, Mark = "Sony3", Category = "Category1"
                },
                new Phone {
                    PhoneId = 4, Mark = "Sony4", Category = "Category3"
                },
                new Phone {
                    PhoneId = 5, Mark = "Sony5", Category = "Category2"
                }
            });

            PhonesController controller = new PhonesController(mock.Object);

            controller.pageSize = 3;

            List <Phone> result = ((PhonesListViewModel)controller.List("Category2", 1).Model).Phones.ToList();

            Assert.AreEqual(result.Count(), 2);
            Assert.IsTrue(result[0].Mark == "Category2" && result[0].Category == "Category2");
            Assert.IsTrue(result[1].Mark == "Category5" && result[1].Category == "Category2");
        }
Example #3
0
        public AdminPhonesControllerTests()
        {
            var options = new DbContextOptionsBuilder <MobileContext>()
                          .UseInMemoryDatabase(databaseName: "schooldb")
                          .Options;

            _context    = new MobileContext(options);
            _hostEnv    = new Mock <IWebHostEnvironment>();
            _controller = new PhonesController(_context, _hostEnv.Object);
        }
Example #4
0
        public PhonesControllerAdminTest()
        {
            var webhostmocker = new Mock <IWebHostEnvironment>();

            _phonesController = new PhonesController(_context, webhostmocker.Object);
            _ihost            = webhostmocker.Object;
            var options = new DbContextOptionsBuilder <MobileContext>()
                          .UseInMemoryDatabase(databaseName: "phonesdb")
                          .Options;
        }
Example #5
0
        public void Cannot_Retrieve_Image_Data_For_Invalid_ID()
        {
            // Организация - создание имитированного хранилища
            Mock <IPhoneRepository> mock = new Mock <IPhoneRepository>();

            mock.Setup(m => m.Phones).Returns(new List <Phone> {
                new Phone {
                    PhoneId = 1, Mark = "Марка1"
                },
                new Phone {
                    PhoneId = 2, Mark = "Марка2"
                }
            }.AsQueryable());

            // Организация - создание контроллера
            PhonesController controller = new PhonesController(mock.Object);

            // Действие - вызов метода действия GetImage()
            ActionResult result = controller.GetImage(10);

            // Утверждение
            Assert.IsNull(result);
        }
Example #6
0
        public async Task TestDelete()
        {
            var options = new DbContextOptionsBuilder <MobileContext>()
                          .UseInMemoryDatabase(databaseName: "phonesdb")
                          .Options;

            using (var context = new MobileContext(options))
            {
                int beforeCount = context.Phones.Count();
                var phones      = new Phone
                {
                    Name    = "IPhone 14",
                    Company = "Apple",
                    Price   = 20
                };
                _phonesController = new PhonesController(context, _ihost);
                var result = await _phonesController.Delete(phones);

                var redirectToActionResult = Assert.IsType <RedirectToActionResult>(result);
                Assert.Equal("Index", redirectToActionResult.ActionName);
                Assert.Equal(beforeCount - 1, context.Phones.Count());
            }
        }
Example #7
0
        static void Main(string[] args)
        {
            var phones_ctrl = new PhonesController();



            while (true)
            {
                Console.Clear();
                Console.WriteLine("A - Ввести новый смартфон.\tB - Вывести список смартфонов.\tD - Удалить смартфон\tQ - Выход.");
                var key = Console.ReadKey();
                Console.WriteLine();
                switch (key.Key)
                {
                case ConsoleKey.A:
                    SetNewDevice(phones_ctrl);
                    break;

                case ConsoleKey.B:
                    PrintDevice(phones_ctrl);

                    break;

                case ConsoleKey.D:
                    RemoveDevice(phones_ctrl);
                    break;

                case ConsoleKey.Q:
                    Environment.Exit(0);
                    break;

                default:
                    Console.WriteLine("Неправильный ввод.");
                    break;
                }
            }
        }
Example #8
0
        public void Generate_Category_Specific_Phone_Count()
        {
            Mock <IPhoneRepository> mock = new Mock <IPhoneRepository>();

            mock.Setup(m => m.Phones).Returns(new List <Phone>
            {
                new Phone {
                    PhoneId = 1, Mark = "Sony1", Category = "Category1"
                },
                new Phone {
                    PhoneId = 2, Mark = "Sony2", Category = "Category2"
                },
                new Phone {
                    PhoneId = 3, Mark = "Sony3", Category = "Category1"
                },
                new Phone {
                    PhoneId = 4, Mark = "Sony4", Category = "Category3"
                },
                new Phone {
                    PhoneId = 5, Mark = "Sony5", Category = "Category2"
                }
            });

            PhonesController controller = new PhonesController(mock.Object);

            controller.pageSize = 3;

            int res1   = ((PhonesListViewModel)controller.List("Category1").Model).PagingInfo.TotalItems;
            int res2   = ((PhonesListViewModel)controller.List("Category2").Model).PagingInfo.TotalItems;
            int res3   = ((PhonesListViewModel)controller.List("Category3").Model).PagingInfo.TotalItems;
            int resAll = ((PhonesListViewModel)controller.List(null).Model).PagingInfo.TotalItems;

            Assert.AreEqual(res1, 2);
            Assert.AreEqual(res2, 2);
            Assert.AreEqual(res3, 1);
            Assert.AreEqual(resAll, 5);
        }
Example #9
0
        public void Can_Retrieve_Image_Data()
        {
            // Организация - создание объекта phone с данными изображения
            Phone phone = new Phone
            {
                PhoneId       = 2,
                Mark          = "Марка2",
                ImageData     = new byte[] { },
                ImageMimeType = "image/png"
            };

            // Организация - создание имитированного хранилища
            Mock <IPhoneRepository> mock = new Mock <IPhoneRepository>();

            mock.Setup(m => m.Phones).Returns(new List <Phone>
            {
                new Phone {
                    PhoneId = 1, Mark = "Марка1"
                },
                phone,
                new Phone {
                    PhoneId = 3, Mark = "Марка3"
                }
            }.AsQueryable());

            // Организация - создание контроллера
            PhonesController controller = new PhonesController(mock.Object);

            // Действие - вызов метода действия GetImage()
            ActionResult result = controller.GetImage(2);

            // Утверждение
            Assert.IsNotNull(result);
            Assert.IsInstanceOfType(result, typeof(FileResult));
            Assert.AreEqual(phone.ImageMimeType, ((FileResult)result).ContentType);
        }
Example #10
0
        public void Can_Send_Pagination_View_Model()
        {
            Mock <IPhoneRepository> mock = new Mock <IPhoneRepository>();

            mock.Setup(m => m.Phones).Returns(new List <Phone>
            {
                new Phone {
                    PhoneId = 1, Mark = "Sony1"
                },
                new Phone {
                    PhoneId = 2, Mark = "Sony2"
                },
                new Phone {
                    PhoneId = 3, Mark = "Sony3"
                },
                new Phone {
                    PhoneId = 4, Mark = "Sony4"
                },
                new Phone {
                    PhoneId = 5, Mark = "Sony5"
                }
            });

            PhonesController controller = new PhonesController(mock.Object);

            controller.pageSize = 3;

            PhonesListViewModel result = (PhonesListViewModel)controller.List(null, 2).Model;

            PagingInfo pagingInfo = result.PagingInfo;

            Assert.AreEqual(pagingInfo.CurrentPage, 2);
            Assert.AreEqual(pagingInfo.ItemsPerPage, 3);
            Assert.AreEqual(pagingInfo.TotalItems, 5);
            Assert.AreEqual(pagingInfo.TotalPages, 2);
        }
Example #11
0
        private static void RemoveDevice(PhonesController phones_ctrl)
        {
            Console.Clear();
            Console.WriteLine("Выберите название и нажмите Enter:");
            //Если список смартфонов пуст, возвращаемся в меню
            if (phones_ctrl.Phones.Count == 0)
            {
                Console.WriteLine("Список смартфонов пуст. Нажмите Enter чтобы продолжить.");
                Console.ReadLine();
                return;
            }
            for (int i = 0; i < phones_ctrl.Phones.Count; i++)
            {
                Console.WriteLine($"{i + 1} - {phones_ctrl.Phones[i]}");
            }
            int numPhoneforRemove;

            while (true)
            {
                if (int.TryParse(Console.ReadLine(), out int numPhone) && numPhone <= phones_ctrl.Phones.Count)
                {
                    numPhoneforRemove = numPhone - 1;
                    var phoneName = phones_ctrl.Phones[numPhone - 1].Name;
                    Console.WriteLine($"Вы выбрали: {phoneName}");
                    phones_ctrl.AddnSetCurrent(phoneName);
                    break;
                }
                else
                {
                    Console.WriteLine("Некорректный ввод!");
                }
            }


            var models_controller = new ModelsController(phones_ctrl.current_phone);

            if (models_controller.Models.Count == 0)
            {
                Console.WriteLine($"У {phones_ctrl.current_phone.Name} не найдено моделей. Нажмите любую кнопку чтобы продолжить.");
                Console.ReadKey();
                return;
            }

            Console.WriteLine("Для удаления выберите модель и нажмите Enter.");
            //models_controller.RemoveModel(2);
            for (int i = 0; i < models_controller.Models.Count; i++)
            {
                Console.WriteLine($"{i + 1} - {models_controller.Models[i]}");
            }
            string modelName;

            while (true)
            {
                if (int.TryParse(Console.ReadLine(), out int numModel) && numModel <= models_controller.Models.Count)
                {
                    modelName = models_controller.Models[numModel - 1].Name;
                    models_controller.RemoveModel(numModel - 1);
                    break;
                }
                else
                {
                    Console.WriteLine("Некорректный ввод!");
                }
            }


            var characteristicksCtrl = new CharactersController(modelName);

            characteristicksCtrl.Remove();
            if (models_controller.Models.Count == 0)
            {
                phones_ctrl.RemovePhone(numPhoneforRemove, true);
            }
            Console.WriteLine($"Модель {modelName} удален. Нажмите Enter кнопку чтобы продолжить.");
            Console.ReadLine();
        }
Example #12
0
        private static void PrintDevice(PhonesController phones_ctrl)
        {
            Console.Clear();
            Console.WriteLine("Выберите название и нажмите Enter:");
            for (int i = 0; i < phones_ctrl.Phones.Count; i++)
            {
                Console.WriteLine($"{i + 1} - {phones_ctrl.Phones[i]}");
            }
            while (true)
            {
                if (int.TryParse(Console.ReadLine(), out int numPhone) && numPhone <= phones_ctrl.Phones.Count)
                {
                    var phoneName = phones_ctrl.Phones[numPhone - 1].Name;
                    Console.WriteLine($"Вы выбрали: {phoneName}");
                    phones_ctrl.AddnSetCurrent(phoneName);
                    break;
                }
                else
                {
                    Console.WriteLine("Некорректный ввод!");
                }
            }


            var models_controller = new ModelsController(phones_ctrl.current_phone);

            if (models_controller.Models.Count == 0)
            {
                Console.WriteLine($"У {phones_ctrl.current_phone.Name} не найдено моделей. Нажмите любую кнопку чтобы продолжить.");
                Console.ReadKey();
                return;
            }

            Console.WriteLine("Выберите модель и нажмите Enter.");
            //models_controller.RemoveModel(2);
            for (int i = 0; i < models_controller.Models.Count; i++)
            {
                Console.WriteLine($"{i+1} - {models_controller.Models[i]}");
            }
            string modelName;

            while (true)
            {
                if (int.TryParse(Console.ReadLine(), out int numModel) && numModel <= models_controller.Models.Count)
                {
                    modelName = models_controller.Models[numModel - 1].Name;
                    break;
                }
                else
                {
                    Console.WriteLine("Некорректный ввод!");
                }
            }


            var characteristicksCtrl = new CharactersController(modelName);
            var Characteristick      = characteristicksCtrl.Characteristic;

            Console.WriteLine($"Экран: {Characteristick.Screen}");
            Console.WriteLine($"Камера: {Characteristick.Camera}");
            Console.WriteLine($"Память: {Characteristick.Memory}");
            Console.WriteLine($"Hardware: {Characteristick.Hardware}");
            Console.WriteLine($"Аккумулятор: {Characteristick.Battery}");
            Console.WriteLine("Нажмите Enter кнопку чтобы продолжить.");
            Console.ReadLine();
        }
Example #13
0
        private static void SetNewDevice(PhonesController phones_ctrl)
        {
            Console.WriteLine("Введите название смартфона: ");
            string smartName;

            while (true)
            {
                smartName = Console.ReadLine();
                if (string.IsNullOrEmpty(smartName))
                {
                    Console.WriteLine("Название не может быть пустым.");
                }
                else
                {
                    break;
                }
            }

            phones_ctrl.AddnSetCurrent(smartName);


            Console.WriteLine($"Введите модель {smartName}:");
            var modelName = Console.ReadLine();

            var model      = new Model(phones_ctrl.current_phone, modelName);
            var model_ctrl = new ModelsController(phones_ctrl.current_phone);

            model_ctrl.Add(model);

            if (!model_ctrl.newModel)
            {
                Console.WriteLine("Вы ввели существующую модель. Е - изменить характеристики моделя. Q - отменить действие.");

                while (true)
                {
                    var key = Console.ReadKey();
                    if (key.Key == ConsoleKey.E)
                    {
                        break;
                    }
                    else if (key.Key == ConsoleKey.Q)
                    {
                        return;
                    }
                    else
                    {
                        Console.WriteLine("Неправильный ввод.");
                    }
                }
            }
            Console.WriteLine("Введите параметры экрана [пример: 6.53\", 2340x1080 (19.5:9)]: ");
            var screen = Console.ReadLine();

            Console.WriteLine("Введите параметры камеры [пример: 4 модуля, fullHD 60 к/с, видео 4K]: ");
            var camera = Console.ReadLine();

            Console.WriteLine("Введите параметры памяти [пример: 64 ГБ, слот для карты microSD]: ");
            var memory = Console.ReadLine();

            Console.WriteLine("Введите параметры hardware [пример: 8 ядер(а), 2 ГГц, оперативка 6 ГБ]: ");
            var hardware = Console.ReadLine();

            Console.WriteLine("Введите параметры аккумулятора [пример: 4500 мАч]: ");
            var battery = Console.ReadLine();


            var characteristiscks    = new Characteristic(screen, camera, memory, hardware, battery);
            var characteristick_ctrl = new CharactersController(model.Name);

            characteristick_ctrl.Add(characteristiscks);
            Console.WriteLine("Новый смартфон добавлен. Нажмите Enter кнопку чтобы продолжить.");
            Console.ReadLine();
        }
Example #14
0
 public PhonesControllerTests()
 {
     controller = new PhonesController(moq.Object);
 }