public void TestIfItSetsParentFieldOnCommandWhenItMatchesTheParentType()
        {
            // Arrange
              var parentMock = new Mock<Parent>();
              var target = new ItsAssertable<Parent, Child>(p => p.Child);

              // Act
              target.Command(parentMock.Object);

              // Assert
              Assert.AreEqual(parentMock.Object, target.GetFieldValue("mParent"));
        }
        public void TestIfIgnoresTheCommandWhenItDoesntMatchTheParentType()
        {
            // Arrange
              var wrongMock = new Mock<Child>();
              var target = new ItsAssertable<Parent, Child>(p => p.Child);

              // Act
              target.Command(wrongMock.Object);

              // Assert
              Assert.IsNull(target.GetFieldValue("mParent"));
        }
        public void TestIfOnTargetGetItUsesTheFuncOnTheParentField()
        {
            // Arrange
              var parentMock = new Mock<Parent>();
              var target = new ItsAssertable<Parent, Child>(p => p.Child);
              target.SetFieldValue("mParent", parentMock.Object);

              // Act
              var result = target.Target;

              // Assert
              parentMock.VerifyGet(m => m.Child, Times.Once());
        }