Example #1
0
        private IEnumerable <ParticipantPersonSevisCommStatus> DoSendToSevis(ParticipantsToBeSentToSevis model, IEnumerable <ParticipantSevisSubmissionInfo> submissions)
        {
            var now = DateTimeOffset.UtcNow;
            var addedParticipantStatuses = new List <ParticipantPersonSevisCommStatus>();

            foreach (var submission in submissions)
            {
                if (submission.IsQueuedToSubmit || submission.IsQueuedToValidate)
                {
                    var newStatus = new ParticipantPersonSevisCommStatus
                    {
                        ParticipantId = submission.ParticipantId,
                        AddedOn       = now,
                        SevisOrgId    = model.SevisOrgId,
                        SevisUsername = model.SevisUsername,
                        PrincipalId   = model.Audit.User.Id
                    };
                    if (submission.IsQueuedToSubmit)
                    {
                        newStatus.SevisCommStatusId = SevisCommStatus.QueuedToSubmit.Id;
                    }
                    else if (submission.IsQueuedToValidate)
                    {
                        newStatus.SevisCommStatusId = SevisCommStatus.QueuedToValidate.Id;
                    }
                    else
                    {
                        throw new NotSupportedException("The submission type is not supported.");
                    }
                    Context.ParticipantPersonSevisCommStatuses.Add(newStatus);
                    addedParticipantStatuses.Add(newStatus);
                }
            }
            return(addedParticipantStatuses);
        }
        public void TestCreateGetParticipantPersonSevisCommStatusesByParticipantIdQuery_Filtered()
        {
            var userAccount = new UserAccount
            {
                PrincipalId  = 100,
                DisplayName  = "display name",
                EmailAddress = "email"
            };
            var participant = new Participant
            {
                ParticipantId = 1,
                ProjectId     = 100
            };
            var participantPerson = new ParticipantPerson
            {
                ParticipantId = participant.ParticipantId,
                Participant   = participant
            };

            participant.ParticipantPerson = participantPerson;
            var sevisCommStatus = new SevisCommStatus
            {
                SevisCommStatusId   = 500,
                SevisCommStatusName = "sevis comm status name"
            };
            var status = new ParticipantPersonSevisCommStatus
            {
                Id                = 1,
                AddedOn           = DateTimeOffset.UtcNow,
                BatchId           = "batchId",
                ParticipantId     = participant.ParticipantId,
                ParticipantPerson = participantPerson,
                PrincipalId       = userAccount.PrincipalId,
                SevisCommStatus   = sevisCommStatus,
                SevisCommStatusId = sevisCommStatus.SevisCommStatusId,
                SevisOrgId        = "sevis org Id",
                SevisUsername     = "******"
            };

            context.UserAccounts.Add(userAccount);
            context.Participants.Add(participant);
            context.ParticipantPersons.Add(participantPerson);
            context.SevisCommStatuses.Add(sevisCommStatus);
            context.ParticipantPersonSevisCommStatuses.Add(status);

            var defaultSorter = new ExpressionSorter <ParticipantPersonSevisCommStatusDTO>(x => x.AddedOn, SortDirection.Descending);
            var filter        = new ExpressionFilter <ParticipantPersonSevisCommStatusDTO>(x => x.BatchId, ComparisonType.Equal, status.BatchId);
            var queryOperator = new QueryableOperator <ParticipantPersonSevisCommStatusDTO>(0, 1, defaultSorter);

            queryOperator.Filters.Add(filter);

            var results = ParticipantPersonsSevisQueries.CreateGetParticipantPersonSevisCommStatusesByParticipantIdQuery(context, participant.ProjectId, participant.ParticipantId, queryOperator);

            Assert.AreEqual(1, results.Count());
            var firstResult = results.First();

            Assert.AreEqual(status.Id, firstResult.Id);
        }
Example #3
0
        public void TestCreateGetSevisGroupedParticipantsQuery_CheckProperties()
        {
            var project = new Project
            {
                ProjectId = 1
            };
            var participant = new Participant
            {
                ParticipantId = 10,
                ProjectId     = project.ProjectId,
                Project       = project
            };
            var participantPerson = new ParticipantPerson
            {
                ParticipantId = participant.ParticipantId,
                Participant   = participant,
                SevisId       = "sevis id"
            };

            participant.ParticipantPerson = participantPerson;

            var status = new ParticipantPersonSevisCommStatus
            {
                Id                = 1,
                AddedOn           = DateTimeOffset.Now,
                ParticipantId     = participant.ParticipantId,
                ParticipantPerson = participantPerson,
                SevisCommStatusId = SevisCommStatus.QueuedToSubmit.Id,
                SevisOrgId        = "org",
                SevisUsername     = "******"
            };

            participantPerson.ParticipantPersonSevisCommStatuses.Add(status);

            context.Projects.Add(project);
            context.ParticipantPersons.Add(participantPerson);
            context.Participants.Add(participant);
            context.ParticipantPersonSevisCommStatuses.Add(status);

            var results = SevisBatchProcessingQueries.CreateGetSevisGroupedParticipantsQuery(context).ToList();

            Assert.AreEqual(1, results.Count);

            var firstResult = results.First();

            Assert.AreEqual(status.SevisOrgId, firstResult.SevisOrgId);
            Assert.AreEqual(status.SevisUsername, firstResult.SevisUsername);
            Assert.AreEqual(1, firstResult.Participants.Count());

            var firstParticipant = firstResult.Participants.First();

            Assert.AreEqual(participant.ParticipantId, firstParticipant.ParticipantId);
            Assert.AreEqual(project.ProjectId, firstParticipant.ProjectId);
            Assert.AreEqual(participantPerson.SevisId, firstParticipant.SevisId);
            Assert.AreEqual(status.SevisCommStatusId, firstParticipant.SevisCommStatusId);
        }
Example #4
0
        /// <summary>
        /// Adds a SevisCommStatus for the ParticipantPerson
        /// </summary>
        /// <param name="sevisCommStatusId"></param>
        /// <param name="participantId"></param>
        /// <param name="userId"></param>
        private void AddSevisCommStatus(int sevisCommStatusId, int participantId, int userId)
        {
            var status = new ParticipantPersonSevisCommStatus();

            status.SevisCommStatusId = sevisCommStatusId;
            status.ParticipantId     = participantId;
            status.PrincipalId       = userId;
            status.AddedOn           = DateTimeOffset.Now;
            Context.ParticipantPersonSevisCommStatuses.Add(status);
        }
Example #5
0
        public void TestCreateGetParticipantPersonsByBatchId_EnsureDistinct()
        {
            var batchId           = "batchId";
            var participantPerson = new ParticipantPerson
            {
                ParticipantId = 1
            };
            var readyToSubmit = new ParticipantPersonSevisCommStatus
            {
                Id = 1,
                SevisCommStatusId = SevisCommStatus.ReadyToSubmit.Id,
                ParticipantPerson = participantPerson,
                ParticipantId     = participantPerson.ParticipantId
            };
            var queuedToSubmit = new ParticipantPersonSevisCommStatus
            {
                Id = 2,
                SevisCommStatusId = SevisCommStatus.QueuedToSubmit.Id,
                ParticipantPerson = participantPerson,
                ParticipantId     = participantPerson.ParticipantId
            };
            var pendingSevisSend = new ParticipantPersonSevisCommStatus
            {
                Id = 3,
                SevisCommStatusId = SevisCommStatus.PendingSevisSend.Id,
                ParticipantPerson = participantPerson,
                ParticipantId     = participantPerson.ParticipantId,
                BatchId           = batchId
            };
            var otherBatchCommStatus = new ParticipantPersonSevisCommStatus
            {
                Id = 3,
                SevisCommStatusId = SevisCommStatus.SentToDhs.Id,
                ParticipantPerson = participantPerson,
                ParticipantId     = participantPerson.ParticipantId,
                BatchId           = batchId
            };

            participantPerson.ParticipantPersonSevisCommStatuses.Add(readyToSubmit);
            participantPerson.ParticipantPersonSevisCommStatuses.Add(queuedToSubmit);
            participantPerson.ParticipantPersonSevisCommStatuses.Add(pendingSevisSend);
            participantPerson.ParticipantPersonSevisCommStatuses.Add(otherBatchCommStatus);

            context.ParticipantPersons.Add(participantPerson);
            context.ParticipantPersonSevisCommStatuses.Add(readyToSubmit);
            context.ParticipantPersonSevisCommStatuses.Add(queuedToSubmit);
            context.ParticipantPersonSevisCommStatuses.Add(pendingSevisSend);
            context.ParticipantPersonSevisCommStatuses.Add(otherBatchCommStatus);
            var results = SevisBatchProcessingQueries.CreateGetParticipantPersonsByBatchId(context, batchId).ToList();

            Assert.AreEqual(1, results.Count);
            Assert.IsTrue(Object.ReferenceEquals(participantPerson, results.First()));
        }
        private ParticipantPersonSevisCommStatus AddParticipantPersonSevisCommStatus(int participantId, int commStatusId)
        {
            var status = new ParticipantPersonSevisCommStatus
            {
                AddedOn           = DateTimeOffset.UtcNow,
                ParticipantId     = participantId,
                SevisCommStatusId = commStatusId
            };

            this.Context.ParticipantPersonSevisCommStatuses.Add(status);
            return(status);
        }
Example #7
0
        public void TestCreateGetSevisGroupedParticipantsQuery_CheckLatestSevisCommStatus()
        {
            var project = new Project
            {
                ProjectId = 1
            };
            var participant = new Participant
            {
                ParticipantId = 10,
                ProjectId     = project.ProjectId,
                Project       = project
            };
            var participantPerson = new ParticipantPerson
            {
                ParticipantId = participant.ParticipantId,
                Participant   = participant,
                SevisId       = "sevis id"
            };

            participant.ParticipantPerson = participantPerson;

            var status1 = new ParticipantPersonSevisCommStatus
            {
                Id                = 1,
                AddedOn           = DateTimeOffset.Now.AddDays(-1.0),
                ParticipantId     = participant.ParticipantId,
                ParticipantPerson = participantPerson,
                SevisCommStatusId = SevisCommStatus.ReadyToSubmit.Id
            };
            var status2 = new ParticipantPersonSevisCommStatus
            {
                Id                = 2,
                AddedOn           = DateTimeOffset.Now.AddDays(1.0),
                ParticipantId     = participant.ParticipantId,
                ParticipantPerson = participantPerson,
                SevisCommStatusId = SevisCommStatus.QueuedToSubmit.Id
            };

            participantPerson.ParticipantPersonSevisCommStatuses.Add(status1);
            participantPerson.ParticipantPersonSevisCommStatuses.Add(status2);

            context.Projects.Add(project);
            context.ParticipantPersons.Add(participantPerson);
            context.Participants.Add(participant);
            context.ParticipantPersonSevisCommStatuses.Add(status1);

            var results = SevisBatchProcessingQueries.CreateGetSevisGroupedParticipantsQuery(context).ToList();

            Assert.AreEqual(1, results.Count);
        }
        public void TestCreateGetParticipantPersonSevisCommStatusesQuery_DoesNotHaveUserAccount()
        {
            var participant = new Participant
            {
                ParticipantId = 1,
                ProjectId     = 100
            };
            var participantPerson = new ParticipantPerson
            {
                ParticipantId = participant.ParticipantId,
                Participant   = participant
            };

            participant.ParticipantPerson = participantPerson;
            var sevisCommStatus = new SevisCommStatus
            {
                SevisCommStatusId   = 500,
                SevisCommStatusName = "sevis comm status name"
            };
            var status = new ParticipantPersonSevisCommStatus
            {
                Id                = 1,
                AddedOn           = DateTimeOffset.UtcNow,
                BatchId           = "batchId",
                ParticipantId     = participant.ParticipantId,
                ParticipantPerson = participantPerson,
                PrincipalId       = null,
                SevisCommStatus   = sevisCommStatus,
                SevisCommStatusId = sevisCommStatus.SevisCommStatusId,
                SevisOrgId        = "sevis org Id",
                SevisUsername     = "******"
            };

            context.Participants.Add(participant);
            context.ParticipantPersons.Add(participantPerson);
            context.SevisCommStatuses.Add(sevisCommStatus);
            context.ParticipantPersonSevisCommStatuses.Add(status);

            var results = ParticipantPersonsSevisQueries.CreateGetParticipantPersonSevisCommStatusesQuery(context);

            Assert.AreEqual(1, results.Count());
            var firstResult = results.First();

            Assert.IsNull(firstResult.EmailAddress);
            Assert.IsNull(firstResult.DisplayName);
            Assert.IsNull(firstResult.PrincipalId);
        }
Example #9
0
        public void TestCreateGetSevisGroupedParticipantsQuery_IsNotQueuedToSubmitOrIsQueuedToValidate()
        {
            var project = new Project
            {
                ProjectId = 1
            };
            var participant = new Participant
            {
                ParticipantId = 10,
                ProjectId     = project.ProjectId,
                Project       = project
            };
            var participantPerson = new ParticipantPerson
            {
                ParticipantId = participant.ParticipantId,
                Participant   = participant,
                SevisId       = "sevis id"
            };

            participant.ParticipantPerson = participantPerson;

            var status = new ParticipantPersonSevisCommStatus
            {
                Id                = 1,
                AddedOn           = DateTimeOffset.Now,
                ParticipantId     = participant.ParticipantId,
                ParticipantPerson = participantPerson,
                SevisCommStatusId = SevisCommStatus.ReadyToSubmit.Id
            };

            participantPerson.ParticipantPersonSevisCommStatuses.Add(status);

            context.Projects.Add(project);
            context.ParticipantPersons.Add(participantPerson);
            context.Participants.Add(participant);
            context.ParticipantPersonSevisCommStatuses.Add(status);

            var results = SevisBatchProcessingQueries.CreateGetSevisGroupedParticipantsQuery(context).ToList();

            Assert.AreEqual(0, results.Count);
        }
        public void TestCreateGetParticipantPersonsSevisDTOQuery_NoStatusesHaveBatchId()
        {
            var person = new Person
            {
                PersonId = 1,
                FullName = "full name"
            };
            var status = new ParticipantStatus
            {
                ParticipantStatusId = 1,
                Status = "status",
            };
            var participantType = new ParticipantType
            {
                IsPerson          = true,
                Name              = "part type",
                ParticipantTypeId = 90
            };
            var participant = new Participant
            {
                ParticipantId       = 1,
                Status              = status,
                ParticipantStatusId = status.ParticipantStatusId,
                ProjectId           = 250,
                ParticipantTypeId   = participantType.ParticipantTypeId,
                ParticipantType     = participantType,
                PersonId            = person.PersonId,
                Person              = person
            };

            var participantPerson = new ParticipantPerson
            {
                ParticipantId          = participant.ParticipantId,
                Participant            = participant,
                EndDate                = DateTimeOffset.UtcNow.AddDays(10.0),
                IsCancelled            = true,
                IsDS2019Printed        = true,
                IsDS2019SentToTraveler = true,
                IsSentToSevisViaRTI    = true,
                IsValidatedViaRTI      = true,
                SevisBatchResult       = "sevis batch result",
                SevisId                = "sevis id",
                SevisValidationResult  = "sevis validation result",
                StartDate              = DateTimeOffset.UtcNow.AddDays(-10.0)
            };

            participant.ParticipantPerson = participantPerson;

            var readyToSubmitStatus = new SevisCommStatus
            {
                SevisCommStatusId   = SevisCommStatus.ReadyToSubmit.Id,
                SevisCommStatusName = SevisCommStatus.ReadyToSubmit.Value
            };
            var pendingSendToSevisStatus = new SevisCommStatus
            {
                SevisCommStatusId   = SevisCommStatus.PendingSevisSend.Id,
                SevisCommStatusName = SevisCommStatus.PendingSevisSend.Value
            };
            var yesterdayStatus = new ParticipantPersonSevisCommStatus
            {
                AddedOn           = DateTimeOffset.UtcNow.AddDays(-1.0),
                Id                = 500,
                ParticipantId     = participant.ParticipantId,
                ParticipantPerson = participantPerson,
                SevisCommStatus   = readyToSubmitStatus,
                SevisCommStatusId = readyToSubmitStatus.SevisCommStatusId,
            };
            var todayStatus = new ParticipantPersonSevisCommStatus
            {
                AddedOn           = DateTimeOffset.UtcNow,
                Id                = 501,
                ParticipantId     = participant.ParticipantId,
                ParticipantPerson = participantPerson,
                SevisCommStatus   = pendingSendToSevisStatus,
                SevisCommStatusId = pendingSendToSevisStatus.SevisCommStatusId,
            };

            participantPerson.ParticipantPersonSevisCommStatuses.Add(todayStatus);
            participantPerson.ParticipantPersonSevisCommStatuses.Add(yesterdayStatus);

            context.SevisCommStatuses.Add(readyToSubmitStatus);
            context.SevisCommStatuses.Add(pendingSendToSevisStatus);
            context.ParticipantPersonSevisCommStatuses.Add(todayStatus);
            context.ParticipantPersonSevisCommStatuses.Add(yesterdayStatus);
            context.ParticipantTypes.Add(participantType);
            context.ParticipantStatuses.Add(status);
            context.Participants.Add(participant);
            context.ParticipantPersons.Add(participantPerson);
            context.People.Add(person);

            var results = ParticipantPersonsSevisQueries.CreateGetParticipantPersonsSevisDTOQuery(context).ToList();

            Assert.AreEqual(1, results.Count());
            var firstResult = results.First();

            Assert.IsNull(firstResult.LastBatchDate);
        }
 private ParticipantPersonSevisCommStatus AddOrUpdateParticipantPersonSevisCommStatus(ParticipantPersonSevisCommStatus latestStatus, int participantId, int commStatusId)
 {
     if (latestStatus == null)
     {
         return(AddParticipantPersonSevisCommStatus(participantId, commStatusId));
     }
     else
     {
         if (latestStatus.SevisCommStatusId == SevisCommStatus.InformationRequired.Id ||
             latestStatus.SevisCommStatusId == SevisCommStatus.NeedsValidationInfo.Id)
         {
             latestStatus.AddedOn = DateTimeOffset.UtcNow;
             return(latestStatus);
         }
         else
         {
             return(AddParticipantPersonSevisCommStatus(participantId, commStatusId));
         }
     }
 }
Example #12
0
        public async Task TestUpdate_SocialMedia_SevisNotLocked()
        {
            var personId      = 1;
            var participantId = 1;
            var creator       = 1;
            var updatorId     = 2;
            var updator       = new User(updatorId);
            var facebookType  = new SocialMediaType
            {
                SocialMediaTypeId   = SocialMediaType.Facebook.Id,
                SocialMediaTypeName = SocialMediaType.Facebook.Value
            };
            var twitter = new SocialMediaType
            {
                SocialMediaTypeId   = SocialMediaType.Twitter.Id,
                SocialMediaTypeName = SocialMediaType.Twitter.Value
            };

            var    oldSocialMediaTypeId = facebookType.SocialMediaTypeId;
            var    oldValue             = "oldValue";
            var    yesterday            = DateTimeOffset.Now.AddDays(-1.0);
            Person person = new Person
            {
                PersonId = personId
            };
            var socialMedia = new SocialMedia
            {
                SocialMediaId = 1,
                Person        = person,
                PersonId      = person.PersonId
            };
            var participant = new Participant
            {
                ParticipantId       = participantId,
                PersonId            = person.PersonId,
                ParticipantStatusId = ParticipantStatus.Active.Id
            };
            List <Participant> participants = new List <Participant>();

            participants.Add(participant);
            person.Participations = participants;
            var participantPerson = new ParticipantPerson
            {
                Participant   = participant,
                ParticipantId = participant.ParticipantId,
            };

            participant.ParticipantPerson = participantPerson;

            var queuedToSubmitStatus = new SevisCommStatus
            {
                SevisCommStatusId   = SevisCommStatus.InformationRequired.Id,
                SevisCommStatusName = SevisCommStatus.InformationRequired.Value
            };
            var commStatus = new ParticipantPersonSevisCommStatus
            {
                AddedOn           = DateTimeOffset.UtcNow,
                BatchId           = "batch id",
                Id                = 501,
                ParticipantId     = participant.ParticipantId,
                ParticipantPerson = participantPerson,
                SevisCommStatus   = queuedToSubmitStatus,
                SevisCommStatusId = queuedToSubmitStatus.SevisCommStatusId,
            };

            participantPerson.ParticipantPersonSevisCommStatuses.Add(commStatus);
            person.SocialMedias.Add(socialMedia);

            context.SetupActions.Add(() =>
            {
                context.SocialMedias.Add(socialMedia);
                context.SocialMediaTypes.Add(facebookType);
                context.SocialMediaTypes.Add(twitter);
                context.Participants.Add(participant);
                context.ParticipantPersons.Add(participantPerson);
                context.ParticipantPersonSevisCommStatuses.Add(commStatus);
                socialMedia.History.CreatedBy = creator;
                socialMedia.History.CreatedOn = yesterday;
                socialMedia.History.RevisedBy = creator;
                socialMedia.History.RevisedOn = yesterday;
                socialMedia.SocialMediaTypeId = facebookType.SocialMediaTypeId;
                socialMedia.SocialMediaType   = facebookType;
                socialMedia.SocialMediaValue  = oldValue;
            });
            context.Revert();

            var updatedSocialMedia = new UpdatedSocialMediaPresence(updator, socialMedia.SocialMediaId, "newValue", twitter.SocialMediaTypeId);

            var message = String.Format("An update was attempted on participant with id [{0}] but should have failed validation.",
                                        participant.ParticipantId);

            Action      a = () => service.Update(updatedSocialMedia);
            Func <Task> f = () => service.UpdateAsync(updatedSocialMedia);

            a.ShouldNotThrow <EcaBusinessException>();
            f.ShouldNotThrow <EcaBusinessException>();
        }
        public async Task TestUpdate_PersonEmail_SevisNotLocked()
        {
            var    personId      = 1;
            var    participantId = 1;
            Person person        = new Person
            {
                PersonId = personId
            };
            var participant = new Participant
            {
                ParticipantId       = participantId,
                PersonId            = person.PersonId,
                ParticipantStatusId = ParticipantStatus.Active.Id
            };
            List <Participant> participants = new List <Participant>();

            participants.Add(participant);
            person.Participations = participants;
            var participantPerson = new ParticipantPerson
            {
                Participant   = participant,
                ParticipantId = participant.ParticipantId,
            };

            participant.ParticipantPerson = participantPerson;

            var queuedToSubmitStatus = new SevisCommStatus
            {
                SevisCommStatusId   = SevisCommStatus.InformationRequired.Id,
                SevisCommStatusName = SevisCommStatus.InformationRequired.Value
            };
            var commStatus = new ParticipantPersonSevisCommStatus
            {
                AddedOn           = DateTimeOffset.UtcNow,
                BatchId           = "batch id",
                Id                = 501,
                ParticipantId     = participant.ParticipantId,
                ParticipantPerson = participantPerson,
                SevisCommStatus   = queuedToSubmitStatus,
                SevisCommStatusId = queuedToSubmitStatus.SevisCommStatusId,
            };

            participantPerson.ParticipantPersonSevisCommStatuses.Add(commStatus);

            EmailAddressType emailAddressType = new EmailAddressType
            {
                EmailAddressTypeId   = EmailAddressType.Home.Id,
                EmailAddressTypeName = EmailAddressType.Home.Value
            };
            var          creatorId            = 1;
            var          updatorId            = 2;
            var          yesterday            = DateTimeOffset.UtcNow.AddDays(-1.0);
            var          emailAddressId       = 1;
            EmailAddress emailAddressToUpdate = null;

            context.SetupActions.Add(() =>
            {
                emailAddressToUpdate = new EmailAddress
                {
                    EmailAddressId = emailAddressId,
                    Person         = person,
                    PersonId       = person.PersonId
                };
                emailAddressToUpdate.History.CreatedBy = creatorId;
                emailAddressToUpdate.History.RevisedBy = creatorId;
                emailAddressToUpdate.History.CreatedOn = yesterday;
                emailAddressToUpdate.History.RevisedOn = yesterday;

                person.EmailAddresses.Add(emailAddressToUpdate);
                context.EmailAddressTypes.Add(emailAddressType);
                context.People.Add(person);
                context.EmailAddresses.Add(emailAddressToUpdate);
                context.Participants.Add(participant);
                context.ParticipantPersons.Add(participantPerson);
                context.ParticipantPersonSevisCommStatuses.Add(commStatus);
            });
            context.Revert();
            var updatedEmailModel = new UpdatedEmailAddress(new User(updatorId), emailAddressId, "*****@*****.**", emailAddressType.EmailAddressTypeId, true);

            var message = String.Format("An update was attempted on participant with id [{0}] but should have failed validation.",
                                        participant.ParticipantId);

            Action      a = () => service.Update(updatedEmailModel);
            Func <Task> f = () => service.UpdateAsync(updatedEmailModel);

            a.ShouldNotThrow <EcaBusinessException>();
            f.ShouldNotThrow <EcaBusinessException>();
        }