diff --git a/src/apps/Elsa.Server.Web/Program.cs b/src/apps/Elsa.Server.Web/Program.cs
index b2d1941ce..edc03cffd 100644
--- a/src/apps/Elsa.Server.Web/Program.cs
+++ b/src/apps/Elsa.Server.Web/Program.cs
@@ -15,6 +15,7 @@ using Elsa.EntityFrameworkCore.Modules.Identity;
using Elsa.EntityFrameworkCore.Modules.Management;
using Elsa.EntityFrameworkCore.Modules.Runtime;
using Elsa.EntityFrameworkCore.Modules.Tenants;
+using Elsa.Expressions.Helpers;
using Elsa.Extensions;
using Elsa.Features.Services;
using Elsa.Identity.Multitenancy;
@@ -52,6 +53,7 @@ using Elsa.Workflows.LogPersistence;
using Elsa.Workflows.Management;
using Elsa.Workflows.Management.Compression;
using Elsa.Workflows.Management.Stores;
+using Elsa.Workflows.Memory;
using Elsa.Workflows.Options;
using Elsa.Workflows.Runtime.Distributed.Extensions;
using Elsa.Workflows.Runtime.Options;
@@ -105,6 +107,8 @@ const bool disableVariableWrappers = false;
const bool disableVariableCopying = false;
const bool useManualOtelInstrumentation = true;
+ObjectConverter.StrictMode = true; // Default.
+
var builder = WebApplication.CreateBuilder(args);
var services = builder.Services;
var configuration = builder.Configuration;
diff --git a/src/common/Elsa.Mediator/Extensions/HandlerExtensions.cs b/src/common/Elsa.Mediator/Extensions/HandlerExtensions.cs
index 2a157037f..cc5b55fd7 100644
--- a/src/common/Elsa.Mediator/Extensions/HandlerExtensions.cs
+++ b/src/common/Elsa.Mediator/Extensions/HandlerExtensions.cs
@@ -44,7 +44,7 @@ public static class HandlerExtensions
/// The cancellation token.
public static Task InvokeAsync(this INotificationHandler handler, MethodBase handleMethod, INotification notification, CancellationToken cancellationToken)
{
- return (Task)handleMethod.Invoke(handler, new object?[] { notification, cancellationToken })!;
+ return (Task)handleMethod.Invoke(handler, [notification, cancellationToken])!;
}
///
@@ -56,7 +56,7 @@ public static class HandlerExtensions
/// The cancellation token.
public static Task InvokeAsync(this ICommandHandler handler, MethodBase handleMethod, ICommand command, CancellationToken cancellationToken)
{
- var task = (Task)handleMethod.Invoke(handler, new object?[] { command, cancellationToken })!;
+ var task = (Task)handleMethod.Invoke(handler, [command, cancellationToken])!;
return task;
}
}
\ No newline at end of file
diff --git a/src/modules/Elsa.Common/Extensions/TypeExtensions.cs b/src/modules/Elsa.Common/Extensions/TypeExtensions.cs
index 5883bcd12..863a2057b 100644
--- a/src/modules/Elsa.Common/Extensions/TypeExtensions.cs
+++ b/src/modules/Elsa.Common/Extensions/TypeExtensions.cs
@@ -44,4 +44,14 @@ public static class TypeExtensions
/// Returns the element type of the specified collection type.
///
public static Type GetCollectionElementType(this Type type) => type.GenericTypeArguments[0];
+
+ ///
+ /// Determines whether the specified type is a numeric type.
+ ///
+ /// The type to check.
+ /// True if the specified type is numeric, otherwise false.
+ public static bool IsNumericType(this Type type)
+ {
+ return type.IsPrimitive || type == typeof(decimal) || type == typeof(float) || type == typeof(double) || type == typeof(int) || type == typeof(long) || type == typeof(short) || type == typeof(byte) || type == typeof(uint) || type == typeof(ulong) || type == typeof(ushort) || type == typeof(sbyte);
+ }
}
\ No newline at end of file
diff --git a/src/modules/Elsa.Expressions/Helpers/ObjectConverter.cs b/src/modules/Elsa.Expressions/Helpers/ObjectConverter.cs
index 767d57a60..0714ca238 100644
--- a/src/modules/Elsa.Expressions/Helpers/ObjectConverter.cs
+++ b/src/modules/Elsa.Expressions/Helpers/ObjectConverter.cs
@@ -1,6 +1,7 @@
using System.Collections;
using System.ComponentModel;
using System.Diagnostics.CodeAnalysis;
+using System.Diagnostics.SymbolStore;
using System.Dynamic;
using System.Globalization;
using System.Text.Encodings.Web;
@@ -26,6 +27,8 @@ public record ObjectConverterOptions(JsonSerializerOptions? SerializerOptions =
///
public static class ObjectConverter
{
+ public static bool StrictMode = true; // Set to false to revert to original flexible behavior.
+
///
/// Attempts to convert the source value into the destination type.
///
@@ -106,8 +109,19 @@ public static class ObjectConverter
{
if (jsonNode is not JsonArray jsonArray)
{
+ var valueKind = jsonNode.GetValueKind();
+ if (valueKind == JsonValueKind.Null)
+ return null;
+
+ if (valueKind == JsonValueKind.Undefined)
+ return null;
+
return underlyingTargetType switch
{
+ { } t when t == typeof(bool) && valueKind == JsonValueKind.False => false,
+ { } t when t == typeof(bool) && valueKind == JsonValueKind.True => true,
+ { } t when t.IsNumericType() && valueKind == JsonValueKind.Number => ConvertTo(jsonNode.ToString(), t),
+ { } t when t == typeof(string) && valueKind == JsonValueKind.String => jsonNode.ToString(),
{ } t when t == typeof(string) => jsonNode.ToString(),
{ } t when t == typeof(ExpandoObject) && jsonNode.GetValueKind() == JsonValueKind.Object => JsonSerializer.Deserialize(jsonNode.ToJsonString()),
{ } t when t != typeof(object) || converterOptions?.DeserializeJsonObjectToObject == true => jsonNode.Deserialize(targetType, serializerOptions),
@@ -187,14 +201,22 @@ public static class ObjectConverter
var targetTypeConverter = TypeDescriptor.GetConverter(underlyingTargetType);
if (targetTypeConverter.CanConvertFrom(underlyingSourceType))
- return targetTypeConverter.IsValid(value)
- ? targetTypeConverter.ConvertFrom(null, CultureInfo.InvariantCulture, value)
- : targetType.GetDefaultValue();
+ {
+ var isValid = targetTypeConverter.IsValid(value);
+
+ if (isValid)
+ return targetTypeConverter.ConvertFrom(null, CultureInfo.InvariantCulture, value);
+ }
var sourceTypeConverter = TypeDescriptor.GetConverter(underlyingSourceType);
if (sourceTypeConverter.CanConvertTo(underlyingTargetType))
- return sourceTypeConverter.ConvertTo(value, underlyingTargetType);
+ {
+ var isValid = targetTypeConverter.IsValid(value);
+
+ if (isValid)
+ return sourceTypeConverter.ConvertTo(value, underlyingTargetType);
+ }
if (underlyingTargetType.IsEnum)
{
@@ -248,8 +270,8 @@ public static class ObjectConverter
return collection;
}
}
-
- if(underlyingTargetType.IsArray)
+
+ if (underlyingTargetType.IsArray)
{
var executedEnumerable = enumerable.Cast().ToList();
var underlyingTargetElementType = underlyingTargetType.GetElementType()!;
@@ -261,6 +283,7 @@ public static class ObjectConverter
array.SetValue(convertedItem, index);
index++;
}
+
return array;
}
}
@@ -269,8 +292,20 @@ public static class ObjectConverter
{
return Convert.ChangeType(value, underlyingTargetType, CultureInfo.InvariantCulture);
}
+ catch (FormatException e)
+ {
+ return ReturnOrThrow(e);
+ }
catch (InvalidCastException e)
{
+ return ReturnOrThrow(e);
+ }
+
+ object ReturnOrThrow(Exception e)
+ {
+ if (!StrictMode)
+ return value;
+
throw new TypeConversionException($"Failed to convert an object of type {sourceType} to {underlyingTargetType}", value, underlyingTargetType, e);
}
}
diff --git a/src/modules/Elsa.Expressions/Models/MemoryBlock.cs b/src/modules/Elsa.Expressions/Models/MemoryBlock.cs
index 75cf2c1cd..58df59695 100644
--- a/src/modules/Elsa.Expressions/Models/MemoryBlock.cs
+++ b/src/modules/Elsa.Expressions/Models/MemoryBlock.cs
@@ -15,7 +15,7 @@ public class MemoryBlock
///
/// Constructor.
///
- public MemoryBlock(object? value, object? metadata = default)
+ public MemoryBlock(object? value, object? metadata = null)
{
Value = value;
Metadata = metadata;
diff --git a/src/modules/Elsa.Expressions/Models/MemoryBlockReference.cs b/src/modules/Elsa.Expressions/Models/MemoryBlockReference.cs
index 1a6a908fd..9756e5959 100644
--- a/src/modules/Elsa.Expressions/Models/MemoryBlockReference.cs
+++ b/src/modules/Elsa.Expressions/Models/MemoryBlockReference.cs
@@ -22,7 +22,7 @@ public class MemoryBlockReference
///
/// The ID of the memory block.
///
- public string Id { get; set; } = default!;
+ public string Id { get; set; } = null!;
///
/// Declares the memory block.
@@ -62,7 +62,7 @@ public class MemoryBlockReference
///
/// Sets the value of the memory block.
///
- public void Set(MemoryRegister memoryRegister, object? value, Action? configure = default)
+ public void Set(MemoryRegister memoryRegister, object? value, Action? configure = null)
{
var block = GetBlock(memoryRegister);
block.Value = value;
@@ -72,7 +72,7 @@ public class MemoryBlockReference
///
/// Sets the value of the memory block.
///
- public void Set(ExpressionExecutionContext context, object? value, Action? configure = default) => context.Set(this, value, configure);
+ public void Set(ExpressionExecutionContext context, object? value, Action? configure = null) => context.Set(this, value, configure);
///
/// Returns the pointed to by the specified memory block reference.
diff --git a/src/modules/Elsa.Http/Activities/HttpEndpoint.cs b/src/modules/Elsa.Http/Activities/HttpEndpoint.cs
index 428d73adc..edfcfa5c3 100644
--- a/src/modules/Elsa.Http/Activities/HttpEndpoint.cs
+++ b/src/modules/Elsa.Http/Activities/HttpEndpoint.cs
@@ -225,7 +225,6 @@ public class HttpEndpoint : Trigger
// Handle Form Fields
if (request.HasFormContentType)
{
-
var formFields = request.Form.ToObjectDictionary();
ParsedContent.Set(context, formFields);
diff --git a/src/modules/Elsa.Workflows.Core/Activities/SetVariable.cs b/src/modules/Elsa.Workflows.Core/Activities/SetVariable.cs
index 914933d23..a12b35086 100644
--- a/src/modules/Elsa.Workflows.Core/Activities/SetVariable.cs
+++ b/src/modules/Elsa.Workflows.Core/Activities/SetVariable.cs
@@ -18,37 +18,37 @@ namespace Elsa.Workflows.Activities;
public class SetVariable : CodeActivity
{
///
- public SetVariable([CallerFilePath] string? source = default, [CallerLineNumber] int? line = default) : base(source, line)
+ public SetVariable([CallerFilePath] string? source = null, [CallerLineNumber] int? line = null) : base(source, line)
{
}
///
- public SetVariable(Variable variable, Input value, [CallerFilePath] string? source = default, [CallerLineNumber] int? line = default) : this(source, line)
+ public SetVariable(Variable variable, Input value, [CallerFilePath] string? source = null, [CallerLineNumber] int? line = null) : this(source, line)
{
Variable = variable;
Value = value;
}
///
- public SetVariable(Variable variable, Variable value, [CallerFilePath] string? source = default, [CallerLineNumber] int? line = default)
+ public SetVariable(Variable variable, Variable value, [CallerFilePath] string? source = null, [CallerLineNumber] int? line = null)
: this(variable, new Input(value), source, line)
{
}
///
- public SetVariable(Variable variable, Func value, [CallerFilePath] string? source = default, [CallerLineNumber] int? line = default)
+ public SetVariable(Variable variable, Func value, [CallerFilePath] string? source = null, [CallerLineNumber] int? line = null)
: this(variable, new Input(value), source, line)
{
}
///
- public SetVariable(Variable variable, Func value, [CallerFilePath] string? source = default, [CallerLineNumber] int? line = default)
+ public SetVariable(Variable variable, Func value, [CallerFilePath] string? source = null, [CallerLineNumber] int? line = null)
: this(variable, new Input(value), source, line)
{
}
///
- public SetVariable(Variable variable, T value, [CallerFilePath] string? source = default, [CallerLineNumber] int? line = default)
+ public SetVariable(Variable variable, T value, [CallerFilePath] string? source = null, [CallerLineNumber] int? line = null)
: this(variable, new Input(value), source, line)
{
}
@@ -57,7 +57,7 @@ public class SetVariable : CodeActivity
/// The variable to assign the value to.
///
[Input(Description = "The variable to assign the value to.")]
- public Variable Variable { get; set; } = default!;
+ public Variable Variable { get; set; } = null!;
///
/// The value to assign.
@@ -81,7 +81,7 @@ public class SetVariable : CodeActivity
public class SetVariable : CodeActivity
{
///
- public SetVariable([CallerFilePath] string? source = default, [CallerLineNumber] int? line = default) : base(source, line)
+ public SetVariable([CallerFilePath] string? source = null, [CallerLineNumber] int? line = null) : base(source, line)
{
}
@@ -89,7 +89,7 @@ public class SetVariable : CodeActivity
/// The variable to assign the value to.
///
[Input(Description = "The variable to assign the value to.")]
- public Variable Variable { get; set; } = default!;
+ public Variable Variable { get; set; } = null!;
///
/// The value to assign.
diff --git a/src/modules/Elsa.Workflows.Core/Extensions/DictionaryExtensions.cs b/src/modules/Elsa.Workflows.Core/Extensions/DictionaryExtensions.cs
index 33cb94f5f..9aae63257 100644
--- a/src/modules/Elsa.Workflows.Core/Extensions/DictionaryExtensions.cs
+++ b/src/modules/Elsa.Workflows.Core/Extensions/DictionaryExtensions.cs
@@ -1,4 +1,5 @@
using Elsa.Expressions.Helpers;
+using Elsa.Expressions.Models;
// ReSharper disable once CheckNamespace
namespace Elsa.Extensions;
@@ -29,8 +30,9 @@ public static class DictionaryExtensions
return false;
}
- value = ConvertValue(item);
- return true;
+ var result = TryConvertValue(item);
+ value = result.Success ? (T)result.Value! : default!;
+ return result.Success;
}
public static bool TryGetValue(this IDictionary dictionary, IEnumerable keys, out T value)
@@ -39,8 +41,9 @@ public static class DictionaryExtensions
{
if (dictionary.TryGetValue(key, out var item))
{
- value = ConvertValue(item);
- return true;
+ var result = TryConvertValue(item);
+ value = result.Success ? (T)result.Value! : default!;
+ return result.Success;
}
}
@@ -98,4 +101,9 @@ public static class DictionaryExtensions
}
private static T? ConvertValue(object? value) => value.ConvertTo();
+
+ private static Result TryConvertValue(object? value)
+ {
+ return value.TryConvertTo();
+ }
}
\ No newline at end of file
diff --git a/src/modules/Elsa.Workflows.Core/Extensions/ExpressionExecutionContextExtensions.cs b/src/modules/Elsa.Workflows.Core/Extensions/ExpressionExecutionContextExtensions.cs
index 70f5381d2..aba7ae1ac 100644
--- a/src/modules/Elsa.Workflows.Core/Extensions/ExpressionExecutionContextExtensions.cs
+++ b/src/modules/Elsa.Workflows.Core/Extensions/ExpressionExecutionContextExtensions.cs
@@ -8,7 +8,9 @@ using Elsa.Workflows;
using Elsa.Workflows.Activities;
using Elsa.Workflows.Memory;
using Elsa.Workflows.Models;
+using Elsa.Workflows.Options;
using Humanizer;
+using Microsoft.Extensions.Options;
// ReSharper disable once CheckNamespace
namespace Elsa.Extensions;
@@ -137,8 +139,7 @@ public static class ExpressionExecutionContextExtensions
///
/// Creates a named variable in the context.
///
- public static Variable CreateVariable(this ExpressionExecutionContext context, string name, T? value, Type? storageDriverType = null,
- Action? configure = null)
+ public static Variable CreateVariable(this ExpressionExecutionContext context, string name, T? value, Type? storageDriverType = null, Action? configure = null)
{
var existingVariable = context.GetVariable(name, localScopeOnly: true);
@@ -149,12 +150,14 @@ public static class ExpressionExecutionContextExtensions
{
StorageDriverType = storageDriverType ?? typeof(WorkflowInstanceStorageDriver)
};
+
+ var parsedValue = variable.ParseValue(value);
// Find the first parent context that has a variable container.
// If not found, use the current context.
var variableContainerContext = context.GetVariableContainerContext();
- variableContainerContext.Set(variable, value, configure);
+ variableContainerContext.Set(variable, parsedValue, configure);
return variable;
}
@@ -184,7 +187,8 @@ public static class ExpressionExecutionContextExtensions
var contextWithVariable = context.FindContextContainingBlock(variable.Id) ?? context;
// Set the value on the variable.
- variable.Set(contextWithVariable, value, configure);
+ var parsedValue = variable.ParseValue(value);
+ variable.Set(contextWithVariable, parsedValue, configure);
// Return the variable.
return variable;
@@ -199,7 +203,8 @@ public static class ExpressionExecutionContextExtensions
{
// Set the value on the output.
var outputMemoryBlockReference = output.MemoryBlockReference();
- context.Set(outputMemoryBlockReference, value, configure);
+ var parsedValue = output.ParseValue(value);
+ context.Set(outputMemoryBlockReference, parsedValue, configure);
// If the referenced output is a workflow output definition, set the value on the workflow execution context.
var workflowExecutionContext = context.GetWorkflowExecutionContext();
diff --git a/src/modules/Elsa.Workflows.Core/Extensions/OutputExtensions.cs b/src/modules/Elsa.Workflows.Core/Extensions/OutputExtensions.cs
index 70573c4d2..5d1c8ae9d 100644
--- a/src/modules/Elsa.Workflows.Core/Extensions/OutputExtensions.cs
+++ b/src/modules/Elsa.Workflows.Core/Extensions/OutputExtensions.cs
@@ -1,4 +1,5 @@
using System.Runtime.CompilerServices;
+using Elsa.Expressions.Helpers;
using Elsa.Expressions.Models;
using Elsa.Workflows;
using Elsa.Workflows.Memory;
@@ -20,7 +21,7 @@ public static class OutputExtensions
///
/// Sets the output to the specified value.
///
- public static void Set(this Output? output, ActivityExecutionContext context, T? value, [CallerArgumentExpression("output")] string? outputName = default) => context.Set(output, value, outputName);
+ public static void Set(this Output? output, ActivityExecutionContext context, T? value, [CallerArgumentExpression("output")] string? outputName = null) => context.Set(output, value, outputName);
///
/// Sets the output to the specified value.
@@ -45,10 +46,10 @@ public static class OutputExtensions
var memoryBlockReference = output?.MemoryBlockReference();
if (memoryBlockReference is null)
- return default;
+ return null;
if(!context.ExpressionExecutionContext.TryGetBlock(memoryBlockReference, out var memoryBlock))
- return default;
+ return null;
var parsedContentVariableType = (memoryBlock.Metadata as VariableBlockMetadata)?.Variable.GetType();
return parsedContentVariableType?.GenericTypeArguments.FirstOrDefault();
@@ -62,4 +63,10 @@ public static class OutputExtensions
var memoryBlockReference = output?.MemoryBlockReference();
return memoryBlockReference is not null && context.ExpressionExecutionContext.TryGetBlock(memoryBlockReference, out _);
}
+
+ public static object? ParseValue(this Output output, object? value)
+ {
+ var genericType = output.GetType();
+ return VariableExtensions.ParseValue(genericType, value);
+ }
}
\ No newline at end of file
diff --git a/src/modules/Elsa.Workflows.Core/Extensions/VariableExtensions.cs b/src/modules/Elsa.Workflows.Core/Extensions/VariableExtensions.cs
index 125040e79..81af7820d 100644
--- a/src/modules/Elsa.Workflows.Core/Extensions/VariableExtensions.cs
+++ b/src/modules/Elsa.Workflows.Core/Extensions/VariableExtensions.cs
@@ -66,13 +66,7 @@ public static class VariableExtensions
public static void Set(this Variable variable, ActivityExecutionContext context, object? value)
{
- // Validate type compatibility.
- if (!variable.TryParseValue(value, out var parsedValue))
- {
- var variableType = variable.GetVariableType();
- throw new InvalidCastException($"The value '{value}' is not compatible with the variable '{variable.Name}' of type '{variableType.FullName}'.");
- }
-
+ var parsedValue = variable.ParseValue(value);
// Set the value.
((MemoryBlockReference)variable).Set(context, parsedValue);
}
@@ -83,7 +77,13 @@ public static class VariableExtensions
[RequiresUnreferencedCode("Calls System.Text.Json.JsonSerializer.Serialize(TValue, JsonSerializerOptions)")]
public static object? ParseValue(this Variable variable, object? value)
{
- var genericType = variable.GetType().GenericTypeArguments.FirstOrDefault();
+ var genericType = variable.GetType();
+ return ParseValue(genericType, value);
+ }
+
+ public static object? ParseValue(Type type, object? value)
+ {
+ var genericType = type.GenericTypeArguments.FirstOrDefault();
var converterOptions = new ObjectConverterOptions(SerializerOptions);
return genericType == null ? value : value?.ConvertTo(genericType, converterOptions);
}
diff --git a/src/modules/Elsa.Workflows.Core/Memory/Variable.cs b/src/modules/Elsa.Workflows.Core/Memory/Variable.cs
index 47a33dd29..c75655fc3 100644
--- a/src/modules/Elsa.Workflows.Core/Memory/Variable.cs
+++ b/src/modules/Elsa.Workflows.Core/Memory/Variable.cs
@@ -1,4 +1,3 @@
-using System.Text.Json.Serialization;
using Elsa.Expressions.Helpers;
using Elsa.Expressions.Models;
using Humanizer;
diff --git a/src/modules/Elsa.Workflows.Core/Services/VariablePersistenceManager.cs b/src/modules/Elsa.Workflows.Core/Services/VariablePersistenceManager.cs
index 1e19a9d88..a383253e2 100644
--- a/src/modules/Elsa.Workflows.Core/Services/VariablePersistenceManager.cs
+++ b/src/modules/Elsa.Workflows.Core/Services/VariablePersistenceManager.cs
@@ -1,3 +1,4 @@
+using Elsa.Expressions.Helpers;
using Elsa.Expressions.Models;
using Elsa.Extensions;
using Elsa.Workflows.Memory;
@@ -51,10 +52,13 @@ public class VariablePersistenceManager(IStorageDriverManager storageDriverManag
if (!variable.TryParseValue(value, out var parsedValue))
{
logger.LogWarning("Failed to parse value for variable {VariableId} of type {VariableType} with value {Value}", variable.Id, variable.GetVariableType().FullName, value);
+
+ if (!ObjectConverter.StrictMode)
+ variable.Set(register, value);
continue;
}
- variable.Set(register, parsedValue);
+ variable.Set(register, parsedValue);
}
catch (Exception e)
{
diff --git a/src/modules/Elsa.Workflows.Core/VariableStorageDrivers/WorkflowInstanceStorageDriver.cs b/src/modules/Elsa.Workflows.Core/VariableStorageDrivers/WorkflowInstanceStorageDriver.cs
index cf942dcce..566473c3a 100644
--- a/src/modules/Elsa.Workflows.Core/VariableStorageDrivers/WorkflowInstanceStorageDriver.cs
+++ b/src/modules/Elsa.Workflows.Core/VariableStorageDrivers/WorkflowInstanceStorageDriver.cs
@@ -47,7 +47,8 @@ public class WorkflowInstanceStorageDriver(IPayloadSerializer payloadSerializer)
DeserializeJsonObjectToObject = true,
SerializerOptions = payloadSerializer.GetOptions()
};
- var parsedValue = node.ConvertTo(variableType, options);
+ var result = node.TryConvertTo(variableType, options);
+ var parsedValue = result.Success ? result.Value : node;
return new (parsedValue);
}
diff --git a/test/component/Elsa.Workflows.ComponentTests/Scenarios/LogPersistenceModes/input-output-logging-1.json b/test/component/Elsa.Workflows.ComponentTests/Scenarios/LogPersistenceModes/input-output-logging-1.json
index 4fe00dd76..f228d1ed5 100644
--- a/test/component/Elsa.Workflows.ComponentTests/Scenarios/LogPersistenceModes/input-output-logging-1.json
+++ b/test/component/Elsa.Workflows.ComponentTests/Scenarios/LogPersistenceModes/input-output-logging-1.json
@@ -79,7 +79,7 @@
"logPersistenceMode": {
"default": "Exclude",
"inputs": {
- "text": "Default"
+ "text": "Inherit"
},
"outputs": {}
},
diff --git a/test/component/Elsa.Workflows.ComponentTests/Scenarios/LogPersistenceModes/input-output-logging-2.json b/test/component/Elsa.Workflows.ComponentTests/Scenarios/LogPersistenceModes/input-output-logging-2.json
index a0e6fd9d3..cd2c977b3 100644
--- a/test/component/Elsa.Workflows.ComponentTests/Scenarios/LogPersistenceModes/input-output-logging-2.json
+++ b/test/component/Elsa.Workflows.ComponentTests/Scenarios/LogPersistenceModes/input-output-logging-2.json
@@ -52,7 +52,7 @@
"logPersistenceMode": {
"default": "Include",
"inputs": {
- "text": "Default"
+ "text": "Inherit"
},
"outputs": {}
},
@@ -117,7 +117,7 @@
"version": 1,
"customProperties": {
"logPersistenceMode": {
- "default": "Default",
+ "default": "Inherit",
"inputs": {
"text": "Include"
},
@@ -154,7 +154,7 @@
"version": 1,
"customProperties": {
"logPersistenceMode": {
- "default": "Default",
+ "default": "Inherit",
"inputs": {
"text": "Exclude"
},
diff --git a/test/component/Elsa.Workflows.ComponentTests/Scenarios/LogPersistenceModes/input-output-logging-3-child.json b/test/component/Elsa.Workflows.ComponentTests/Scenarios/LogPersistenceModes/input-output-logging-3-child.json
index dbdfb410b..47bc32840 100644
--- a/test/component/Elsa.Workflows.ComponentTests/Scenarios/LogPersistenceModes/input-output-logging-3-child.json
+++ b/test/component/Elsa.Workflows.ComponentTests/Scenarios/LogPersistenceModes/input-output-logging-3-child.json
@@ -75,10 +75,10 @@
"canStartWorkflow": false,
"runAsynchronously": false,
"logPersistenceMode": {
- "default": "Default",
+ "default": "Inherit",
"inputs": {
- "outputName": "Default",
- "outputValue": "Default"
+ "outputName": "Inherit",
+ "outputValue": "Inherit"
},
"outputs": {}
}
@@ -120,7 +120,7 @@
"canStartWorkflow": false,
"runAsynchronously": false,
"logPersistenceMode": {
- "default": "Default",
+ "default": "Inherit",
"inputs": {
"outputName": "Include",
"outputValue": "Include"
diff --git a/test/unit/Elsa.Workflows.Core.UnitTests/ObjectConversion/Tests.cs b/test/unit/Elsa.Workflows.Core.UnitTests/ObjectConversion/Tests.cs
index 6e0f9034a..c1e228222 100644
--- a/test/unit/Elsa.Workflows.Core.UnitTests/ObjectConversion/Tests.cs
+++ b/test/unit/Elsa.Workflows.Core.UnitTests/ObjectConversion/Tests.cs
@@ -46,13 +46,8 @@ public class Tests
var result = value.TryConvertTo();
// Assert
-
- // I would have expected this conversion to not be successful. It seems there are many cases like this
- //Assert.False(result.Success);
- //Assert.NotNull(result.Exception);
-
- Assert.True(result.Success);
- Assert.Equal(0, result.Value);
+ Assert.False(result.Success);
+ Assert.NotNull(result.Exception);
}
[Fact]