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)); }
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); }
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); }
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); }
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); }