public async Task ShouldDisposeChildScopesWhenParentDisposed(Mock <IJobMetadata> jobMetadata) { // Arrange jobMetadata.Setup(s => s.JobClass).Returns(typeof(TestJob)); var sut = new DefaultJobFactory(this.CreateServiceProvider(jobMetadata.Object, ServiceLifetime.Scoped)); // Act IJob parentJob; IJob childJob; using (sut.BeginScope()) { var rootJob = sut.CreateJobInstance(jobMetadata.Object); using (sut.BeginScope()) { parentJob = sut.CreateJobInstance(jobMetadata.Object); sut.BeginScope(); childJob = sut.CreateJobInstance(jobMetadata.Object); } // Assert await Assert.ThrowsAsync <ObjectDisposedException>(() => childJob.Invoke(null, CancellationToken.None)); await Assert.ThrowsAsync <ObjectDisposedException>(() => parentJob.Invoke(null, CancellationToken.None)); await rootJob.Invoke(null, CancellationToken.None); } }
public void ShouldCreateJobInstancesWithoutScope(ServiceLifetime serviceLifetime, int distictJobInstance, Mock <IJobMetadata> jobMetadata) { // Arrange jobMetadata.Setup(s => s.JobClass).Returns(typeof(TestJob)); var sut = new DefaultJobFactory(this.CreateServiceProvider(jobMetadata.Object, serviceLifetime)); // Act var results = new List <TestJob>(2); results.Add((TestJob)sut.CreateJobInstance(jobMetadata.Object)); results.Add((TestJob)sut.CreateJobInstance(jobMetadata.Object)); // Assert Assert.Equal(distictJobInstance, results.Select(j => j.JobId).Distinct().Count()); }
public void ShouldCreateJobInstanceInScope(ServiceLifetime serviceLifetime, int disctictInstanceCount, Mock <IJobMetadata> jobMetadata) { // Arrange jobMetadata.Setup(s => s.JobClass).Returns(typeof(TestJob)); var sut = new DefaultJobFactory(this.CreateServiceProvider(jobMetadata.Object, serviceLifetime)); // Act var results = new List <IJob>(3); using (sut.BeginScope()) { results.Add(sut.CreateJobInstance(jobMetadata.Object)); using (sut.BeginScope()) { results.Add(sut.CreateJobInstance(jobMetadata.Object)); } results.Add(sut.CreateJobInstance(jobMetadata.Object)); } // Assert Assert.All(results, job => Assert.IsType <TestJob>(job)); Assert.Equal(disctictInstanceCount, results.Cast <TestJob>().Select(j => j.JobId).Distinct().Count()); }