public async Task Should_use_ctor_of_value_types_instead_of_factory_because_EF_is_source_of_truth()
    {
        var entity = new TestEntity_with_Enum_and_ValueObjects
        {
            Id = new Guid("A53F60CD-B53E-40E3-B16F-05E9A223E238"),
            StringBasedReferenceValueObject  = StringBasedReferenceValueObject.Create("value"),
            StringBasedStructValueObject     = StringBasedStructValueObject.Create("other value"),
            TestSmartEnum_Struct_IntBased    = TestSmartEnum_Struct_IntBased.Value1,
            TestSmartEnum_Struct_StringBased = TestSmartEnum_Struct_StringBased.Value1,
            Boundary = Boundary.Create(10, 20)
        };

        _ctx.Add(entity);
        await _ctx.SaveChangesAsync();

        await using var command = _ctx.Database.GetDbConnection().CreateCommand();
        command.CommandText     = @"
UPDATE TestEntities_with_Enum_and_ValueObjects
SET
    StringBasedStructValueObject = '',
    Boundary_Lower = 30
";
        await command.ExecuteNonQueryAsync();

        _ctx.ChangeTracker.Clear();
        var loadedEntity = await _ctx.TestEntities_with_Enum_and_ValueObjects.SingleAsync();

        loadedEntity.StringBasedStructValueObject.Property.Should().Be(String.Empty);
        loadedEntity.Boundary.Lower.Should().Be(30);
        loadedEntity.Boundary.Upper.Should().Be(20);
    }
Exemple #2
0
    public void Should_return_null_if_value_type_is_reference_type_and_null_and_key_is_reference_type()
    {
        StringBasedReferenceValueObject obj = null;
        string value = obj;

        value.Should().BeNull();
    }
    public async Task Should_bind_string_based_value_type()
    {
        var ctx = await BindAsync <StringBasedReferenceValueObject, string>(StringBasedReferenceValueObject.TryCreate, "Value");

        ctx.ModelState.ErrorCount.Should().Be(0);
        ctx.Result.IsModelSet.Should().BeTrue();
        ctx.Result.Model.Should().Be(StringBasedReferenceValueObject.Create("Value"));
    }
    public async Task Should_write_and_read_enums_and_value_types()
    {
        var entity = new TestEntity_with_Enum_and_ValueObjects
        {
            Id       = new Guid("A53F60CD-B53E-40E3-B16F-05E9A223E238"),
            TestEnum = TestEnum.Item1,
            IntBasedReferenceValueObject     = IntBasedReferenceValueObject.Create(42),
            IntBasedStructValueObject        = IntBasedStructValueObject.Create(43),
            StringBasedReferenceValueObject  = StringBasedReferenceValueObject.Create("value 1"),
            StringBasedStructValueObject     = StringBasedStructValueObject.Create("value 2"),
            TestSmartEnum_Struct_IntBased    = TestSmartEnum_Struct_IntBased.Value1,
            TestSmartEnum_Struct_StringBased = TestSmartEnum_Struct_StringBased.Value1,
            Boundary = Boundary.Create(10, 20)
        };

        _ctx.Add(entity);
        await _ctx.SaveChangesAsync();

        _ctx.ChangeTracker.Clear();
        (await _ctx.TestEntities_with_Enum_and_ValueObjects.SingleAsync())
        .Should().BeEquivalentTo(entity);
    }
Exemple #5
0
    public void Should_return_key_if_value_type_is_reference_type_and_key_is_reference_type()
    {
        string value = StringBasedReferenceValueObject.Create("value");

        value.Should().Be("value");
    }
 public void Should_return_key_if_value_type_is_reference_type_and_key_matches_the_reference_type_key()
 {
     StringBasedReferenceValueObjectTypeConverter.ConvertTo(StringBasedReferenceValueObject.Create("value"), typeof(string)).Should().Be("value");
 }
Exemple #7
0
 public void Should_return_valid_instance_if_value_type_is_reference_type_and_key_matches_the_reference_type_key()
 {
     StringBasedReferenceValueObjectTypeConverter.ConvertFrom("value").Should().BeEquivalentTo(StringBasedReferenceValueObject.Create("value"));
 }