public void TestThatDataSourceGetAddCandidateKeys()
        {
            var oldToNewMetadataRepository = new OldToNewMetadataRepository(RepositoryTestHelper.GetSourcePathForTest(), GetConfigurationValuesMock());

            Assert.That(oldToNewMetadataRepository, Is.Not.Null);

            var dataSource = oldToNewMetadataRepository.DataSourceGet();

            Assert.That(dataSource, Is.Not.Null);
            Assert.That(dataSource.Tables, Is.Not.Null);

            var table = dataSource.Tables.Single(m => String.Compare(m.NameSource, "SAG", StringComparison.Ordinal) == 0);

            Assert.That(table, Is.Not.Null);
            Assert.That(table.CandidateKeys, Is.Not.Null);
            Assert.That(table.CandidateKeys, Is.Not.Empty);
            Assert.That(table.CandidateKeys.Count, Is.EqualTo(1));

            Assert.That(table.CandidateKeys.ElementAt(0).NameSource, Is.Not.Null);
            Assert.That(table.CandidateKeys.ElementAt(0).NameSource, Is.Not.Empty);
            Assert.That(table.CandidateKeys.ElementAt(0).NameSource, Is.EqualTo("PK_SAG"));
            Assert.That(table.CandidateKeys.ElementAt(0).NameTarget, Is.Not.Null);
            Assert.That(table.CandidateKeys.ElementAt(0).NameTarget, Is.Not.Empty);
            Assert.That(table.CandidateKeys.ElementAt(0).NameTarget, Is.EqualTo("PK_SAG"));
            Assert.That(table.CandidateKeys.ElementAt(0).Description, Is.Not.Null);
            Assert.That(table.CandidateKeys.ElementAt(0).Description, Is.Not.Empty);
            Assert.That(table.CandidateKeys.ElementAt(0).Description, Is.EqualTo("Primær nøgle på SAG"));
        }
        public void TestThatDataSourceGetAddViews()
        {
            var oldToNewMetadataRepository = new OldToNewMetadataRepository(RepositoryTestHelper.GetSourcePathForTest(), GetConfigurationValuesMock());

            Assert.That(oldToNewMetadataRepository, Is.Not.Null);

            var dataSource = oldToNewMetadataRepository.DataSourceGet();

            Assert.That(dataSource, Is.Not.Null);
            Assert.That(dataSource.Views, Is.Not.Null);
            Assert.That(dataSource.Views.Count, Is.EqualTo(1));

            var view = dataSource.Views.First();

            Assert.That(view.NameSource, Is.Not.Null);
            Assert.That(view.NameSource, Is.Not.Empty);
            Assert.That(view.NameSource, Is.EqualTo("AV_VIEW1"));
            Assert.That(view.NameTarget, Is.Not.Null);
            Assert.That(view.NameTarget, Is.Not.Empty);
            Assert.That(view.NameTarget, Is.EqualTo("AV_VIEW1"));
            Assert.That(view.Description, Is.Not.Null);
            Assert.That(view.Description, Is.Not.Empty);
            Assert.That(view.Description, Is.EqualTo("Søgning af dokumenter efter sagsnummer og datointerval"));
            Assert.That(view.SqlQuery, Is.Not.Null);
            Assert.That(view.SqlQuery, Is.Not.Empty);
            Assert.That(view.SqlQuery, Is.EqualTo("CREATE TABLE f (snr VARCHAR(16), brevdatofra DATE, brevdatotil DATE)    INSERT INTO f (snr, brevdatofra, brevdatotil) VALUES (,,)    SELECT sag.sagsnr, sag.sagstitel, doktabel.dokumenttitel, doktabel.dato    FROM sag, doktabel    WHERE     sag.sagsnr LIKE (SELECT snr FROM f)+'%'  and    doktabel.sagsid=sag.sagsid and    doktabel.dato <  (SELECT brevdatotil FROM f) and    doktabel.dato > (SELECT brevdatofra FROM f)     DROP TABLE f"));
        }
        public void TestThatDataSourceGetAreMappingCodedValues()
        {
            var oldToNewMetadataRepository = new OldToNewMetadataRepository(RepositoryTestHelper.GetSourcePathForTest(), GetConfigurationValuesMock());

            Assert.That(oldToNewMetadataRepository, Is.Not.Null);

            var dataSource = oldToNewMetadataRepository.DataSourceGet();

            Assert.That(dataSource, Is.Not.Null);
            Assert.That(dataSource.Tables, Is.Not.Null);

            var table = dataSource.Tables.Single(m => String.Compare(m.NameSource, "SAGSBEH", StringComparison.Ordinal) == 0);

            Assert.That(table, Is.Not.Null);
            Assert.That(table.Fields, Is.Not.Null);

            var field = table.Fields.Single(m => String.Compare(m.NameSource, "Kontor", StringComparison.Ordinal) == 0);

            Assert.That(field, Is.Not.Null);
            Assert.That(field.DatatypeOfSource, Is.Not.Null);
            Assert.That(field.DatatypeOfSource, Is.EqualTo(typeof(int?)));
            Assert.That(field.LengthOfSource, Is.EqualTo(2));
            Assert.That(field.DatatypeOfTarget, Is.Not.Null);
            Assert.That(field.DatatypeOfTarget, Is.EqualTo(typeof(string)));
            Assert.That(field.LengthOfTarget, Is.EqualTo(9));
            Assert.That(field.Map, Is.Not.Null);
            Assert.That(field.Map, Is.TypeOf(typeof(StaticMap <int?, string>)));
        }
        public void TestThatDataSourceGetAddsFunctionalityToAField()
        {
            var oldToNewMetadataRepository = new OldToNewMetadataRepository(RepositoryTestHelper.GetSourcePathForTest(), GetConfigurationValuesMock());

            Assert.That(oldToNewMetadataRepository, Is.Not.Null);

            var dataSource = oldToNewMetadataRepository.DataSourceGet();

            Assert.That(dataSource, Is.Not.Null);
            Assert.That(dataSource.Tables, Is.Not.Null);

            var table = dataSource.Tables.Single(m => String.Compare(m.NameSource, "SAG", StringComparison.Ordinal) == 0);

            Assert.That(table, Is.Not.Null);
            Assert.That(table.Fields, Is.Not.Null);

            var field = table.Fields.Single(m => String.Compare(m.NameSource, "SagsID", StringComparison.Ordinal) == 0);

            Assert.That(field, Is.Not.Null);
            Assert.That(field.Functionality, Is.Not.Null);
            Assert.That(field.Functionality.OfType <IMarkFunctionality>(), Is.Not.Null);
            Assert.That(field.Functionality.OfType <IMarkFunctionality>().Count(), Is.EqualTo(1));
            Assert.That(field.Functionality.OfType <IMarkFunctionality>().First(), Is.Not.Null);
            Assert.That(field.Functionality.OfType <IMarkFunctionality>().First().Functionality, Is.Not.Null);
            Assert.That(field.Functionality.OfType <IMarkFunctionality>().First().Functionality, Is.Not.Empty);
            Assert.That(field.Functionality.OfType <IMarkFunctionality>().First().Functionality, Is.EqualTo("Sagsidentifikation"));
        }
        public void TestThatDataSourceGetAddContextDocuments()
        {
            var oldToNewMetadataRepository = new OldToNewMetadataRepository(RepositoryTestHelper.GetSourcePathForTest(), GetConfigurationValuesMock());

            Assert.That(oldToNewMetadataRepository, Is.Not.Null);

            var dataSource = oldToNewMetadataRepository.DataSourceGet();

            Assert.That(dataSource, Is.Not.Null);
            Assert.That(dataSource.ContextDocuments, Is.Not.Null);
            Assert.That(dataSource.ContextDocuments.Count, Is.EqualTo(2));

            var contextDocument = dataSource.ContextDocuments.First();

            Assert.That(contextDocument.Id, Is.EqualTo(1));
            Assert.That(contextDocument.NameSource, Is.Not.Null);
            Assert.That(contextDocument.NameSource, Is.Not.Empty);
            Assert.That(contextDocument.NameSource, Is.EqualTo("ER diagram"));
            Assert.That(contextDocument.NameTarget, Is.Not.Null);
            Assert.That(contextDocument.NameTarget, Is.Not.Empty);
            Assert.That(contextDocument.NameTarget, Is.EqualTo("ER diagram"));
            Assert.That(contextDocument.Description, Is.Null);
            Assert.That(contextDocument.DocumentDate, Is.EqualTo(DateTime.Now).Within(3).Seconds);
            Assert.That(contextDocument.DocumentDatePresicion, Is.EqualTo(DateTimePresicion.Month));
            Assert.That(contextDocument.DocumentAuthors, Is.Not.Null);
            Assert.That(contextDocument.DocumentAuthors.Count, Is.EqualTo(2));
            Assert.That(contextDocument.Categories, Is.Not.Null);
            Assert.That(contextDocument.Categories.Count, Is.EqualTo(2));
            Assert.That(contextDocument.Categories.Contains(ContextDocumentCategories.ArchivalTransformationInformation), Is.True);
            Assert.That(contextDocument.Categories.Contains(ContextDocumentCategories.InformationOther), Is.True);

            Assert.That(contextDocument.Reference, Is.Not.Null);
            Assert.That(contextDocument.Reference, Is.Not.Empty);

            var directoryName = Path.GetDirectoryName(contextDocument.Reference);

            Assert.That(directoryName, Is.Not.Null);
            Assert.That(directoryName, Is.Not.Empty);

// ReSharper disable AssignNullToNotNullAttribute
            var directoryInfo = new DirectoryInfo(directoryName);

// ReSharper restore AssignNullToNotNullAttribute
            Assert.That(directoryInfo, Is.Not.Null);
            Assert.That(directoryInfo.Exists, Is.True);

            var searchPattern = Path.GetFileName(contextDocument.Reference);

            Assert.That(searchPattern, Is.Not.Null);
            Assert.That(searchPattern, Is.Not.Empty);

// ReSharper disable AssignNullToNotNullAttribute
            var files = directoryInfo.GetFiles(searchPattern);

// ReSharper restore AssignNullToNotNullAttribute
            Assert.That(files, Is.Not.Null);
            Assert.That(files.Count(), Is.EqualTo(1));
        }
        public void TestThatDataSourceGetThrowsDeliveryEngineRepositoryExceptionIfArkverTabIsNotFound()
        {
            var oldToNewMetadataRepository = new OldToNewMetadataRepository(new DirectoryInfo(Environment.ExpandEnvironmentVariables("%Temp%")), MockRepository.GenerateMock <IConfigurationValues>());

            Assert.That(oldToNewMetadataRepository, Is.Not.Null);

            var exception = Assert.Throws <DeliveryEngineRepositoryException>(() => oldToNewMetadataRepository.DataSourceGet());

            Assert.That(exception, Is.Not.Null);
            Assert.That(exception.Message, Is.Not.Null);
            Assert.That(exception.Message, Is.Not.Empty);
            Assert.That(exception.Message, Is.StringContaining("'ARKVER.TAB'"));
        }
Example #7
0
        /// <summary>
        /// Adding configuration to the container for Inversion of Control.
        /// </summary>
        /// <param name="container">Container for Inversion of Control.</param>
        public void AddConfiguration(IWindsorContainer container)
        {
            var sourcePath = ConfigurationManager.AppSettings["SourcePath"];

            if (string.IsNullOrEmpty(sourcePath))
            {
                throw new DeliveryEngineSystemException(Resource.GetExceptionMessage(ExceptionMessage.ApplicationSettingMissing, "SourcePath"));
            }

            var metadataRepository = new OldToNewMetadataRepository(new DirectoryInfo(Environment.ExpandEnvironmentVariables(sourcePath)), new ConfigurationValues());

            container.Register(Component.For <IMetadataRepository>().Instance(metadataRepository).LifeStyle.PerThread);
        }
        public void Test()
        {
            IMetadataRepository metadataRepository = new OldToNewMetadataRepository(RepositoryTestHelper.GetSourcePathForOracleTest(), new ConfigurationValues());
            IDataSource         dataSource         = metadataRepository.DataSourceGet();

            foreach (IContextDocument contextDocument in dataSource.ContextDocuments)
            {
                Debug.WriteLine(contextDocument.NameTarget);
            }
            Debug.WriteLine(string.Empty);
            Debug.WriteLine(string.Empty);
            foreach (IView view in dataSource.Views)
            {
                Debug.WriteLine(view.Description);
                Debug.WriteLine(view.SqlQuery);
                Debug.WriteLine(string.Empty);
            }
        }
        public void TestThatDataSourceGetGetsDataSource()
        {
            var oldToNewMetadataRepository = new OldToNewMetadataRepository(RepositoryTestHelper.GetSourcePathForOracleTest(), GetConfigurationValuesMock(new Fixture()));

            Assert.That(oldToNewMetadataRepository, Is.Not.Null);

            var dataSource = oldToNewMetadataRepository.DataSourceGet();

            Assert.That(dataSource, Is.Not.Null);
            Assert.That(dataSource.NameSource, Is.Not.Null);
            Assert.That(dataSource.NameSource, Is.Not.Empty);
            Assert.That(dataSource.NameSource, Is.EqualTo("Civil-, Straffe-, Foged-, Auktions- og Skiftesystem"));
            Assert.That(dataSource.NameTarget, Is.Not.Null);
            Assert.That(dataSource.NameTarget, Is.Not.Empty);
            Assert.That(dataSource.NameTarget, Is.EqualTo("Civil-, Straffe-, Foged-, Auktions- og Skiftesystem"));
            Assert.That(dataSource.Description, Is.Not.Null);
            Assert.That(dataSource.Description, Is.Not.Empty);
            Assert.That(dataSource.Description, Is.EqualTo("Civil-, Straffe-, Foged-, Auktions- og Skiftesystem"));
            Assert.That(dataSource.ArchiveInformationPackageId, Is.Not.Empty);
            Assert.That(dataSource.ArchiveInformationPackageId, Is.Not.Null);
            Assert.That(dataSource.ArchiveInformationPackageId, Is.EqualTo("12549"));
            Assert.That(dataSource.ArchiveInformationPackageIdPrevious, Is.EqualTo(10701));
            Assert.That(dataSource.ArchivePeriodStart, Is.EqualTo(new DateTime(1994, 5, 24, 0, 0, 0)));
            Assert.That(dataSource.ArchivePeriodEnd, Is.EqualTo(new DateTime(2009, 6, 30, 0, 0, 0)));
            Assert.That(dataSource.Creators, Is.Not.Null);
            Assert.That(dataSource.Creators.Count, Is.EqualTo(1));
            Assert.That(dataSource.Creators.ElementAt(0).NameSource, Is.Not.Null);
            Assert.That(dataSource.Creators.ElementAt(0).NameSource, Is.Not.Empty);
            Assert.That(dataSource.Creators.ElementAt(0).NameSource, Is.EqualTo("Retten i Åbenrå (retskreds 43)"));
            Assert.That(dataSource.Creators.ElementAt(0).NameTarget, Is.Not.Null);
            Assert.That(dataSource.Creators.ElementAt(0).NameTarget, Is.Not.Empty);
            Assert.That(dataSource.Creators.ElementAt(0).NameTarget, Is.EqualTo("Retten i Åbenrå (retskreds 43)"));
            Assert.That(dataSource.Creators.ElementAt(0).Description, Is.Null);
            Assert.That(dataSource.Creators.ElementAt(0).PeriodStart, Is.EqualTo(dataSource.ArchivePeriodStart));
            Assert.That(dataSource.Creators.ElementAt(0).PeriodEnd, Is.EqualTo(dataSource.ArchivePeriodEnd));

            Assert.That(dataSource.Tables, Is.Not.Null);
            Assert.That(dataSource.Tables.Count, Is.EqualTo(54));

            Assert.That(dataSource.ContextDocuments, Is.Not.Null);
            Assert.That(dataSource.ContextDocuments.Count, Is.EqualTo(5));
        }
        public void TestThatDataSourceGetAddCreators()
        {
            var oldToNewMetadataRepository = new OldToNewMetadataRepository(RepositoryTestHelper.GetSourcePathForTest(), GetConfigurationValuesMock());

            Assert.That(oldToNewMetadataRepository, Is.Not.Null);

            var dataSource = oldToNewMetadataRepository.DataSourceGet();

            Assert.That(dataSource, Is.Not.Null);
            Assert.That(dataSource.Creators, Is.Not.Null);
            Assert.That(dataSource.Creators.Count, Is.EqualTo(1));

            var creator = dataSource.Creators.First();

            Assert.That(creator.NameSource, Is.Not.Null);
            Assert.That(creator.NameSource, Is.Not.Empty);
            Assert.That(creator.NameSource, Is.EqualTo("Myndighed1"));
            Assert.That(creator.NameTarget, Is.Not.Null);
            Assert.That(creator.NameTarget, Is.Not.Empty);
            Assert.That(creator.NameTarget, Is.EqualTo("Myndighed1"));
            Assert.That(creator.Description, Is.Null);
            Assert.That(creator.PeriodStart, Is.EqualTo(new DateTime(1996, 1, 1, 0, 0, 0)));
            Assert.That(creator.PeriodEnd, Is.EqualTo(new DateTime(1998, 5, 31, 0, 0, 0)));
        }
        private IDeliveryEngine CreateSut(bool useDataValidators, IExceptionHandler exceptionHandler)
        {
            if (exceptionHandler == null)
            {
                throw new ArgumentNullException(nameof(exceptionHandler));
            }

            IContainer containerMock = MockRepository.GenerateMock <IContainer>();

            IInformationLogger informationLoggerMock = MockRepository.GenerateMock <IInformationLogger>();

            informationLoggerMock.Expect(m => m.LogInformation(Arg <string> .Is.NotNull))
            .WhenCalled(e => Debug.WriteLine(e.Arguments.ElementAt(0)))
            .Repeat.Any();
            informationLoggerMock.Expect(m => m.LogWarning(Arg <string> .Is.NotNull))
            .WhenCalled(e => Debug.WriteLine(e.Arguments.ElementAt(0)))
            .Repeat.Any();

            IConfigurationRepository configurationRepositoryMock = MockRepository.GenerateMock <IConfigurationRepository>();
            IMetadataRepository      metadataRepository          = new OldToNewMetadataRepository(RepositoryTestHelper.GetSourcePathForOracleTest(), new ConfigurationValues());

            containerMock.Expect(m => m.Resolve <IMetadataRepository>())
            .Return(metadataRepository)
            .Repeat.Any();

            ICollection <IDataManipulator> dataManipulatorCollection;

            using (var windsorContainer = new WindsorContainer())
            {
                windsorContainer.Register(Component.For <IContainer>().Instance(containerMock).LifeStyle.Transient);
                windsorContainer.Register(Component.For <IInformationLogger>().Instance(informationLoggerMock).LifeStyle.Transient);
                windsorContainer.Register(Component.For <IMetadataRepository>().Instance(metadataRepository).LifeStyle.Transient);

                IConfigurationProvider dataManipulatorsConfigurationProvider = new DataManipulatorsConfigurationProvider();
                dataManipulatorsConfigurationProvider.AddConfiguration(windsorContainer);

                dataManipulatorCollection = windsorContainer.ResolveAll <IDataManipulator>();
                windsorContainer.Dispose();
            }
            containerMock.Expect(m => m.ResolveAll <IDataManipulator>())
            .Return(dataManipulatorCollection.ToArray())
            .Repeat.Any();
            IDataRepository dataRepository = new OracleDataRepository(new OracleClientFactory(), new DataManipulators(containerMock));

            containerMock.Expect(m => m.Resolve <IDataRepository>())
            .Return(dataRepository)
            .Repeat.Any();
            IDocumentRepository       documentRepositoryMock = MockRepository.GenerateMock <IDocumentRepository>();
            IArchiveVersionRepository archiveRepository      = new ArchiveVersionRepository(new DirectoryInfo(ConfigurationManager.AppSettings["ArchivePath"]));

            ICollection <IDataValidator> dataValidatorCollection = useDataValidators ? new Collection <IDataValidator> {
                new PrimaryKeyDataValidator(dataRepository), new ForeignKeysDataValidator(dataRepository), new MappingDataValidator()
            } : new Collection <IDataValidator>();

            containerMock.Expect(m => m.ResolveAll <IDataValidator>())
            .Return(dataValidatorCollection.ToArray())
            .Repeat.Any();
            IDataValidators dataValidators = new DataValidators(containerMock);

            return(new DeliveryEngine.BusinessLogic.DeliveryEngine(configurationRepositoryMock, metadataRepository, dataRepository, documentRepositoryMock, dataValidators, archiveRepository, exceptionHandler));
        }
        public void TestThatConstructorInitializeOldToNewMetadataRepository()
        {
            var oldToNewMetadataRepository = new OldToNewMetadataRepository(RepositoryTestHelper.GetSourcePathForOracleTest(), MockRepository.GenerateMock <IConfigurationValues>());

            Assert.That(oldToNewMetadataRepository, Is.Not.Null);
        }
        public void TestThatDataSourceGetGetsDataSource()
        {
            var configurationValuesMock = GetConfigurationValuesMock();

            var oldToNewMetadataRepository = new OldToNewMetadataRepository(RepositoryTestHelper.GetSourcePathForTest(), configurationValuesMock);

            Assert.That(oldToNewMetadataRepository, Is.Not.Null);

            var dataSource = oldToNewMetadataRepository.DataSourceGet();

            Assert.That(dataSource, Is.Not.Null);
            Assert.That(dataSource.NameSource, Is.Not.Null);
            Assert.That(dataSource.NameSource, Is.Not.Empty);
            Assert.That(dataSource.NameSource, Is.EqualTo("DocSysPro"));
            Assert.That(dataSource.NameTarget, Is.Not.Null);
            Assert.That(dataSource.NameTarget, Is.Not.Empty);
            Assert.That(dataSource.NameTarget, Is.EqualTo("DocSysPro"));
            Assert.That(dataSource.Description, Is.Not.Null);
            Assert.That(dataSource.Description, Is.Not.Empty);
            Assert.That(dataSource.Description, Is.EqualTo("DocSysPro"));
            Assert.That(dataSource.ArchiveInformationPackageId, Is.Not.Empty);
            Assert.That(dataSource.ArchiveInformationPackageId, Is.Not.Null);
            Assert.That(dataSource.ArchiveInformationPackageId, Is.EqualTo("40330"));
            Assert.That(dataSource.ArchiveInformationPackageIdPrevious, Is.EqualTo(0));
            Assert.That(dataSource.ArchivePeriodStart, Is.EqualTo(new DateTime(1996, 1, 1, 0, 0, 0)));
            Assert.That(dataSource.ArchivePeriodEnd, Is.EqualTo(new DateTime(2000, 12, 31, 0, 0, 0)));
            Assert.That(dataSource.ArchiveInformationPacketType, Is.EqualTo(configurationValuesMock.ArchiveInformationPacketType));
            Assert.That(dataSource.ArchiveType, Is.True);
            Assert.That(dataSource.AlternativeSystemNames, Is.Not.Null);
            Assert.That(dataSource.AlternativeSystemNames.Count, Is.EqualTo(3));
            Assert.That(dataSource.SystemPurpose, Is.Not.Null);
            Assert.That(dataSource.SystemPurpose, Is.Not.Empty);
            Assert.That(dataSource.SystemPurpose, Is.EqualTo(configurationValuesMock.SystemPurpose));
            Assert.That(dataSource.SystemContent, Is.Not.Null);
            Assert.That(dataSource.SystemContent, Is.Not.Empty);
            Assert.That(dataSource.SystemContent, Is.EqualTo(configurationValuesMock.SystemContent));
            Assert.That(dataSource.RegionNum, Is.EqualTo(configurationValuesMock.RegionNum));
            Assert.That(dataSource.KomNum, Is.EqualTo(configurationValuesMock.KomNum));
            Assert.That(dataSource.CprNum, Is.EqualTo(configurationValuesMock.CprNum));
            Assert.That(dataSource.CvrNum, Is.EqualTo(configurationValuesMock.CvrNum));
            Assert.That(dataSource.MatrikNum, Is.EqualTo(configurationValuesMock.MatrikNum));
            Assert.That(dataSource.BbrNum, Is.EqualTo(configurationValuesMock.BbrNum));
            Assert.That(dataSource.WhoSygKod, Is.EqualTo(configurationValuesMock.WhoSygKod));
            Assert.That(dataSource.SourceNames, Is.Not.Null);
            Assert.That(dataSource.SourceNames.Count, Is.EqualTo(3));
            Assert.That(dataSource.UserNames, Is.Not.Null);
            Assert.That(dataSource.UserNames.Count, Is.EqualTo(3));
            Assert.That(dataSource.PredecessorNames, Is.Not.Null);
            Assert.That(dataSource.PredecessorNames.Count, Is.EqualTo(3));
            Assert.That(dataSource.FormVersion, Is.Not.Null);
            Assert.That(dataSource.FormVersion, Is.Not.Empty);
            Assert.That(dataSource.FormVersion, Is.EqualTo(configurationValuesMock.FormVersion));
            Assert.That(dataSource.FormClasses, Is.Not.Null);
            Assert.That(dataSource.FormClasses.Count, Is.EqualTo(3));
            Assert.That(dataSource.ContainsDigitalDocuments, Is.EqualTo(configurationValuesMock.ContainsDigitalDocuments));
            Assert.That(dataSource.SearchRelatedOtherRecords, Is.EqualTo(configurationValuesMock.SearchRelatedOtherRecords));
            Assert.That(dataSource.RelatedRecordsNames, Is.Not.Null);
            Assert.That(dataSource.RelatedRecordsNames.Count, Is.EqualTo(3));
            Assert.That(dataSource.SystemFileConcept, Is.EqualTo(configurationValuesMock.SystemFileConcept));
            Assert.That(dataSource.MultipleDataCollection, Is.EqualTo(configurationValuesMock.MultipleDataCollection));
            Assert.That(dataSource.PersonalDataRestrictedInfo, Is.EqualTo(configurationValuesMock.PersonalDataRestrictedInfo));
            Assert.That(dataSource.OtherAccessTypeRestrictions, Is.EqualTo(configurationValuesMock.OtherAccessTypeRestrictions));
            Assert.That(dataSource.ArchiveApproval, Is.Not.Null);
            Assert.That(dataSource.ArchiveApproval, Is.Not.Empty);
            Assert.That(dataSource.ArchiveApproval, Is.EqualTo(configurationValuesMock.ArchiveApproval));
            Assert.That(dataSource.ArchiveRestrictions, Is.Not.Null);
            Assert.That(dataSource.ArchiveRestrictions, Is.Not.Empty);
            Assert.That(dataSource.ArchiveRestrictions, Is.EqualTo(configurationValuesMock.ArchiveRestrictions));

            Assert.That(dataSource.Tables, Is.Not.Null);
            Assert.That(dataSource.Tables.Count(), Is.EqualTo(5));
            foreach (var table in dataSource.Tables)
            {
                Assert.That(table, Is.Not.Null);
                Assert.That(table.Fields, Is.Not.Null);
                Assert.That(table.Fields.Count(), Is.GreaterThan(0));
                Assert.That(table.CandidateKeys, Is.Not.Null);
                Assert.That(table.CandidateKeys.Count(), Is.EqualTo(1));
                Assert.That(table.ForeignKeys, Is.Not.Null);
                Assert.That(table.ForeignKeys.Count(), Is.GreaterThanOrEqualTo(0));
            }
            Assert.That(dataSource.Views, Is.Not.Null);
            Assert.That(dataSource.Views.Count, Is.EqualTo(1));
            Assert.That(dataSource.Creators, Is.Not.Null);
            Assert.That(dataSource.Creators.Count, Is.EqualTo(1));
            Assert.That(dataSource.ContextDocuments, Is.Not.Null);
            Assert.That(dataSource.ContextDocuments.Count, Is.EqualTo(2));

            configurationValuesMock.AssertWasCalled(m => m.ArchiveInformationPacketType);
            configurationValuesMock.AssertWasCalled(m => m.AlternativeSystemNames);
            configurationValuesMock.AssertWasCalled(m => m.SystemPurpose);
            configurationValuesMock.AssertWasCalled(m => m.SystemContent);
            configurationValuesMock.AssertWasCalled(m => m.RegionNum);
            configurationValuesMock.AssertWasCalled(m => m.KomNum);
            configurationValuesMock.AssertWasCalled(m => m.CprNum);
            configurationValuesMock.AssertWasCalled(m => m.CvrNum);
            configurationValuesMock.AssertWasCalled(m => m.MatrikNum);
            configurationValuesMock.AssertWasCalled(m => m.BbrNum);
            configurationValuesMock.AssertWasCalled(m => m.WhoSygKod);
            configurationValuesMock.AssertWasCalled(m => m.SourceNames);
            configurationValuesMock.AssertWasCalled(m => m.UserNames);
            configurationValuesMock.AssertWasCalled(m => m.PredecessorNames);
            configurationValuesMock.AssertWasCalled(m => m.FormVersion);
            configurationValuesMock.AssertWasCalled(m => m.FormClasses);
            configurationValuesMock.AssertWasCalled(m => m.ContainsDigitalDocuments);
            configurationValuesMock.AssertWasCalled(m => m.SearchRelatedOtherRecords);
            configurationValuesMock.AssertWasCalled(m => m.RelatedRecordsNames);
            configurationValuesMock.AssertWasCalled(m => m.SystemFileConcept);
            configurationValuesMock.AssertWasCalled(m => m.MultipleDataCollection);
            configurationValuesMock.AssertWasCalled(m => m.PersonalDataRestrictedInfo);
            configurationValuesMock.AssertWasCalled(m => m.OtherAccessTypeRestrictions);
            configurationValuesMock.AssertWasCalled(m => m.ArchiveApproval);
            configurationValuesMock.AssertWasCalled(m => m.ArchiveRestrictions);
        }
        public void TestThatDataSourceGetAddForeignKeys()
        {
            var oldToNewMetadataRepository = new OldToNewMetadataRepository(RepositoryTestHelper.GetSourcePathForTest(), GetConfigurationValuesMock());

            Assert.That(oldToNewMetadataRepository, Is.Not.Null);

            var dataSource = oldToNewMetadataRepository.DataSourceGet();

            Assert.That(dataSource, Is.Not.Null);
            Assert.That(dataSource.Tables, Is.Not.Null);

            var table = dataSource.Tables.Single(m => String.Compare(m.NameSource, "DOKTABEL", StringComparison.Ordinal) == 0);

            Assert.That(table, Is.Not.Null);
            Assert.That(table.ForeignKeys, Is.Not.Null);

            var foreignKey = table.ForeignKeys.Single(m => String.Compare(m.NameSource, "FK_DOKTABEL_SAG", StringComparison.Ordinal) == 0);

            Assert.That(foreignKey, Is.Not.Null);
            Assert.That(foreignKey.NameSource, Is.Not.Null);
            Assert.That(foreignKey.NameSource, Is.Not.Empty);
            Assert.That(foreignKey.NameSource, Is.EqualTo("FK_DOKTABEL_SAG"));
            Assert.That(foreignKey.NameTarget, Is.Not.Null);
            Assert.That(foreignKey.NameTarget, Is.Not.Empty);
            Assert.That(foreignKey.NameTarget, Is.EqualTo("FK_DOKTABEL_SAG"));
            Assert.That(foreignKey.Description, Is.Not.Null);
            Assert.That(foreignKey.Description, Is.Not.Empty);
            Assert.That(foreignKey.Description, Is.EqualTo("Fremmednøgle fra DOKTABEL til SAG"));
            Assert.That(foreignKey.Table, Is.Not.Null);
            Assert.That(foreignKey.Table, Is.EqualTo(table));
            Assert.That(foreignKey.CandidateKey, Is.Not.Null);
            Assert.That(foreignKey.CandidateKey.NameSource, Is.Not.Null);
            Assert.That(foreignKey.CandidateKey.NameSource, Is.Not.Empty);
            Assert.That(foreignKey.CandidateKey.NameSource, Is.EqualTo("PK_SAG"));
            Assert.That(foreignKey.CandidateKey.NameTarget, Is.Not.Null);
            Assert.That(foreignKey.CandidateKey.NameTarget, Is.Not.Empty);
            Assert.That(foreignKey.CandidateKey.NameTarget, Is.EqualTo("PK_SAG"));
            Assert.That(foreignKey.CandidateKey.Description, Is.Not.Null);
            Assert.That(foreignKey.CandidateKey.Description, Is.Not.Empty);
            Assert.That(foreignKey.CandidateKey.Description, Is.EqualTo("Primær nøgle på SAG"));
            Assert.That(foreignKey.CandidateKey.Table, Is.Not.Null);
            Assert.That(foreignKey.CandidateKey.Table.NameSource, Is.Not.Null);
            Assert.That(foreignKey.CandidateKey.Table.NameSource, Is.Not.Empty);
            Assert.That(foreignKey.CandidateKey.Table.NameSource, Is.EqualTo("SAG"));
            Assert.That(foreignKey.CandidateKey.Table.NameTarget, Is.Not.Null);
            Assert.That(foreignKey.CandidateKey.Table.NameTarget, Is.Not.Empty);
            Assert.That(foreignKey.CandidateKey.Table.NameTarget, Is.EqualTo("SAG"));
            Assert.That(foreignKey.CandidateKey.Fields, Is.Not.Null);
            Assert.That(foreignKey.CandidateKey.Fields.Count, Is.EqualTo(1));
            Assert.That(foreignKey.CandidateKey.Fields[0].Key, Is.Not.Null);
            Assert.That(foreignKey.CandidateKey.Fields[0].Key.NameSource, Is.Not.Null);
            Assert.That(foreignKey.CandidateKey.Fields[0].Key.NameSource, Is.Not.Empty);
            Assert.That(foreignKey.CandidateKey.Fields[0].Key.NameSource, Is.EqualTo("SagsID"));
            Assert.That(foreignKey.Fields, Is.Not.Null);
            Assert.That(foreignKey.Fields.Count, Is.EqualTo(1));
            Assert.That(foreignKey.Fields[0].Key, Is.Not.Null);
            Assert.That(foreignKey.Fields[0].Key.NameSource, Is.Not.Null);
            Assert.That(foreignKey.Fields[0].Key.NameSource, Is.Not.Empty);
            Assert.That(foreignKey.Fields[0].Key.NameSource, Is.EqualTo("SagsID"));
            Assert.That(foreignKey.Fields[0].Value, Is.Not.Null);
            Assert.That(foreignKey.Fields[0].Value, Is.TypeOf(typeof(StaticMap <int?, int?>)));
            Assert.That(foreignKey.Cardinality, Is.EqualTo(Cardinality.ManyToOne));
        }
        public void TestThatDataRepositoryGetsDataFromOracle()
        {
            var containerMock = MockRepository.GenerateMock <IContainer>();

            var informationLoggerMock = MockRepository.GenerateMock <IInformationLogger>();

            informationLoggerMock.Expect(m => m.LogInformation(Arg <string> .Is.NotNull))
            .WhenCalled(e => Debug.WriteLine(e.Arguments[0]))
            .Repeat.Any();

            var metadataRepository = new OldToNewMetadataRepository(RepositoryTestHelper.GetSourcePathForOracleTest(), new ConfigurationValues());

            Assert.That(metadataRepository, Is.Not.Null);

            ICollection <IDataManipulator> dataMainpulatorCollection;

            using (var windsorContainer = new WindsorContainer())
            {
                windsorContainer.Register(Component.For <IContainer>().Instance(containerMock).LifeStyle.Transient);
                windsorContainer.Register(Component.For <IInformationLogger>().Instance(informationLoggerMock).LifeStyle.Transient);
                windsorContainer.Register(Component.For <IMetadataRepository>().Instance(metadataRepository).LifeStyle.Transient);
                var dataManipulatorsConfigurationProvider = new DataManipulatorsConfigurationProvider();
                dataManipulatorsConfigurationProvider.AddConfiguration(windsorContainer);
                dataMainpulatorCollection = windsorContainer.ResolveAll <IDataManipulator>();
                windsorContainer.Dispose();
            }
            containerMock.Expect(m => m.ResolveAll <IDataManipulator>())
            .Return(dataMainpulatorCollection.ToArray())
            .Repeat.Any();

            var oracleClientFactory = new OracleClientFactory();

            Assert.That(oracleClientFactory, Is.Not.Null);

            var dataManipulators = new DataManipulators(containerMock);

            Assert.That(dataManipulators, Is.Not.Null);
            Assert.That(dataManipulators, Is.Not.Empty);

            var dataRepository = new OracleDataRepository(oracleClientFactory, dataManipulators);

            Assert.That(dataRepository, Is.Not.Null);
            containerMock.Expect(m => m.Resolve <IDataRepository>())
            .Return(dataRepository)
            .Repeat.Any();

            var startTime       = DateTime.MinValue;
            var numberOfRecords = 0;

            dataRepository.OnHandleData += (s, e) =>
            {
                Assert.That(s, Is.Not.Null);
                Assert.That(e, Is.Not.Null);
                Assert.That(e.Table, Is.Not.Null);
                Assert.That(e.Data, Is.Not.Null);

                numberOfRecords += e.Data.Count();
                if (e.EndOfData)
                {
                    // ReSharper disable AccessToModifiedClosure
                    Debug.WriteLine("{0} has been selected for the table named {1} in {2}", numberOfRecords, e.Table.NameTarget, new TimeSpan(DateTime.Now.Ticks - startTime.Ticks));
                    // ReSharper restore AccessToModifiedClosure
                    numberOfRecords = 0;
                }
            };

            var dataSource = metadataRepository.DataSourceGet();

            Assert.That(dataSource, Is.Not.Null);
            Assert.That(dataSource.Tables, Is.Not.Null);
            Assert.That(dataSource.Tables, Is.Not.Empty);
            foreach (var table in dataSource.Tables)
            {
                startTime = DateTime.Now;
                dataRepository.DataGetFromTable(table);
            }
        }