private static INamedServiceFactory <IClassifierRepository> CreateClassifierRepositoryFactory(IDbContextFactory dbContextFactory) { var classifierTypeRepository = new DbClassifierTypeRepository(dbContextFactory); var classifierTypeService = new DbClassifierTypeService(dbContextFactory, classifierTypeRepository); var fieldProviderRegistry = new DefaultFieldProviderRegistry(); fieldProviderRegistry.AddFieldType(typeof(TextField)); var dbFieldDataRepository = new DbFieldDataRepository(dbContextFactory, fieldProviderRegistry); var metadataServiceMock = new Mock <IClassifierTypeMetadataService>(); var classifierRepository = new DbClassifierRepository <Classifier>(dbContextFactory, classifierTypeService, null, metadataServiceMock.Object, dbFieldDataRepository, null); var numeratorRepository = new DbNumeratorRepository(dbContextFactory, classifierTypeService, null, metadataServiceMock.Object, dbFieldDataRepository, null); var classifierRepositoryFactoryMock = new Mock <INamedServiceFactory <IClassifierRepository> >(); classifierRepositoryFactoryMock .Setup(x => x.GetNamedOrDefaultService(It.Is <string>(name => name == ClassifierTypeCode.Numerator))) .Returns(() => numeratorRepository); classifierRepositoryFactoryMock .Setup(x => x.GetNamedOrDefaultService(It.Is <string>(name => name != ClassifierTypeCode.Numerator))) .Returns(() => classifierRepository); return(classifierRepositoryFactoryMock.Object); }
public async Task GetInvitationList_ForNormalRequest_ReturnItems() { // arrange var cancellationToken = CancellationToken.None; var dbContextFactory = new DefaultDbContextFactory(); var classifierTypeRepository = new DbClassifierTypeRepository(dbContextFactory); var classifierTypeService = new DbClassifierTypeService(dbContextFactory, classifierTypeRepository); var fieldProviderRegistry = new DefaultFieldProviderRegistry(); fieldProviderRegistry.AddFieldType(typeof(TextField)); var dbFieldDataRepository = new DbFieldDataRepository(dbContextFactory, fieldProviderRegistry); var metadataServiceMock = new Mock <IClassifierTypeMetadataService>(); metadataServiceMock .Setup(x => x.GetMetadata(It.IsAny <ClassifierType>(), It.IsAny <CancellationToken>())) .ReturnsAsync(() => new FieldMetadata[] { new TextField { Key = "test1", Active = true, System = false }, new TextField { Key = "test2", Active = true, System = false }, new TextField { Key = "test3", Active = true, System = false } }); var classifierRepository = new DbClassifierRepository <Classifier>(dbContextFactory, classifierTypeService, null, metadataServiceMock.Object, dbFieldDataRepository, null); var handler = new GetInvitationListHandler(dbContextFactory, classifierRepository); // act var command = new GetInvitationList { UserUid = Guid.NewGuid(), }; var result = await handler.Handle(command, cancellationToken); // assert Assert.IsNotNull(result); Assert.IsNotNull(result.Rows); }
public INamedServiceFactory <IClassifierRepository> Build() { var classifierTypeRepository = new DbClassifierTypeRepository(_dbContextFactory); var classifierTypeService = new DbClassifierTypeService(_dbContextFactory, classifierTypeRepository); var fieldProviderRegistry = new DefaultFieldProviderRegistry(); fieldProviderRegistry.AddFieldType(typeof(TextField)); var dbFieldDataRepository = new DbFieldDataRepository(_dbContextFactory, fieldProviderRegistry); var metadataServiceMock = new Mock <IClassifierTypeMetadataService>(); metadataServiceMock .Setup(x => x.GetMetadata(It.IsAny <ClassifierType>(), It.IsAny <CancellationToken>())) .ReturnsAsync(() => new FieldMetadata[] { /*new TextField { Key = "test1", Active = true, System = false }, * new TextField { Key = "test2", Active = true, System = false }, * new TextField { Key = "test3", Active = true, System = false }*/ }); var identityServiceFactory = new IdentityServiceFactory(); var roleRepository = new DbRoleRepository(new NullLogger <DbRoleRepository>(), _dbContextFactory, classifierTypeService, null, metadataServiceMock.Object, dbFieldDataRepository, null, identityServiceFactory.RoleManager); var userRepository = new DbUserRepository(new NullLogger <DbUserRepository>(), _dbContextFactory, classifierTypeService, null, metadataServiceMock.Object, dbFieldDataRepository, null, identityServiceFactory.UserManager); var classifierRepositoryFactoryMock = new Mock <INamedServiceFactory <IClassifierRepository> >(); classifierRepositoryFactoryMock .Setup(x => x.GetNamedOrDefaultService(It.Is <string>(name => name == RoleTypeCode))) .Returns(() => roleRepository); classifierRepositoryFactoryMock .Setup(x => x.GetNamedOrDefaultService(It.Is <string>(name => name == UserTypeCode))) .Returns(() => userRepository); classifierRepositoryFactoryMock .Setup(x => x.GetNamedOrDefaultService(It.Is <string>(name => name != RoleTypeCode && name != UserTypeCode))) .Throws <InvalidOperationException>(); return(classifierRepositoryFactoryMock.Object); }
private static INamedServiceFactory <IClassifierRepository> CreateClassifierRepositoryFactory(IDbContextFactory dbContextFactory) { var classifierTypeRepository = new DbClassifierTypeRepository(dbContextFactory); var classifierTypeService = new DbClassifierTypeService(dbContextFactory, classifierTypeRepository); var fieldProviderRegistry = new DefaultFieldProviderRegistry(); fieldProviderRegistry.AddFieldType(typeof(TextField)); var dbFieldDataRepository = new DbFieldDataRepository(dbContextFactory, fieldProviderRegistry); var metadataServiceMock = new Mock <IClassifierTypeMetadataService>(); metadataServiceMock .Setup(x => x.GetMetadata(It.IsAny <ClassifierType>(), It.IsAny <CancellationToken>())) .ReturnsAsync(() => new FieldMetadata[] { new TextField { Key = "test1", Active = true, System = false }, new TextField { Key = "test2", Active = true, System = false }, new TextField { Key = "test3", Active = true, System = false } }); var classifierRepository = new DbClassifierRepository <Classifier>(dbContextFactory, classifierTypeService, null, metadataServiceMock.Object, dbFieldDataRepository, null); var numeratorRepository = new DbNumeratorRepository(dbContextFactory, classifierTypeService, null, metadataServiceMock.Object, dbFieldDataRepository, null); var classifierRepositoryFactoryMock = new Mock <INamedServiceFactory <IClassifierRepository> >(); classifierRepositoryFactoryMock .Setup(x => x.GetNamedOrDefaultService(It.Is <string>(name => name == NumeratorTypeCode))) .Returns(() => numeratorRepository); classifierRepositoryFactoryMock .Setup(x => x.GetNamedOrDefaultService(It.Is <string>(name => name != NumeratorTypeCode))) .Returns(() => classifierRepository); return(classifierRepositoryFactoryMock.Object); }
public MasterDataDbGenerator(IUnitOfWorkFactory unitOfWorkFactory, IDbContextFactory dbContextFactory) { _dbContextFactory = dbContextFactory; var dateTimeProvider = new DefaultDateTimeProvider(); var jsonSerializer = new NewtonsoftJsonSerializer(); var classifierTreeRepository = new DbClassifierTreeRepository(dbContextFactory); var classifierTypeRepository = new DbClassifierTypeRepository(dbContextFactory); var fieldProviderRegistry = new DefaultFieldProviderRegistry(); fieldProviderRegistry.AddFieldType(typeof(TextField)); fieldProviderRegistry.AddFieldType(typeof(TextAreaField)); var dbFieldMetadataRepository = new DbFieldMetadataRepository(dbContextFactory, fieldProviderRegistry, jsonSerializer); var dbFieldDataRepository = new DbFieldDataRepository(dbContextFactory, fieldProviderRegistry); var dbFieldMetadataService = new DbFieldMetadataService(dbContextFactory, dateTimeProvider, jsonSerializer); _classifierTypeService = new DbClassifierTypeService(dbContextFactory, classifierTypeRepository); _getClassifierTreeListHandler = new GetClassifierTreeListHandler(classifierTreeRepository); _insertClassifierTreeTypeHandler = new InsertClassifierTreeHandler(unitOfWorkFactory, dbContextFactory, _classifierTypeService); _insertClassifierTypeHandler = new InsertClassifierTypeHandler(unitOfWorkFactory, _classifierTypeService, dbFieldMetadataService); _insertClassifierGroupHandler = new InsertClassifierGroupHandler(unitOfWorkFactory, dbContextFactory, _classifierTypeService); _classifierTypeRegistrator = new DefaultClassifierTypeRegistrator(new NullLogger <DefaultClassifierTypeRegistrator>(), unitOfWorkFactory, _classifierTypeService, dbFieldMetadataService); var classifierTypeMetadataService = new ClassifierTypeMetadataService(dbFieldMetadataRepository); var classifierTreeService = new DefaultClassifierTreeService(classifierTreeRepository); var dbNumberGenerator = new DbNumberGenerator(dbContextFactory, null, dateTimeProvider, null); var classifierRepositoryFactory = new ClassifierRepositoryFactory(new DbClassifierRepository <Classifier>( dbContextFactory, _classifierTypeService, classifierTreeService, classifierTypeMetadataService, dbFieldDataRepository, dbNumberGenerator)); _insertClassifierHandler = new InsertClassifierHandler(unitOfWorkFactory, classifierRepositoryFactory); _updateClassifierGroupHandler = new UpdateClassifierGroupHandler(unitOfWorkFactory, dbContextFactory, _classifierTypeService); _deleteClassifierGroupHandler = new DeleteClassifierGroupHandler(unitOfWorkFactory, dbContextFactory, _classifierTypeService); _insertClassifierLinkHandler = new InsertClassifierLinkHandler(unitOfWorkFactory, dbContextFactory, _classifierTypeService); _getClassifierLinkListHandler = new GetClassifierLinkListHandler(dbContextFactory, _classifierTypeService); }
public async Task ExportClassifierList_Should_ReturnStream() { // arrange var cancellationToken = new CancellationToken(); var unitOfWorkFactory = new TransactionScopeUnitOfWorkFactory(); var dbContextFactory = new DefaultDbContextFactory(); var classifierTypeRepository = new DbClassifierTypeRepository(dbContextFactory); var classifierTypeService = new DbClassifierTypeService(dbContextFactory, classifierTypeRepository); var fieldProviderRegistry = new DefaultFieldProviderRegistry(); fieldProviderRegistry.AddFieldType(typeof(TextField)); fieldProviderRegistry.AddFieldType(typeof(TextAreaField)); var dbFieldDataRepository = new DbFieldDataRepository(dbContextFactory, fieldProviderRegistry); var metadataServiceMock = new Mock <IClassifierTypeMetadataService>(); metadataServiceMock .Setup(x => x.GetMetadata(It.IsAny <ClassifierType>(), It.IsAny <CancellationToken>())) .ReturnsAsync(() => new FieldMetadata[] { new TextField { Key = "test1", Active = true, System = false }, new TextField { Key = "test2", Active = true, System = false }, new TextField { Key = "test3", Active = true, System = false } }); var generator = new MasterDataDbGenerator(unitOfWorkFactory, dbContextFactory); var classifierRepository = new DbClassifierRepository <Classifier>( dbContextFactory, classifierTypeService, null, metadataServiceMock.Object, dbFieldDataRepository, null); var classifierRepositoryFactoryMock = new Mock <INamedServiceFactory <IClassifierRepository> >(); classifierRepositoryFactoryMock .Setup(x => x.GetNamedOrDefaultService(generator.TypeCode)) .Returns(() => classifierRepository); var handler = new ExportClassifierListHandler(classifierRepositoryFactoryMock.Object); using (var _ = unitOfWorkFactory.Create()) { // arrange await generator.InsertType(HierarchyType.None, cancellationToken); for (var i = 0; i < 100; i++) { await generator.InsertItem($"{i:D4}", null, cancellationToken); } // act var command = new ExportClassifierList { TypeCode = generator.TypeCode }; var result = await handler.Handle(command, cancellationToken); // assert Assert.IsNotNull(result); Assert.IsNotNull(result.Stream); Assert.IsNotNull(result.FileName); Assert.IsNotNull(result.ContentType); // temp using (var fs = new FileStream(result.FileName, FileMode.OpenOrCreate)) { await result.Stream.CopyToAsync(fs, cancellationToken); } } }
public async Task CreateCompany_Should_CreateCompany() { // arrange var cancellationToken = new CancellationToken(); var unitOfWorkFactory = new TransactionScopeUnitOfWorkFactory(); var dbContextFactory = new DefaultDbContextFactory(); var dateTimeProvider = new DefaultDateTimeProvider(); var mediatorMock = new Mock <IPublisher>(); var fieldProviderRegistry = new DefaultFieldProviderRegistry(); fieldProviderRegistry.AddFieldType(typeof(TextField)); // var dbFieldMetadataRepository = new DbFieldMetadataRepository(dbContextFactory, fieldProviderRegistry, new NewtonsoftJsonSerializer()); var dbFieldDataRepository = new DbFieldDataRepository(dbContextFactory, fieldProviderRegistry); var classifierRepositoryFactory = CreateClassifierRepositoryFactory(dbContextFactory); var dbNumberGenerator = new DbNumberGenerator(dbContextFactory, classifierRepositoryFactory, dateTimeProvider, Array.Empty <INumberTagResolver>()); var dbDocumentService = new DbDocumentService(dbContextFactory, dbNumberGenerator, mediatorMock.Object); var jsonSerializer = new DefaultJsonSerializer(); var auditLogService = new DbAuditLogService(dbContextFactory, jsonSerializer); var classifierRegistrator = new DefaultClassifierRegistrator(NullLogger <DefaultClassifierRegistrator> .Instance, classifierRepositoryFactory); var metadataRepositoryMock = new Mock <IRepository <FieldMetadata> >(); metadataRepositoryMock .Setup(x => x.Search(It.IsAny <MetadataSearchRequest>(), It.IsAny <CancellationToken>())) .ReturnsAsync(() => new SearchResult <FieldMetadata> { Rows = new FieldMetadata[] { new TextField { Key = "test1", Active = true, System = false }, new TextField { Key = "test2", Active = true, System = false }, new TextField { Key = "test3", Active = true, System = false } } }); var backgroundJobManagerMock = new Mock <IBackgroundJobManager>(); var generator = new MasterDataDbGenerator(unitOfWorkFactory, dbContextFactory); var handler = new CreateCompanyHandler(unitOfWorkFactory, dbContextFactory, dateTimeProvider, metadataRepositoryMock.Object, dbFieldDataRepository, classifierRepositoryFactory, dbDocumentService, auditLogService, backgroundJobManagerMock.Object); using (var _ = unitOfWorkFactory.Create()) { await generator.EnsureClassifierTypeRegistered(Numerator.GetDefaultMetadata(), cancellationToken); await generator.EnsureClassifierTypeRegistered(DocumentType.GetDefaultMetadata(), cancellationToken); foreach (var classifier in RegisterClassifiersStartupTask.GetClassifiers()) { await classifierRegistrator.Register(classifier, cancellationToken); } // act var company = new Company { ConfigCode = "company", Name = "Montr Inc.", Fields = new FieldData { { "test1", "value1" }, { "test2", "value2" }, { "test3", "value3" } } }; var command = new CreateCompany { UserUid = Guid.NewGuid(), Item = company }; var result = await handler.Handle(command, cancellationToken); // assert Assert.IsNotNull(result); Assert.IsTrue(result.Success); Assert.IsNotNull(result.Uid); Assert.AreNotEqual(Guid.Empty, result.Uid); // assert registration request inserted DbDocument dbDocument; using (var db = dbContextFactory.Create()) { dbDocument = await db.GetTable <DbDocument>() .Where(x => x.CompanyUid == result.Uid) .SingleAsync(cancellationToken); } Assert.IsNotNull(dbDocument); // assert registration request field data inserted IList <DbFieldData> fieldData; using (var db = dbContextFactory.Create()) { fieldData = await db.GetTable <DbFieldData>() .Where(x => x.EntityTypeCode == Document.TypeCode && x.EntityUid == dbDocument.Uid) .ToListAsync(cancellationToken); } Assert.AreEqual(company.Fields.Count, fieldData.Count); Assert.AreEqual(company.Fields["test1"], fieldData.Single(x => x.Key == "test1").Value); Assert.AreEqual(company.Fields["test2"], fieldData.Single(x => x.Key == "test2").Value); Assert.AreEqual(company.Fields["test3"], fieldData.Single(x => x.Key == "test3").Value); } }
public async Task Handle_NormalValues_InsertInvitation() { // arrange var cancellationToken = new CancellationToken(); var unitOfWorkFactory = new TransactionScopeUnitOfWorkFactory(); var dbContextFactory = new DefaultDbContextFactory(); var classifierTypeRepository = new DbClassifierTypeRepository(dbContextFactory); var classifierTypeService = new DbClassifierTypeService(dbContextFactory, classifierTypeRepository); var fieldProviderRegistry = new DefaultFieldProviderRegistry(); fieldProviderRegistry.AddFieldType(typeof(TextField)); var dbFieldDataRepository = new DbFieldDataRepository(dbContextFactory, fieldProviderRegistry); var metadataServiceMock = new Mock <IClassifierTypeMetadataService>(); metadataServiceMock .Setup(x => x.GetMetadata(It.IsAny <ClassifierType>(), It.IsAny <CancellationToken>())) .ReturnsAsync(() => new FieldMetadata[] { new TextField { Key = "test1", Active = true, System = false }, new TextField { Key = "test2", Active = true, System = false }, new TextField { Key = "test3", Active = true, System = false } }); var classifierRepository = new DbClassifierRepository <Classifier>(dbContextFactory, classifierTypeService, null, metadataServiceMock.Object, dbFieldDataRepository, null); var generator = new MasterDataDbGenerator(unitOfWorkFactory, dbContextFactory); var classifierRepositoryFactoryMock = new Mock <INamedServiceFactory <IClassifierRepository> >(); classifierRepositoryFactoryMock .Setup(x => x.GetNamedOrDefaultService(It.IsAny <string>())) .Returns(() => classifierRepository); var handler = new InsertInvitationHandler(unitOfWorkFactory, dbContextFactory, classifierRepositoryFactoryMock.Object); using (var _ = unitOfWorkFactory.Create()) { // act var command = new InsertInvitation { UserUid = generator.UserUid, CompanyUid = generator.CompanyUid, EventUid = Guid.Parse("436c290c-37b2-11e9-88fe-00ff279ba9e1"), Items = new [] { new Invitation { CounterpartyUid = Guid.Parse("1bef28d6-2255-416c-a706-008e0c179508") } } }; var result = await handler.Handle(command, cancellationToken); // assert Assert.IsNotNull(result); Assert.IsTrue(result.Success); Assert.AreEqual(1, result.AffectedRows); } }
public async Task GetClassifierList_Should_ReturnList() { // arrange var cancellationToken = CancellationToken.None; var dbContextFactory = new DefaultDbContextFactory(); var unitOfWorkFactory = new TransactionScopeUnitOfWorkFactory(); var classifierTypeRepository = new DbClassifierTypeRepository(dbContextFactory); var classifierTypeService = new DbClassifierTypeService(dbContextFactory, classifierTypeRepository); var fieldProviderRegistry = new DefaultFieldProviderRegistry(); fieldProviderRegistry.AddFieldType(typeof(TextField)); var dbFieldDataRepository = new DbFieldDataRepository(dbContextFactory, fieldProviderRegistry); var metadataServiceMock = new Mock <IClassifierTypeMetadataService>(); metadataServiceMock .Setup(x => x.GetMetadata(It.IsAny <ClassifierType>(), It.IsAny <CancellationToken>())) .ReturnsAsync(() => new FieldMetadata[] { new TextField { Key = "test1", Active = true, System = false }, new TextField { Key = "test2", Active = true, System = false }, new TextField { Key = "test3", Active = true, System = false } }); var classifierRepository = new DbClassifierRepository <Classifier>( dbContextFactory, classifierTypeService, null, metadataServiceMock.Object, dbFieldDataRepository, null); var classifierRepositoryFactoryMock = new Mock <INamedServiceFactory <IClassifierRepository> >(); classifierRepositoryFactoryMock.Setup(x => x.GetNamedOrDefaultService(It.IsAny <string>())).Returns(classifierRepository); var handler = new GetClassifierListHandler(classifierRepositoryFactoryMock.Object); var generator = new MasterDataDbGenerator(unitOfWorkFactory, dbContextFactory); using (var _ = unitOfWorkFactory.Create()) { // arrange await generator.InsertType(HierarchyType.None, cancellationToken); for (var i = 0; i < 42; i++) { await generator.InsertItem($"{i:D4}", null, cancellationToken); } // act var command = new GetClassifierList { TypeCode = generator.TypeCode }; var result = await handler.Handle(command, cancellationToken); // assert Assert.IsNotNull(result); Assert.AreEqual(10, result.Rows.Count); Assert.AreEqual(42, result.TotalCount); } }