Example #1
0
        public ActionResult ProductRate(string product_id, string product_rate,
                                        string sessionID = "default")
        {
            // Проверяем при загрузке страницы есть ли на сервере
            // объект текущей сессии
            if (!MvcApplication.MenuSessions.ContainsKey(sessionID))
                MvcApplication.MenuSessions.Add(sessionID,
                    (new MenuSession()));

            // Статус запроса на сохранение рейтинга продукта в БД
            // Если запрос прошел успешно status = OK,
            // иначе status = FAIL
            Dictionary<string, string> request_status =
                new Dictionary<string, string>();
            request_status.Add("status", "FAIL");
            // Сохраняем product_rate для product_id в БД
            Product product = new Product(Convert.ToInt32(product_id));
            request_status["status"] =
                product.setProductRate(
                    (byte)Convert.ToInt16(product_rate)) == true
                    ? "OK" : "FAIL";
            
            // Ответ клиенту
            JsonResult response = new JsonResult();
            response.Data = request_status;

            return response;
        }
Example #2
0
        public void ProductTest()
        {   
            // Тест конструктора             
            // Ожидаемые значения (взяты из тестовой БД AOS.DB.test)
            int expected_product_id = 5;                    
            string expected_product_name_ru =
                "Салат Мегаполис";
            string expected_product_name_en =
                "Salad Megapolis";
            int expected_product_class = 1;                    
            string expected_product_info_ru =
                "Ломтики нежной телятины, помидоры, огурцы, "
                    + "перец сладкий, листья салата, чеснок, заправлен "
                    + "фирменным соусом.";
            string expected_product_info_en =
                "Slices of tender veal, tomatoes, cucumbers, "
                    + "peppers, lettuce, garlic, filled with special sauce.";
            string expected_product_recommend_ru =
                "Ломтики нежной телятины, помидоры, огурцы, "
                    + "перец сладкий, листья салата, чеснок, заправлен "
                    + "фирменным соусом.";
            string expected_product_recommend_en =
                "Slices of tender veal, tomatoes, cucumbers, "
                    + "peppers, lettuce, garlic, filled with special sauce.";
            string expected_product_consist_ru =
                "Ломтики нежной телятины, помидоры, огурцы, "
                    + "перец сладкий, листья салата, чеснок, заправлен "
                    + "фирменным соусом.";
            string expected_product_consist_en =
                "Slices of tender veal, tomatoes, cucumbers, "
                    + "peppers, lettuce, garlic, filled with special sauce.";
            List<string> expected_product_img_list = new List<string>();
            expected_product_img_list.Add("megapolis_small.jpg");
            expected_product_img_list.Add("megapolis_0.jpg");
            expected_product_img_list.Add("megapolis_1.jpg");
            byte expected_product_rate;            
            using (AOSDB aos_db = new AOSDB())
            {
                // Находим элемент в таблице с рейтами БД с ID = _Product_ID
                AOS_BD_PRODUCT_RATE product_rate_list =
                    (from item in
                         aos_db.AOS_BD_PRODUCT_RATE.ToList<AOS_BD_PRODUCT_RATE>()
                         .AsParallel<AOS_BD_PRODUCT_RATE>()
                     where (item.PK_AOS_ID_PRODUCT == 5)
                     select item).Single();

                // Считаем общий бал
                int rate_sum = product_rate_list.PRODUCT_RATE_0 * (-1)
                                    + product_rate_list.PRODUCT_RATE_1
                                    + product_rate_list.PRODUCT_RATE_2 * 2
                                    + product_rate_list.PRODUCT_RATE_3 * 3
                                    + product_rate_list.PRODUCT_RATE_4 * 4
                                    + product_rate_list.PRODUCT_RATE_5 * 5;
                // Считаем количество раз, когда ставился рейт
                int rate_count = product_rate_list.PRODUCT_RATE_0
                                    + product_rate_list.PRODUCT_RATE_1
                                    + product_rate_list.PRODUCT_RATE_2
                                    + product_rate_list.PRODUCT_RATE_3
                                    + product_rate_list.PRODUCT_RATE_4
                                    + product_rate_list.PRODUCT_RATE_5;
                expected_product_rate = (byte)Math.Ceiling((double)(rate_sum / rate_count));
            }
            string expected_product_amount_ru = "200 г";
            string expected_product_amount_en = "200 g";
            string expected_product_price = "350,00";

            // Полученные значения
            Product test_product = new Product(5);
            int actual_product_id =
                test_product.Product_ID;
            string actual_product_name_ru =
                test_product.getProductName("RU");
            string actual_product_name_en =
                test_product.getProductName("EN");
            int actual_product_class =
                test_product.Product_Class;
            string actual_product_info_ru =
                test_product.getProductInfo("RU");
            string actual_product_info_en =
                test_product.getProductInfo("EN");
            string actual_product_recommend_ru =
                test_product.getProductRecommendation("RU");
            string actual_product_recommend_en =
                test_product.getProductRecommendation("EN");
            string actual_product_consist_ru =
                test_product.getProductConsist("RU");
            string actual_product_consist_en =
                test_product.getProductConsist("EN");
            List<string> actual_product_img_list =
                test_product.Product_Img_List;
            byte actual_product_rate =
                test_product.getProductRate();
            string actual_product_amount_ru =
                test_product.getProductAmount("RU");
            string actual_product_amount_en =
                test_product.getProductAmount("EN");
            string actual_product_price =
                test_product.Product_Price;

            // Утверждения
            Assert.AreEqual(expected_product_id, actual_product_id);
            Assert.AreEqual(expected_product_name_ru, actual_product_name_ru);
            Assert.AreEqual(expected_product_name_en, actual_product_name_en);
            Assert.AreEqual(expected_product_class, actual_product_class);
            Assert.AreEqual(expected_product_info_ru, actual_product_info_ru);
            Assert.AreEqual(expected_product_info_en, actual_product_info_en);
            Assert.AreEqual(expected_product_recommend_ru, actual_product_recommend_ru);
            Assert.AreEqual(expected_product_recommend_en, actual_product_recommend_en);
            Assert.AreEqual(expected_product_consist_ru, actual_product_consist_ru);
            Assert.AreEqual(expected_product_consist_en, actual_product_consist_en);
            Assert.AreEqual(expected_product_img_list, actual_product_img_list);
            Assert.AreEqual(expected_product_rate, actual_product_rate);
            Assert.AreEqual(expected_product_amount_ru, actual_product_amount_ru);
            Assert.AreEqual(expected_product_amount_en, actual_product_amount_en);
            Assert.AreEqual(expected_product_price, actual_product_price);

            // Тест установки нового рейта продукта
            // Устанавливаем новый рейт продукта
            test_product.setProductRate(0);
            using (AOSDB aos_db = new AOSDB())
            {
                // Находим элемент в таблице с рейтами БД с ID = _Product_ID
                AOS_BD_PRODUCT_RATE product_rate_list =
                    (from item in
                         aos_db.AOS_BD_PRODUCT_RATE.ToList<AOS_BD_PRODUCT_RATE>()
                         .AsParallel<AOS_BD_PRODUCT_RATE>()
                     where (item.PK_AOS_ID_PRODUCT == 5)
                     select item).Single();

                // Считаем общий бал
                int rate_sum = product_rate_list.PRODUCT_RATE_0 * (-1)
                                    + product_rate_list.PRODUCT_RATE_1
                                    + product_rate_list.PRODUCT_RATE_2 * 2
                                    + product_rate_list.PRODUCT_RATE_3 * 3
                                    + product_rate_list.PRODUCT_RATE_4 * 4
                                    + product_rate_list.PRODUCT_RATE_5 * 5;
                // Считаем количество раз, когда ставился рейт
                int rate_count = product_rate_list.PRODUCT_RATE_0
                                    + product_rate_list.PRODUCT_RATE_1
                                    + product_rate_list.PRODUCT_RATE_2
                                    + product_rate_list.PRODUCT_RATE_3
                                    + product_rate_list.PRODUCT_RATE_4
                                    + product_rate_list.PRODUCT_RATE_5;
                expected_product_rate = (byte)Math.Ceiling((double)(rate_sum / rate_count));
            }
            actual_product_rate =
                test_product.getProductRate();

            // Утверждения
            Assert.AreEqual(expected_product_rate, actual_product_rate);
        }