public void GetIdValue_WhenNullAssignedNullableIntOnFirstLevel_ReturnsInt()
        {
            var intPropertyInfo = typeof(Dummy2).GetProperty("NullableId");
            var intProperty = new Property(intPropertyInfo);

            var item = new Dummy2 { NullableId = null };

            var actual = intProperty.GetIdValue<Dummy2, int>(item);

            Assert.IsNull(actual);
        }
        public void GetIdValue_WhenNullableIntOnFirstLevel_ReturnsInt()
        {
            var intPropertyInfo = typeof(Dummy2).GetProperty("NullableId");
            var intProperty = new Property(intPropertyInfo);

            const int expectedInt = 42;
            var item = new Dummy2 { NullableId = expectedInt };

            var actual = intProperty.GetIdValue<Dummy2, int>(item);

            Assert.AreEqual(expectedInt, actual);
        }
        public void GetIdValue_WhenNullableGuidOnFirstLevel_ReturnsGuid()
        {
            var intPropertyInfo = typeof(Dummy2).GetProperty("NullableId");
            var intProperty = new Property(intPropertyInfo);

            var expected = Guid.Parse("4217F3B7-6DEB-4DFA-B195-D111C1297988");
            var item = new Dummy2 { NullableId = expected };

            var actual = intProperty.GetIdValue<Dummy2, Guid>(item);

            Assert.AreEqual(expected, actual);
        }
        public void GetIdValue_WhenIntNotOnFirstLevel_ThrowsSisoDbException()
        {
            var dummy2PropertyInfo = typeof(Dummy1).GetProperty("Item");
            var dummy2Property = new Property(dummy2PropertyInfo);

            var intPropertyInfo = typeof(Dummy2).GetProperty("Id");
            var intProperty = new Property(1, dummy2Property, intPropertyInfo);

            var item = new Dummy1 { Item = new Dummy2 { Id = 42 } };

            var ex = Assert.Throws<SisoDbException>(() => intProperty.GetIdValue<Dummy1, int>(item));

            Assert.AreEqual(ExceptionMessages.Property_GetIdValue_InvalidLevel, ex.Message);
        }
        public void GetIdValue_WhenGuidNotOnFirstLevel_ThrowsSisoDbException()
        {
            var dummy2PropertyInfo = typeof (Dummy1).GetProperty("Item1");
            var dummy2Property = new Property(dummy2PropertyInfo);

            var guidPropertyInfo = typeof(Dummy2).GetProperty("Id");
            var guidProperty = new Property(1, dummy2Property,guidPropertyInfo);

            var item = new Dummy1 { Item1 = new Dummy2 { Id = Guid.NewGuid() } };

            var ex = CustomAssert.Throws<SisoDbException>(() => guidProperty.GetIdValue<Dummy1, Guid>(item));

            Assert.AreEqual(ExceptionMessages.Property_GetIdValue_InvalidLevel, ex.Message);
        }