Skip to content

Commit a1fc2c5

Browse files
feat: Add ReadOnlyCollection implicit operator for Unions (box/box-codegen#633) (#483)
1 parent 1dd6f2a commit a1fc2c5

File tree

7 files changed

+51
-13
lines changed

7 files changed

+51
-13
lines changed

.codegen.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{ "engineHash": "300e29e", "specHash": "a8825be", "version": "1.10.0" }
1+
{ "engineHash": "60d22ee", "specHash": "a8825be", "version": "1.10.0" }

Box.Sdk.Gen.Tests.Integration/Test/FileMetadata/FileMetadataManagerTests.cs

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
using Microsoft.VisualStudio.TestTools.UnitTesting;
2-
using Box.Sdk.Gen.Internal;
3-
using System.Collections.Generic;
4-
using System.Collections.ObjectModel;
52
using System;
3+
using System.Collections.ObjectModel;
4+
using System.Collections.Generic;
5+
using Box.Sdk.Gen.Internal;
66
using Box.Sdk.Gen;
77
using Box.Sdk.Gen.Schemas;
88
using Box.Sdk.Gen.Managers;
@@ -15,6 +15,23 @@ public class FileMetadataManagerTests {
1515
public FileMetadataManagerTests() {
1616
client = new CommonsManager().GetDefaultClient();
1717
}
18+
[TestMethod]
19+
public async System.Threading.Tasks.Task TestUpdatingFileMetadata() {
20+
FileFull file = await new CommonsManager().UploadNewFileAsync();
21+
string templateKey = string.Concat("key", Utils.GetUUID());
22+
MetadataTemplate template = await client.MetadataTemplates.CreateMetadataTemplateAsync(requestBody: new CreateMetadataTemplateRequestBody(scope: "enterprise", displayName: templateKey) { TemplateKey = templateKey, Fields = Array.AsReadOnly(new [] {new CreateMetadataTemplateRequestBodyFieldsField(type: CreateMetadataTemplateRequestBodyFieldsTypeField.String, key: "name", displayName: "name"),new CreateMetadataTemplateRequestBodyFieldsField(type: CreateMetadataTemplateRequestBodyFieldsTypeField.Float, key: "age", displayName: "age"),new CreateMetadataTemplateRequestBodyFieldsField(type: CreateMetadataTemplateRequestBodyFieldsTypeField.Date, key: "birthDate", displayName: "birthDate"),new CreateMetadataTemplateRequestBodyFieldsField(type: CreateMetadataTemplateRequestBodyFieldsTypeField.Enum, key: "countryCode", displayName: "countryCode") { Options = Array.AsReadOnly(new [] {new CreateMetadataTemplateRequestBodyFieldsOptionsField(key: "US"),new CreateMetadataTemplateRequestBodyFieldsOptionsField(key: "CA")}) },new CreateMetadataTemplateRequestBodyFieldsField(type: CreateMetadataTemplateRequestBodyFieldsTypeField.MultiSelect, key: "sports", displayName: "sports") { Options = Array.AsReadOnly(new [] {new CreateMetadataTemplateRequestBodyFieldsOptionsField(key: "basketball"),new CreateMetadataTemplateRequestBodyFieldsOptionsField(key: "football"),new CreateMetadataTemplateRequestBodyFieldsOptionsField(key: "tennis")}) }}) });
23+
MetadataFull createdMetadata = await client.FileMetadata.CreateFileMetadataByIdAsync(fileId: file.Id, scope: CreateFileMetadataByIdScope.Enterprise, templateKey: templateKey, requestBody: new Dictionary<string, object>() { { "name", "John" }, { "age", 23 }, { "birthDate", "2001-01-03T02:20:50.520Z" }, { "countryCode", "US" }, { "sports", Array.AsReadOnly(new [] {"basketball","tennis"}) } });
24+
MetadataFull updatedMetadata = await client.FileMetadata.UpdateFileMetadataByIdAsync(fileId: file.Id, scope: UpdateFileMetadataByIdScope.Enterprise, templateKey: templateKey, requestBody: Array.AsReadOnly(new [] {new UpdateFileMetadataByIdRequestBody() { Op = UpdateFileMetadataByIdRequestBodyOpField.Replace, Path = "/name", Value = "Jack" },new UpdateFileMetadataByIdRequestBody() { Op = UpdateFileMetadataByIdRequestBodyOpField.Replace, Path = "/age", Value = 24 },new UpdateFileMetadataByIdRequestBody() { Op = UpdateFileMetadataByIdRequestBodyOpField.Replace, Path = "/birthDate", Value = "2000-01-03T02:20:50.520Z" },new UpdateFileMetadataByIdRequestBody() { Op = UpdateFileMetadataByIdRequestBodyOpField.Replace, Path = "/countryCode", Value = "CA" },new UpdateFileMetadataByIdRequestBody() { Op = UpdateFileMetadataByIdRequestBodyOpField.Replace, Path = "/sports", Value = Array.AsReadOnly(new [] {"football"}) }}));
25+
Assert.IsTrue(StringUtils.ToStringRepresentation(updatedMetadata.Template) == templateKey);
26+
Assert.IsTrue(StringUtils.ToStringRepresentation(NullableUtils.Unwrap(updatedMetadata.ExtraData)["name"]) == "Jack");
27+
Assert.IsTrue(StringUtils.ToStringRepresentation(NullableUtils.Unwrap(updatedMetadata.ExtraData)["age"]) == "24");
28+
Assert.IsTrue(StringUtils.ToStringRepresentation(NullableUtils.Unwrap(updatedMetadata.ExtraData)["birthDate"]) == "2000-01-03T02:20:50.520Z");
29+
Assert.IsTrue(StringUtils.ToStringRepresentation(NullableUtils.Unwrap(updatedMetadata.ExtraData)["countryCode"]) == "CA");
30+
await client.FileMetadata.DeleteFileMetadataByIdAsync(fileId: file.Id, scope: DeleteFileMetadataByIdScope.Enterprise, templateKey: templateKey);
31+
await client.MetadataTemplates.DeleteMetadataTemplateAsync(scope: DeleteMetadataTemplateScope.Enterprise, templateKey: templateKey);
32+
await client.Files.DeleteFileByIdAsync(fileId: file.Id);
33+
}
34+
1835
[TestMethod]
1936
public async System.Threading.Tasks.Task TestGlobalFileMetadata() {
2037
FileFull file = await new CommonsManager().UploadNewFileAsync();

Box.Sdk.Gen.Tests.Integration/Test/FolderMetadata/FolderMetadataManagerTests.cs

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
using Microsoft.VisualStudio.TestTools.UnitTesting;
2-
using Box.Sdk.Gen.Internal;
3-
using System.Collections.Generic;
4-
using System.Collections.ObjectModel;
52
using System;
3+
using System.Collections.ObjectModel;
4+
using System.Collections.Generic;
5+
using Box.Sdk.Gen.Internal;
66
using Box.Sdk.Gen;
77
using Box.Sdk.Gen.Schemas;
88
using Box.Sdk.Gen.Managers;
@@ -15,6 +15,23 @@ public class FolderMetadataManagerTests {
1515
public FolderMetadataManagerTests() {
1616
client = new CommonsManager().GetDefaultClient();
1717
}
18+
[TestMethod]
19+
public async System.Threading.Tasks.Task TestUpdatingFolderMetadata() {
20+
FolderFull folder = await new CommonsManager().CreateNewFolderAsync();
21+
string templateKey = string.Concat("key", Utils.GetUUID());
22+
MetadataTemplate template = await client.MetadataTemplates.CreateMetadataTemplateAsync(requestBody: new CreateMetadataTemplateRequestBody(scope: "enterprise", displayName: templateKey) { TemplateKey = templateKey, Fields = Array.AsReadOnly(new [] {new CreateMetadataTemplateRequestBodyFieldsField(type: CreateMetadataTemplateRequestBodyFieldsTypeField.String, key: "name", displayName: "name"),new CreateMetadataTemplateRequestBodyFieldsField(type: CreateMetadataTemplateRequestBodyFieldsTypeField.Float, key: "age", displayName: "age"),new CreateMetadataTemplateRequestBodyFieldsField(type: CreateMetadataTemplateRequestBodyFieldsTypeField.Date, key: "birthDate", displayName: "birthDate"),new CreateMetadataTemplateRequestBodyFieldsField(type: CreateMetadataTemplateRequestBodyFieldsTypeField.Enum, key: "countryCode", displayName: "countryCode") { Options = Array.AsReadOnly(new [] {new CreateMetadataTemplateRequestBodyFieldsOptionsField(key: "US"),new CreateMetadataTemplateRequestBodyFieldsOptionsField(key: "CA")}) },new CreateMetadataTemplateRequestBodyFieldsField(type: CreateMetadataTemplateRequestBodyFieldsTypeField.MultiSelect, key: "sports", displayName: "sports") { Options = Array.AsReadOnly(new [] {new CreateMetadataTemplateRequestBodyFieldsOptionsField(key: "basketball"),new CreateMetadataTemplateRequestBodyFieldsOptionsField(key: "football"),new CreateMetadataTemplateRequestBodyFieldsOptionsField(key: "tennis")}) }}) });
23+
MetadataFull createdMetadata = await client.FolderMetadata.CreateFolderMetadataByIdAsync(folderId: folder.Id, scope: CreateFolderMetadataByIdScope.Enterprise, templateKey: templateKey, requestBody: new Dictionary<string, object>() { { "name", "John" }, { "age", 23 }, { "birthDate", "2001-01-03T02:20:50.520Z" }, { "countryCode", "US" }, { "sports", Array.AsReadOnly(new [] {"basketball","tennis"}) } });
24+
MetadataFull updatedMetadata = await client.FolderMetadata.UpdateFolderMetadataByIdAsync(folderId: folder.Id, scope: UpdateFolderMetadataByIdScope.Enterprise, templateKey: templateKey, requestBody: Array.AsReadOnly(new [] {new UpdateFolderMetadataByIdRequestBody() { Op = UpdateFolderMetadataByIdRequestBodyOpField.Replace, Path = "/name", Value = "Jack" },new UpdateFolderMetadataByIdRequestBody() { Op = UpdateFolderMetadataByIdRequestBodyOpField.Replace, Path = "/age", Value = 24 },new UpdateFolderMetadataByIdRequestBody() { Op = UpdateFolderMetadataByIdRequestBodyOpField.Replace, Path = "/birthDate", Value = "2000-01-03T02:20:50.520Z" },new UpdateFolderMetadataByIdRequestBody() { Op = UpdateFolderMetadataByIdRequestBodyOpField.Replace, Path = "/countryCode", Value = "CA" },new UpdateFolderMetadataByIdRequestBody() { Op = UpdateFolderMetadataByIdRequestBodyOpField.Replace, Path = "/sports", Value = Array.AsReadOnly(new [] {"football"}) }}));
25+
Assert.IsTrue(StringUtils.ToStringRepresentation(updatedMetadata.Template) == templateKey);
26+
Assert.IsTrue(StringUtils.ToStringRepresentation(NullableUtils.Unwrap(updatedMetadata.ExtraData)["name"]) == "Jack");
27+
Assert.IsTrue(StringUtils.ToStringRepresentation(NullableUtils.Unwrap(updatedMetadata.ExtraData)["age"]) == "24");
28+
Assert.IsTrue(StringUtils.ToStringRepresentation(NullableUtils.Unwrap(updatedMetadata.ExtraData)["birthDate"]) == "2000-01-03T02:20:50.520Z");
29+
Assert.IsTrue(StringUtils.ToStringRepresentation(NullableUtils.Unwrap(updatedMetadata.ExtraData)["countryCode"]) == "CA");
30+
await client.FolderMetadata.DeleteFolderMetadataByIdAsync(folderId: folder.Id, scope: DeleteFolderMetadataByIdScope.Enterprise, templateKey: templateKey);
31+
await client.MetadataTemplates.DeleteMetadataTemplateAsync(scope: DeleteMetadataTemplateScope.Enterprise, templateKey: templateKey);
32+
await client.Folders.DeleteFolderByIdAsync(folderId: folder.Id);
33+
}
34+
1835
[TestMethod]
1936
public async System.Threading.Tasks.Task TestGlobalFolderMetadata() {
2037
FolderFull folder = await new CommonsManager().CreateNewFolderAsync();

Box.Sdk.Gen/Schemas/MetadataFieldFilterDateRangeOrMetadataFieldFilterFloatRangeOrArrayOfStringOrNumberOrString/MetadataFieldFilterDateRangeOrMetadataFieldFilterFloatRangeOrArrayOfStringOrNumberOrString.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ public MetadataFieldFilterDateRangeOrMetadataFieldFilterFloatRangeOrArrayOfStrin
3434

3535
public static implicit operator MetadataFieldFilterDateRangeOrMetadataFieldFilterFloatRangeOrArrayOfStringOrNumberOrString(MetadataFieldFilterFloatRange value) => new MetadataFieldFilterDateRangeOrMetadataFieldFilterFloatRangeOrArrayOfStringOrNumberOrString(value);
3636

37+
public static implicit operator MetadataFieldFilterDateRangeOrMetadataFieldFilterFloatRangeOrArrayOfStringOrNumberOrString(ReadOnlyCollection<string> value) => new MetadataFieldFilterDateRangeOrMetadataFieldFilterFloatRangeOrArrayOfStringOrNumberOrString(value);
38+
3739
public static implicit operator MetadataFieldFilterDateRangeOrMetadataFieldFilterFloatRangeOrArrayOfStringOrNumberOrString(double value) => new MetadataFieldFilterDateRangeOrMetadataFieldFilterFloatRangeOrArrayOfStringOrNumberOrString(value);
3840

3941
public static implicit operator MetadataFieldFilterDateRangeOrMetadataFieldFilterFloatRangeOrArrayOfStringOrNumberOrString(string value) => new MetadataFieldFilterDateRangeOrMetadataFieldFilterFloatRangeOrArrayOfStringOrNumberOrString(value);

Box.Sdk.Gen/Schemas/MetadataInstanceValue/MetadataInstanceValue.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ public MetadataInstanceValue(IReadOnlyList<string> value) : base(value) {}
3131

3232
public static implicit operator MetadataInstanceValue(double value) => new MetadataInstanceValue(value);
3333

34+
public static implicit operator MetadataInstanceValue(ReadOnlyCollection<string> value) => new MetadataInstanceValue(value);
35+
3436
class MetadataInstanceValueConverter : JsonConverter<MetadataInstanceValue> {
3537
public override MetadataInstanceValue Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) {
3638
using var document = JsonDocument.ParseValue(ref reader);

docs/FileMetadata.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ See the endpoint docs at
9494

9595
<!-- sample post_files_id_metadata_id_id -->
9696
```
97-
await client.FileMetadata.CreateFileMetadataByIdAsync(fileId: file.Id, scope: CreateFileMetadataByIdScope.Global, templateKey: "properties", requestBody: new Dictionary<string, object>() { { "abc", "xyz" } });
97+
await client.FileMetadata.CreateFileMetadataByIdAsync(fileId: file.Id, scope: CreateFileMetadataByIdScope.Enterprise, templateKey: templateKey, requestBody: new Dictionary<string, object>() { { "name", "John" }, { "age", 23 }, { "birthDate", "2001-01-03T02:20:50.520Z" }, { "countryCode", "US" }, { "sports", Array.AsReadOnly(new [] {"basketball","tennis"}) } });
9898
```
9999

100100
### Arguments
@@ -139,7 +139,7 @@ See the endpoint docs at
139139

140140
<!-- sample put_files_id_metadata_id_id -->
141141
```
142-
await client.FileMetadata.UpdateFileMetadataByIdAsync(fileId: file.Id, scope: UpdateFileMetadataByIdScope.Global, templateKey: "properties", requestBody: Array.AsReadOnly(new [] {new UpdateFileMetadataByIdRequestBody() { Op = UpdateFileMetadataByIdRequestBodyOpField.Replace, Path = "/abc", Value = newValue }}));
142+
await client.FileMetadata.UpdateFileMetadataByIdAsync(fileId: file.Id, scope: UpdateFileMetadataByIdScope.Enterprise, templateKey: templateKey, requestBody: Array.AsReadOnly(new [] {new UpdateFileMetadataByIdRequestBody() { Op = UpdateFileMetadataByIdRequestBodyOpField.Replace, Path = "/name", Value = "Jack" },new UpdateFileMetadataByIdRequestBody() { Op = UpdateFileMetadataByIdRequestBodyOpField.Replace, Path = "/age", Value = 24 },new UpdateFileMetadataByIdRequestBody() { Op = UpdateFileMetadataByIdRequestBodyOpField.Replace, Path = "/birthDate", Value = "2000-01-03T02:20:50.520Z" },new UpdateFileMetadataByIdRequestBody() { Op = UpdateFileMetadataByIdRequestBodyOpField.Replace, Path = "/countryCode", Value = "CA" },new UpdateFileMetadataByIdRequestBody() { Op = UpdateFileMetadataByIdRequestBodyOpField.Replace, Path = "/sports", Value = Array.AsReadOnly(new [] {"football"}) }}));
143143
```
144144

145145
### Arguments
@@ -177,7 +177,7 @@ See the endpoint docs at
177177

178178
<!-- sample delete_files_id_metadata_id_id -->
179179
```
180-
await client.FileMetadata.DeleteFileMetadataByIdAsync(fileId: file.Id, scope: DeleteFileMetadataByIdScope.Global, templateKey: "properties");
180+
await client.FileMetadata.DeleteFileMetadataByIdAsync(fileId: file.Id, scope: DeleteFileMetadataByIdScope.Enterprise, templateKey: templateKey);
181181
```
182182

183183
### Arguments

docs/FolderMetadata.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ See the endpoint docs at
9999

100100
<!-- sample post_folders_id_metadata_id_id -->
101101
```
102-
await client.FolderMetadata.CreateFolderMetadataByIdAsync(folderId: folder.Id, scope: CreateFolderMetadataByIdScope.Global, templateKey: "properties", requestBody: new Dictionary<string, object>() { { "abc", "xyz" } });
102+
await client.FolderMetadata.CreateFolderMetadataByIdAsync(folderId: folder.Id, scope: CreateFolderMetadataByIdScope.Enterprise, templateKey: templateKey, requestBody: new Dictionary<string, object>() { { "name", "John" }, { "age", 23 }, { "birthDate", "2001-01-03T02:20:50.520Z" }, { "countryCode", "US" }, { "sports", Array.AsReadOnly(new [] {"basketball","tennis"}) } });
103103
```
104104

105105
### Arguments
@@ -144,7 +144,7 @@ See the endpoint docs at
144144

145145
<!-- sample put_folders_id_metadata_id_id -->
146146
```
147-
await client.FolderMetadata.UpdateFolderMetadataByIdAsync(folderId: folder.Id, scope: UpdateFolderMetadataByIdScope.Global, templateKey: "properties", requestBody: Array.AsReadOnly(new [] {new UpdateFolderMetadataByIdRequestBody() { Op = UpdateFolderMetadataByIdRequestBodyOpField.Replace, Path = "/abc", Value = newValue }}));
147+
await client.FolderMetadata.UpdateFolderMetadataByIdAsync(folderId: folder.Id, scope: UpdateFolderMetadataByIdScope.Enterprise, templateKey: templateKey, requestBody: Array.AsReadOnly(new [] {new UpdateFolderMetadataByIdRequestBody() { Op = UpdateFolderMetadataByIdRequestBodyOpField.Replace, Path = "/name", Value = "Jack" },new UpdateFolderMetadataByIdRequestBody() { Op = UpdateFolderMetadataByIdRequestBodyOpField.Replace, Path = "/age", Value = 24 },new UpdateFolderMetadataByIdRequestBody() { Op = UpdateFolderMetadataByIdRequestBodyOpField.Replace, Path = "/birthDate", Value = "2000-01-03T02:20:50.520Z" },new UpdateFolderMetadataByIdRequestBody() { Op = UpdateFolderMetadataByIdRequestBodyOpField.Replace, Path = "/countryCode", Value = "CA" },new UpdateFolderMetadataByIdRequestBody() { Op = UpdateFolderMetadataByIdRequestBodyOpField.Replace, Path = "/sports", Value = Array.AsReadOnly(new [] {"football"}) }}));
148148
```
149149

150150
### Arguments
@@ -182,7 +182,7 @@ See the endpoint docs at
182182

183183
<!-- sample delete_folders_id_metadata_id_id -->
184184
```
185-
await client.FolderMetadata.DeleteFolderMetadataByIdAsync(folderId: folder.Id, scope: DeleteFolderMetadataByIdScope.Global, templateKey: "properties");
185+
await client.FolderMetadata.DeleteFolderMetadataByIdAsync(folderId: folder.Id, scope: DeleteFolderMetadataByIdScope.Enterprise, templateKey: templateKey);
186186
```
187187

188188
### Arguments

0 commit comments

Comments
 (0)