public async Task Post_ShouldCallHelper()
        {
            //Arrange
            var expectedId                  = 1;
            var expectedImageName           = "testImageName";
            var expectedImageContentUri     = "https://whoisthatserverimages.blob.core.windows.net/images/Domantas_test.jpg";
            var expectedPersonFirstName     = "testFirstName";
            var expectedPersonLastName      = "testLastName";
            var expectedDescriptiveSentence = "t1";
            var expectedScore               = 1;

            var expectedDatabaseImageElement = new DatabaseImageElement()
            {
                Id = expectedId,
                ImageContentUri     = expectedImageContentUri,
                ImageName           = expectedImageName,
                PersonFirstName     = expectedPersonFirstName,
                PersonLastName      = expectedPersonLastName,
                DescriptiveSentence = expectedDescriptiveSentence,
                Score = expectedScore
            };

            var fakeDatabaseImageElementHelper = A.Fake <IDatabaseImageElementHelper>();

            A.CallTo(() => fakeDatabaseImageElementHelper.InsertNewImageElement(expectedId, expectedImageName,
                                                                                expectedImageContentUri, expectedPersonFirstName, expectedPersonLastName, expectedDescriptiveSentence, expectedScore))
            .Returns(expectedDatabaseImageElement);

            var databaseImageElementController = new DatabaseImageElementController()
            {
                DatabaseImageElementHelper = fakeDatabaseImageElementHelper,
                Request = new HttpRequestMessage()
            };

            //Act
            var result = databaseImageElementController.Post(expectedDatabaseImageElement);

            //Assert
            A.CallTo(() => fakeDatabaseImageElementHelper.InsertNewImageElement(expectedId, expectedImageName,
                                                                                expectedImageContentUri, expectedPersonFirstName, expectedPersonLastName, expectedDescriptiveSentence, expectedScore))
            .MustHaveHappenedOnceExactly();

            var httpResponse = await result.ExecuteAsync(new CancellationToken());

            var jsonContent = await httpResponse.Content.ReadAsStringAsync();

            var expectedJson = JsonConvert.SerializeObject(expectedDatabaseImageElement);

            jsonContent.ShouldBe(expectedJson);
        }
        public async Task UpdateScore_ShouldCallHelper()
        {
            //Arrange
            var expectedScore = 1;

            var expectedElement = new DatabaseImageElement()
            {
                Id = 1,
                DescriptiveSentence = "t",
                ImageContentUri     = "t",
                ImageName           = "t",
                PersonFirstName     = "t",
                PersonLastName      = "t",
                Score = 0
            };

            var fakeDatabaseImageElementHelper = A.Fake <IDatabaseImageElementHelper>();

            A.CallTo(() => fakeDatabaseImageElementHelper.UpdateScore(expectedElement.Id)).Returns(expectedElement);

            var databaseImageElementController = new DatabaseImageElementController()
            {
                DatabaseImageElementHelper = fakeDatabaseImageElementHelper,
                Request = new HttpRequestMessage()
            };

            //Act
            var result = databaseImageElementController.UpdateScore(expectedElement.Id);

            //Assert
            A.CallTo(() => fakeDatabaseImageElementHelper.UpdateScore(expectedElement.Id))
            .MustHaveHappenedOnceExactly();

            var httpResponse = await result.ExecuteAsync(new CancellationToken());

            var jsonContent = await httpResponse.Content.ReadAsStringAsync();

            var expectedJson = JsonConvert.SerializeObject(expectedElement);

            jsonContent.ShouldBe(expectedJson);
        }
Exemple #3
0
        /// <inheritdoc/>
        public DatabaseImageElement InsertNewImageElement(int id, string imageName, string imageContentUri, string personFirstName, string personLastName, string descriptiveSentence, int score)
        {
            if (!Uri.IsWellFormedUriString(imageContentUri, UriKind.Absolute))
            {
                throw new ManagerException(StorageErrorMessages.InvalidImageUriError);
            }

            if (!imageName.IsFileNameValid())
            {
                throw new ManagerException(StorageErrorMessages.InvalidFileNameError);
            }

            //Creates an element to insert into DB
            var imageElement = new DatabaseImageElement()
            {
                Id                  = id,
                ImageName           = imageName,
                ImageContentUri     = imageContentUri,
                PersonFirstName     = personFirstName,
                PersonLastName      = personLastName,
                DescriptiveSentence = descriptiveSentence,
                Score               = score
            };

            //Inserts element into DatabaseImageElements
            using (var context = _databaseContextGeneration.BuildDatabaseContext())
            {
                if (context.DatabaseImageElements.Any(s => s.ImageContentUri == imageElement.ImageContentUri))
                {
                    return(null);
                }

                context.DatabaseImageElements.Add(imageElement);
                context.SaveChanges();
            }

            return(imageElement);
        }
        public IHttpActionResult Post([FromBody] DatabaseImageElement databaseImageElement)
        {
            try
            {
                databaseImageElement = DatabaseImageElementHelper.InsertNewImageElement(databaseImageElement.Id,
                                                                                        databaseImageElement.ImageName, databaseImageElement.ImageContentUri,
                                                                                        databaseImageElement.PersonFirstName, databaseImageElement.PersonLastName,
                                                                                        databaseImageElement.DescriptiveSentence, databaseImageElement.Score);

                return(Json(databaseImageElement));
            }

            catch (ManagerException wrongUriException) when(wrongUriException.ErrorCode ==
                                                            StorageErrorMessages.InvalidImageUriError)
            {
                return(BadRequest(StorageErrorMessages.InvalidImageUriError));
            }

            catch (ManagerException wrongFilenameException) when(wrongFilenameException.ErrorCode ==
                                                                 StorageErrorMessages.InvalidFileNameError)
            {
                return(BadRequest(StorageErrorMessages.InvalidFileNameError));
            }
        }