public void When_resource_has_constructor_with_injectable_parameter_it_must_succeed() { // Arrange var contextOptions = new DbContextOptionsBuilder <AppDbContext>().Options; var systemClock = new FrozenSystemClock(); var appDbContext = new AppDbContext(contextOptions, systemClock); using var serviceContainer = new ServiceContainer(); serviceContainer.AddService(typeof(DbContextOptions <AppDbContext>), contextOptions); serviceContainer.AddService(typeof(ISystemClock), systemClock); serviceContainer.AddService(typeof(AppDbContext), appDbContext); var factory = new DefaultResourceFactory(serviceContainer); // Act NewExpression newExpression = factory.CreateNewExpression(typeof(ResourceWithDbContextConstructor)); // Assert var function = Expression .Lambda <Func <ResourceWithDbContextConstructor> >(newExpression) .Compile(); ResourceWithDbContextConstructor resource = function(); Assert.NotNull(resource); Assert.Equal(appDbContext, resource.AppDbContext); }
public async Task Can_Select_Sparse_Fieldsets() { // Arrange var todoItem = new TodoItem { Description = "description", Ordinal = 1, CreatedDate = new DateTime(2002, 2, 2), AchievedDate = new DateTime(2002, 2, 4) }; _dbContext.TodoItems.Add(todoItem); await _dbContext.SaveChangesAsync(); var properties = _resourceGraph .GetAttributes <TodoItem>(e => new { e.Id, e.Description, e.CreatedDate, e.AchievedDate }) .Select(x => x.PropertyInfo.Name); var resourceFactory = new DefaultResourceFactory(new ServiceContainer()); // Act var query = _dbContext .TodoItems .Where(t => t.Id == todoItem.Id) .Select(properties, resourceFactory); var result = await query.FirstAsync(); // Assert Assert.Equal(0, result.Ordinal); Assert.Equal(todoItem.Description, result.Description); Assert.Equal(todoItem.CreatedDate.ToString("G"), result.CreatedDate.ToString("G")); Assert.Equal(todoItem.AchievedDate.GetValueOrDefault().ToString("G"), result.AchievedDate.GetValueOrDefault().ToString("G")); }
private DefaultResourceRepository <TodoItem> Setup() { var contextResolverMock = new Mock <IDbContextResolver>(); contextResolverMock.Setup(m => m.GetContext()).Returns(new Mock <DbContext>().Object); var resourceGraph = new Mock <IResourceGraph>(); var targetedFields = new Mock <ITargetedFields>(); var resourceFactory = new DefaultResourceFactory(new ServiceContainer()); var repository = new DefaultResourceRepository <TodoItem>(targetedFields.Object, contextResolverMock.Object, resourceGraph.Object, null, resourceFactory, NullLoggerFactory.Instance); return(repository); }
private (DefaultResourceRepository <TodoItem> Repository, Mock <ITargetedFields> TargetedFields) Setup(AppDbContext context) { var serviceProvider = ((IInfrastructure <IServiceProvider>)context).Instance; var resourceFactory = new DefaultResourceFactory(serviceProvider); var contextResolverMock = new Mock <IDbContextResolver>(); contextResolverMock.Setup(m => m.GetContext()).Returns(context); var resourceGraph = new ResourceGraphBuilder(new JsonApiOptions(), NullLoggerFactory.Instance).AddResource <TodoItem>().Build(); var targetedFields = new Mock <ITargetedFields>(); var repository = new DefaultResourceRepository <TodoItem>(targetedFields.Object, contextResolverMock.Object, resourceGraph, null, resourceFactory, NullLoggerFactory.Instance); return(repository, targetedFields); }
protected void AddResource(string name, string resourceName, Assembly asm) { IResourceFactory resourceFactory = new DefaultResourceFactory(); var descriptor = new ResourceDescriptor( null, name, resourceName, null, null); var resource = resourceFactory.Create( descriptor, asm); ControllerContext.Resources.Add(name, resource); }
public void When_resource_has_constructor_with_string_parameter_it_must_fail() { // Arrange var factory = new DefaultResourceFactory(new ServiceContainer()); // Act Action action = () => factory.CreateNewExpression(typeof(ResourceWithStringConstructor)); // Assert var exception = Assert.Throws <InvalidOperationException>(action); Assert.Equal( "Failed to create an instance of 'UnitTests.Models.ResourceWithStringConstructor': Parameter 'text' could not be resolved.", exception.Message); }
public void When_resource_has_default_constructor_it_must_succeed() { // Arrange var factory = new DefaultResourceFactory(new ServiceContainer()); // Act NewExpression newExpression = factory.CreateNewExpression(typeof(ResourceWithoutConstructor)); // Assert var function = Expression .Lambda <Func <ResourceWithoutConstructor> >(newExpression) .Compile(); ResourceWithoutConstructor resource = function(); Assert.NotNull(resource); }
/// <summary> /// Initializes a new instance of the <see cref="StubMonoRailServices"/> class. /// </summary> /// <param name="urlBuilder">The URL builder.</param> /// <param name="filterFactory">The filter factory.</param> /// <param name="viewEngineManager">The view engine manager.</param> /// <param name="actionSelector">The action selector.</param> /// <param name="dynamicActionProviderFactory">The dynamic action provider factory.</param> public StubMonoRailServices(IUrlBuilder urlBuilder, IFilterFactory filterFactory, IViewEngineManager viewEngineManager, IActionSelector actionSelector, IDynamicActionProviderFactory dynamicActionProviderFactory) { this.UrlBuilder = urlBuilder; this.FilterFactory = filterFactory; this.ViewEngineManager = viewEngineManager; this.ActionSelector = actionSelector; this.DynamicActionProviderFactory = dynamicActionProviderFactory; controllerTree = new DefaultControllerTree(); ControllerFactory = new DefaultControllerFactory(controllerTree); StaticResourceRegistry = new DefaultStaticResourceRegistry(); ControllerContextFactory = new DefaultControllerContextFactory(); ControllerDescriptorProvider = new DefaultControllerDescriptorProvider( new DefaultHelperDescriptorProvider(), new DefaultFilterDescriptorProvider(), new DefaultLayoutDescriptorProvider(), new DefaultRescueDescriptorProvider(), new DefaultResourceDescriptorProvider(), new DefaultTransformFilterDescriptorProvider(), new DefaultReturnBinderDescriptorProvider(), new DefaultDynamicActionProviderDescriptorProvider()); ResourceFactory = new DefaultResourceFactory(); ScaffoldingSupport = new StubScaffoldingSupport(); CacheProvider = new StubCacheProvider(); HelperFactory = new DefaultHelperFactory(); ServiceInitializer = new DefaultServiceInitializer(); ExtensionManager = new ExtensionManager(this); ValidatorRegistry = new CachedValidationRegistry(); JSONSerializer = new NewtonsoftJSONSerializer(); DictionaryAdapterFactory = new DictionaryAdapterFactory(); ScriptBuilder = new DefaultScriptBuilder(); }
protected void AddResource(string name, string resourceName, Assembly asm) { IResourceFactory resourceFactory = new DefaultResourceFactory(); ResourceDescriptor descriptor = new ResourceDescriptor( null, name, resourceName, null, null); IResource resource = resourceFactory.Create( descriptor, asm); ControllerContext.Resources.Add(name, resource); }