pulumi/sdk/dotnet/Pulumi.Automation.Tests/Serialization/ProjectRuntimeJsonConverterTests.cs
Sean Fausett 3530ba3205
[dotnet] Fix Resharper code issues (#7178)
* Fix resharper code issues for language usage opportunities

* Fix resharper code issues for common practices and code improvements

* Fix resharper code issues for potential code quality issues

* Fix resharper code issues for redundancies in code

* Fix xunit test output

* Update changelog

* Fix resharper code issues for compiler warnings

* Fix resharper code issues for inconsistent naming

* Add resharper solution settings file

* Fix resharper code issues for potential code quality issues

* Fix resharper code issues for redundancies in code

* Fix resharper code issues for redundancies in symbol declarations
2021-06-10 10:32:33 -04:00

108 lines
3.5 KiB
C#

// Copyright 2016-2021, Pulumi Corporation
using System.Text.Json;
using Pulumi.Automation.Serialization;
using Xunit;
using Xunit.Abstractions;
namespace Pulumi.Automation.Tests.Serialization
{
public class ProjectRuntimeJsonConverterTests
{
private readonly ITestOutputHelper _output;
private static readonly LocalSerializer _serializer = new LocalSerializer();
public ProjectRuntimeJsonConverterTests(ITestOutputHelper output)
{
_output = output;
}
[Theory]
[InlineData(ProjectRuntimeName.NodeJS)]
[InlineData(ProjectRuntimeName.Go)]
[InlineData(ProjectRuntimeName.Python)]
[InlineData(ProjectRuntimeName.Dotnet)]
public void CanDeserializeWithStringRuntime(ProjectRuntimeName runtimeName)
{
var json = $@"
{{
""name"": ""test-project"",
""runtime"": ""{runtimeName.ToString().ToLower()}""
}}
";
var settings = _serializer.DeserializeJson<ProjectSettings>(json);
Assert.NotNull(settings);
Assert.IsType<ProjectSettings>(settings);
Assert.Equal("test-project", settings.Name);
Assert.Equal(runtimeName, settings.Runtime.Name);
Assert.Null(settings.Runtime.Options);
}
[Theory]
[InlineData(ProjectRuntimeName.NodeJS)]
[InlineData(ProjectRuntimeName.Go)]
[InlineData(ProjectRuntimeName.Python)]
[InlineData(ProjectRuntimeName.Dotnet)]
public void CanDeserializeWithObjectRuntime(ProjectRuntimeName runtimeName)
{
var json = $@"
{{
""name"": ""test-project"",
""runtime"": {{
""name"": ""{runtimeName.ToString().ToLower()}"",
""options"": {{
""typeScript"": true,
""binary"": ""test-binary"",
""virtualEnv"": ""test-env""
}}
}}
}}
";
var settings = _serializer.DeserializeJson<ProjectSettings>(json);
Assert.NotNull(settings);
Assert.IsType<ProjectSettings>(settings);
Assert.Equal("test-project", settings.Name);
Assert.Equal(runtimeName, settings.Runtime.Name);
Assert.NotNull(settings.Runtime.Options);
Assert.Equal(true, settings.Runtime.Options!.TypeScript);
Assert.Equal("test-binary", settings.Runtime.Options.Binary);
Assert.Equal("test-env", settings.Runtime.Options.VirtualEnv);
}
[Fact]
public void SerializesAsStringIfOptionsNull()
{
var runtime = new ProjectRuntime(ProjectRuntimeName.Dotnet);
var json = _serializer.SerializeJson(runtime);
_output.WriteLine(json);
using var document = JsonDocument.Parse(json);
Assert.NotNull(document);
Assert.Equal(JsonValueKind.String, document.RootElement.ValueKind);
Assert.Equal("dotnet", document.RootElement.GetString());
}
[Fact]
public void SerializesAsObjectIfOptionsNotNull()
{
var runtime = new ProjectRuntime(ProjectRuntimeName.Dotnet)
{
Options = new ProjectRuntimeOptions
{
TypeScript = true,
},
};
var json = _serializer.SerializeJson(runtime);
_output.WriteLine(json);
using var document = JsonDocument.Parse(json);
Assert.NotNull(document);
Assert.Equal(JsonValueKind.Object, document.RootElement.ValueKind);
}
}
}