Exemple #1
0
        public virtual HttpResponseMessage GetTextsByName(string name)
        {
            GetTextsByNameResponse response = new GetTextsByNameResponse();

            try
            {
                GetTextsResponse getTextsResponse = _textService.GetTexts(name);

                response.Name  = name;
                response.Texts = new List <TextResponse>();

                foreach (TextDto textDto in getTextsResponse.Texts)
                {
                    CityDto cityDto = getTextsResponse.Cities.First(x => x.Name == textDto.CityName);

                    TextResponse textResponse = new TextResponse();
                    textResponse.Id       = textDto.Id.ToString();
                    textResponse.ParentId = textDto.ParentId.ToString();
                    textResponse.Text     = textDto.Value;
                    textResponse.City     = cityDto.Name;
                    textResponse.Lat      = cityDto.Latitude.ToString();
                    textResponse.Lon      = cityDto.Longitude.ToString();
                    textResponse.Temp     = cityDto.Temperature.ToString();

                    response.Texts.Add(textResponse);
                }
            }
            catch (Exception ex)
            {
                response.Name  = name;
                response.Error = string.Format("Internal server error: {0}", ex.Message);
            }

            return(Request.CreateResponse(HttpStatusCode.OK, response));
        }
Exemple #2
0
        public void GetTexts_ShouldReturnEmptyList(string name)
        {
            _textRepository.Setup(x => x.SelectTextsByName(name)).Returns(new List <TextDto>());

            GetTextsResponse actual = _textService.GetTexts(name);

            Assert.IsNotNull(actual);
            Assert.IsNotNull(actual.Texts);
            Assert.AreEqual(0, actual.Texts.Count);
        }
Exemple #3
0
        public void GetTexts_ShouldReturnTextsInReplyOrder()
        {
            string name = "Joe";

            _textRepository.Setup(x => x.SelectTextsByName(name)).Returns(new List <TextDto>
            {
                new TextDto {
                    Id = 1, ParentId = 0, Name = name, Value = "Test post 1", CityName = "London"
                },
                new TextDto {
                    Id = 2, ParentId = 0, Name = name, Value = "Test post 2", CityName = "London"
                }
            });

            _textRepository.Setup(x => x.SelectTextsByParentIds(new List <int> {
                1, 2
            })).Returns(new List <TextDto>
            {
                new TextDto {
                    Id = 3, ParentId = 1, Value = "Test reply 1-1", CityName = "London"
                },
                new TextDto {
                    Id = 4, ParentId = 2, Value = "Test reply 2-1", CityName = "London"
                },
                new TextDto {
                    Id = 5, ParentId = 1, Value = "Test reply 1-2", CityName = "London"
                }
            });

            List <string> cityNames = new List <string> {
                "London"
            };

            _cityRepository.Setup(x => x.SelectCitiesByName(cityNames)).Returns(new List <CityDto>
            {
                new CityDto {
                    Name = "London"
                }
            });

            GetTextsResponse actual = _textService.GetTexts(name);

            Assert.AreEqual(5, actual.Texts.Count);
            Assert.AreEqual("Test post 1", actual.Texts[0].Value);
            Assert.AreEqual("Test reply 1-1", actual.Texts[1].Value);
            Assert.AreEqual("Test reply 1-2", actual.Texts[2].Value);
            Assert.AreEqual("Test post 2", actual.Texts[3].Value);
            Assert.AreEqual("Test reply 2-1", actual.Texts[4].Value);
        }
Exemple #4
0
        public void GetTexts_ShouldReturnTextsByName()
        {
            string name = "Joe";

            _textRepository.Setup(x => x.SelectTextsByName(name)).Returns(new List <TextDto>
            {
                new TextDto {
                    Name = name, Value = "Hello", CityName = "London"
                },
                new TextDto {
                    Name = name, Value = "how", CityName = "London"
                },
                new TextDto {
                    Name = name, Value = "are", CityName = "London"
                },
                new TextDto {
                    Name = name, Value = "you?", CityName = "Paris"
                }
            });

            List <string> cityNames = new List <string> {
                "London", "Paris"
            };

            _cityRepository.Setup(x => x.SelectCitiesByName(cityNames)).Returns(new List <CityDto>
            {
                new CityDto {
                    Name = "London"
                },
                new CityDto {
                    Name = "Paris"
                }
            });

            GetTextsResponse actual = _textService.GetTexts(name);

            Assert.AreEqual(4, actual.Texts.Count);
            Assert.AreEqual("Hello", actual.Texts[0].Value);
            Assert.AreEqual("how", actual.Texts[1].Value);
            Assert.AreEqual("are", actual.Texts[2].Value);
            Assert.AreEqual("you?", actual.Texts[3].Value);
        }
Exemple #5
0
        public GetTextsResponse GetTexts(string name)
        {
            List <TextDto> texts = GetTextsByName(name);

            List <CityDto> cities = _cityRepository
                                    .SelectCitiesByName(texts.Select(x => x.CityName).Distinct().ToList())
                                    .ToList();

            GetTextsResponse response = new GetTextsResponse();

            response.Texts  = texts;
            response.Cities = new List <CityDto>();

            foreach (TextDto text in texts)
            {
                if (!response.Cities.Select(x => x.Name).Contains(text.CityName))
                {
                    response.Cities.Add(cities.First(x => x.Name == text.CityName));
                }
            }

            return(response);
        }