public void GetCompliancesVerificationDetail_AnyUserId()
        {
            // Setup dependency
            var settingsMock = new Mock<ISettings>();
            var repositoryMock = new Mock<IRepository>();
            var uowMock = new Mock<IUnitOfWork>();
            var serviceLocatorMock = new Mock<IServiceLocator>();
            serviceLocatorMock.Setup(x => x.GetInstance<IRepository>())
                .Returns(repositoryMock.Object);
            ServiceLocator.SetLocatorProvider(() => serviceLocatorMock.Object);

            // Arrange
            List<User> users = new List<User>();
            Guid id = Guid.NewGuid();

            User user = new User
            {
                Id = id,
                FirstName = id.ToString(),
                Role = Role.Specialist
            };
            users.Add(user);

            repositoryMock.Setup(r => r.Query<User>()).Returns(users.AsQueryable());

            // Act
            ManagementService managementService = new ManagementService(uowMock.Object, repositoryMock.Object, settingsMock.Object);
            var currentResult = managementService
                .GetCompliancesVerificationDetail(id);

            // Assert
            repositoryMock.Verify(r => r.Query<User>());
            Assert.AreEqual(null, currentResult);
        }
        public void GetCompliancesVerificationDetail_NullUser()
        {
            // Setup dependency
            var settingsMock = new Mock<ISettings>();
            var repositoryMock = new Mock<IRepository>();
            var uowMock = new Mock<IUnitOfWork>();
            var serviceLocatorMock = new Mock<IServiceLocator>();
            serviceLocatorMock.Setup(x => x.GetInstance<IRepository>())
                .Returns(repositoryMock.Object);
            ServiceLocator.SetLocatorProvider(() => serviceLocatorMock.Object);

            // Arrange
            List<User> users = new List<User>();
            Guid id = Guid.NewGuid();

            // Act
            ManagementService managementService = new ManagementService(uowMock.Object, repositoryMock.Object, settingsMock.Object);
            var currentResult = managementService
                .GetCompliancesVerificationDetail(id);

            // Assert
            repositoryMock.Verify(r => r.Query<User>());
            Assert.AreEqual(null, currentResult);
        }
        public void GetCompliancesVerification_GetByConditions_NullDatabase_FirstPage()
        {
            // Setup dependency
            var settingsMock = new Mock<ISettings>();
            var repositoryMock = new Mock<IRepository>();
            var uowMock = new Mock<IUnitOfWork>();
            var serviceLocatorMock = new Mock<IServiceLocator>();
            serviceLocatorMock.Setup(x => x.GetInstance<IRepository>())
                .Returns(repositoryMock.Object);
            ServiceLocator.SetLocatorProvider(() => serviceLocatorMock.Object);

            // Arrange
            string keyword = string.Empty;
            int currentPage = 0;
            int pageSize = 5;

            // Act
            ManagementService managementService = new ManagementService(uowMock.Object, repositoryMock.Object, settingsMock.Object);
            var currentResult = managementService.GetCompliancesVerification(currentPage, pageSize,
                true, true, true, true);

            // Assert
            Assert.AreEqual(null, currentResult);
        }
        public void UpdateVerifiedDate_AnySpecializationId_ExpriredToday()
        {
            var settingsMock = new Mock<ISettings>();
            var repositoryMock = new Mock<IRepository>();
            var uowMock = new Mock<IUnitOfWork>();
            var serviceLocatorMock = new Mock<IServiceLocator>();
            serviceLocatorMock.Setup(x => x.GetInstance<IRepository>())
                .Returns(repositoryMock.Object);
            serviceLocatorMock.Setup(x => x.GetInstance<IUnitOfWork>())
                .Returns(uowMock.Object);

            ServiceLocator.SetLocatorProvider(() => serviceLocatorMock.Object);
            repositoryMock.Setup(r => r.CreateUnitOfWork()).Returns(uowMock.Object);

            // Arrange
            Guid id = Guid.NewGuid();
            DateTime expiredDate = DateTime.Now;

            Specialization specialization = new Specialization
            {
                Id = id
            };
            Specialization[] specializations = new Specialization[] { specialization };

            repositoryMock.Setup(r => r.Query<Specialization>()).Returns(specializations.AsQueryable());

            // Act
            ManagementService managementService = new ManagementService(uowMock.Object, repositoryMock.Object, settingsMock.Object);
            var currentResult = managementService
                .UpdateVerifiedDate(id.ToString(), expiredDate);

            // Assert
            repositoryMock.Verify(repo => repo
                .Update<Specialization>(It.Is<Specialization>(
                    s => s.Id == id && s.ExpiredDate == expiredDate)));
            uowMock.Verify(uow => uow.Save());
        }
        public void UpdateParamatricBusinessRules_ParamatricBusinessRulesModelDto_NullDataBase()
        {
            var settingsMock = new Mock<ISettings>();
            var repositoryMock = new Mock<IRepository>();
            var uowMock = new Mock<IUnitOfWork>();
            var serviceLocatorMock = new Mock<IServiceLocator>();
            serviceLocatorMock.Setup(x => x.GetInstance<IRepository>())
                .Returns(repositoryMock.Object);
            serviceLocatorMock.Setup(x => x.GetInstance<IUnitOfWork>())
                .Returns(uowMock.Object);

            ServiceLocator.SetLocatorProvider(() => serviceLocatorMock.Object);
            repositoryMock.Setup(r => r.CreateUnitOfWork()).Returns(uowMock.Object);

            Guid id = Guid.NewGuid();
            ParamatricBusinessRulesModelDto paramatricBusinessRulesModelDto =
                new ParamatricBusinessRulesModelDto
                {
                    CommissionLevels = "CommissionLevels".ToUpper(),
                    ExpiryTimeFrame = "ExpiryTimeFrame".ToUpper(),
                    FileUploadLimits = "FileUploadLimits".ToUpper(),
                    Margins = "Margins".ToUpper(),
                    MaximumBooking = "MaximumBooking".ToUpper(),
                    MaximumLeadTime = "MaximumLeadTime".ToUpper(),
                    MinimumBooking = "MinimumBooking".ToUpper(),
                    MinimumLeadTime = "MinimumLeadTime".ToUpper(),
                    NavigateHref = "NavigateHref".ToUpper()
                };

            // Act
            ManagementService managementService = new ManagementService(
                uowMock.Object, repositoryMock.Object, settingsMock.Object);
            managementService
                .UpdateParamatricBusinessRules(paramatricBusinessRulesModelDto);

            // Assert
                //Query
            repositoryMock.Verify(repo => repo.Query<SystemConfig>());

                //Insert
            repositoryMock.Verify(repo => repo.Insert<SystemConfig>(It.Is<SystemConfig>
                (s => s.Name == ParamatricBusinessRules.COMMISSION_LEVELS.ToString())));

            repositoryMock.Verify(repo => repo.Insert<SystemConfig>(It.Is<SystemConfig>
                (s => s.Name == ParamatricBusinessRules.EXPIRY_TIMEFRAME.ToString())));

            repositoryMock.Verify(repo => repo.Insert<SystemConfig>(It.Is<SystemConfig>
                (s => s.Name == ParamatricBusinessRules.FILE_UPLOAD_LIMITS.ToString())));

            repositoryMock.Verify(repo => repo.Insert<SystemConfig>(It.Is<SystemConfig>
                (s => s.Name == ParamatricBusinessRules.MAXIMUM_BOOKING.ToString())));

            repositoryMock.Verify(repo => repo.Insert<SystemConfig>(It.Is<SystemConfig>
                (s => s.Name == ParamatricBusinessRules.MAXIMUM_LEAD_TIME.ToString())));

            repositoryMock.Verify(repo => repo.Insert<SystemConfig>(It.Is<SystemConfig>
                (s => s.Name == ParamatricBusinessRules.MINIMUM_BOOKING.ToString())));

            repositoryMock.Verify(repo => repo.Insert<SystemConfig>(It.Is<SystemConfig>
                (s => s.Name == ParamatricBusinessRules.MINIMUM_LEAD_TIME.ToString())));

                //Save
            uowMock.Verify(uow => uow.Save());
        }
        public void IsUserInRole_GetUserWithWrongRole_ReturnFalse()
        {
            // Setup dependency
            var settingsMock = new Mock<ISettings>();
            var uowMock = new Mock<IUnitOfWork>();
            var repositoryMock = new Mock<IRepository>();
            var serviceLocatorMock = new Mock<IServiceLocator>();
            serviceLocatorMock.Setup(x => x.GetInstance<IRepository>())
                .Returns(repositoryMock.Object);
            ServiceLocator.SetLocatorProvider(() => serviceLocatorMock.Object);

            // Arrange
            string userName = "******";
            string roleName = string.Empty;
            User user = new User
            {
                Id = Guid.NewGuid(),
                UserName = userName,
                Role = Role.Customer
            };
            bool expectedResult = false;
            User[] users = new User[] { user };
            repositoryMock.Setup(r => r.Query<User>()).Returns(users.AsQueryable());

            // Act
            ManagementService managementService = new ManagementService(uowMock.Object, repositoryMock.Object, settingsMock.Object);
            bool currentResult = managementService.IsUserInRole(userName, roleName);

            // Assert
            repositoryMock.Verify(repo => repo.Query<User>());
            Assert.AreEqual(expectedResult, currentResult);
        }
        public void IsUserInRole_GetNullUser_ReturnFalse()
        {
            // Setup dependency
            var settingsMock = new Mock<ISettings>();
            var uowMock = new Mock<IUnitOfWork>();
            var repositoryMock = new Mock<IRepository>();
            var serviceLocatorMock = new Mock<IServiceLocator>();
            serviceLocatorMock.Setup(x => x.GetInstance<IRepository>())
                .Returns(repositoryMock.Object);
            ServiceLocator.SetLocatorProvider(() => serviceLocatorMock.Object);

            // Arrange
            bool expectedResult = false;

            // Act
            ManagementService managementService = new ManagementService(uowMock.Object, repositoryMock.Object, settingsMock.Object);
            bool currentResult = managementService.IsUserInRole(string.Empty, string.Empty);

            // Assert
            repositoryMock.Verify(repo => repo.Query<User>());
            Assert.AreEqual(expectedResult, currentResult);
        }
        public void GetCompliancesVerification_GetByConditions_OrderByFirstName_FirstPage()
        {
            // Setup dependency
            var settingsMock = new Mock<ISettings>();
            var repositoryMock = new Mock<IRepository>();
            var uowMock = new Mock<IUnitOfWork>();
            var serviceLocatorMock = new Mock<IServiceLocator>();
            serviceLocatorMock.Setup(x => x.GetInstance<IRepository>())
                .Returns(repositoryMock.Object);
            ServiceLocator.SetLocatorProvider(() => serviceLocatorMock.Object);

            // Arrange
            decimal expectedResult = 5;
            string expectedName = "12";
            List<User> users = new List<User>();
            string keyword = string.Empty;
            int currentPage = 0;
            int pageSize = 5;

            for (int i = 0; i < 20; i++)
            {
                User user = new User
                {
                    Id = Guid.NewGuid(),
                    FirstName = i.ToString(),
                    Role = Role.Specialist
                };
                users.Add(user);
            }
            repositoryMock.Setup(r => r.Query<User>()).Returns(users.AsQueryable());

            // Act
            ManagementService managementService = new ManagementService(uowMock.Object, repositoryMock.Object, settingsMock.Object);
            var currentResult = managementService
                .GetCompliancesVerification(currentPage, pageSize,
                true,true,true,true);

            // Assert
            Assert.AreEqual(expectedResult, currentResult.Count());
            Assert.AreEqual(expectedName, currentResult.Last().FirstName);
        }