public async void GetRemarks_Should_Call_IApiClient_Send() { Func <HttpResponseMessage, Task <IEnumerable <RemarkDetails> > > mapper = null; var request = new HttpRequestMessage(); _requestProvider.CreatePostRequest(Arg.Any <string>(), Arg.Any <JObject>(), Arg.Any <Dictionary <string, string> >()).Returns(request); await _apiClient.Send(Arg.Any <HttpRequestMessage>(), Arg.Do <Func <HttpResponseMessage, Task <IEnumerable <RemarkDetails> > > >(a => mapper = a)); await _repository.GetRemarks(); await _apiClient.Received(1).Send <IEnumerable <RemarkDetails> >(request, Arg.Any <Func <HttpResponseMessage, Task <IEnumerable <RemarkDetails> > > >()); var expected = new RemarkDetails { RemarkId = "remarkId", Latitude = 123, Longitude = 456, Remark = "remarks", Email = "email" }; var item = new JObject { ["document"] = new JObject { ["name"] = $"remarks/{expected.RemarkId}", ["fields"] = new JObject { ["lat"] = new JObject { ["doubleValue"] = expected.Latitude }, ["lng"] = new JObject { ["doubleValue"] = expected.Longitude }, ["remark"] = new JObject { ["stringValue"] = expected.Remark }, ["email"] = new JObject { ["stringValue"] = expected.Email } } } }; var body = new JArray { item }; var response = new HttpResponseMessage(); response.Content = new StringContent(body.ToString()); var actual = await mapper(response); actual.Should().HaveCount(1); actual.Single().RemarkId.Should().Be(expected.RemarkId); actual.Single().Latitude.Should().Be(expected.Latitude); actual.Single().Longitude.Should().Be(expected.Longitude); actual.Single().Remark.Should().Be(expected.Remark); actual.Single().Email.Should().Be(expected.Email); request.Dispose(); }
public async void AddRemark_Should_Return_Correctly() { var expected = new RemarkDetails(); _repository.AddRemark(Arg.Any <RemarkDetails>()).Returns(expected); var actual = await _service.AddRemark("email", new AddRemarkRequest()); actual.Should().Be(expected); }
public async Task <RemarkDetails> AddRemark(RemarkDetails remark) { var url = $"{_endpoint}/remarks"; var content = CreateAddRemarkRequest(remark); var request = _requestProvider.CreatePostRequest(url, content, headers: _defaultHeader, queries: _defaultQuery); var response = await _apiClient.Send(request, async resp => { var body = await resp.Content.ReadAsStringAsync(); var obj = JToken.Parse(body); return(GetRemarkDetailsResponse(obj)); }); return(response); }
public async void AddRemark_Should_Call_Return_Correctly() { var request = new HttpRequestMessage(); _requestProvider.CreatePostRequest(Arg.Any <string>(), Arg.Any <JObject>(), Arg.Any <Dictionary <string, string> >(), Arg.Any <Dictionary <string, string> >()).Returns(request); var response = new RemarkDetails(); _apiClient.Send(Arg.Any <HttpRequestMessage>(), Arg.Any <Func <HttpResponseMessage, Task <RemarkDetails> > >()).Returns(response); var actual = await _repository.AddRemark(new RemarkDetails()); actual.Should().Be(response); request.Dispose(); }
private JObject CreateAddRemarkRequest(RemarkDetails remark) { return(new JObject { ["fields"] = new JObject { ["lat"] = new JObject { ["doubleValue"] = remark.Latitude }, ["lng"] = new JObject { ["doubleValue"] = remark.Longitude }, ["remark"] = new JObject { ["stringValue"] = remark.Remark }, ["email"] = new JObject { ["stringValue"] = remark.Email } } }); }
public async void AddRemark_Should_Call_IRemarksRepository_AddRemark() { var email = "email"; var request = new AddRemarkRequest { Latitude = 123, Longitude = 456, Remark = "remarks" }; RemarkDetails arg = null; await _repository.AddRemark(Arg.Do <RemarkDetails>(a => arg = a)); await _service.AddRemark(email, request); await _repository.Received(1).AddRemark(Arg.Any <RemarkDetails>()); arg.Email.Should().Be(email); arg.Latitude.Should().Be(request.Latitude); arg.Longitude.Should().Be(request.Longitude); arg.Remark.Should().Be(request.Remark); }
public async void AddRemark_Should_Call_IApiRequestProvider_CreatePostRequest() { JObject content = null; Dictionary <string, string> header = null; Dictionary <string, string> query = null; _requestProvider.CreatePostRequest(Arg.Any <string>(), Arg.Do <JObject>(a => content = a), headers: Arg.Do <Dictionary <string, string> >(a => header = a), queries: Arg.Do <Dictionary <string, string> >(a => query = a)); var details = new RemarkDetails { Latitude = 123, Longitude = 456, Remark = "remarks", Email = "email" }; await _repository.AddRemark(details); _requestProvider.Received(1).CreatePostRequest($"{_firebaseDatabase}/projects/{_firebaseProjectId}/databases/(default)/documents/remarks", Arg.Any <JObject>(), headers: Arg.Any <Dictionary <string, string> >(), queries: Arg.Any <Dictionary <string, string> >()); content.Should().ContainKey("fields"); content.SelectToken("fields").Value <JObject>().Should().ContainKey("lat"); content.SelectToken("fields.lat").Value <JObject>().Should().ContainKey("doubleValue"); content.SelectToken("fields.lat.doubleValue").Value <double>().Should().Be(details.Latitude); content.SelectToken("fields").Value <JObject>().Should().ContainKey("lng"); content.SelectToken("fields.lng").Value <JObject>().Should().ContainKey("doubleValue"); content.SelectToken("fields.lng.doubleValue").Value <double>().Should().Be(details.Longitude); content.SelectToken("fields").Value <JObject>().Should().ContainKey("remark"); content.SelectToken("fields.remark").Value <JObject>().Should().ContainKey("stringValue"); content.SelectToken("fields.remark.stringValue").Value <string>().Should().Be(details.Remark); content.SelectToken("fields").Value <JObject>().Should().ContainKey("email"); content.SelectToken("fields.email").Value <JObject>().Should().ContainKey("stringValue"); content.SelectToken("fields.email.stringValue").Value <string>().Should().Be(details.Email); header.Should().ContainKey("Authorization"); header["Authorization"].Should().Be(_requestAuthorisation); query.Should().ContainKey("key"); query["key"].Should().Be(_firebaseApiKey); }
public async void AddRemark_Should_Return_Correctly() { var response = new RemarkDetails(); var service = Substitute.For <IRemarksService>(); service.AddRemark(Arg.Any <string>(), Arg.Any <AddRemarkRequest>()).Returns(response); var provider = Substitute.For <IUserDetailsProvider>(); provider.GetUserDetails().Returns(new UserDetails()); var actual = await _controller.AddRemark(new AddRemarkRequest(), service, provider); actual.Should().BeOfType <ActionResult <ApiResponse> >(); actual.Result.Should().BeOfType <ObjectResult>(); actual.Result.As <ObjectResult>().StatusCode.Should().Be(StatusCodes.Status201Created); actual.Result.As <ObjectResult>().Value.Should().BeOfType <ApiResponse>(); actual.Result.As <ObjectResult>().Value.As <ApiResponse>().Success.Should().Be(true); actual.Result.As <ObjectResult>().Value.As <ApiResponse>().Message.Should().Be("Remark created."); actual.Result.As <ObjectResult>().Value.As <ApiResponse>().Data.Should().Be(response); }