PageRenderTime 54ms CodeModel.GetById 27ms RepoModel.GetById 0ms app.codeStats 0ms

/src/Tests/AutofacJobFactoryTests.cs

https://github.com/LoungeFlyZ/Autofac.Extras.Quartz
C# | 97 lines | 76 code | 17 blank | 4 comment | 0 complexity | 4ef9c8307d9089f82718d839726db810 MD5 | raw file
  1. #region copyright
  2. // Autofac Quartz integration
  3. // https://github.com/alphacloud/Autofac.Extras.Quartz
  4. // Licensed under MIT license.
  5. // Copyright (c) 2014 Alphacloud.Net
  6. #endregion
  7. namespace Autofac.Extras.Quartz.Tests
  8. {
  9. using System;
  10. using Alphacloud.Common.Testing.Nunit;
  11. using FluentAssertions;
  12. using FluentAssertions.Specialized;
  13. using global::Quartz;
  14. using global::Quartz.Impl;
  15. using global::Quartz.Spi;
  16. using Moq;
  17. using NUnit.Framework;
  18. [TestFixture]
  19. public class AutofacJobFactoryTests : MockedTestsBase
  20. {
  21. private IContainer _container;
  22. private AutofacJobFactory _factory;
  23. private Mock<IScheduler> _scheduler;
  24. private class NonInterruptableJob : IJob
  25. {
  26. public void Execute(IJobExecutionContext context)
  27. {
  28. }
  29. }
  30. private class InterruptableJob : IJob, IInterruptableJob
  31. {
  32. public void Interrupt()
  33. {
  34. }
  35. public void Execute(IJobExecutionContext context)
  36. {
  37. }
  38. }
  39. protected override void DoSetup()
  40. {
  41. _container = CreateContainer();
  42. _scheduler = Mockery.Create<IScheduler>();
  43. _factory = new AutofacJobFactory(_container.Resolve<ILifetimeScope>(), "job-scope");
  44. }
  45. private TriggerFiredBundle CreateBundle<TJob>()
  46. {
  47. var jobDetailImpl = new JobDetailImpl {JobType = typeof (TJob)};
  48. var trigger = Mockery.Create<IOperableTrigger>();
  49. var calendar = Mockery.Create<ICalendar>();
  50. return new TriggerFiredBundle(jobDetailImpl, trigger.Object, calendar.Object, false, DateTimeOffset.Now,
  51. DateTimeOffset.Now, null, null);
  52. }
  53. protected override void DoTearDown()
  54. {
  55. _container.Dispose();
  56. base.DoTearDown();
  57. }
  58. private static IContainer CreateContainer()
  59. {
  60. var cb = new ContainerBuilder();
  61. cb.RegisterType<NonInterruptableJob>().AsSelf();
  62. cb.RegisterType<InterruptableJob>().AsSelf();
  63. return cb.Build();
  64. }
  65. [Test]
  66. public void Should_Create_NonInterruptableWrapper_For_NonInterruptableJob()
  67. {
  68. var bundle = CreateBundle<NonInterruptableJob>();
  69. var job = _factory.NewJob(bundle, _scheduler.Object);
  70. (job as IInterruptableJob).Should().BeNull("wrapper should not implement IInterruptableJob");
  71. }
  72. [Test]
  73. public void Should_Create_InterruptableWrapper_For_InterruptableJob()
  74. {
  75. var bundle = CreateBundle<InterruptableJob>();
  76. var job = _factory.NewJob(bundle, _scheduler.Object);
  77. (job as IInterruptableJob).Should().NotBeNull("wrapper should implement IInterruptableJob for interruptable jobs");
  78. }
  79. }
  80. }