Exemple #1
0
        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);
        }
Exemple #5
0
        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);
        }
Exemple #6
0
        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);
            }
        }
Exemple #8
0
        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);
            }
        }