public void DestroyVisit_GivenAVisit_VisitIsMadeTransient() { bool isTransient = false; var visitRepository = new Mock<IVisitRepository> (); visitRepository .Setup ( v => v.MakeTransient ( It.IsAny<Visit> () ) ) .Callback ( () => isTransient = true ); var visitStatus = new Mock<VisitStatus> (); visitStatus.SetupProperty ( v => v.WellKnownName, WellKnownNames.VisitModule.VisitStatus.Scheduled ); var visitStatusRepository = new Mock<IVisitStatusRepository> (); visitStatusRepository .Setup ( v => v.GetByWellKnownName ( WellKnownNames.VisitModule.VisitStatus.Scheduled ) ) .Returns ( visitStatus.Object ); var visitFactory = new VisitFactory ( visitRepository.Object, visitStatusRepository.Object ); var patient = new Mock<Patient> (); var clinicalCase = new Mock<ClinicalCase> (); clinicalCase.Setup ( c => c.Patient ).Returns ( patient.Object ); var visit = new Mock<Visit> (); visit.Setup ( v => v.ClinicalCase ).Returns ( clinicalCase.Object ); visitFactory.DestroyVisit ( visit.Object ); Assert.IsTrue ( isTransient ); }