Skip to content

Commit

Permalink
Add missing MetadataFields in SearchResult
Browse files Browse the repository at this point in the history
  • Loading branch information
const-cloudinary committed Sep 21, 2020
1 parent 82576b9 commit f12c504
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 20 deletions.
19 changes: 2 additions & 17 deletions Shared.IntegrationTests/AdminApi/UpdateResourcesTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -275,7 +275,7 @@ public void TestUpdateResourceMetadata()
{
File = new FileDescription(m_testImagePath),
});
var metadataFieldId = CreateMetadataField();
var metadataFieldId = CreateMetadataField("metadata_update");

const string metadataValue = "test value";
var metadata = new StringDictionary
Expand All @@ -300,7 +300,7 @@ public void TestUpdateMetadata()
{
File = new FileDescription(m_testImagePath),
});
var metadataExternalId = CreateMetadataField();
var metadataExternalId = CreateMetadataField("metadata_update");

var updateParams = new MetadataUpdateParams
{
Expand All @@ -314,20 +314,5 @@ public void TestUpdateMetadata()
Assert.AreEqual(HttpStatusCode.OK, updateResult.StatusCode);
Assert.IsNotEmpty(updateResult.PublicIds);
}

private string CreateMetadataField()
{
var metadataLabel = GetUniqueMetadataFieldLabel("metadata_update");
var metadataParameters = new StringMetadataFieldCreateParams(metadataLabel);
var metadataResult = m_cloudinary.AddMetadataField(metadataParameters);

Assert.NotNull(metadataResult);

var metadataFieldId = metadataResult.ExternalId;
if (!string.IsNullOrEmpty(metadataFieldId))
m_metadataFieldsToClear.Add(metadataFieldId);

return metadataFieldId;
}
}
}
19 changes: 19 additions & 0 deletions Shared.IntegrationTests/IntegrationTestBase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -282,6 +282,25 @@ protected Task<RawUploadResult> UploadTestRawResourceAsync(

return m_cloudinary.UploadAsync(uploadParams, type);
}
/// <summary>
/// A convenient method for creating a structured metadata field before testing.
/// </summary>
/// <param name="fieldLabelSuffix">The distinguishable suffix.</param>
/// <returns>The ExternalId of the structured metadata field.</returns>
protected string CreateMetadataField(string fieldLabelSuffix)
{
var metadataLabel = GetUniqueMetadataFieldLabel(fieldLabelSuffix);
var metadataParameters = new StringMetadataFieldCreateParams(metadataLabel);
var metadataResult = m_cloudinary.AddMetadataField(metadataParameters);

Assert.NotNull(metadataResult);

var metadataFieldId = metadataResult.ExternalId;
if (!string.IsNullOrEmpty(metadataFieldId))
m_metadataFieldsToClear.Add(metadataFieldId);

return metadataFieldId;
}

private void PopulateMissingRawUploadParams(RawUploadParams uploadParams, bool isAsync, StorageType storageType = StorageType.upload)
{
Expand Down
10 changes: 7 additions & 3 deletions Shared.IntegrationTests/SearchApi/SearchApiTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ class SearchApiTest : IntegrationTestBase

private const string AGG_FIELD_VALUE = "resource_type";
private const string METADATA_FIELD_NAME = "image_metadata";
private const string STRUCTURED_METADATA_FIELD_NAME = "metadata";
private const string TAGS_FIELD_NAME = "tags";
private const string CONTEXT_FIELD_NAME = "context";
private const string IMAGE_ANALYSIS_FIELD_NAME = "image_analysis";
Expand All @@ -36,6 +37,7 @@ public void InitSearchTests()
m_expressionTag = $"tags:{m_searchTag}";
m_publicIdsSorted = new string[RESOURCES_COUNT];

CreateMetadataField("metadata_search");

for (var i = 0; i < RESOURCES_COUNT; i++)
{
Expand All @@ -54,7 +56,7 @@ public void InitSearchTests()
m_publicIdsSorted[i] = publicId;
m_cloudinary.Upload(uploadParams);
}

Array.Sort(m_publicIdsSorted);
m_expressionPublicId = $"public_id: {m_publicIdsSorted[0]}";
Thread.Sleep(INDEXING_WAIT_TIME);
Expand All @@ -68,7 +70,7 @@ public void TestSearchApiFindResourcesByTag()
Assert.NotNull(result.Resources);
Assert.AreEqual(RESOURCES_COUNT, result.Resources.Count);
}

[Test, RetryWithDelay]
public void TestSearchResourceByPublicId()
{
Expand Down Expand Up @@ -156,7 +158,8 @@ public void TestResourceResponseFieldsAreParsed()
{
var result = m_cloudinary.Search().Expression($"public_id: {m_singleResourcePublicId}")
.WithField(METADATA_FIELD_NAME).WithField(IMAGE_ANALYSIS_FIELD_NAME)
.WithField(CONTEXT_FIELD_NAME).WithField(TAGS_FIELD_NAME).Execute();
.WithField(CONTEXT_FIELD_NAME).WithField(TAGS_FIELD_NAME).WithField(STRUCTURED_METADATA_FIELD_NAME)
.Execute();
var foundResource = result.Resources.First();

Assert.AreEqual(m_singleResourcePublicId, foundResource.PublicId);
Expand All @@ -183,6 +186,7 @@ public void TestResourceResponseFieldsAreParsed()
Assert.IsNotEmpty(foundResource.Etag);
Assert.Contains(m_searchTag, foundResource.Tags);
Assert.IsNotEmpty(foundResource.ImageMetadata);
Assert.IsNotEmpty(foundResource.MetadataFields);
Assert.AreEqual(1, foundResource.Context.Count);
Assert.AreEqual(0, foundResource.ImageAnalysis.FaceCount);
Assert.IsNotNull(foundResource.ImageAnalysis);
Expand Down
7 changes: 7 additions & 0 deletions Shared/Actions/SearchResult.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
using System;
using System.Collections.Generic;
using System.Runtime.Serialization;
using Newtonsoft.Json.Linq;

/// <summary>
/// Search response with information about the assets matching the search criteria.
Expand Down Expand Up @@ -229,6 +230,12 @@ public long Length
[DataMember(Name = "image_metadata")]
public Dictionary<string, object> ImageMetadata { get; set; }

/// <summary>
/// Gets or sets a key-value pairs of custom metadata fields associated with the resource.
/// </summary>
[DataMember(Name = "metadata")]
public JToken MetadataFields { get; set; }

/// <summary>
/// Gets or sets the key-value pairs of general textual context metadata attached to the media asset.
/// </summary>
Expand Down

0 comments on commit f12c504

Please sign in to comment.