public void DeleteEntityWithRelationshipsEditModel_shows_Entity_and_Relationship()
        {
            // ARRANGE

            var entity1      = new Entity().ToViewModel();
            var entity2      = new Entity().ToViewModel();
            var relationship = new RelationshipViewModel(new Relationship(), entity1, entity2);

            // ACT

            var result = new DeleteEntityWithRelationshipsEditModel(entity1, relationship.Yield(), delegate { }, delegate { });

            // ASSERT

            Assert.Equal(entity1, result.Entity);
            Assert.Equal(relationship, result.Relationships.Single());
        }
        public void DeleteEntityWithRelationshipsEditModel_reverts_deletion_of_Entity_and_Relationship()
        {
            // ARRANGE

            var entity1      = new Entity().ToViewModel();
            var entity2      = new Entity().ToViewModel();
            var relationship = new RelationshipViewModel(new Relationship(), entity1, entity2);

            (EntityViewModel, IEnumerable <RelationshipViewModel>)? rolledback = null;
            var rollbackCb = new Action <EntityViewModel, IEnumerable <RelationshipViewModel> >((e, r) => rolledback = (e, r));
            var editModel  = new DeleteEntityWithRelationshipsEditModel(entity1, relationship.Yield(), delegate { }, rollbackCb);

            // ACT

            editModel.RollbackCommand.Execute(null);

            // ASSERT

            Assert.Equal(entity1, rolledback.Value.Item1);
            Assert.Equal(relationship.Yield(), rolledback.Value.Item2);
        }
        public void DeleteEntityWithRelationshipsEditModel_commits_deletion_of_Entity_and_Relationship()
        {
            // ARRANGE

            var entity1      = new Entity().ToViewModel();
            var entity2      = new Entity().ToViewModel();
            var relationship = new RelationshipViewModel(new Relationship(), entity1, entity2);

            (EntityViewModel, IEnumerable <RelationshipViewModel>)? committed = null;
            var commitCB  = new Action <EntityViewModel, IEnumerable <RelationshipViewModel> >((e, r) => committed = (e, r));
            var editModel = new DeleteEntityWithRelationshipsEditModel(entity1, relationship.Yield(), commitCB, delegate { });

            // ACT

            editModel.CommitCommand.Execute(null);

            // ASSERT

            Assert.Equal(entity1, committed.Value.Item1);
            Assert.Equal(relationship.Yield(), committed.Value.Item2);
        }