public void CheckCascadeConditionSkipSendingNotReadyForNextLevel(Assignment assignment, Mock <IUnitOfWork> unitOfWork, Mock <IAssignmentCascadeNotifier> assignmentNotifier, Mock <IMailCascadeNotifier> mailNotifier, Mock <ISmsCascadeNotifier> smsNotifier, CascadeService cascadeService) { SetOrderForCascadeLevels(assignment); assignment.Cascade.SetCurrentLevel(1); assignment.Cascade.Levels.First(x => x.OrderNumber == 1).TriggeredAt = null; unitOfWork.Setup(x => x.Assignments.FindMany(It.IsAny <Expression <Func <Assignment, bool> > >())).Returns(new [] { assignment }).Verifiable(); cascadeService.CheckCascadeCondition(); unitOfWork.Verify(); assignmentNotifier.Verify(x => x.Notify(It.IsAny <string>(), It.IsAny <Workplace>()), Times.Never()); mailNotifier.Verify(x => x.Notify(It.IsAny <string>(), It.IsAny <string>()), Times.Never()); smsNotifier.Verify(x => x.Notify(It.IsAny <string>(), It.IsAny <string>()), Times.Never()); }
public void CheckCascadeConditionSendsAssignmentNotificationToHeadOfStructuralUnit(Assignment assignment, Workplace head, StructuralUnit structuralUnit, Mock <IUnitOfWork> unitOfWork, Mock <IAssignmentCascadeNotifier> assignmentNotifier, Mock <IStructuralUnitService> structuralUnitService, CascadeService cascadeService) { SetOrderForCascadeLevels(assignment); SetOverdueResponsible(assignment); structuralUnit.HeadWorkplace = head; assignment.Cascade.SetCurrentLevel(0); assignment.Cascade.Levels.First().NotificationTypes = NotificationTypes.Assignment; assignment.Cascade.Levels.First().HeadLevel = 1; unitOfWork.Setup(x => x.Assignments.FindMany(It.IsAny <Expression <Func <Assignment, bool> > >())).Returns(new[] { assignment }).Verifiable(); structuralUnitService.Setup(x => x.GetForWorkplace(It.IsAny <Workplace>())).Returns(structuralUnit).Verifiable(); structuralUnitService.Setup(x => x.GetHeadOfLevel(structuralUnit, It.IsAny <int>())).Returns(structuralUnit.HeadWorkplace).Verifiable(); assignmentNotifier.Setup(x => x.Notify(It.IsAny <string>(), head)).Verifiable(); cascadeService.CheckCascadeCondition(); unitOfWork.Verify(); assignmentNotifier.Verify(x => x.Notify(It.IsAny <string>(), head), Times.Once()); }
public void CheckCascadeConditionSkipSendingWithNoOverdueAssignments(Mock <IUnitOfWork> unitOfWork, Mock <IAssignmentCascadeNotifier> assignmentNotifier, Mock <IMailCascadeNotifier> mailNotifier, Mock <ISmsCascadeNotifier> smsNotifier, CascadeService cascadeService) { unitOfWork.Setup(x => x.Assignments.FindMany(It.IsAny <Expression <Func <Assignment, bool> > >())).Returns(new List <Assignment>()).Verifiable(); cascadeService.CheckCascadeCondition(); unitOfWork.Verify(); assignmentNotifier.Verify(x => x.Notify(It.IsAny <string>(), It.IsAny <Workplace>()), Times.Never()); mailNotifier.Verify(x => x.Notify(It.IsAny <string>(), It.IsAny <string>()), Times.Never()); smsNotifier.Verify(x => x.Notify(It.IsAny <string>(), It.IsAny <string>()), Times.Never()); }
public void CheckCascadeConditionSendsAssignmentNotification(Assignment assignment, Mock <IUnitOfWork> unitOfWork, Mock <IAssignmentCascadeNotifier> assignmentNotifier, CascadeService cascadeService) { SetOrderForCascadeLevels(assignment); assignment.Cascade.SetCurrentLevel(0); assignment.Cascade.Levels.First().NotificationTypes = NotificationTypes.Assignment; assignment.Cascade.Levels.First().HeadLevel = 0; var cascadeResponsible = assignment.Cascade.Levels.First().Responsible; unitOfWork.Setup(x => x.Assignments.FindMany(It.IsAny <Expression <Func <Assignment, bool> > >())).Returns(new[] { assignment }).Verifiable(); assignmentNotifier.Setup(x => x.Notify(It.IsAny <string>(), cascadeResponsible)).Verifiable(); cascadeService.CheckCascadeCondition(); unitOfWork.Verify(); assignmentNotifier.Verify(x => x.Notify(It.IsAny <string>(), cascadeResponsible), Times.Once()); assignment.Cascade.CurrentLevelNumber.Should().Be(1); }