public TestEngineService( ICacheProvider cacheProvider, ISpecificationRepository specificationRepository, ILogger logger, ITestEngine testEngine, IScenariosRepository scenariosRepository, IProviderSourceDatasetsRepository providerSourceDatasetsRepository, ITestResultsService testResultsService, ITestResultsRepository testResultsRepository, IBuildProjectRepository buildProjectRepository, ITelemetry telemetry, ITestRunnerResiliencePolicies resiliencePolicies, ICalculationsRepository calculationsRepository) { _cacheProvider = cacheProvider; _specificationRepository = specificationRepository; _logger = logger; _testEngine = testEngine; _scenariosRepository = scenariosRepository; _providerSourceDatasetsRepository = providerSourceDatasetsRepository; _testResultsService = testResultsService; _testResultsRepository = testResultsRepository; _telemetry = telemetry; _cacheProviderPolicy = resiliencePolicies.CacheProviderRepository; _specificationRepositoryPolicy = resiliencePolicies.SpecificationRepository; _scenariosRepositoryPolicy = resiliencePolicies.ScenariosRepository; _providerSourceDatasetsRepositoryPolicy = resiliencePolicies.ProviderSourceDatasetsRepository; _testResultsRepositoryPolicy = resiliencePolicies.TestResultsRepository; _builProjectsRepositoryPolicy = resiliencePolicies.BuildProjectRepository; _buildProjectRepository = buildProjectRepository; _calculationsRepository = calculationsRepository; }
private void RegisterDIContainer() { ServiceCollection services = new ServiceCollection(); services.AddTransient <TestMethodListViewModel>(); services.AddSingleton <RealTimeInfoViewModel>(); services.AddSingleton <TestMethodViewModel>(); services.AddSingleton <TestProjectsViewModel>(); services.AddSingleton <TestResultViewModel>(); services.AddSingleton <ConfigurationViewMode>(); services.AddSingleton <ITestMethodRepository, TestMethodInfoRepository>(); services.AddSingleton <ITestResultsRepository, TestResultsRepository>(); services.AddSingleton <IEventAggregator, EventAggregator>(); services.AddSingleton <IExecutor <TestCaseInfo>, Executor>(); services.AddSingleton <IConfigurationManager, ConfigClass>(); services.AddSingleton <IDialogService <object>, DialogService>(); this.Container = services.BuildServiceProvider(); IConfigurationManager configurationManager = this.Container.GetService <IConfigurationManager>(); ITestMethodRepository testMethodRepository = this.Container.GetService <ITestMethodRepository>(); testMethodRepository.SetConfigurationManager(configurationManager); ITestResultsRepository testResultsRepository = this.Container.GetService <ITestResultsRepository>(); testResultsRepository.SetConfigurationManager(configurationManager); IExecutor <TestCaseInfo> executor = this.Container.GetService <IExecutor <TestCaseInfo> >(); executor.SetConfigurationManager(configurationManager); }
public async Task SaveTestProviderResults_WhenNoItemsPasssed_ThenNothingSaved() { // Arrange ITestResultsRepository testResultsRepository = CreateTestResultsRepository(); ISearchRepository <TestScenarioResultIndex> searchRepository = CreateSearchRespository(); TestResultsService service = CreateTestResultsService(testResultsRepository, searchRepository); IEnumerable <TestScenarioResult> updateItems = Enumerable.Empty <TestScenarioResult>(); IEnumerable <ProviderResult> providerResults = Enumerable.Empty <ProviderResult>(); // Act HttpStatusCode result = await service.SaveTestProviderResults(updateItems, providerResults); // Assert result.Should().Be(HttpStatusCode.NotModified); await testResultsRepository .Received(0) .SaveTestProviderResults(Arg.Any <IEnumerable <TestScenarioResult> >()); await searchRepository .Received(0) .Index(Arg.Any <IEnumerable <TestScenarioResultIndex> >()); }
public async Task SaveTestProviderResults_WhenItemsPasssed_ThenItemsSaved() { // Arrange ITestResultsRepository testResultsRepository = CreateTestResultsRepository(); ISearchRepository <TestScenarioResultIndex> searchRepository = CreateSearchRespository(); TestResultsService service = CreateTestResultsService(testResultsRepository, searchRepository); List <TestScenarioResult> itemsToUpdate = new List <TestScenarioResult> { CreateTestScenarioResult() }; testResultsRepository .SaveTestProviderResults(Arg.Any <IEnumerable <TestScenarioResult> >()) .Returns(HttpStatusCode.Created); IEnumerable <ProviderResult> providerResults = Enumerable.Empty <ProviderResult>(); // Act HttpStatusCode result = await service.SaveTestProviderResults(itemsToUpdate, providerResults); // Assert result.Should().Be(HttpStatusCode.Created); await testResultsRepository .Received(1) .SaveTestProviderResults(itemsToUpdate); await searchRepository .Received(1) .Index(Arg.Any <IEnumerable <TestScenarioResultIndex> >()); }
public TestResultsService(ITestResultsRepository testResultsRepository, ISearchRepository <TestScenarioResultIndex> searchRepository, IMapper mapper, ILogger logger, ITelemetry telemetry, ITestRunnerResiliencePolicies policies, IProviderService providerService) { Guard.ArgumentNotNull(searchRepository, nameof(searchRepository)); Guard.ArgumentNotNull(testResultsRepository, nameof(testResultsRepository)); Guard.ArgumentNotNull(mapper, nameof(mapper)); Guard.ArgumentNotNull(logger, nameof(logger)); Guard.ArgumentNotNull(telemetry, nameof(telemetry)); Guard.ArgumentNotNull(policies, nameof(policies)); Guard.ArgumentNotNull(providerService, nameof(providerService)); _testResultsRepository = testResultsRepository; _searchRepository = searchRepository; _mapper = mapper; _logger = logger; _telemetry = telemetry; _testResultsPolicy = policies.TestResultsRepository; _testResultsSearchPolicy = policies.TestResultsSearchRepository; _providerService = providerService; }
public TestResultsService(ITestResultsRepository testResultsRepository, ISearchRepository <TestScenarioResultIndex> searchRepository, IMapper mapper, ILogger logger, ITelemetry telemetry, ITestRunnerResiliencePolicies policies, IProvidersApiClient providersApiClient, IJobManagement jobManagement) : base(jobManagement, logger) { Guard.ArgumentNotNull(searchRepository, nameof(searchRepository)); Guard.ArgumentNotNull(testResultsRepository, nameof(testResultsRepository)); Guard.ArgumentNotNull(mapper, nameof(mapper)); Guard.ArgumentNotNull(logger, nameof(logger)); Guard.ArgumentNotNull(telemetry, nameof(telemetry)); Guard.ArgumentNotNull(policies?.TestResultsRepository, nameof(policies.TestResultsRepository)); Guard.ArgumentNotNull(policies?.TestResultsSearchRepository, nameof(policies.TestResultsSearchRepository)); Guard.ArgumentNotNull(providersApiClient, nameof(providersApiClient)); _testResultsRepository = testResultsRepository; _searchRepository = searchRepository; _mapper = mapper; _logger = logger; _telemetry = telemetry; _testResultsPolicy = policies.TestResultsRepository; _testResultsSearchPolicy = policies.TestResultsSearchRepository; _providersApiClient = providersApiClient; }
public async Task SaveTestProviderResults_WhenItemsPasssedAndRepositoryFailed_ThenItemsNotSaved() { // Arrange ITestResultsRepository testResultsRepository = CreateTestResultsRepository(); testResultsRepository .SaveTestProviderResults(Arg.Any <IEnumerable <TestScenarioResult> >()) .Returns(HttpStatusCode.BadRequest); TestResultsService service = CreateTestResultsService(testResultsRepository); IEnumerable <ProviderResult> providerResults = Enumerable.Empty <ProviderResult>(); List <TestScenarioResult> itemsToUpdate = new List <TestScenarioResult> { CreateTestScenarioResult() }; // Act HttpStatusCode result = await service.SaveTestProviderResults(itemsToUpdate, providerResults); // Assert result.Should().Be(HttpStatusCode.InternalServerError); await testResultsRepository .Received(1) .SaveTestProviderResults(itemsToUpdate); }
public TestMethodListViewModel( TestProjectsViewModel testProjectsViewModel, ITestResultsRepository testResultsRepository, ITestMethodRepository testMethodsRepository, IEventAggregator eventAggregator, IExecutor <TestCaseInfo> executor, IConfigurationManager configClass) { this.testProjectsViewModel = testProjectsViewModel; this.testResultsRepository = testResultsRepository; this.testMethodsRepository = testMethodsRepository; this.eventAggregator = eventAggregator; this.executor = executor; this.configClass = configClass; this.executor.Initialize(RealTimeEvent); this.QueryTestMethodsCommand = new DelegateCommand(OnQueryTestMethods, CanQueryTestMethods); this.DeleteTestMethodsCommand = new DelegateCommand(OnDeleteTestMethods, CanDeleteTestMethods); this.DiscoverTestMethodsCommand = new DelegateCommand <List <string> >(OnDiscoverTestMethods, (x) => this.canDiscoverTestMethods); this.SaveTestMethodsCommand = new DelegateCommand(OnSaveTestMethods, CanSaveTestMethods); this.RunTestMethodsCommand = new DelegateCommand(OnRunTestMethods, CanRunTestMethods); this.CancelTestRunCommand = new DelegateCommand(OnCancelTestRun, CanCancelTestRun); this.AddTestMethodsToProjectCommand = new DelegateCommand <TestProjectInfo>(OnAddTestMethodsToProject, (x) => true); this.TestMethodsSelectChangedCommand = new DelegateCommand(OnTestMethodsSelectChanged, () => true); this.eventAggregator.GetEvent <TestProjectUpdatedEvent>().Subscribe(TestCaseInfoListShow); this.testProjectsViewModel.TestProjectsChanged += TestProjectsViewModel_TestProjectsChanged; this.testProjects.Add(this.testRespository); }
public TestResultsCountsService(ITestResultsSearchService testResultsService, ITestResultsRepository testResultsRepository, ILogger logger) { Guard.ArgumentNotNull(testResultsService, nameof(testResultsService)); Guard.ArgumentNotNull(testResultsRepository, nameof(testResultsRepository)); Guard.ArgumentNotNull(logger, nameof(logger)); _testResultsService = testResultsService; _testResultsRepository = testResultsRepository; _logger = logger; }
static TestResultsCountsService CreateResultCountsService( ITestResultsSearchService testResultsService = null, ITestResultsRepository testResultsRepository = null, ILogger logger = null) { return(new TestResultsCountsService( testResultsService ?? CreateTestResultsSearchService(), testResultsRepository ?? CreateTestResultsRepository(), logger ?? CreateLogger())); }
public TestEngineService( ICacheProvider cacheProvider, ISpecificationsApiClient specificationsApiClient, ILogger logger, ITestEngine testEngine, IScenariosRepository scenariosRepository, IProviderSourceDatasetsRepository providerSourceDatasetsRepository, ITestResultsService testResultsService, ITestResultsRepository testResultsRepository, ICalculationsApiClient calcsApiClient, ITelemetry telemetry, ITestRunnerResiliencePolicies resiliencePolicies, ICalculationsRepository calculationsRepository, IMapper mapper) { Guard.ArgumentNotNull(cacheProvider, nameof(cacheProvider)); Guard.ArgumentNotNull(specificationsApiClient, nameof(specificationsApiClient)); Guard.ArgumentNotNull(logger, nameof(logger)); Guard.ArgumentNotNull(testEngine, nameof(testEngine)); Guard.ArgumentNotNull(scenariosRepository, nameof(scenariosRepository)); Guard.ArgumentNotNull(providerSourceDatasetsRepository, nameof(providerSourceDatasetsRepository)); Guard.ArgumentNotNull(testResultsService, nameof(testResultsService)); Guard.ArgumentNotNull(testResultsRepository, nameof(testResultsRepository)); Guard.ArgumentNotNull(telemetry, nameof(telemetry)); Guard.ArgumentNotNull(resiliencePolicies?.CacheProviderRepository, nameof(resiliencePolicies.CacheProviderRepository)); Guard.ArgumentNotNull(resiliencePolicies?.SpecificationsApiClient, nameof(resiliencePolicies.SpecificationsApiClient)); Guard.ArgumentNotNull(resiliencePolicies?.ScenariosRepository, nameof(resiliencePolicies.ScenariosRepository)); Guard.ArgumentNotNull(resiliencePolicies?.ProviderSourceDatasetsRepository, nameof(resiliencePolicies.ProviderSourceDatasetsRepository)); Guard.ArgumentNotNull(resiliencePolicies?.TestResultsRepository, nameof(resiliencePolicies.TestResultsRepository)); Guard.ArgumentNotNull(resiliencePolicies?.CalculationsApiClient, nameof(resiliencePolicies.CalculationsApiClient));; Guard.ArgumentNotNull(resiliencePolicies?.SpecificationsApiClient, nameof(resiliencePolicies.SpecificationsApiClient)); Guard.ArgumentNotNull(calcsApiClient, nameof(calcsApiClient)); Guard.ArgumentNotNull(calculationsRepository, nameof(calculationsRepository)); Guard.ArgumentNotNull(mapper, nameof(mapper)); _cacheProvider = cacheProvider; _specificationsApiClient = specificationsApiClient; _logger = logger; _testEngine = testEngine; _scenariosRepository = scenariosRepository; _providerSourceDatasetsRepository = providerSourceDatasetsRepository; _testResultsService = testResultsService; _testResultsRepository = testResultsRepository; _telemetry = telemetry; _mapper = mapper; _cacheProviderPolicy = resiliencePolicies.CacheProviderRepository; _scenariosRepositoryPolicy = resiliencePolicies.ScenariosRepository; _providerSourceDatasetsRepositoryPolicy = resiliencePolicies.ProviderSourceDatasetsRepository; _testResultsRepositoryPolicy = resiliencePolicies.TestResultsRepository; _calcsApiClientPolicy = resiliencePolicies.CalculationsApiClient; _calcsApiClient = calcsApiClient; _calculationsRepository = calculationsRepository; _specificationsApiClientPolicy = resiliencePolicies.SpecificationsApiClient; }
public TestResultViewModel( ITestResultsRepository testMethodsRepository, IEventAggregator eventAggregator) { this.testResultsRepository = testMethodsRepository; this.eventAggregator = eventAggregator; LoadTestResultsCommand = new DelegateCommand(OnLoadTestResults, CanGetTestResults); this.eventAggregator.GetEvent <TestMethodSelectedEvent>().Subscribe(SetTestMethodAsync); this.eventAggregator.GetEvent <TestProjectSelectedEvent>().Subscribe(SetTestProjectAsync); }
public TestProjectShip( IEventAggregator eventAggregator, ITestResultsRepository testResultsRepository, IExecutor <TestCaseInfo> executor, IDialogService <object> dialogService, TestProjectInfo testProjectInfo) { this.TestProjectInfo = testProjectInfo; this.eventAggregator = eventAggregator; this.testResultsRepository = testResultsRepository; this.executor = executor; this.dialogService = dialogService; this.AddTestMethodsFromAssemblyCommand = new DelegateCommand(OnAddTestMethodsFromAssembly, CanAddTestMethodsFromAssembly); this.RunTestProjectCommand = new DelegateCommand(OnRunTestProject, CanRunTestProject); this.CancelTestProjectRunCommand = new DelegateCommand(OnCancelTestProjectRun, CanCancelTestProjectRun); }
private TestResultsService CreateTestResultsService( ITestResultsRepository testResultsRepository = null, ISearchRepository <TestScenarioResultIndex> searchRepository = null, IMapper mapper = null, ILogger logger = null, ITelemetry telemetry = null, ResiliencePolicies policies = null, IProviderService providerService = null) { return(new TestResultsService( testResultsRepository ?? CreateTestResultsRepository(), searchRepository ?? CreateSearchRespository(), mapper ?? CreateMapper(), logger ?? CreateLogger(), telemetry ?? CreateTelemetry(), policies ?? TestRunnerResilienceTestHelper.GenerateTestPolicies(), providerService ?? CreateProviderService() )); }
public async Task SaveTestProviderResults_WhenItemsPasssed_ThenTelemetryLogged() { // Arrange ITestResultsRepository testResultsRepository = CreateTestResultsRepository(); ISearchRepository <TestScenarioResultIndex> searchRepository = CreateSearchRespository(); ITelemetry telemetry = CreateTelemetry(); ITestResultsService service = CreateTestResultsService(testResultsRepository, searchRepository, telemetry: telemetry); IEnumerable <ProviderResult> providerResults = Enumerable.Empty <ProviderResult>(); List <TestScenarioResult> itemsToUpdate = new List <TestScenarioResult>(); TestScenarioResult testScenarioResult = CreateTestScenarioResult(); itemsToUpdate.Add(testScenarioResult); testResultsRepository .SaveTestProviderResults(Arg.Any <IEnumerable <TestScenarioResult> >()) .Returns(HttpStatusCode.Created); // Act HttpStatusCode result = await service.SaveTestProviderResults(itemsToUpdate, providerResults); // Assert result.Should().Be(HttpStatusCode.Created); telemetry .Received(1) .TrackEvent( Arg.Is("UpdateTestScenario"), Arg.Is <IDictionary <string, string> >(p => p.ContainsKey("SpecificationId") && p["SpecificationId"] == testScenarioResult.Specification.Id ), Arg.Is <IDictionary <string, double> >( m => m.ContainsKey("update-testscenario-elapsedMilliseconds") && m.ContainsKey("update-testscenario-recordsUpdated") && m["update-testscenario-elapsedMilliseconds"] > 0 && m["update-testscenario-recordsUpdated"] == 1 ) ); }
public async Task DeleteTestResults_Deletes_Dependencies_Using_Correct_SpecificationId_And_DeletionType(string specificationId, DeletionType deletionType) { string jobId = "job-id"; Message message = new Message { UserProperties = { new KeyValuePair <string, object>("jobId", jobId), new KeyValuePair <string, object>("specification-id", specificationId), new KeyValuePair <string, object>("deletion-type", (int)deletionType) } }; ITestResultsRepository testResultsRepository = CreateTestResultsRepository(); TestResultsService service = CreateTestResultsService(testResultsRepository: testResultsRepository); await service.DeleteTestResults(message); await testResultsRepository.Received(1).DeleteTestResultsBySpecificationId(specificationId, deletionType); }
public async Task CleanupTestResultsForSpecificationProviders_GivenCurrentTestResults_ThenCallsDelete() { //Arrange TestScenarioResult testScenarioResult = CreateTestScenarioResult(); ITestResultsRepository testResultsRepository = CreateTestResultsRepository(); testResultsRepository .GetCurrentTestResults(Arg.Any <IEnumerable <string> >(), Arg.Is <string>(testScenarioResult.Specification.Id)) .Returns(new TestScenarioResult[] { testScenarioResult }); TestResultsService service = CreateTestResultsService(testResultsRepository: testResultsRepository); SpecificationProviders specificationProviders = new SpecificationProviders { SpecificationId = testScenarioResult.Specification.Id, Providers = new string[] { testScenarioResult.Provider.Id } }; Dictionary <string, string> properties = new Dictionary <string, string> { { "specificationId", testScenarioResult.Specification.Id }, { "sfa-correlationId", Guid.NewGuid().ToString() } }; Message message = new Message { Body = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(specificationProviders)) }; message.UserProperties["specificationId"] = testScenarioResult.Specification.Id; //Act await service.CleanupTestResultsForSpecificationProviders(message); //Assert await testResultsRepository .Received(1) .DeleteCurrentTestScenarioTestResults(Arg.Is <IEnumerable <TestScenarioResult> >(x => x.First().Provider.Id == testScenarioResult.Provider.Id)); }
//public event EventHandler CloseTestProject; public TestProjectsViewModel( IEventAggregator eventAggregator, ITestResultsRepository testResultsRepository, IDialogService <object> dialogService, IExecutor <TestCaseInfo> executor, IConfigurationManager configClass) { this.eventAggregator = eventAggregator; this.testResultsRepository = testResultsRepository; this.dialogService = dialogService; this.executor = executor; this.configClass = configClass; this.LoadTestProjectsCommand = new DelegateCommand <string>(OnLoadTestProjects, CanLoadTestProjects); this.SaveTestProjectsCommand = new DelegateCommand(OnSaveTestProjects, CanSaveTestProjects); this.AddTestProjectCommand = new DelegateCommand(OnAddTestProject, CanAddTestProject); this.DeleteTestProjectCommand = new DelegateCommand <TestProjectInfo>(OnDeleteTestProject, (x) => true); this.CloseTestProjectCommand = new DelegateCommand <TestProjectInfo>(OnCloseTestProject, (x) => true); this.RenameTestProjectCommand = new DelegateCommand <string[]>(OnRenameTestProject, (x) => true); this.TestProjectConfigurationCommand = new DelegateCommand <string>(OnTestProjectConfiguration, (x) => true); this.eventAggregator.GetEvent <AddTestMethodsToProjectSelectedEvent>().Subscribe(AddTestMethodsToCurrentProject); this.testProjectShips.CollectionChanged += TestProjectShips_CollectionChanged; }
public async Task SaveTestProviderResults_WhenItemsPasssed_ThenSearchResultsMapped() { // Arrange ITestResultsRepository testResultsRepository = CreateTestResultsRepository(); ISearchRepository <TestScenarioResultIndex> searchRepository = CreateSearchRespository(); TestResultsService service = CreateTestResultsService(testResultsRepository, searchRepository); IEnumerable <ProviderResult> providerResults = new[] { new ProviderResult { Provider = new ProviderSummary { UKPRN = "111", UPIN = "222", URN = "333", EstablishmentNumber = "123", DateOpened = DateTimeOffset.Now, Authority = "authority", ProviderSubType = "provider sub type", ProviderType = "provider type", Id = "ProviderId" } } }; List <TestScenarioResult> itemsToUpdate = new List <TestScenarioResult>(); TestScenarioResult testScenarioResult = CreateTestScenarioResult(); itemsToUpdate.Add(testScenarioResult); testResultsRepository .SaveTestProviderResults(Arg.Any <IEnumerable <TestScenarioResult> >()) .Returns(HttpStatusCode.Created); // Act HttpStatusCode result = await service.SaveTestProviderResults(itemsToUpdate, providerResults); // Assert result.Should().Be(HttpStatusCode.Created); await testResultsRepository .Received(1) .SaveTestProviderResults(itemsToUpdate); await searchRepository .Received(1) .Index(Arg.Is <IEnumerable <TestScenarioResultIndex> >(c => c.First().Id == testScenarioResult.Id && c.First().ProviderId == testScenarioResult.Provider.Id && c.First().ProviderName == testScenarioResult.Provider.Name && c.First().SpecificationId == testScenarioResult.Specification.Id && c.First().SpecificationName == testScenarioResult.Specification.Name && c.First().TestResult == Enum.GetName(typeof(Models.Results.TestResult), testScenarioResult.TestResult) && c.First().TestScenarioId == testScenarioResult.TestScenario.Id && c.First().TestScenarioName == testScenarioResult.TestScenario.Name && c.First().LastUpdatedDate > DateTimeOffset.Now.AddDays(-1) && c.First().EstablishmentNumber == "123" && c.First().UKPRN == "111" && c.First().UPIN == "222" && c.First().URN == "333" && c.First().LocalAuthority == "authority" && c.First().ProviderType == "provider type" && c.First().ProviderSubType == "provider sub type" && c.First().OpenDate.HasValue )); }
public StudentTestController(ITestFacade testFacade, ITestParametersRepository testParamRepo, ITestResultsRepository testResultsRepo) { this.testFacade = testFacade; this.testParamRepo = testParamRepo; this.testResultsRepo = testResultsRepo; }