public void Restore(ArchivableEntity ae)
 {
     ae.Restore();
 }
        public void Init()
        {
            AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);

            ArchivableEntity ent1 = new ArchivableEntity {Value = 11};
            ArchivableEntity ent2 = new ArchivableEntity {Value = 13};
            ((IArchivable) ent1).Deleted = DateTime.Now;

            _list = new List<ArchivableEntity>(new[] { ent1, ent2 });
        }
 public void Archive(ArchivableEntity ae)
 {
     ae.Archive();
 }
        public void Deleted_Entities_Are_Just_Modified_Not_Deleted()
        {
            // Arrange
            ArchivableEntity ent1 = new ArchivableEntity { Value = 11 };
            ArchivableEntity ent2 = new ArchivableEntity { Value = 13 };
            ((IArchivable)ent1).Deleted = DateTime.Now;
            List<ArchivableEntity> l2 = new List<ArchivableEntity>(new[] { ent1, ent2 });

            Mock<IRepository<ArchivableEntity>> realRepo = new Mock<IRepository<ArchivableEntity>>();

            realRepo.Setup(rr => rr.Delete(It.IsAny<ArchivableEntity>()))
                .Callback((ArchivableEntity ent) => { l2.Remove(ent); });

            realRepo.Setup(rr => rr.Update(It.IsAny<ArchivableEntity>()))
                .Callback((ArchivableEntity ent) => { ((IArchivable) ent).Deleted = DateTime.Now; });

            Mock<ArchivableRepository<ArchivableEntity>> deco =
                new Mock<ArchivableRepository<ArchivableEntity>>(realRepo.Object) { CallBase = true };

            // Act
            deco.Object.Delete(ent2);

            // Verify
            realRepo.Verify(rr => rr.Delete(ent2), Times.Never());
            realRepo.Verify(rr => rr.Update(ent2), Times.Once());
            Assert.That(ent2, Has.Property("Deleted").Not.EqualTo(null));
            Assert.That(l2.Count, Is.EqualTo(2));
        }