Skip to content

Commit

Permalink
fix(core): Fixed issue with DisplayValue helper functions (#3575)
Browse files Browse the repository at this point in the history
fix(core): Fixed issue with DispalyValue helper functions
  • Loading branch information
JR-Morgan authored Jul 16, 2024
1 parent 4239236 commit aafcc02
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 0 deletions.
1 change: 1 addition & 0 deletions Core/Core/Models/Extensions/BaseExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -201,6 +201,7 @@ public static bool IsDisplayableObject(this Base speckleObject)
{
T b => new List<T> { b },
IReadOnlyList<T> list => list,
IEnumerable enumerable => enumerable.OfType<T>().ToList(),
_ => null
};
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
using NUnit.Framework;
using Speckle.Core.Models;
using Speckle.Core.Models.Extensions;

namespace Speckle.Core.Tests.Unit.Models.Extensions;

[TestOf(typeof(BaseExtensions))]
public class DisplayValueTests
{
private const string PAYLOAD = "This is my payload";
private static readonly Base s_displayValue = new() { applicationId = PAYLOAD };

[TestCaseSource(nameof(TestCases))]
public void TestTryGetDisplayValue_WithValue(Base testCase)
{
var res = testCase.TryGetDisplayValue();

Assert.That(res, Has.Count.EqualTo(1));
Assert.That(res, Has.One.Items.TypeOf<Base>().With.Property(nameof(Base.applicationId)).EqualTo(PAYLOAD));
}

public static IEnumerable<Base> TestCases()
{
var listOfBase = new List<object> { s_displayValue }; //This is what our deserializer will output
var listOfMesh = new List<Base> { s_displayValue };
yield return new Base { ["@displayValue"] = s_displayValue };
yield return new Base { ["@displayValue"] = s_displayValue };
yield return new Base { ["displayValue"] = listOfBase };
yield return new Base { ["displayValue"] = listOfBase };
yield return new TypedDisplayValue { displayValue = s_displayValue };
yield return new TypedDisplayValueList { displayValue = listOfMesh };
}

private class TypedDisplayValue : Base
{
public Base displayValue { get; set; }
}

private class TypedDisplayValueList : Base
{
public List<Base> displayValue { get; set; }
}
}

0 comments on commit aafcc02

Please sign in to comment.