public async void UpdateRemark_Should_Call_IApiRequestProvider_CreatePatchRequest()
        {
            JObject content = null;
            Dictionary <string, string> header = null;
            Dictionary <string, string> query  = null;

            _requestProvider.CreatePatchRequest(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 remarkId = "remarkId";
            var updates  = new UpdatableRemarkDetails
            {
                Remark = "remarks"
            };
            await _repository.UpdateRemark(remarkId, updates);

            _requestProvider.Received(1).CreatePatchRequest($"{_firebaseDatabase}/projects/{_firebaseProjectId}/databases/(default)/documents/remarks/{remarkId}", 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("remark");
            content.SelectToken("fields.remark").Value <JObject>().Should().ContainKey("stringValue");
            content.SelectToken("fields.remark.stringValue").Value <string>().Should().Be(updates.Remark);

            header.Should().ContainKey("Authorization");
            header["Authorization"].Should().Be(_requestAuthorisation);

            query.Should().ContainKey("key");
            query["key"].Should().Be(_firebaseApiKey);
            query["currentDocument.exists"].Should().Be("true");
            query["updateMask.fieldPaths"].Should().Be("remark");
        }
        public async Task UpdateRemark(string remarkId, UpdatableRemarkDetails updates)
        {
            var url     = $"{_endpoint}/remarks/{remarkId}";
            var content = CreateUpdateRemarkRequest(updates);

            var updateQuery = new Dictionary <string, string>(_defaultQuery);

            updateQuery.Add("currentDocument.exists", "true");
            updateQuery.Add("updateMask.fieldPaths", "remark");

            var request = _requestProvider.CreatePatchRequest(url, content, headers: _defaultHeader, queries: updateQuery);
            await _apiClient.Send <object>(request);
        }
 public void CreatePatchRequest_Should_Set_HttpMethod_Correctly()
 {
     _provider.CreatePatchRequest("https://google.com", 123).Method.Should().Be(HttpMethod.Patch);
 }