using System.Net.Http.Headers;
using System.Text;
using Elsa.Http.ContentWriters;
using Xunit;
namespace Elsa.Http.UnitTests.ContentWriters;
///
/// Tests for the class.
///
public class RawStringContentTests
{
///
/// Tests that the content type is set exactly as provided without appending charset information.
///
[Fact]
public void ContentType_ShouldNotAppendCharset()
{
// Arrange
const string contentType = "text/xml";
const string content = "test";
// Act
var rawContent = new RawStringContent(content, Encoding.UTF8, contentType);
// Assert
Assert.Equal(contentType, rawContent.Headers.ContentType?.MediaType);
Assert.Null(rawContent.Headers.ContentType?.CharSet);
}
///
/// Tests that the content type with parameters is preserved exactly as provided.
///
[Fact]
public void ContentType_WithParameters_ShouldPreserveParameters()
{
// Arrange
const string contentType = "application/json; custom-param=value";
var expectedMediaType = new MediaTypeHeaderValue(contentType);
const string content = "{\"test\": \"value\"}";
// Act
var rawContent = new RawStringContent(content, Encoding.UTF8, contentType);
// Assert
Assert.Equal(expectedMediaType.MediaType, rawContent.Headers.ContentType?.MediaType);
Assert.Equal(expectedMediaType.Parameters.Count(), rawContent.Headers.ContentType?.Parameters.Count());
var expectedParam = expectedMediaType.Parameters.First();
var actualParam = rawContent.Headers.ContentType?.Parameters.First();
Assert.Equal(expectedParam.Name, actualParam?.Name);
Assert.Equal(expectedParam.Value, actualParam?.Value);
}
}