Пример #1
0
        /// <summary>
        /// Resolves a <see cref="ProjectTemplateDbContext"/> service scope and executes a delegate action.
        /// The scoped DbContext is disposed after the delegate is executed.
        /// </summary>
        /// <param name="action">The delegate <see cref="Action"/> to execute with the scoped <see cref="ProjectTemplateDbContext"/></param>
        public static void ExecuteWithDbScope(this IServiceProvider provider, Action <ProjectTemplateDbContext> action)
        {
            using IServiceScope scope = provider.CreateScope();
            ProjectTemplateDbContext db = scope.ServiceProvider.GetRequiredService <ProjectTemplateDbContext>();

            action.Invoke(db);
        }
Пример #2
0
        /// <summary>
        /// Asynchronously resolves a <see cref="ProjectTemplateDbContext"/> service scope and executes a delegate function.
        /// The scoped DbContext is disposed after the delegate is executed.
        /// </summary>
        /// <param name="func">The delegate <see cref="Func{T, TResult}"/> to execute with the scoped <see cref="ProjectTemplateDbContext"/></param>
        public static async Task <TResult> ExecuteWithDbScope <TResult>(this IServiceProvider provider, Func <ProjectTemplateDbContext, Task <TResult> > func)
        {
            using IServiceScope scope = provider.CreateScope();
            ProjectTemplateDbContext db = scope.ServiceProvider.GetRequiredService <ProjectTemplateDbContext>();

            return(await func.Invoke(db).ConfigureAwait(false));
        }
 // Query handler constructor
 public LibraryQueryHandler(
     IMediator mediator,
     ProjectTemplateDbContext database,
     IMapper mapper,
     IAuthorizationService authorizationService)
     : base(mediator, database, mapper, authorizationService)
 {
 }
Пример #4
0
 public static Project CreateValidNewProject(ProjectTemplateDbContext database, Group group = null)
 {
     return(new Project()
     {
         Name = RandomFactory.GetCodeName(),
         Group = group ?? GetRandomGroup(database)
     });
 }
Пример #5
0
 public static Group CreateValidNewGroup(ProjectTemplateDbContext database, string name = "")
 {
     return(new Group()
     {
         Name = name.Length == 0 ? RandomFactory.GetAlphanumericString(8) : name,
         IsActive = RandomFactory.GetBoolean()
     });
 }
 public CreateGroupCommandHandler(
     IMediator mediator,
     ProjectTemplateDbContext database,
     IMapper mapper,
     IAuthorizationService authorizationService)
     : base(mediator, database, mapper, authorizationService)
 {
 }
Пример #7
0
 protected CommandHandlerBase(
     IMediator mediator,
     ProjectTemplateDbContext database,
     IMapper mapper,
     IAuthorizationService authorizationService)
     : base(mediator, database, mapper, authorizationService)
 {
 }
 protected QueryHandlerBase(
     IMediator mediator,
     ProjectTemplateDbContext database,
     IMapper mapper,
     IAuthorizationService authorizationService)
     : base(mediator, database, mapper, authorizationService)
 {
     // queries do not make changes to the database so we do not need ChangeTracker
     database.ChangeTracker.QueryTrackingBehavior = EntityFrameworkCore.QueryTrackingBehavior.NoTracking;
 }
 protected HandlerBase(
     IMediator mediator,
     ProjectTemplateDbContext database,
     IMapper mapper,
     IAuthorizationService authorizationService)
 {
     Mediator             = mediator;
     Database             = database;
     Mapper               = mapper;
     AuthorizationService = authorizationService;
 }
Пример #10
0
 public GroupCreatedEventHandler(
     IMediator mediator,
     ProjectTemplateDbContext database,
     IMapper mapper,
     IAuthorizationService authorizationService,
     IEmailService emailService,
     ILogger <GroupCreatedEventHandler> logger)
     : base(mediator, database, mapper, authorizationService)
 {
     _emailService = emailService;
     _logger       = logger;
 }
Пример #11
0
        /// <summary>
        /// Execute a query against an in-memory database seeded with test data and then check assertions using the return value.
        /// </summary>
        /// <remarks>To test methods which we expect to throw an exception, don't specify <paramref name="assertions"/>.</remarks>
        /// <param name="func">Function to execute.</param>
        /// <param name="assertions">Assertions to execute after the function has executed.</param>
        protected async Task ExecuteWithDb <TResult>(
            Func <ProjectTemplateDbContext, Task <TResult> > func,
            Action <TResult, ProjectTemplateDbContext> assertions = null)
        {
            using (var db = new ProjectTemplateDbContext(CreateInMemoryContextOptions()))
            {
                // seed test data
                new TestDataSeeder(db, LoggerFactory.CreateLogger <TestDataSeeder>()).SeedTestData();

                // execute our test
                var result = await func(db);

                // check our test results
                assertions?.Invoke(result, db);
            }
        }
Пример #12
0
        // Create a new library
        public static Library CreateValidNewLibrary(ProjectTemplateDbContext database, string name = "")
        {
            // Create a new random address
            var address = new Address()
            {
                LocationAddressLine1  = RandomFactory.GetStreetAddress(),
                LocationAddressLine2  = "",
                LocationCity          = RandomFactory.GetCity(),
                LocationStateProvince = RandomFactory.GetState(),
                LocationZipCode       = RandomFactory.GetZip(),
                LocationCountry       = "US"
            };

            var library = new Library()
            {
                Name    = RandomFactory.GetLibraryName(),
                Address = address
            };

            return(library);
        }
 public TestDataSeeder(ProjectTemplateDbContext context, ILogger <TestDataSeeder> logger)
 {
     _dbContext = context;
     _logger    = logger;
 }
Пример #14
0
 // Retrieves a random library from the database
 public static Library GetRandomLibrary(ProjectTemplateDbContext database)
 {
     return(database.Libraries.OrderBy(x => Guid.NewGuid()).First());
 }
Пример #15
0
        public static GroupDto CreateValidNewGroupDto(ProjectTemplateDbContext database, IMapper mapper, string name = "")
        {
            var group = CreateValidNewGroup(database, name);

            return(mapper.Map <GroupDto>(group));
        }
Пример #16
0
 public static Group GetRandomGroup(ProjectTemplateDbContext database)
 {
     return(database.Groups.OrderBy(x => Guid.NewGuid()).First());
 }