Skip to content

Commit 3109720

Browse files
authored
add compatibility matrix deserialization (#113)
1 parent 64c4765 commit 3109720

File tree

5 files changed

+64
-10
lines changed

5 files changed

+64
-10
lines changed

src/GregClient/Requests/PackageUploadRequestBody.cs

+2-1
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,13 @@ public PackageUploadRequestBody(string name, string version, string description,
1616
string metadata, string group, IEnumerable<PackageDependency> dependencies,
1717
string siteUrl, string repositoryUrl, bool containsBinaries,
1818
IEnumerable<string> nodeLibraryNames, IEnumerable<string> hostDependencies,
19-
string copyright_holder, string copyright_year, string releaseNotesUrl)
19+
string copyright_holder, string copyright_year, string releaseNotesUrl, IEnumerable<PackageCompatibility> compatibilityMatrix)
2020
{
2121
this.host_dependencies = hostDependencies;
2222
this.copyright_holder = copyright_holder;
2323
this.copyright_year = copyright_year;
2424
this.release_notes_url = releaseNotesUrl;
25+
this.compatibility_matrix = compatibilityMatrix;
2526

2627
this.name = name;
2728
this.version = version;

src/GregClient/Requests/PackageVersionUpload.cs

+14
Original file line numberDiff line numberDiff line change
@@ -79,4 +79,18 @@ public PackageDependency(string name, string version)
7979
public string name { get; set; }
8080
public string version { get; set; }
8181
}
82+
public class PackageCompatibility
83+
{
84+
public PackageCompatibility(string name, List<string> versions, string min, string max)
85+
{
86+
this.name = name;
87+
this.versions = versions;
88+
this.min = min;
89+
this.max = max;
90+
}
91+
public string name { get; set; }
92+
public List<string> versions { get; set; }
93+
public string min { get; set; }
94+
public string max { get; set; }
95+
}
8296
}

src/GregClient/Requests/PackageVersionUploadRequestBody.cs

+3-2
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ public PackageVersionUploadRequestBody(string name, string version, string descr
3838
string metadata, string group, IEnumerable<PackageDependency> dependencies,
3939
string siteUrl, string repositoryUrl, bool containsBinaries,
4040
IEnumerable<string> nodeLibraryNames, IEnumerable<string> hostDependencies,
41-
string copyright_holder, string copyright_year, string compatibility_matrix, string releaseNotesUrl)
41+
string copyright_holder, string copyright_year, IEnumerable<PackageCompatibility> compatibilityMatrix, string releaseNotesUrl)
4242

4343
{
4444
this.host_dependencies = hostDependencies;
@@ -60,6 +60,7 @@ public PackageVersionUploadRequestBody(string name, string version, string descr
6060
this.node_libraries = nodeLibraryNames;
6161
this.compatibility_matrix = compatibility_matrix;
6262
this.release_notes_url = releaseNotesUrl;
63+
this.compatibility_matrix = compatibilityMatrix;
6364
}
6465

6566
/// <summary>
@@ -132,7 +133,7 @@ public PackageVersionUploadRequestBody(string name, string version, string descr
132133
public IEnumerable<string> node_libraries { get; set; }
133134
public string copyright_holder { get; set; }
134135
public string copyright_year { get; set; }
135-
public string compatibility_matrix { get; set; }
136+
public IEnumerable<PackageCompatibility> compatibility_matrix { get; set; }
136137
public string release_notes_url { get; set; }
137138
}
138139
}

src/GregClient/Responses/Responses.cs

+8-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
using RestSharp;
44
using Greg.Converters;
55
using System.Text.Json;
6-
using System.Text.Json.Serialization;
76

87
namespace Greg.Responses
98
{
@@ -78,6 +77,13 @@ public class Dependency
7877

7978
public string _id { get; set; }
8079
}
80+
public class Compatibility
81+
{
82+
public string name { get; set; }
83+
public List<string> versions { get; set; }
84+
public string min { get; set; }
85+
public string max { get; set; }
86+
}
8187

8288
public class PackageVersion
8389
{
@@ -125,6 +131,7 @@ public class PackageVersion
125131

126132
public string size { get; set; }
127133
public string release_notes_url { get; set; }
134+
public List<Compatibility> compatibility_matrix { get; set; }
128135
}
129136

130137
public class User

src/GregClientTests/GregClientTests.cs

+37-6
Original file line numberDiff line numberDiff line change
@@ -56,11 +56,11 @@ public void UploadDynamoPackageVersionTest()
5656
var keywords = new List<string>() { "neat", "ok" };
5757
var nv = new PackageVersionUploadRequestBody("Third .NET Package", "2.1.0", "", keywords, "contents", "dynamo", "0.1.0", "metadata", "group",
5858
new List<PackageDependency>() { new PackageDependency("peter", "0.1.0"), new PackageDependency("stephen", "0.1.0") }, "", "",
59-
false, new List<String>(), new List<String>(), "Dynamo Team", "2021","","");
59+
false, new List<String>(), new List<String>(), "Dynamo Team", "2021",null,"");
6060

6161
var files = new List<string>() { "../test/pedro.dyf", "../test/RootNode.dyf" };
6262
var request = new PackageVersionUpload(nv, files);
63-
Assert.That(request.RequestBody.AsJson().Equals("{\"file_hash\":null,\"name\":\"Third .NET Package\",\"version\":\"2.1.0\",\"description\":\"\",\"group\":\"group\",\"keywords\":[\"neat\",\"ok\"],\"dependencies\":[{\"name\":\"peter\",\"version\":\"0.1.0\"},{\"name\":\"stephen\",\"version\":\"0.1.0\"}],\"host_dependencies\":[],\"contents\":\"contents\",\"engine_version\":\"0.1.0\",\"engine\":\"dynamo\",\"engine_metadata\":\"metadata\",\"site_url\":\"\",\"repository_url\":\"\",\"contains_binaries\":false,\"node_libraries\":[],\"copyright_holder\":\"Dynamo Team\",\"copyright_year\":\"2021\",\"compatibility_matrix\":\"\",\"release_notes_url\":\"\"}"));
63+
Assert.That(request.RequestBody.AsJson().Equals("{\"file_hash\":null,\"name\":\"Third .NET Package\",\"version\":\"2.1.0\",\"description\":\"\",\"group\":\"group\",\"keywords\":[\"neat\",\"ok\"],\"dependencies\":[{\"name\":\"peter\",\"version\":\"0.1.0\"},{\"name\":\"stephen\",\"version\":\"0.1.0\"}],\"host_dependencies\":[],\"contents\":\"contents\",\"engine_version\":\"0.1.0\",\"engine\":\"dynamo\",\"engine_metadata\":\"metadata\",\"site_url\":\"\",\"repository_url\":\"\",\"contains_binaries\":false,\"node_libraries\":[],\"copyright_holder\":\"Dynamo Team\",\"copyright_year\":\"2021\",\"compatibility_matrix\":null,\"release_notes_url\":\"\"}"));
6464
Console.WriteLine(request.RequestBody.AsJson());
6565
}
6666

@@ -70,11 +70,11 @@ public void UploadDynamoPackageWithHostDependencyTest()
7070
var keywords = new List<string>() { "Civil" };
7171
var nv = new PackageVersionUploadRequestBody("Third .NET Package", "2.1.0", "", keywords, "contents", "dynamo", "0.1.0", "metadata", "group",
7272
new List<PackageDependency>() { new PackageDependency("Ram", "0.1.0"), new PackageDependency("Ian", "0.1.0") }, "", "",
73-
false, new List<String>(), new List<String>() { "Civil3D" }, "Dynamo Team", "2021", "", "");
73+
false, new List<String>(), new List<String>() { "Civil3D" }, "Dynamo Team", "2021", null, "");
7474

7575
var files = new List<string>() { "../test/pedro.dyf", "../test/RootNode.dyf" };
7676
var request = new PackageVersionUpload(nv, files);
77-
Assert.That(request.RequestBody.AsJson().Equals("{\"file_hash\":null,\"name\":\"Third .NET Package\",\"version\":\"2.1.0\",\"description\":\"\",\"group\":\"group\",\"keywords\":[\"Civil\"],\"dependencies\":[{\"name\":\"Ram\",\"version\":\"0.1.0\"},{\"name\":\"Ian\",\"version\":\"0.1.0\"}],\"host_dependencies\":[\"Civil3D\"],\"contents\":\"contents\",\"engine_version\":\"0.1.0\",\"engine\":\"dynamo\",\"engine_metadata\":\"metadata\",\"site_url\":\"\",\"repository_url\":\"\",\"contains_binaries\":false,\"node_libraries\":[],\"copyright_holder\":\"Dynamo Team\",\"copyright_year\":\"2021\",\"compatibility_matrix\":\"\",\"release_notes_url\":\"\"}"));
77+
Assert.That(request.RequestBody.AsJson().Equals("{\"file_hash\":null,\"name\":\"Third .NET Package\",\"version\":\"2.1.0\",\"description\":\"\",\"group\":\"group\",\"keywords\":[\"Civil\"],\"dependencies\":[{\"name\":\"Ram\",\"version\":\"0.1.0\"},{\"name\":\"Ian\",\"version\":\"0.1.0\"}],\"host_dependencies\":[\"Civil3D\"],\"contents\":\"contents\",\"engine_version\":\"0.1.0\",\"engine\":\"dynamo\",\"engine_metadata\":\"metadata\",\"site_url\":\"\",\"repository_url\":\"\",\"contains_binaries\":false,\"node_libraries\":[],\"copyright_holder\":\"Dynamo Team\",\"copyright_year\":\"2021\",\"compatibility_matrix\":null,\"release_notes_url\":\"\"}"));
7878
Console.WriteLine(request.RequestBody.AsJson());
7979
}
8080

@@ -83,7 +83,7 @@ public void UploadDynamoPackageVersionWithFilesTest()
8383
{
8484
var keywords = new List<string>() { "neat", "ok" };
8585
var nv = new PackageVersionUploadRequestBody("Third .NET Package", "2.1.0", "", keywords, "contents", "dynamo", "0.1.0", "metadata", "group",
86-
new List<PackageDependency>() { new PackageDependency("peter", "0.1.0"), new PackageDependency("stephen", "0.1.0") }, "", "", false, new List<String>(), new List<String>(), "", "", "", "");
86+
new List<PackageDependency>() { new PackageDependency("peter", "0.1.0"), new PackageDependency("stephen", "0.1.0") }, "", "", false, new List<String>(), new List<String>(), "", "", null, "");
8787

8888
var files = new List<string>() {Assembly.GetExecutingAssembly().Location };
8989

@@ -160,6 +160,37 @@ public void ListHostsTest()
160160
Console.WriteLine(JsonSerializer.Serialize(hostsResponse.content));
161161
Assert.That(hostsResponse.content.Count, Is.EqualTo(5));
162162
}
163-
163+
164+
[Test]
165+
166+
public void TestCompatibilityDeserializationTest()
167+
{
168+
var mockResponse= @"[
169+
{
170+
""name"" : ""dynamo"",
171+
""versions"" : [""2.17"",""2.18""],
172+
""min"" : ""2.17"",
173+
""max"" : ""3.0""
174+
},
175+
{
176+
""name"" : ""revit"",
177+
""versions"" : [""2024"",""2025""],
178+
""min"" : ""2025""
179+
},
180+
{
181+
""name"" : ""civil3d"",
182+
""min"" : ""2025"",
183+
""max"" : ""2024""
184+
},
185+
{
186+
""name"" : "".net"",
187+
""max"" : ""net8""
188+
}
189+
]";
190+
var cm = JsonSerializer.Deserialize<List<PackageCompatibility>>(mockResponse);
191+
Assert.That(cm, !Is.Null);
192+
Assert.That(cm, Has.Count.EqualTo(4));
193+
}
194+
164195
}
165196
}

0 commit comments

Comments
 (0)