Support for conversions between models of different versions (#420)

This commit is contained in:
Andrew Stakhov
2020-05-20 19:28:19 -04:00
committed by GitHub
parent a4ff002bde
commit f1a3586c43
12 changed files with 2832 additions and 3 deletions

View File

@@ -0,0 +1,55 @@
using System.Collections.Generic;
using k8s.Models;
using Xunit;
using FluentAssertions;
using k8s.Versioning;
using AutoMapper;
namespace k8s.Tests
{
public class VersionConverterTests
{
[Fact]
public void CanExplicitlyConvert()
{
var a = new V1APIService { Spec = new V1APIServiceSpec { Group = "blah" } };
var b = (V1beta1APIService)a;
b.Spec.Group.Should().Be("blah");
}
[Fact]
public void ConfigurationsAreValid()
{
var config = new MapperConfiguration(VersionConverter.GetConfigurations);
config.AssertConfigurationIsValid();
}
[Theory]
[InlineData("v1", "v1beta1", 1)]
[InlineData("v1beta1", "v1", -1)]
[InlineData("v1beta1", "v1alpha1", 1)]
[InlineData("v1alpha1", "v1beta1", -1)]
[InlineData("v1", "v1alpha1", 1)]
[InlineData("v2alpha1", "v1", 1)]
[InlineData("v1", "v2alpha1", -1)]
[InlineData("v1", "v1", 0)]
[InlineData("v2", "v2", 0)]
[InlineData("v1beta1", "v1beta1", 0)]
[InlineData("v1beta2", "v1beta2", 0)]
[InlineData("v2beta2", "v2beta2", 0)]
public void KubernetesVersionCompare(string x, string y, int expected)
{
KubernetesVersionComparer.Instance.Compare(x, y).Should().Be(expected);
}
[Fact]
public void ConvertToVersion()
{
var src = new V1beta1APIService().Initialize();
src.ApiVersion.Should().Be("apiregistration.k8s.io/v1beta1");
var sut = (V1APIService)VersionConverter.ConvertToVersion(src, "v1");
sut.Should().NotBeNull();
sut.ApiVersion.Should().Be("apiregistration.k8s.io/v1");
}
}
}