Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ jobs:
id-token: write

env:
SOLUTION: "TypeContractor.sln"
SOLUTION: "TypeContractor.slnx"
DOTNET_CLI_TELEMETRY_OPTOUT: true

runs-on: ubuntu-latest
Expand Down
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Added

- Simplified response for generated API clients using the React template (#203)
- Add default maps for unsigned numbers (#180)

### Fixed

Expand Down
60 changes: 51 additions & 9 deletions TypeContractor.Tests/TypeScript/TypeScriptConverterTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ public void Can_Convert_Simple_Types()
result.FullName.Should().Be("TypeContractor.Tests.TypeScript.TypeScriptConverterTests+SimpleTypes");
result.IsEnum.Should().BeFalse();
result.EnumMembers.Should().BeNull();
result.Properties.Should().HaveCount(6);
result.Properties.Should().HaveCount(9);
}

[Theory]
Expand All @@ -46,6 +46,9 @@ public void Can_Convert_Simple_Types()
[InlineData(3)]
[InlineData(4)]
[InlineData(5)]
[InlineData(6)]
[InlineData(7)]
[InlineData(8)]
public void Converted_Simple_Properties_Looks_As_Expected(int propertyIndex)
{
var result = Sut.Convert(typeof(SimpleTypes));
Expand All @@ -56,7 +59,7 @@ public void Converted_Simple_Properties_Looks_As_Expected(int propertyIndex)
{
case 0:
prop.SourceName.Should().Be("StringProperty");
prop.SourceType.Should().Be(typeof(string));
prop.SourceType.Should().Be<string>();
prop.InnerSourceType.Should().BeNull();
prop.DestinationName.Should().Be("stringProperty");
prop.DestinationType.Should().Be("string");
Expand All @@ -67,7 +70,7 @@ public void Converted_Simple_Properties_Looks_As_Expected(int propertyIndex)

case 1:
prop.SourceName.Should().Be("NumberProperty");
prop.SourceType.Should().Be(typeof(int?));
prop.SourceType.Should().Be<int?>();
prop.InnerSourceType.Should().BeNull();
prop.DestinationName.Should().Be("numberProperty");
prop.DestinationType.Should().Be("number");
Expand All @@ -78,8 +81,8 @@ public void Converted_Simple_Properties_Looks_As_Expected(int propertyIndex)

case 2:
prop.SourceName.Should().Be("NumbersProperty");
prop.SourceType.Should().Be(typeof(IEnumerable<int>));
prop.InnerSourceType.Should().Be(typeof(int));
prop.SourceType.Should().Be<IEnumerable<int>>();
prop.InnerSourceType.Should().Be<int>();
prop.DestinationName.Should().Be("numbersProperty");
prop.DestinationType.Should().Be("number");
prop.IsBuiltin.Should().BeTrue();
Expand All @@ -89,7 +92,7 @@ public void Converted_Simple_Properties_Looks_As_Expected(int propertyIndex)

case 3:
prop.SourceName.Should().Be("DoubleTime");
prop.SourceType.Should().Be(typeof(double));
prop.SourceType.Should().Be<double>();
prop.InnerSourceType.Should().BeNull();
prop.DestinationName.Should().Be("doubleTime");
prop.DestinationType.Should().Be("number");
Expand All @@ -100,7 +103,7 @@ public void Converted_Simple_Properties_Looks_As_Expected(int propertyIndex)

case 4:
prop.SourceName.Should().Be("TimeyWimeySpan");
prop.SourceType.Should().Be(typeof(TimeSpan));
prop.SourceType.Should().Be<TimeSpan>();
prop.InnerSourceType.Should().BeNull();
prop.DestinationName.Should().Be("timeyWimeySpan");
prop.DestinationType.Should().Be("string");
Expand All @@ -111,14 +114,47 @@ public void Converted_Simple_Properties_Looks_As_Expected(int propertyIndex)

case 5:
prop.SourceName.Should().Be("SomeObject");
prop.SourceType.Should().Be(typeof(object));
prop.SourceType.Should().Be<object>();
prop.InnerSourceType.Should().BeNull();
prop.DestinationName.Should().Be("someObject");
prop.DestinationType.Should().Be("any");
prop.IsBuiltin.Should().BeTrue();
prop.IsArray.Should().BeFalse();
prop.IsNullable.Should().BeFalse();
break;

case 6:
prop.SourceName.Should().Be("UnsignedNumber");
prop.SourceType.Should().Be<uint>();
prop.InnerSourceType.Should().BeNull();
prop.DestinationName.Should().Be("unsignedNumber");
prop.DestinationType.Should().Be("number");
prop.IsBuiltin.Should().BeTrue();
prop.IsArray.Should().BeFalse();
prop.IsNullable.Should().BeFalse();
break;

case 7:
prop.SourceName.Should().Be("UnsignedButLargeNumber");
prop.SourceType.Should().Be<ulong>();
prop.InnerSourceType.Should().BeNull();
prop.DestinationName.Should().Be("unsignedButLargeNumber");
prop.DestinationType.Should().Be("number");
prop.IsBuiltin.Should().BeTrue();
prop.IsArray.Should().BeFalse();
prop.IsNullable.Should().BeFalse();
break;

case 8:
prop.SourceName.Should().Be("UnsignedShorty");
prop.SourceType.Should().Be<ushort>();
prop.InnerSourceType.Should().BeNull();
prop.DestinationName.Should().Be("unsignedShorty");
prop.DestinationType.Should().Be("number");
prop.IsBuiltin.Should().BeTrue();
prop.IsArray.Should().BeFalse();
prop.IsNullable.Should().BeFalse();
break;
}
}

Expand All @@ -138,14 +174,17 @@ public void Finds_Properties_From_Multiple_Base_Classes()
var result = Sut.Convert(typeof(NestedInheritanceTest));

result.Properties.Should().NotBeNull();
result.Properties.Should().HaveCount(8);
result.Properties.Should().HaveCount(11);
result.Properties.Should()
.Contain(x => x.SourceName == "StringProperty")
.And.Contain(x => x.SourceName == "NumberProperty")
.And.Contain(x => x.SourceName == "NumbersProperty")
.And.Contain(x => x.SourceName == "DoubleTime")
.And.Contain(x => x.SourceName == "TimeyWimeySpan")
.And.Contain(x => x.SourceName == "SomeObject")
.And.Contain(x => x.SourceName == "UnsignedNumber")
.And.Contain(x => x.SourceName == "UnsignedButLargeNumber")
.And.Contain(x => x.SourceName == "UnsignedShorty")
.And.Contain(x => x.SourceName == "InheritedProperty")
.And.Contain(x => x.SourceName == "FinalProperty");
}
Expand Down Expand Up @@ -390,6 +429,9 @@ private class SimpleTypes
public double DoubleTime { get; set; }
public TimeSpan TimeyWimeySpan { get; set; }
public object SomeObject { get; set; }
public uint UnsignedNumber { get; set; }
public ulong UnsignedButLargeNumber { get; set; }
public ushort UnsignedShorty { get; set; }
}

private class TypeVisibility
Expand Down
3 changes: 3 additions & 0 deletions TypeContractor/TypeContractorConfiguration.cs
Original file line number Diff line number Diff line change
Expand Up @@ -77,8 +77,11 @@ public TypeContractorConfiguration AddDefaultTypeMaps()
AddCustomMap(typeof(bool), DestinationTypes.Boolean);
AddCustomMap(typeof(byte), DestinationTypes.Number);
AddCustomMap(typeof(short), DestinationTypes.Number);
AddCustomMap(typeof(ushort), DestinationTypes.Number);
AddCustomMap(typeof(int), DestinationTypes.Number);
AddCustomMap(typeof(uint), DestinationTypes.Number);
AddCustomMap(typeof(long), DestinationTypes.Number);
AddCustomMap(typeof(ulong), DestinationTypes.Number);
AddCustomMap(typeof(decimal), DestinationTypes.Number);
AddCustomMap(typeof(float), DestinationTypes.Number);
AddCustomMap(typeof(double), DestinationTypes.Number);
Expand Down
Loading