public void AddMedicine_CorrectData_AddedNewMedicine()
        {
            // Arrange
            var model = new MedicineInputModel
            {
                Name            = "Nowy lek",
                ContentQuantity = "100ml",
                Price           = 23.49M,
                Description     = "Nowy jeszcze lepszy super lek",
                Producer        = "Pharma",
                MedicineTypeId  = 1
            };

            mock.Setup(x => x.CreateNewMedicine(model)).Returns(() =>
                                                                new OperationResult <string>(ResultResources.CreatingMedicineComplete));

            var medicinesController = new MedicinesController(mock.Object);

            // Act
            var result   = medicinesController.AddMedicine(model) as OkObjectResult;
            var response = result.Value as Result <string>;

            // Assert
            Assert.AreEqual((int)HttpStatusCode.OK, result.StatusCode);
            Assert.IsNotNull(response.Items);
            Assert.AreEqual(ResultResources.CreatingMedicineComplete, response.Items);
        }
Esempio n. 2
0
        public void CreateNewMedicine_BadMedicineTypeId_BadRequestError()
        {
            // Arrange
            var model = new MedicineInputModel
            {
                Name            = "Nowy lek",
                ContentQuantity = "100ml",
                Price           = 23.49M,
                Description     = "Nowy jeszcze lepszy super lek",
                Producer        = "Pharma",
                MedicineTypeId  = 0
            };

            mockContext.Setup(x => x.MedicineTypes).Returns(mockMedicineType.Object);
            mockContext.Setup(x => x.Medicines).Returns(mockMedicine.Object);

            var medicinesRepository = new MedicinesRepository(mockContext.Object);

            // Act
            var result = medicinesRepository.CreateNewMedicine(model);

            // Assert
            Assert.IsNotNull(result);
            Assert.False(result.IsSuccess);
            Assert.IsNull(result.Result);
            Assert.AreEqual(1, result.Errors.Count());
            Assert.AreEqual(ErrorResources.InvalidInsertDatabaseData, result.Errors.Single().Message);
            Assert.AreEqual((int)ErrorCodes.BadRequest, result.Errors.Single().ErrorCode);
        }
Esempio n. 3
0
        public void CreateNewMedicine_DatabaseError_InternalServerError()
        {
            // Arrange
            var model = new MedicineInputModel
            {
                Name            = "Nowy lek",
                ContentQuantity = "100ml",
                Price           = 23.49M,
                Description     = "Nowy jeszcze lepszy super lek",
                Producer        = "Pharma",
                MedicineTypeId  = 1
            };

            var medicinesRepository = new MedicinesRepository(It.IsAny <PharmaStoreContext>());

            // Act
            var result = medicinesRepository.CreateNewMedicine(model);

            // Assert
            Assert.IsNotNull(result);
            Assert.False(result.IsSuccess);
            Assert.IsNull(result.Result);
            Assert.AreEqual(1, result.Errors.Count());
            Assert.AreEqual(ErrorResources.DatabaseError, result.Errors.Single().Message);
            Assert.AreEqual((int)ErrorCodes.InternalServerError, result.Errors.Single().ErrorCode);
        }
Esempio n. 4
0
        public void CreateNewMedicine_CorrectData_CreatedMedicine()
        {
            // Arrange
            var model = new MedicineInputModel
            {
                Name            = "Nowy lek",
                ContentQuantity = "100ml",
                Price           = 23.49M,
                Description     = "Nowy jeszcze lepszy super lek",
                Producer        = "Pharma",
                MedicineTypeId  = 1
            };

            mockContext.Setup(x => x.MedicineTypes).Returns(mockMedicineType.Object);
            mockContext.Setup(x => x.Medicines).Returns(mockMedicine.Object);

            var medicinesRepository = new MedicinesRepository(mockContext.Object);

            // Act
            var result = medicinesRepository.CreateNewMedicine(model);

            // Assert
            Assert.IsNull(result.Errors);
            Assert.IsNotNull(result);
            Assert.AreEqual(1, result.Result.TotalCount);
            Assert.AreEqual(ResultResources.CreatingMedicineComplete, result.Result.Items);
            Assert.True(result.IsSuccess);
        }
Esempio n. 5
0
        public string Add(MedicineInputModel inputModel)
        {
            Medicine medicine = new Medicine()
            {
                Name      = inputModel.Name,
                DaylyDoze = inputModel.DaylyDoze
            };

            this.db.Medicines.Add(medicine);
            this.db.SaveChanges();

            return(medicine.Id);
        }
Esempio n. 6
0
        private IEnumerable <OperationError> MedicineValidation(MedicineInputModel medicine)
        {
            var errors = new List <OperationError>();

            if (string.IsNullOrEmpty(medicine.Name))
            {
                errors.Add(new OperationError((int)ErrorCodes.BadRequest, ErrorResources.FieldCannotBeEmpty, nameof(medicine.Name)));
            }
            else if (medicine.Name.Length < 2 || medicine.Name.Length > 50)
            {
                var errorMessage = string.Format(ErrorResources.InvalidFieldLength, 1, 50);

                errors.Add(new OperationError((int)ErrorCodes.BadRequest, errorMessage, nameof(medicine.Name)));
            }

            if (string.IsNullOrEmpty(medicine.ContentQuantity))
            {
                errors.Add(new OperationError((int)ErrorCodes.BadRequest, ErrorResources.FieldCannotBeEmpty, nameof(medicine.ContentQuantity)));
            }
            else if (medicine.ContentQuantity.Length < 3 || medicine.ContentQuantity.Length > 10)
            {
                var errorMessage = string.Format(ErrorResources.InvalidFieldLength, 2, 10);

                errors.Add(new OperationError((int)ErrorCodes.BadRequest, errorMessage, nameof(medicine.ContentQuantity)));
            }

            if (string.IsNullOrEmpty(medicine.Producer))
            {
                errors.Add(new OperationError((int)ErrorCodes.BadRequest, ErrorResources.FieldCannotBeEmpty, nameof(medicine.Producer)));
            }
            else if (medicine.Producer.Length < 2 || medicine.Producer.Length > 50)
            {
                var errorMessage = string.Format(ErrorResources.InvalidFieldLength, 1, 50);

                errors.Add(new OperationError((int)ErrorCodes.BadRequest, errorMessage, nameof(medicine.Producer)));
            }

            if (string.IsNullOrEmpty(medicine.Description))
            {
                errors.Add(new OperationError((int)ErrorCodes.BadRequest, ErrorResources.FieldCannotBeEmpty, nameof(medicine.Description)));
            }
            else if (medicine.Description.Length < 2 || medicine.Description.Length > 2000)
            {
                var errorMessage = string.Format(ErrorResources.InvalidFieldLength, 1, 2000);

                errors.Add(new OperationError((int)ErrorCodes.BadRequest, errorMessage, nameof(medicine.Description)));
            }

            return(errors);
        }
Esempio n. 7
0
        public void CreateNewMedicine_InvalidDataNullModelFields_BadRequestErrors()
        {
            // Arrange
            var model = new MedicineInputModel();

            var medicinesRepository = new MedicinesRepository(It.IsAny <PharmaStoreContext>());

            // Act
            var result = medicinesRepository.CreateNewMedicine(model);

            // Assert
            Assert.IsNull(result.Result);
            Assert.IsNotNull(result);
            Assert.AreEqual(4, result.Errors.Count());
            Assert.AreEqual(1, result.Errors.Select(x => x.Message).Distinct().Count());
            Assert.False(result.IsSuccess);
        }
        public void AddMedicine(string prescriptionId, MedicineInputModel inputModel)
        {
            string medicineId = this.medicinesService.GetMedicineId(inputModel.Name);

            if (string.IsNullOrEmpty(medicineId))
            {
                medicineId = this.medicinesService.Add(inputModel);
            }

            PrescriptionMedicine prescriptionMedicine = new PrescriptionMedicine()
            {
                PrescriptionId = prescriptionId,
                MedicineId     = medicineId
            };

            this.db.PrescriptionMedicines.Add(prescriptionMedicine);
            this.db.SaveChanges();
        }
Esempio n. 9
0
        public IActionResult AddMedicine([FromBody][Required] MedicineInputModel newMedicine)
        {
            if (ModelState.IsValid && newMedicine != null)
            {
                newMedicine = newMedicine.TrimObj();

                var result = _medicinesRepository.CreateNewMedicine(newMedicine);

                if (result.IsSuccess)
                {
                    return(Ok(result.Result));
                }

                return(BadRequest(result.Errors));
            }

            return(BadRequest(GlobalHelpers.ModelStateError()));
        }
Esempio n. 10
0
        public void CreateNewMedicine_InvalidDataTooShortModelFields_BadRequestErrors()
        {
            // Arrange
            var model = new MedicineInputModel
            {
                Name            = "a",
                ContentQuantity = "aa",
                Description     = "a",
                Producer        = "a"
            };

            var medicinesRepository = new MedicinesRepository(It.IsAny <PharmaStoreContext>());

            // Act
            var result = medicinesRepository.CreateNewMedicine(model);

            // Assert
            Assert.IsNull(result.Result);
            Assert.IsNotNull(result);
            Assert.AreEqual(4, result.Errors.Count());
            Assert.False(result.IsSuccess);
        }
        public void AddMedicine_InvalidData_ManyValidationErrors()
        {
            // Arrange
            var model = new MedicineInputModel
            {
                Name            = "",
                ContentQuantity = "1",
                Price           = 23.49M,
                Description     = "     ",
                Producer        = "      P        ",
                MedicineTypeId  = 0
            };

            mock.Setup(x => x.CreateNewMedicine(model))
            .Returns(() =>
                     new OperationResult <string>(new List <OperationError>
            {
                new OperationError((int)ErrorCodes.BadRequest, ErrorResources.FieldCannotBeEmpty,
                                   nameof(model.Name)),
                new OperationError((int)ErrorCodes.BadRequest,
                                   string.Format(ErrorResources.InvalidFieldLength, 2, 10), nameof(model.ContentQuantity)),
                new OperationError((int)ErrorCodes.BadRequest, ErrorResources.FieldCannotBeEmpty,
                                   nameof(model.Description))
            }));

            var medicinesController = new MedicinesController(mock.Object);

            // Act
            var result   = medicinesController.AddMedicine(model) as BadRequestObjectResult;
            var response = result.Value as IEnumerable <OperationError>;

            // Assert
            Assert.AreEqual((int)HttpStatusCode.BadRequest, result.StatusCode);
            Assert.IsNotNull(response);
            Assert.AreEqual(3, response.Count());
            Assert.AreEqual((int)ErrorCodes.BadRequest, response.First().ErrorCode);
        }
Esempio n. 12
0
        public OperationResult <string> CreateNewMedicine(MedicineInputModel newMedicine)
        {
            var errorList = MedicineValidation(newMedicine);

            if (errorList.Any())
            {
                return(new OperationResult <string>(errorList));
            }

            try
            {
                if (!_context.MedicineTypes.Select(x => x.Id).Contains(newMedicine.MedicineTypeId))
                {
                    return(new OperationResult <string>(new OperationError((int)ErrorCodes.BadRequest, ErrorResources.InvalidInsertDatabaseData)));
                }

                _context.Medicines.Add(new Models.Medicines.Medicine
                {
                    Name            = newMedicine.Name,
                    MedicineTypeId  = newMedicine.MedicineTypeId,
                    Producer        = newMedicine.Producer,
                    Price           = newMedicine.Price,
                    ContentQuantity = newMedicine.ContentQuantity,
                    Description     = newMedicine.Description
                });

                _context.SaveChanges();

                return(new OperationResult <string>(ResultResources.CreatingMedicineComplete));
            }
            catch
            {
                return(new OperationResult <string>(new OperationError((int)ErrorCodes.InternalServerError,
                                                                       ErrorResources.DatabaseError)));
            }
        }
Esempio n. 13
0
        public async Task <JsonResult> AddMedicine(MedicineInputModel medicine)
        {
            string urlBuild = url;

            try
            {
                var stringContent            = new StringContent(JsonConvert.SerializeObject(medicine), Encoding.UTF8, "application/json");
                HttpResponseMessage response = await new HttpClient().PostAsync(urlBuild, stringContent);

                if (response.StatusCode == HttpStatusCode.OK)
                {
                    var model = await response.Content.ReadAsAsync <Result <string> >();

                    var result = new OperationResult <string>(model);

                    return(Json(new { type = "OK" }));
                }
                else if (response.StatusCode == HttpStatusCode.BadRequest)
                {
                    var model = await response.Content.ReadAsAsync <IEnumerable <Error> >();

                    var result = new OperationResult <string>(model);

                    if (result.Errors.All(x => !string.IsNullOrEmpty(x.FieldName)))
                    {
                        return(Json(new { type = "Validation", data = result.Errors }));
                    }
                }

                return(Json(new { type = "Error" }));
            }
            catch
            {
                return(Json(new { type = "Error" }));
            }
        }