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

            // Arrange
            Guid id = Guid.NewGuid();
               SystemConfig sys = new SystemConfig()
            {
                Name = "GST_RATE",
                Value ="1234"
            };
              SystemConfig [] systems = new SystemConfig[] {sys};
              repositoryMock.Setup(e => e.Query<SystemConfig>()).Returns(systems.AsQueryable());
               // Act

              var systemConfigService = new SystemConfigService(uoMock.Object, repositoryMock.Object, settingsMock.Object);
            decimal actulvalue =  systemConfigService.GetGST();
            // Assert
            Assert.AreEqual(decimal.Parse(sys.Value, CultureInfo.InvariantCulture), actulvalue);
        }
        public void GetByKey_Anykey_CallsQueryMethodOfRepository()
        {
            // Setup dependency
              var settingsMock = new Mock<ISettings>();
              var uoMock = 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
              Guid id = Guid.NewGuid();
              var key = "MARK_UP_ON_PLATFORM";
              SystemConfig system = new SystemConfig()
              {
              Id=id,
              Name = key,
              Value = "1234"
              };
              SystemConfig[] systems = new SystemConfig[] { system };
              repositoryMock.Setup(e => e.Query<SystemConfig>()).Returns(systems.AsQueryable());
              // Act

              var systemConfigService = new SystemConfigService(uoMock.Object, repositoryMock.Object, settingsMock.Object);
              SystemConfigDto actualSystemconfig = systemConfigService.GetByKey(key);
              // Assert
              Assert.AreEqual(id, actualSystemconfig.Id);
        }
        public void UpdateParamatricBusinessRules_ParamatricBusinessRulesModelDto_MaximumLeadTime()
        {
            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();
            ParamatricBusinessRulesModelDto paramatricBusinessRulesModelDto =
                new ParamatricBusinessRulesModelDto
                {
                    CommissionLevels = "COMMISSION_LEVELS",
                    ExpiryTimeFrame = "ExpiryTimeFrame".ToUpper(),
                    FileUploadLimits = "FileUploadLimits".ToUpper(),
                    Margins = "Margins".ToUpper(),
                    MaximumBooking = "MaximumBooking".ToUpper(),
                    MaximumLeadTime = "MAXIMUM_LEAD_TIME",
                    MinimumBooking = "MinimumBooking".ToUpper(),
                    MinimumLeadTime = "MinimumLeadTime".ToUpper(),
                    NavigateHref = "NavigateHref".ToUpper()
                };

            SystemConfig config = new SystemConfig
            {
                Id = Guid.NewGuid(),
                Name = "MAXIMUM_LEAD_TIME"
            };
            SystemConfig[] systemConfigs = new SystemConfig[] { config };
            repositoryMock.Setup(r => r.Query<SystemConfig>()).Returns(systemConfigs.AsQueryable());

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

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

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

            //Insert
            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.COMMISSION_LEVELS.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());
        }