From a3e77fd57b4c700f7471523f54f16b5e018ac188 Mon Sep 17 00:00:00 2001 From: Robert Andersson Date: Fri, 27 Dec 2024 21:49:33 +0100 Subject: [PATCH] Add tests to verify no collision --- .../Namespace/A/NamespaceATests.cs | 79 ++++++++++++++++++ .../Namespace/B/NamespaceBTests.cs | 80 +++++++++++++++++++ .../Namespace/SampleClass.cs | 3 + 3 files changed, 162 insertions(+) create mode 100644 tests/DynamoDBGenerator.SourceGenerator.Tests/Namespace/A/NamespaceATests.cs create mode 100644 tests/DynamoDBGenerator.SourceGenerator.Tests/Namespace/B/NamespaceBTests.cs create mode 100644 tests/DynamoDBGenerator.SourceGenerator.Tests/Namespace/SampleClass.cs diff --git a/tests/DynamoDBGenerator.SourceGenerator.Tests/Namespace/A/NamespaceATests.cs b/tests/DynamoDBGenerator.SourceGenerator.Tests/Namespace/A/NamespaceATests.cs new file mode 100644 index 00000000..41279ccf --- /dev/null +++ b/tests/DynamoDBGenerator.SourceGenerator.Tests/Namespace/A/NamespaceATests.cs @@ -0,0 +1,79 @@ +using Amazon.DynamoDBv2.Model; +using DynamoDBGenerator.Attributes; + +namespace DynamoDBGenerator.SourceGenerator.Tests.Namespace.A; + +public class NamespaceATests +{ + [Fact] + public void Verify_Correct_NameType() + { + Container.ContainerMarshaller + .AttributeExpressionNameTracker() + .Should() + .BeOfType(); + + Container.ContainerMarshaller + .AttributeExpressionNameTracker() + .PropertyA + .Should() + .BeOfType(); + } + + [Fact] + public void Verify_Correct_ValueType() + { + Container.ContainerMarshaller + .AttributeExpressionValueTracker() + .Should() + .BeOfType(); + + Container.ContainerMarshaller + .AttributeExpressionValueTracker() + .PropertyA + .Should() + .BeOfType(); + } + + [Fact] + public void Unmarshall() + { + Container.ContainerMarshaller + .Unmarshall(new Dictionary + { + { + nameof(Container.PropertyA), + new AttributeValue + { + M = new Dictionary + { { nameof(Container.PropertyA.Property), new AttributeValue { N = "2" } } } + } + } + }) + .Should() + .BeEquivalentTo(new Container(new SampleClass(2))); + } + + [Fact] + public void Marshall() + { + Container.ContainerMarshaller + .Marshall(new Container(new SampleClass(2))) + .Should() + .BeEquivalentTo(new Dictionary + { + { + nameof(Container.PropertyA), + new AttributeValue + { + M = new Dictionary + { { nameof(Container.PropertyA.Property), new AttributeValue { N = "2" } } } + } + } + } + ); + } +} + +[DynamoDBMarshaller] +public partial record Container(SampleClass PropertyA); \ No newline at end of file diff --git a/tests/DynamoDBGenerator.SourceGenerator.Tests/Namespace/B/NamespaceBTests.cs b/tests/DynamoDBGenerator.SourceGenerator.Tests/Namespace/B/NamespaceBTests.cs new file mode 100644 index 00000000..d291a905 --- /dev/null +++ b/tests/DynamoDBGenerator.SourceGenerator.Tests/Namespace/B/NamespaceBTests.cs @@ -0,0 +1,80 @@ +using Amazon.DynamoDBv2.Model; +using DynamoDBGenerator.Attributes; + +namespace DynamoDBGenerator.SourceGenerator.Tests.Namespace.B; + +public class NamespaceBTests +{ + + [Fact] + public void Verify_Correct_NameType() + { + Container.ContainerMarshaller + .AttributeExpressionNameTracker() + .Should() + .BeOfType(); + + Container.ContainerMarshaller + .AttributeExpressionNameTracker() + .PropertyB + .Should() + .BeOfType(); + } + + [Fact] + public void Verify_Correct_ValueType() + { + Container.ContainerMarshaller + .AttributeExpressionValueTracker() + .Should() + .BeOfType(); + + Container.ContainerMarshaller + .AttributeExpressionValueTracker() + .PropertyB + .Should() + .BeOfType(); + } + + [Fact] + public void Unmarshall() + { + Container.ContainerMarshaller + .Unmarshall(new Dictionary + { + { + nameof(Container.PropertyB), + new AttributeValue + { + M = new Dictionary + { { nameof(Container.PropertyB.Property), new AttributeValue { N = "2" } } } + } + } + }) + .Should() + .BeEquivalentTo(new Container(new SampleClass(2))); + } + + [Fact] + public void Marshall() + { + Container.ContainerMarshaller + .Marshall(new Container(new SampleClass(2))) + .Should() + .BeEquivalentTo(new Dictionary + { + { + nameof(Container.PropertyB), + new AttributeValue + { + M = new Dictionary + { { nameof(Container.PropertyB.Property), new AttributeValue { N = "2" } } } + } + } + } + ); + } +} + +[DynamoDBMarshaller] +public partial record Container(SampleClass PropertyB); \ No newline at end of file diff --git a/tests/DynamoDBGenerator.SourceGenerator.Tests/Namespace/SampleClass.cs b/tests/DynamoDBGenerator.SourceGenerator.Tests/Namespace/SampleClass.cs new file mode 100644 index 00000000..7fc3082c --- /dev/null +++ b/tests/DynamoDBGenerator.SourceGenerator.Tests/Namespace/SampleClass.cs @@ -0,0 +1,3 @@ +namespace DynamoDBGenerator.SourceGenerator.Tests.Namespace; + +public record SampleClass(int Property);