public void CreateReturnsClassInRepository()
        {
            var model = new ClassesCreateViewModel
            {
                DayOfWeek  = DaysOfWeek.Понеделник.ToString(),
                Discipline = Disciplines.Английски_език.ToString(),
                Room       = Room.Стая_1.ToString(),
                TimeOfDay  = "11:00 - 12:30",
                TeacherId  = "teacherId",
                StudentIds = new List <string> {
                    "studentId"
                }
            };

            var options = new DbContextOptionsBuilder <LearningPlusDbContext>()
                          .UseInMemoryDatabase(databaseName: "Create_Classes_Database") // Give a Unique name to the DB
                          .Options;
            var dbContext = new LearningPlusDbContext(options);

            var repository     = new DbRepository <LearningPlusClass>(dbContext);
            var classesService = new ClassesService(null, null, repository, null);

            var createdModel = classesService.Create(model);

            repository.All().CountAsync().GetAwaiter().GetResult().ShouldBe(1);
        }
        public void DeleteByIdReturnsInactiveClass()
        {
            var teacher = new Mock <LearningPlusUser>();

            teacher.Setup(t => t.Id).Returns("teacherId");
            teacher.Setup(t => t.FirstName).Returns("TeacherFirst");
            teacher.Setup(t => t.LastName).Returns("TeacherLast");

            var model = new ClassesCreateViewModel
            {
                DayOfWeek  = DaysOfWeek.Понеделник.ToString(),
                Discipline = Disciplines.Английски_език.ToString(),
                Room       = Room.Стая_1.ToString(),
                TimeOfDay  = "11:00 - 12:30",
                TeacherId  = "teacherId",
                StudentIds = new List <string> {
                    "studentId"
                }
            };

            var options = new DbContextOptionsBuilder <LearningPlusDbContext>()
                          .UseInMemoryDatabase(databaseName: "Delete_Classes_Database") // Give a Unique name to the DB
                          .Options;
            var dbContext = new LearningPlusDbContext(options);

            dbContext.Users.Add(teacher.Object);
            var repository     = new DbRepository <LearningPlusClass>(dbContext);
            var classesService = new ClassesService(null, null, repository, null);

            var createdModel = classesService.Create(model);
            var id           = createdModel.Id.ToString();
            var deletedClass = classesService.DeleteById(id);

            deletedClass.Active.ShouldBe(false);
        }
        public void GetMessagesReturnsCorrectCollection(int value)
        {
            var mockMessage = new Mock <LearningPlusChat>();

            mockMessage.Setup(m => m.Message).Returns("NewMessage");

            var mock2Message = new Mock <LearningPlusChat>();

            mock2Message.Setup(m => m.Message).Returns("NewMessage");

            var options = new DbContextOptionsBuilder <LearningPlusDbContext>()
                          .UseInMemoryDatabase(databaseName: "FakeDelete_News_Database") // Give a Unique name to the DB
                          .Options;
            var dbContext = new LearningPlusDbContext(options);

            dbContext.Add(mockMessage.Object);
            dbContext.Add(mock2Message.Object);
            dbContext.SaveChanges();
            var chatRepo    = new DbRepository <LearningPlusChat>(dbContext);
            var chatService = new ChatService(chatRepo, null);

            var messages = chatService.GetMessages(value);

            messages.Count().ShouldBe(2);
        }
        public void GetScheduleClassesReturnsCorrectClasses()
        {
            var student = new Mock <LearningPlusUser>();

            student.Setup(t => t.Id).Returns("studentId");
            student.Setup(t => t.FirstName).Returns("First");
            student.Setup(t => t.LastName).Returns("Last");

            var model = new ClassesCreateViewModel
            {
                DayOfWeek  = DaysOfWeek.Понеделник.ToString(),
                Discipline = Disciplines.Английски_език.ToString(),
                Room       = Room.Стая_1.ToString(),
                TimeOfDay  = "11:00 - 12:30",
                TeacherId  = "teacherId",
                StudentIds = new List <string> {
                    "studentId"
                }
            };

            var options = new DbContextOptionsBuilder <LearningPlusDbContext>()
                          .UseInMemoryDatabase(databaseName: "Schedule_Classes_Database") // Give a Unique name to the DB
                          .Options;
            var dbContext = new LearningPlusDbContext(options);

            dbContext.Users.Add(student.Object);
            var repository     = new DbRepository <LearningPlusClass>(dbContext);
            var classesService = new ClassesService(null, null, repository, null);
            var createdModel   = classesService.Create(model);

            var classes = classesService.GetScheduleClasses();

            classes.Count.ShouldBe(1);
        }
        public void GetAdminNewsReturnsCorrectCollection()
        {
            var mockNews = new Mock <LearningPlusNews>();

            mockNews.Setup(n => n.ExpiresOn).Returns(DateTime.UtcNow.AddDays(2));
            var mockSndNews = new Mock <LearningPlusNews>();

            mockSndNews.Setup(n => n.ExpiresOn).Returns(DateTime.UtcNow.AddSeconds(5));
            var mockOldNews = new Mock <LearningPlusNews>();

            mockOldNews.Setup(n => n.ExpiresOn).Returns(DateTime.UtcNow.AddDays(-1));

            var options = new DbContextOptionsBuilder <LearningPlusDbContext>()
                          .UseInMemoryDatabase(databaseName: "GetAdminNews_News_Database") // Give a Unique name to the DB
                          .Options;
            var dbContext = new LearningPlusDbContext(options);

            dbContext.News.Add(mockNews.Object);
            dbContext.News.Add(mockSndNews.Object);
            dbContext.News.Add(mockOldNews.Object);
            dbContext.SaveChanges();
            var newsRepo      = new DbRepository <LearningPlusNews>(dbContext);
            var lpNewsService = new LearningPlusNewsService(null, newsRepo);

            var news = lpNewsService.GetAdminNews();

            news.Count.ShouldBe(2);
        }
        public void GetByIdReturnsCorrectNews()
        {
            var mockNews = new Mock <LearningPlusNews>();
            var options  = new DbContextOptionsBuilder <LearningPlusDbContext>()
                           .UseInMemoryDatabase(databaseName: "GetById_News_Database") // Give a Unique name to the DB
                           .Options;
            var dbContext = new LearningPlusDbContext(options);

            dbContext.News.Add(mockNews.Object);
            dbContext.SaveChanges();
            var newsRepo      = new DbRepository <LearningPlusNews>(dbContext);
            var newsId        = newsRepo.All().FirstOrDefaultAsync().GetAwaiter().GetResult().Id.ToString();
            var lpNewsService = new LearningPlusNewsService(null, newsRepo);

            var newsById = lpNewsService.GetById(newsId);

            newsById.CountAsync().GetAwaiter().GetResult().ShouldBe(1);
        }
示例#7
0
        private static void CreateUsersAndRoles(UserManager <LearningPlusUser> userManager,
                                                RoleManager <IdentityRole> roleManager,
                                                LearningPlusDbContext db)
        {
            Task.Run(async() =>
            {
                string[] usersAndRoles = { "Admin", "Teacher", "Parent", "Child" };

                foreach (var role in usersAndRoles)
                {
                    var adminRoleExists = await roleManager.RoleExistsAsync(role);
                    if (!adminRoleExists)
                    {
                        await roleManager.CreateAsync(new IdentityRole
                        {
                            Name = role
                        });
                    }
                }

                foreach (var username in usersAndRoles)
                {
                    var user = await userManager.FindByNameAsync(username);
                    if (user == null)
                    {
                        user = new LearningPlusUser
                        {
                            UserName  = username,
                            FirstName = $"First{username}",
                            LastName  = $"{username}LastName",
                            Email     = $"{username}@{username}world.som"
                        };

                        await userManager.CreateAsync(user, "123456");
                        await userManager.AddToRoleAsync(user, username);
                    }
                }

                var child  = db.Users.FirstOrDefault(u => u.UserName == "Child");
                var parent = db.Users.FirstOrDefault(u => u.UserName == "Parent");
                parent.Children.Add(child);
            }).Wait();
        }
        public void FakeDeleteReturnsCorrectItem()
        {
            var mockNews = new Mock <LearningPlusNews>();

            mockNews.Setup(n => n.ExpiresOn).Returns(DateTime.UtcNow);

            var options = new DbContextOptionsBuilder <LearningPlusDbContext>()
                          .UseInMemoryDatabase(databaseName: "FakeDelete_News_Database") // Give a Unique name to the DB
                          .Options;
            var dbContext = new LearningPlusDbContext(options);

            dbContext.News.Add(mockNews.Object);

            dbContext.SaveChanges();
            var newsRepo      = new DbRepository <LearningPlusNews>(dbContext);
            var lpNewsService = new LearningPlusNewsService(null, newsRepo);
            var id            = newsRepo.All().FirstOrDefaultAsync().GetAwaiter().GetResult().Id.ToString();

            var news = lpNewsService.FakeDelete(id);

            DateTime.UtcNow.AddDays(-1).ShouldBeLessThanOrEqualTo(news.ExpiresOn);
        }
示例#9
0
        private static void CreateNews(LearningPlusDbContext db)
        {
            if (db.News.Count() == 0)
            {
                var holidays = new string[] {
                    "3-ти март",
                    "1-ви юни",
                };

                var newsRange = new List <LearningPlusNews>();

                foreach (var day in holidays)
                {
                    var news = new LearningPlusNews
                    {
                        Creator     = db.Users.FirstOrDefault(u => u.UserName == "Admin"),
                        Message     = $"{day} е национален празник и центърът ще почива!",
                        TargetRoles = new List <LearningPlusNewsTargetRole>()
                        {
                            new LearningPlusNewsTargetRole {
                                TargetRole = UserRoles.Admin
                            },
                            new LearningPlusNewsTargetRole {
                                TargetRole = UserRoles.Teacher
                            },
                            new LearningPlusNewsTargetRole {
                                TargetRole = UserRoles.Parent
                            },
                            new LearningPlusNewsTargetRole {
                                TargetRole = UserRoles.Child
                            }
                        }
                    };
                    newsRange.Add(news);
                }

                var adminNews = new LearningPlusNews
                {
                    Creator     = db.Users.FirstOrDefault(u => u.UserName == "Admin"),
                    Message     = $"Администраторите ще работят от вкъщи.",
                    TargetRoles = new List <LearningPlusNewsTargetRole>()
                    {
                        new LearningPlusNewsTargetRole {
                            TargetRole = UserRoles.Admin
                        }
                    }
                };

                var teacherNews = new LearningPlusNews
                {
                    Creator     = db.Users.FirstOrDefault(u => u.UserName == "Teacher"),
                    Message     = $"Учителите ще работят днес до обяд.",
                    TargetRoles = new List <LearningPlusNewsTargetRole>()
                    {
                        new LearningPlusNewsTargetRole {
                            TargetRole = UserRoles.Teacher
                        }
                    }
                };

                var childParentNews = new LearningPlusNews
                {
                    Creator     = db.Users.FirstOrDefault(u => u.UserName == "Admin"),
                    Message     = $"Децата ще посетят клас по оригами.",
                    TargetRoles = new List <LearningPlusNewsTargetRole>()
                    {
                        new LearningPlusNewsTargetRole {
                            TargetRole = UserRoles.Parent
                        },
                        new LearningPlusNewsTargetRole {
                            TargetRole = UserRoles.Child
                        }
                    }
                };
                newsRange.Add(adminNews);
                newsRange.Add(teacherNews);
                newsRange.Add(childParentNews);

                db.News.AddRange(newsRange);
                db.SaveChanges();
            }
        }
示例#10
0
 public DbRepository(LearningPlusDbContext context)
 {
     this.context = context;
     this.dbSet   = this.context.Set <TEntity>();
 }
        public void GetArchivedNewsReturnsCorrectCollection()
        {
            var mockNews = new Mock <LearningPlusNews>();

            mockNews.Setup(n => n.ExpiresOn).Returns(DateTime.UtcNow.AddDays(2));
            var mockAdminNews = new Mock <LearningPlusNews>();

            mockAdminNews.Setup(n => n.ExpiresOn).Returns(DateTime.UtcNow.AddSeconds(5));
            mockAdminNews.Setup(n => n.TargetRoles).Returns(new List <LearningPlusNewsTargetRole> {
                new LearningPlusNewsTargetRole {
                    TargetRole = Models.Enums.UserRoles.Admin
                }
            });
            var mockTeacherNews = new Mock <LearningPlusNews>();

            mockTeacherNews.Setup(n => n.ExpiresOn).Returns(DateTime.UtcNow.AddDays(2));
            mockTeacherNews.Setup(n => n.TargetRoles).Returns(new List <LearningPlusNewsTargetRole> {
                new LearningPlusNewsTargetRole {
                    TargetRole = Models.Enums.UserRoles.Teacher
                }
            });
            var mockParentNews = new Mock <LearningPlusNews>();

            mockParentNews.Setup(n => n.ExpiresOn).Returns(DateTime.UtcNow.AddDays(2));
            mockParentNews.Setup(n => n.TargetRoles).Returns(new List <LearningPlusNewsTargetRole> {
                new LearningPlusNewsTargetRole {
                    TargetRole = Models.Enums.UserRoles.Parent
                }
            });
            var mockChildNews = new Mock <LearningPlusNews>();

            mockChildNews.Setup(n => n.ExpiresOn).Returns(DateTime.UtcNow.AddDays(2));
            mockChildNews.Setup(n => n.TargetRoles).Returns(new List <LearningPlusNewsTargetRole> {
                new LearningPlusNewsTargetRole {
                    TargetRole = Models.Enums.UserRoles.Child
                }
            });
            var mockChildSndNews = new Mock <LearningPlusNews>();

            mockChildSndNews.Setup(n => n.ExpiresOn).Returns(DateTime.UtcNow.AddDays(-1));
            mockChildSndNews.Setup(n => n.TargetRoles).Returns(new List <LearningPlusNewsTargetRole> {
                new LearningPlusNewsTargetRole {
                    TargetRole = Models.Enums.UserRoles.Child
                }
            });
            var mockOldNews = new Mock <LearningPlusNews>();

            mockOldNews.Setup(n => n.ExpiresOn).Returns(DateTime.UtcNow.AddDays(-1));

            var options = new DbContextOptionsBuilder <LearningPlusDbContext>()
                          .UseInMemoryDatabase(databaseName: "GetArchivedNews_News_Database") // Give a Unique name to the DB
                          .Options;
            var dbContext = new LearningPlusDbContext(options);

            dbContext.News.Add(mockAdminNews.Object);
            dbContext.News.Add(mockTeacherNews.Object);
            dbContext.News.Add(mockNews.Object);
            dbContext.News.Add(mockOldNews.Object);
            dbContext.News.Add(mockParentNews.Object);
            dbContext.News.Add(mockChildNews.Object);
            dbContext.News.Add(mockChildSndNews.Object);
            dbContext.News.Add(mockOldNews.Object);
            dbContext.SaveChanges();
            var newsRepo      = new DbRepository <LearningPlusNews>(dbContext);
            var lpNewsService = new LearningPlusNewsService(null, newsRepo);

            var news = lpNewsService.GetArchivedNews();

            news.Count.ShouldBe(2);
        }