public void ApiRequest_FromQuery_WithUri()
        {
            // Arrange
            var id = GetId();
            var query = new Query<ODataObject>(GetShareFileClient());
            query.Uri(new Uri("https://release.sf-api.com/sf/v3/Items(" + id + ")"))
                .Action("Download");

            // Act
            var apiRequest = ApiRequest.FromQuery(query);

            // Assert
            apiRequest.Body.Should().BeNull();
            apiRequest.HttpMethod.Should().Be("GET");
            var expectedUri = "https://release.sf-api.com/sf/v3/Items(" + id + ")/Download";
            apiRequest.GetComposedUri().ToString().Should().Be(expectedUri);
        }
        public void ApiRequest_FromQuery_WithHeader()
        {
            // Arrange
            var id = GetId();
            var query = new Query<ODataObject>(GetShareFileClient());
            query.Uri(new Uri("https://release.sf-api.com/sf/v3/Items(" + id + ")"));
            query.AddHeader("key1", "value1");

            // Act
            var apiRequest = ApiRequest.FromQuery(query);

            // Assert
            apiRequest.Body.Should().BeNull();
            var expectedUri = "https://release.sf-api.com/sf/v3/Items(" + id + ")";
            apiRequest.GetComposedUri().ToString().Should().Be(expectedUri);
            apiRequest.HeaderCollection.Should().ContainKey("key1");
            apiRequest.HeaderCollection.Should().ContainValue("value1");
        }
        public void ApiRequest_FromQuery_WithQueryString()
        {
            // Arrange
            var id = GetId();
            var query = new Query<ODataObject>(GetShareFileClient());
            query.Uri(new Uri("https://release.sf-api.com/sf/v3/Items(" + id + ")"));
            query.QueryString("key1", "value1");
            query.QueryString("key2", "value2");

            // Act
            var apiRequest = ApiRequest.FromQuery(query);

            // Assert
            apiRequest.Body.Should().BeNull();
            var expectedUri = "https://release.sf-api.com/sf/v3/Items(" + id + ")?key1=value1&key2=value2";
            apiRequest.GetComposedUri().ToString().Should().Be(expectedUri);
        }
        public void ApiRequest_FromQuery_WithBody_AsPost()
        {
            // Arrange
            var id = GetId();
            var query = new Query<ODataObject>(GetShareFileClient());
            query.Uri(new Uri("https://release.sf-api.com/sf/v3/Items(" + id + ")"))
                .Action("CreateFolder");
            query.HttpMethod = "POST";
            query.Body = new Folder();

            // Act
            var apiRequest = ApiRequest.FromQuery(query);

            // Assert
            apiRequest.Body.Should().Be(query.Body);
            apiRequest.HttpMethod.Should().Be("POST");
            var expectedUri = "https://release.sf-api.com/sf/v3/Items(" + id + ")/CreateFolder";
            apiRequest.GetComposedUri().ToString().Should().Be(expectedUri);
        }