Example #1
0
        async Task AndThenGroupIsAdded()
        {
            using (var dbContext = new WordkiDbContext(ConnectionStringProvider))
            {
                var user = await dbContext.Users.Include(u => u.Groups).ThenInclude(g => g.Words).SingleAsync();

                var group = user.Groups.Single();
                Assert.IsNotNull(group);
                Assert.Greater(group.Id, 0);
                Assert.AreEqual(group.User.Id, 1);
                Assert.AreEqual(group.Name, "groupName");
                Assert.AreEqual(group.GroupLanguage1, 1);
                Assert.AreEqual(group.GroupLanguage2, 2);
                Assert.AreEqual(group.GroupCreationDate, Utils.Time);

                Assert.AreEqual(2, group.Words.Count);

                foreach (var word in group.Words)
                {
                    Assert.IsNotNull(word);
                    Assert.Greater(word.Id, 0);
                    Assert.AreEqual(group.Id, word.Group.Id);
                    Assert.AreEqual("front-value", word.Heads.Value);
                    Assert.AreEqual("back-value", word.Tails.Value);
                    Assert.AreEqual("front-example", word.Heads.Example);
                    Assert.AreEqual("back-example", word.Tails.Example);
                    Assert.AreEqual(true, word.IsVisible);
                    Assert.AreEqual(Utils.Time, word.WordCreationDate);
                }
                ;
            }
        }
Example #2
0
        async Task GivenGroupsInDatabase()
        {
            using (var dbContext = new WordkiDbContext(ConnectionStringProvider))
            {
                var user = Builder <Api.Domain.User> .CreateNew()
                           .With(u => u.Id            = 1)
                           .With(u => u.Name          = "user")
                           .With(u => u.Password      = Host.EncrypterMock.Object.Md5Hash("pass"))
                           .With(u => u.LastLoginDate = new DateTime(2020, 1, 1))
                           .With(u => u.CreationDate  = new DateTime(2020, 1, 1))
                           .Build();

                dbContext.Users.Add(user);

                var sequence = new SequentialGenerator <long> {
                    Direction = GeneratorDirection.Ascending, Increment = 1
                };
                sequence.StartingWith(1);

                var builder = Builder <Api.Domain.Group> .CreateNew()
                              .With(g => g.Id             = sequence.Generate())
                              .With(g => g.GroupLanguage1 = 1)
                              .With(g => g.GroupLanguage2 = 2)
                              .With(g => g.Name           = "name");

                var groups = new Api.Domain.Group[] { builder.Build(), builder.Build() };

                dbContext.Groups.AddRange(groups);
                await dbContext.SaveChangesAsync();
            }
        }
Example #3
0
 async Task GivenUserInDatabase()
 {
     using (var dbContext = new WordkiDbContext(ConnectionStringProvider))
     {
         dbContext.Users.Add(Utils.GetUser());
         await dbContext.SaveChangesAsync();
     }
 }
Example #4
0
        async Task AndThenWordIsAdded()
        {
            using (var dbContext = new WordkiDbContext(ConnectionStringProvider))
            {
                var counts = await dbContext.Words.CountAsync();

                Assert.AreEqual(0, counts);
            }
        }
 public AddGroupCommandHandler(
     WordkiDbContext dbContext,
     ITimeProvider dateTimeProvider,
     IHttpContextProvider contextProvider)
 {
     this.dbContext        = dbContext;
     this.dateTimeProvider = dateTimeProvider;
     this.contextProvider  = contextProvider;
 }
 public GetTodayCardsQueryHandler(
     WordkiDbContext dbContext,
     IHttpContextProvider contextProvider,
     ITimeProvider timeProvider)
 {
     this.dbContext       = dbContext;
     this.contextProvider = contextProvider;
     this.timeProvider    = timeProvider;
 }
Example #7
0
        async Task AndThenGroupIsAdded()
        {
            using (var dbContext = new WordkiDbContext(ConnectionStringProvider))
            {
                var lesson = await dbContext.Lessons.Include(g => g.User).SingleAsync();

                Assert.AreEqual(Utils.Time, lesson.FinishDate);
            }
        }
Example #8
0
 public LoginCommandHandler(WordkiDbContext dbContext,
                            IEncrypter encrypter,
                            ITimeProvider dateTimeProvider,
                            IAuthenticationService authenticationService)
 {
     this.dbContext             = dbContext;
     this.encrypter             = encrypter;
     this.dateTimeProvider      = dateTimeProvider;
     this.authenticationService = authenticationService;
 }
Example #9
0
 public AnswerCommnadHandler(
     WordkiDbContext dbContext,
     IHttpContextProvider contextProvider,
     INextRepeatCalculator nextRepeatCalculator,
     ITimeProvider timeProvider)
 {
     this.dbContext            = dbContext;
     this.contextProvider      = contextProvider;
     this.nextRepeatCalculator = nextRepeatCalculator;
     this.timeProvider         = timeProvider;
 }
Example #10
0
 public AdminController(
     IMediator mediator,
     IConfiguration configuration,
     IConnectionStringProvider connectionStringProvider,
     WordkiDbContext dbContext,
     IDatabaseInitializer init) : base(mediator)
 {
     this.configuration            = configuration;
     this.connectionStringProvider = connectionStringProvider;
     this.dbContext = dbContext;
     this.init      = init;
 }
Example #11
0
        async Task AndThenUserAdded()
        {
            using (var dbContext = new WordkiDbContext(ConnectionStringProvider))
            {
                var user = await dbContext.Users.SingleAsync();

                Assert.AreEqual("user", user.Name);
                Assert.Greater(user.Id, 0);
                Assert.AreEqual(Host.EncrypterMock.Object.Md5Hash(GivenPassword), user.Password);
                Assert.IsNull(user.LastLoginDate);
                Assert.AreEqual(Host.Time2ProviderMock.Object.GetTime(), user.CreationDate);
            }
        }
Example #12
0
        async Task AndThenWordIsAdded()
        {
            using (var dbContext = new WordkiDbContext(ConnectionStringProvider))
            {
                var group = await dbContext.Groups.SingleOrDefaultAsync();

                Assert.IsNotNull(group);
                Assert.AreEqual(1, group.Id);
                Assert.AreEqual("group2", group.Name);
                Assert.AreEqual(2, group.GroupLanguage1);
                Assert.AreEqual(1, group.GroupLanguage2);
            }
        }
Example #13
0
        async Task AndThenUserAdded()
        {
            using (var dbContext = new WordkiDbContext(ConnectionStringProvider))
            {
                var user = await dbContext.Users.SingleAsync();

                Assert.AreEqual(user.Name, "user");
                Assert.AreEqual(user.Id, 1);
                Assert.AreEqual(Host.EncrypterMock.Object.Md5Hash("pass"), user.Password);
                Assert.AreEqual(Host.Time2ProviderMock.Object.GetTime(), user.LastLoginDate);
                Assert.AreEqual(new DateTime(2020, 1, 1), user.CreationDate);
            }
        }
Example #14
0
        async Task GivenGroupInDatabase()
        {
            using (var dbContext = new WordkiDbContext(ConnectionStringProvider))
            {
                var user = Utils.GetUser();
                dbContext.Users.Add(user);

                var group = Utils.GetGroup();
                group.User = user;

                dbContext.Groups.Add(group);
                await dbContext.SaveChangesAsync();
            }
        }
Example #15
0
        async Task GivenUserInDatabase()
        {
            using (var dbContext = new WordkiDbContext(ConnectionStringProvider))
            {
                var user = Utils.GetUser();
                dbContext.Users.Add(user);

                var lesson = Utils.GetLesson();
                lesson.FinishDate = null;
                lesson.User       = user;
                await dbContext.Lessons.AddAsync(lesson);

                await dbContext.SaveChangesAsync();
            }
        }
Example #16
0
        async Task GivenUserInDatabase()
        {
            using (var dbContext = new WordkiDbContext(ConnectionStringProvider))
            {
                var user = Builder <Api.Domain.User> .CreateNew()
                           .With(u => u.Id            = 1)
                           .With(u => u.Name          = "user")
                           .With(u => u.Password      = Host.EncrypterMock.Object.Md5Hash(GivenPassword))
                           .With(u => u.LastLoginDate = new DateTime(2020, 1, 1))
                           .With(u => u.CreationDate  = new DateTime(2020, 1, 1))
                           .Build();

                dbContext.Users.Add(user);
                await dbContext.SaveChangesAsync();
            }
        }
Example #17
0
        protected async Task CreateDatabase()
        {
            using (var dbContext = new WordkiDbContext(ConnectionStringProvider))
            {
                await dbContext.Database.EnsureCreatedAsync();

                await dbContext.Database.ExecuteSqlRawAsync("Delete from wrd.\"Repeats\"");

                await dbContext.Database.ExecuteSqlRawAsync("Delete from wrd.\"Lessons\"");

                await dbContext.Database.ExecuteSqlRawAsync("Delete from wrd.\"Words\"");

                await dbContext.Database.ExecuteSqlRawAsync("Delete from wrd.\"Groups\"");

                await dbContext.Database.ExecuteSqlRawAsync("Delete from wrd.\"Users\"");
            }
        }
Example #18
0
        async Task AndThenWordIsAdded()
        {
            using (var dbContext = new WordkiDbContext(ConnectionStringProvider))
            {
                var word = await dbContext.Words.Include(w => w.Group).SingleOrDefaultAsync();

                Assert.IsNotNull(word);
                Assert.AreEqual(1, word.Id);
                Assert.AreEqual(1, word.Group.Id);
                Assert.AreEqual("heads123", word.Heads.Value);
                Assert.AreEqual("example123", word.Heads.Example);
                Assert.AreEqual(2, word.Heads.State.Drawer.Value);
                Assert.AreEqual("tails123", word.Tails.Value);
                Assert.AreEqual("example456", word.Tails.Example);
                Assert.AreEqual(2, word.Tails.State.Drawer.Value);
                Assert.AreEqual(false, word.IsVisible);
            }
        }
Example #19
0
        async Task AndThenWordIsAdded()
        {
            using (var dbContext = new WordkiDbContext(ConnectionStringProvider))
            {
                var word = await dbContext.Words.Include(w => w.Group).SingleOrDefaultAsync();

                Assert.IsNotNull(word);
                Assert.Greater(word.Id, 0);
                Assert.AreEqual(1, word.Group.Id);
                Assert.AreEqual("word1", word.Heads.Value);
                Assert.AreEqual("word2", word.Tails.Value);
                Assert.AreEqual("example1", word.Heads.Example);
                Assert.AreEqual("example2", word.Tails.Example);
                Assert.AreEqual(0, word.Heads.State.Drawer.Value);
                Assert.AreEqual(0, word.Tails.State.Drawer.Value);
                Assert.AreEqual(true, word.IsVisible);
                Assert.AreEqual(Utils.Now, word.WordCreationDate);
            }
        }
Example #20
0
        async Task GivenDatabaseContainData()
        {
            using (var dbContext = new WordkiDbContext(ConnectionStringProvider))
            {
                var user = Utils.GetUser();
                dbContext.Users.Add(user);

                var group = Utils.GetGroup();
                group.User = user;
                dbContext.Groups.Add(group);

                var card = Utils.GetCard();
                card.Group = group;

                await dbContext.Words.AddAsync(card);

                await dbContext.SaveChangesAsync();
            }
        }
        async Task AndThenGroupIsAdded()
        {
            using (var dbContext = new WordkiDbContext(ConnectionStringProvider))
            {
                var group = await dbContext.Groups.Include(g => g.User).SingleAsync();

                Assert.IsNotNull(group);
                Assert.Greater(group.Id, 0);
                Assert.AreEqual(group.User.Id, 1);
                Assert.AreEqual(group.Name, "groupName");
                Assert.AreEqual(group.GroupLanguage1, 1);
                Assert.AreEqual(group.GroupLanguage2, 2);
                Assert.AreEqual(group.GroupCreationDate, Utils.Time);

                var wordsCount = await dbContext.Words.CountAsync();

                Assert.AreEqual(0, wordsCount);
            }
        }
Example #22
0
        async Task GivenGroupInDatabase()
        {
            using (var dbContext = new WordkiDbContext(ConnectionStringProvider))
            {
                var user = new Api.Domain.User
                {
                    Id            = 1,
                    Name          = "user",
                    Password      = Host.EncrypterMock.Object.GetSalt(string.Empty),
                    CreationDate  = Host.Time2ProviderMock.Object.GetTime(),
                    LastLoginDate = Host.Time2ProviderMock.Object.GetTime()
                };
                dbContext.Users.Add(user);

                var group = new Api.Domain.Group
                {
                    Id                = 1,
                    GroupLanguage1    = 1,
                    GroupLanguage2    = 2,
                    Name              = "group",
                    GroupCreationDate = Host.Time2ProviderMock.Object.GetTime()
                };
                dbContext.Groups.Add(group);

                var word = new Api.Domain.Card
                {
                    Heads = new Side {
                        Value = "word1"
                    },
                    Tails = new Side {
                        Value = "word2"
                    },
                    IsVisible        = true,
                    WordCreationDate = new DateTime(2020, 01, 01),
                };
                dbContext.Words.Add(word);
                await dbContext.SaveChangesAsync();
            }
        }
Example #23
0
        async Task GivenDatabaseContainData()
        {
            using (var dbContext = new WordkiDbContext(ConnectionStringProvider))
            {
                var user = Utils.GetUser();
                dbContext.Users.Add(user);

                var group = Utils.GetGroup();
                group.User = user;
                dbContext.Groups.Add(group);

                for (int i = 1; i < 4; i++)
                {
                    var word = Utils.GetCard();
                    word.Group            = group;
                    word.Id               = i;
                    word.WordCreationDate = word.WordCreationDate.AddDays(i);
                    dbContext.Words.Add(word);
                }

                await dbContext.SaveChangesAsync();
            }
        }
Example #24
0
 public AddCardCommandHandler(WordkiDbContext dbContext, ITimeProvider dateTimeProvider)
 {
     this.dbContext        = dbContext;
     this.dateTimeProvider = dateTimeProvider;
 }
Example #25
0
 public RegisterCommandHandler(WordkiDbContext dbContext, IEncrypter encrypter, IUserCreator userCreator)
 {
     this.dbContext   = dbContext;
     this.encrypter   = encrypter;
     this.userCreator = userCreator;
 }
 public FinishCommandHandler(WordkiDbContext dbContext, ITimeProvider timeProvider, IHttpContextProvider contextProvider)
 {
     this.dbContext       = dbContext;
     this.timeProvider    = timeProvider;
     this.contextProvider = contextProvider;
 }
 public DeleteCardCommandHandler(WordkiDbContext dbContext)
 {
     this.dbContext = dbContext;
 }
 public GetLastAddedQueryHandler(WordkiDbContext dbContext, IHttpContextProvider httpContextProvider)
 {
     this.dbContext           = dbContext;
     this.httpContextProvider = httpContextProvider;
 }
Example #29
0
 public GetCountQueryHandler(WordkiDbContext dbContext, IHttpContextProvider contextProvider)
 {
     this.dbContext       = dbContext;
     this.contextProvider = contextProvider;
 }
 public GetCardDetailsQueryHandler(WordkiDbContext dbContext)
 {
     this.dbContext = dbContext;
 }