public void ValidateBCBAMaxHoursPerEntryTrueIfOk()
        {
            var entry       = new Domain2.Hours.Hours();
            var serviceMock = new Mock <IResolutionService>();

            entry.TotalHours = 1;
            entry.ServiceID  = (int)Domain2.Services.ServiceIDs.DirectSupervision;
            entry.Service    = new Domain2.Services.Service()
            {
                ID = entry.ServiceID.Value
            };

            serviceMock
            .Setup(x => x.Provider)
            .Returns(() => new Domain2.Providers.Provider()
            {
                ProviderTypeID = (int)Domain2.Providers.ProviderTypeIDs.BoardCertifiedBehavioralAnalyst
            });
            serviceMock.Setup(x => x.Issues).Returns(new ValidationIssueCollection());

            var validator = new CaseAndProviderValidations(serviceMock.Object);

            var result = validator.ValidateBCBAMaxHoursPerEntry(entry);

            Assert.IsTrue(result);
        }
        public void ValidateBCBAMaxHoursPerEntryAddsWarningIssueOnManagementEntry()
        {
            var entry       = new Domain2.Hours.Hours();
            var serviceMock = new Mock <IResolutionService>();

            entry.TotalHours = 3;
            entry.ServiceID  = (int)Domain2.Services.ServiceIDs.DirectSupervision;
            entry.Service    = new Domain2.Services.Service()
            {
                ID = entry.ServiceID.Value
            };

            serviceMock
            .Setup(x => x.Provider)
            .Returns(() => new Domain2.Providers.Provider()
            {
                ProviderTypeID = (int)Domain2.Providers.ProviderTypeIDs.BoardCertifiedBehavioralAnalyst
            });
            serviceMock.Setup(x => x.Issues).Returns(new ValidationIssueCollection());
            serviceMock.Setup(x => x.EntryMode).Returns(Domain2.Cases.HoursEntryMode.ManagementEntry);

            var validator = new CaseAndProviderValidations(serviceMock.Object);

            var result = validator.ValidateBCBAMaxHoursPerEntry(entry);

            Assert.IsTrue(serviceMock.Object.Issues.Issues.Count == 1);
            Assert.IsTrue(serviceMock.Object.Issues.HasWarnings);
        }
        public void ValidateProviderNotSelfOverlapTrueIfNoOverlaps()
        {
            var entry = new Domain2.Hours.Hours
            {
                Date      = new DateTime(2017, 1, 1),
                StartTime = new TimeSpan(12, 30, 0),
                EndTime   = new TimeSpan(13, 30, 0)
            };

            ResetService();
            _serviceMock.Setup(x => x.EntryMode).Returns(Domain2.Cases.HoursEntryMode.ProviderEntry);
            _serviceMock.Setup(x => x.AllProposedProviderHours).Returns(() => _selfOverlapHours);
            _serviceMock.Setup(x => x.Provider).Returns(new Domain2.Providers.Provider()
            {
                ID = 5, ProviderTypeID = 17
            });
            _serviceMock.Setup(x => x.Issues).Returns(new ValidationIssueCollection());
            _serviceMock.Object.AllProposedProviderHours.Add(entry);

            var resolver = new CaseAndProviderValidations(_serviceMock.Object);

            var result = resolver.ValidateProviderNotSelfOverlap(entry);

            Assert.IsTrue(result);
            Assert.IsTrue(_serviceMock.Object.Issues.Issues.Count == 0);
        }
        public void ValidateAideMaxHoursPerDayPerCaseTrueIfNotOver()
        {
            var entry = new Domain2.Hours.Hours
            {
                Date       = new DateTime(2017, 1, 1),
                TotalHours = (decimal)0.25,
                ProviderID = 5
            };

            ResetService();
            _serviceMock.Setup(x => x.EntryMode).Returns(Domain2.Cases.HoursEntryMode.ManagementEntry);
            _serviceMock.Setup(x => x.AllProposedCaseHours(It.IsAny <int>())).Returns(() => _aideMaxHoursPerDayPerCaseHours);
            _serviceMock.Setup(x => x.Provider).Returns(new Domain2.Providers.Provider()
            {
                ID = 5, ProviderTypeID = 17
            });
            _serviceMock.Setup(x => x.Issues).Returns(new ValidationIssueCollection());
            _serviceMock.Object.AllProposedCaseHours(It.IsAny <int>()).Add(entry);

            var resolver = new CaseAndProviderValidations(_serviceMock.Object);

            var result = resolver.ValidateAideMaxHoursPerDayPerCase(entry);

            Assert.IsTrue(_serviceMock.Object.Issues.Issues.Count == 0);
            Assert.IsTrue(result);
        }
        public void ValidateAideNotDROverlapValidatesCorrectly()
        {
            var entry = new Domain2.Hours.Hours
            {
                Date      = new DateTime(2017, 1, 1),
                StartTime = new TimeSpan(15, 30, 0),
                EndTime   = new TimeSpan(16, 30, 0),
                ServiceID = 9
            };

            ResetService();
            _serviceMock.Setup(x => x.EntryMode).Returns(Domain2.Cases.HoursEntryMode.ProviderEntry);
            _serviceMock.Setup(x => x.AllProposedCaseHours(It.IsAny <int>())).Returns(() => _aideDROverlapHours);
            _serviceMock.Setup(x => x.Provider).Returns(new Domain2.Providers.Provider()
            {
                ID = 5, ProviderTypeID = 17
            });
            _serviceMock.Setup(x => x.Issues).Returns(new ValidationIssueCollection());
            _serviceMock.Object.AllProposedCaseHours(It.IsAny <int>()).Add(entry);

            var resolver = new CaseAndProviderValidations(_serviceMock.Object);

            var result = resolver.ValidateAideNotDROverlapOnCase(entry);

            Assert.IsTrue(result);
        }
        public void ValidateBCBAMaxAssessmentHoursPerCasePerDayFalseIfOver()
        {
            var entry       = new Domain2.Hours.Hours();
            var serviceMock = new Mock <IResolutionService>();
            var provider    = new Domain2.Providers.Provider();

            entry.TotalHours = 5;
            entry.Date       = new DateTime(2017, 1, 1);
            entry.ServiceID  = (int)Domain2.Services.ServiceIDs.Assessment;
            entry.Service    = new Domain2.Services.Service()
            {
                ID = entry.ServiceID.Value
            };
            entry.Provider          = provider;
            provider.ID             = 5;
            provider.ProviderTypeID = (int)Domain2.Providers.ProviderTypeIDs.BoardCertifiedBehavioralAnalyst;
            serviceMock.Setup(x => x.Provider).Returns(provider);
            serviceMock.Setup(x => x.AllProposedCaseHours(It.IsAny <int>())).Returns(_bcbaMaxAssessmentCaseHours);
            serviceMock.Setup(x => x.Issues).Returns(new ValidationIssueCollection());
            serviceMock.Setup(x => x.AssessmentServiceIDs).Returns(new int[] { 11, 17, 18 });
            serviceMock.Object.AllProposedCaseHours(It.IsAny <int>()).Add(entry);

            var validator = new CaseAndProviderValidations(serviceMock.Object);

            var result = validator.ValidateBCBAMaxAssessmentHoursPerCasePerDay(entry);

            Assert.IsFalse(result);
        }
        public void ValidateBCBAMaxAssessmentHoursPerCasePerDayIgnoresNonBCBAs()
        {
            var entry       = new Domain2.Hours.Hours();
            var serviceMock = new Mock <IResolutionService>();
            var provider    = new Domain2.Providers.Provider();

            entry.TotalHours        = 8;
            provider.ProviderTypeID = (int)Domain2.Providers.ProviderTypeIDs.Aide;
            serviceMock.Setup(x => x.Provider).Returns(provider);

            var validator = new CaseAndProviderValidations(serviceMock.Object);

            var result = validator.ValidateBCBAMaxAssessmentHoursPerCasePerDay(entry);

            Assert.IsTrue(result);
        }
        public void ValidateBCBAMaxAssessmentHoursPerCasePerDayIgnoresNonAssessmentServices()
        {
            var entry       = new Domain2.Hours.Hours();
            var serviceMock = new Mock <IResolutionService>();
            var provider    = new Domain2.Providers.Provider();

            entry.TotalHours = 8;
            entry.ServiceID  = (int)Domain2.Services.ServiceIDs.DirectSupervision;
            entry.Service    = new Domain2.Services.Service()
            {
                ID = entry.ServiceID.Value
            };
            provider.ProviderTypeID = (int)Domain2.Providers.ProviderTypeIDs.BoardCertifiedBehavioralAnalyst;
            serviceMock.Setup(x => x.Provider).Returns(provider);

            var validator = new CaseAndProviderValidations(serviceMock.Object);

            var result = validator.ValidateBCBAMaxAssessmentHoursPerCasePerDay(entry);

            Assert.IsTrue(result);
        }
        public void ValidateAideMaxHoursPerDayPerCaseIgnoresBCBAs()
        {
            var entry = new Domain2.Hours.Hours
            {
                Date       = new DateTime(2017, 1, 1),
                TotalHours = 5
            };

            ResetService();
            _serviceMock.Setup(x => x.AllProposedCaseHours(It.IsAny <int>())).Returns(() => _aideMaxHoursPerDayPerCaseHours);
            _serviceMock.Setup(x => x.Provider).Returns(new Domain2.Providers.Provider()
            {
                ID = 5, ProviderTypeID = 15
            });
            _serviceMock.Object.AllProposedCaseHours(It.IsAny <int>()).Add(entry);

            var resolver = new CaseAndProviderValidations(_serviceMock.Object);

            var result = resolver.ValidateAideMaxHoursPerDayPerCase(entry);

            Assert.IsTrue(result);
        }
        public void ValidateProviderNotSelfOverlapIgnoresBCBAs()
        {
            var entry = new Domain2.Hours.Hours
            {
                Date      = new DateTime(2017, 1, 1),
                StartTime = new TimeSpan(1, 30, 0),
                EndTime   = new TimeSpan(2, 30, 0)
            };

            ResetService();
            _serviceMock.Setup(x => x.AllProposedProviderHours).Returns(() => _selfOverlapHours);
            _serviceMock.Setup(x => x.Provider).Returns(new Domain2.Providers.Provider()
            {
                ID = 5, ProviderTypeID = 15
            });
            _serviceMock.Object.AllProposedProviderHours.Add(entry);

            var resolver = new CaseAndProviderValidations(_serviceMock.Object);

            var result = resolver.ValidateProviderNotSelfOverlap(entry);

            Assert.IsTrue(result);
        }
        public void ValidateAideNotDROverlapOnCaseIgnoresBCBA()
        {
            var entry = new Domain2.Hours.Hours
            {
                Date      = new DateTime(2017, 1, 1),
                StartTime = new TimeSpan(1, 30, 0),
                EndTime   = new TimeSpan(2, 30, 0),
                ServiceID = 9
            };

            ResetService();
            _serviceMock.Setup(x => x.AllProposedCaseHours(It.IsAny <int>())).Returns(() => _aideDROverlapHours);
            _serviceMock.Setup(x => x.Provider).Returns(new Domain2.Providers.Provider()
            {
                ID = 5, ProviderTypeID = 15
            });
            _serviceMock.Object.AllProposedCaseHours(It.IsAny <int>()).Add(entry);

            var resolver = new CaseAndProviderValidations(_serviceMock.Object);

            var result = resolver.ValidateAideNotDROverlapOnCase(entry);

            Assert.IsTrue(result);
        }