public async Task ApiShapeSearch_ValidSearchWithResult_ReturnsOk()
        {
            // Arrange
            var client = _inMemoryHost.GetTestClient();

            // Act
            var payload = new ShapeSearchRequestModel()
            {
                SearchBy = "name",
                Name     = "A1"
            };

            var httpContent = new StringContent(JsonSerializer.Serialize(payload), System.Text.Encoding.UTF8, "application/json");
            var response    = await client.PostAsync(Endpoint, httpContent);

            // Assert
            Assert.AreEqual(System.Net.HttpStatusCode.OK, response.StatusCode);
            var responseString = await response.Content.ReadAsStringAsync();

            ShapeSearchResultModel responseModel = JsonSerializer.Deserialize <ShapeSearchResultModel>(responseString, new JsonSerializerOptions {
                PropertyNameCaseInsensitive = true
            });

            Assert.AreEqual("A1", responseModel.Name);
        }
Exemplo n.º 2
0
        public ShapeSearchResultModel Search(ShapeSearchRequestModel search)
        {
            var grid = _gridGenerator.Generate(_appConfig.GridSize);

            ITriangle result = null;

            if (search.SearchBy.Equals("name", System.StringComparison.InvariantCultureIgnoreCase))
            {
                result = grid.FindTriangleByName(search.Name);
            }
            else if (search.SearchBy.Equals("coordinates", System.StringComparison.InvariantCultureIgnoreCase))
            {
                var searchVertex = new TriangularVertex(new Coordinates(search.Vertex1), new Coordinates(search.Vertex2), new Coordinates(search.Vertex3));
                result = grid.FindTriangleByCoordinates(searchVertex);
            }

            if (result == null)
            {
                return(null);
            }

            return(new ShapeSearchResultModel
            {
                Name = result.Name,
                IsBottom = result.IsBottom,
                Vertex1 = result.Vertices.Vertex1,
                Vertex2 = result.Vertices.Vertex2,
                Vertex3 = result.Vertices.Vertex3,
                ParentCellX = result.ParentCell.Coordinates.X,
                ParentCellY = result.ParentCell.Coordinates.Y
            });
        }
Exemplo n.º 3
0
        public IActionResult Search(ShapeSearchRequestModel searchRequestModel)
        {
            ShapeSearchResultModel searchResult = _searchService.Search(searchRequestModel);

            if (searchResult == null)
            {
                return(NotFound());
            }

            return(Ok(searchResult));
        }
        public async Task ApiShapeSearch_ValidSearchNoResult_ReturnsNotFound()
        {
            // Arrange
            var client = _inMemoryHost.GetTestClient();

            // Act
            var payload = new ShapeSearchRequestModel()
            {
                SearchBy = "name",
                Name     = "this_does_not_exist"
            };

            var httpContent = new StringContent(JsonSerializer.Serialize(payload), System.Text.Encoding.UTF8, "application/json");
            var response    = await client.PostAsync(Endpoint, httpContent);

            // Assert
            Assert.AreEqual(System.Net.HttpStatusCode.NotFound, response.StatusCode);
        }
        public async Task ApiShapeSearch_CoordinateSearchWithMissingCoordinates_ReturnsBadRequest()
        {
            // Arrange
            var client = _inMemoryHost.GetTestClient();

            // Act
            var payload = new ShapeSearchRequestModel()
            {
                SearchBy = "coordinates"
            };
            var httpContent = new StringContent(JsonSerializer.Serialize(payload), System.Text.Encoding.UTF8, "application/json");
            var response    = await client.PostAsync(Endpoint, httpContent);

            // Assert
            Assert.AreEqual(System.Net.HttpStatusCode.BadRequest, response.StatusCode);
            var responseString = await response.Content.ReadAsStringAsync();

            StringAssert.Contains("Please specify vertext coordinates.", responseString);
        }
Exemplo n.º 6
0
        public void Validate_MissingSearchType_ReturnsError(string searchType)
        {
            // Arrange
            var sut = new ShapeSearchRequestModel()
            {
                SearchBy = searchType
            };

            // Act
            var validationResults   = new List <ValidationResult>();
            var validationIsSuccess = Validator.TryValidateObject(sut, new ValidationContext(sut), validationResults, true);

            // Assert
            Assert.IsFalse(validationIsSuccess);
            Assert.AreEqual(1, validationResults.Count);

            var msg = validationResults[0];

            Assert.AreEqual("The SearchBy field is required.", msg.ErrorMessage);
        }