Пример #1
0
        public async Task CsvFileBuilder_ShouldResultInCorrectFormat()
        {
            var record = new FooRecord
            {
                SomeField    = "TEST",
                AnotherField = "TEST2",
                Done         = true
            };
            var record2 = new FooRecord
            {
                SomeField    = "TEST3",
                AnotherField = "TEST4",
                Done         = false
            };
            var records = new List <FooRecord>();

            records.Add(record);
            records.Add(record2);

            var fileMaps = new List <ClassMap>();

            fileMaps.Add(new FooRecordMap());
            var sut = new CsvFileBuilder(fileMaps);

            // act
            var bytes = await sut.BuildFileAsync <FooRecord>(records);

            // assert
            var sr    = new StringReader(Encoding.UTF8.GetString(bytes));
            var line1 = sr.ReadLine();
            var line2 = sr.ReadLine();
            var line3 = sr.ReadLine();

            line1.Should().Be("SomeField,AnotherField,Done");
            line2.Should().Be("TEST,TEST2,Yes");
            line3.Should().Be("TEST3,TEST4,No");
        }
        public static async Task SeedSampleDataAsync(ApplicationDbContext context)
        {
            // Seed, if necessary
            if (!context.TodoLists.Any())
            {
                context.TodoLists.Add(new TodoList
                {
                    Title  = "Shopping",
                    Colour = Colour.Blue,
                    Items  =
                    {
                        new TodoItem {
                            Title = "Apples", Done = true, Status = Domain.Common.SoftDeleteStatus.Active
                        },
                        new TodoItem {
                            Title = "Milk", Done = true, Status = Domain.Common.SoftDeleteStatus.Active
                        },
                        new TodoItem {
                            Title = "Bread", Done = true, Status = Domain.Common.SoftDeleteStatus.Active
                        },
                        new TodoItem {
                            Title = "Toilet paper", Status = Domain.Common.SoftDeleteStatus.Active
                        },
                        new TodoItem {
                            Title = "Pasta", Status = Domain.Common.SoftDeleteStatus.Active
                        },
                        new TodoItem {
                            Title = "Tissues", Status = Domain.Common.SoftDeleteStatus.Active
                        },
                        new TodoItem {
                            Title = "Tuna", Status = Domain.Common.SoftDeleteStatus.Active
                        },
                        new TodoItem {
                            Title = "Water", Status = Domain.Common.SoftDeleteStatus.Active
                        }
                    }
                });
            }
            if (!context.Airports.Any())
            {
                // In-Memory DB does NOT support transacitons!!
                context.Database.BeginTransaction();
                context.Database.ExecuteSqlRaw($"SET IDENTITY_INSERT Airport ON;");

                try
                {
                    var    location      = new Uri(Assembly.GetEntryAssembly().GetName().CodeBase);
                    var    directoryInfo = new FileInfo(location.AbsolutePath).Directory.FullName;
                    string filePath      = directoryInfo + $@"\Persistence\ImportDataFiles\ImportAirportsData.csv";
                    var    entries       = (List <Airport>)CsvFileBuilder.ReadInCSV <Airport>(filePath);
                    if (entries.Count() > 0)
                    {
                        context.Airports.AddRange(entries);
                        await context.SaveChangesAsync();

                        context.Database.CommitTransaction();
                    }
                }
                catch (Exception)
                {
                    context.Database.RollbackTransaction();
                    throw;
                }
                finally
                {
                    context.Database.BeginTransaction();
                    context.Database.ExecuteSqlInterpolated($"SET IDENTITY_INSERT Airport OFF;");
                    context.Database.CommitTransaction();
                }
            }
        }