public async Task ThenItShouldReturnModel()
            {
                // Arrange
                var options = new DbContextOptionsBuilder <MyDbContext>()
                              .UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString())
                              .Options;

                using (var context = new MyDbContext(options))
                {
                    // Act
                    _dbContextFactory = new Mock <IMyDbContextFactory>();
                    _dbContextFactory.Setup(_ => _.CreateMyDbContext()).Returns(new MyDbContext(options));

                    var repository      = new PalindromeRepository(_dbContextFactory.Object);
                    var dtNow           = DateTime.Now;
                    var sequence        = "NeverOddOrEven";
                    var savedPalindrome = await repository.SavePalindromeAsync(new Palindrome()
                    {
                        Sequence = sequence, CreateDate = dtNow
                    });

                    // Assert
                    Assert.True(savedPalindrome.Id >= 1);
                    Assert.Equal(sequence, savedPalindrome.Sequence);
                    Assert.Equal(dtNow, savedPalindrome.CreateDate);
                }
            }
        static void Main()
        {
            IConfigurationBuilder builder = new ConfigurationBuilder()
                                            .SetBasePath(Directory.GetCurrentDirectory())
                                            .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
                                            .AddEnvironmentVariables();

            IConfigurationRoot configuration = builder.Build();
            AppSettings        appSettings   = new AppSettings();

            configuration.GetSection("MyConfig").Bind(appSettings);
            IOptions <AppSettings> options = Options.Create <AppSettings>(appSettings);


            IEntryRepository  entryRepository = new EntryRepository(options);
            List <EntryModel> sortedList      = entryRepository.LoadEntries();

            ConsoleUI consoleUI = new ConsoleUI();

            DateTime[] dates = consoleUI.Initialize();

            IIntersectionFinder intersectionFinder = new IntersectionFinder(sortedList);

            //returns null if no entries intersect
            int[] intersectedIndexes = intersectionFinder.FindEntries(dates[0], dates[1]);

            if (intersectedIndexes != null)
            {
                IAnagramValidator anagramValidator = new AnagramValidator(sortedList);
                List <int>        anagramsIndexes  = anagramValidator.Validate(intersectedIndexes[0], intersectedIndexes[1]);

                IPalindromeRepository palindromeRepository = new PalindromeRepository(options, sortedList);
                palindromeRepository.WriteEntries(anagramsIndexes);
            }
        }
            public async Task ThenItShouldReturnCorrectCount()
            {
                var repository = new PalindromeRepository(_dbContextFactory.Object);

                var result = await repository.GetAllPalindromesAsync();

                Assert.Equal(2, result.Count);
            }