public void CreateSobject()
        {
            var referenceId = "TheRecord";

            MockSobject sobject = CreateDefaultMockSobject();

            var builder = _compositeBuilder.CreateSobject(referenceId, sobject);

            Subrequest subrequest = builder.Subrequests.FirstOrDefault();

            Assert.IsNotNull(subrequest);

            string json = SubrequestSerialization.Serialize(subrequest, Formatting.None);

            Assert.That(json.Contains($"\"method\":\"POST\""));
            Assert.That(json.Contains($"\"url\":\"/services/data/v{_salesforceApiVersion}.0/sobjects/{typeof(MockSobject).Name}\""));
            Assert.That(json.Contains($"\"Username\":\"{sobject.Username}\""));
            Assert.That(json.Contains($"\"Security_Token__c\":\"{sobject.SecurityToken}\""));
            Assert.That(json.Contains($"\"referenceId\":\"{referenceId}\""));
            Assert.That(json.Contains($"CreateOnlyField"));

            Assert.That(!json.Contains("Password"));
            Assert.That(!json.Contains("ReadOnlyField"));
            Assert.That(!json.Contains("UpdateOnlyField"));
            Assert.That(!json.Contains("DeleteOnlyField"));
        }
        public void DeleteSobject()
        {
            var referenceId = "TheRecord";
            var id          = "1qa2ws3ed4rf5tg6yh";

            MockSobject sobject = CreateDefaultMockSobject(id);

            var builder = _compositeBuilder.DeleteSobject <MockSobject>(referenceId, id);

            Subrequest subrequest = builder.Subrequests.FirstOrDefault();

            Assert.IsNotNull(subrequest);

            string json = SubrequestSerialization.Serialize(subrequest, Formatting.None);

            Assert.That(json.Contains($"\"method\":\"DELETE\""));
            Assert.That(json.Contains($"\"url\":\"/services/data/v{_salesforceApiVersion}.0/sobjects/{typeof(MockSobject).Name}/{id}\""));
            Assert.That(json.Contains($"\"referenceId\":\"{referenceId}\""));

            Assert.That(!json.Contains("body"));
        }