Exemplo n.º 1
0
        public async Task ExecuteShouldAddGroupClass()
        {
            //Arrange
            SchoolManagementContext context = new ContextBuilder().BuildClean();
            GroupLevel  groupLevel          = new GroupLevelBuilder(context).With(x => x.Level = 1).With(x => x.Name = "Początkujący").BuildAndSave();
            Room        room                   = new RoomBuilder(context).WithName("Sala biała").BuildAndSave();
            User        anchor                 = new UserBuilder(context).WithEmail("*****@*****.**").BuildAndSave();
            Role        role                   = new RoleBuilder(context).WithName(Roles.Anchor).AddUserToRole(anchor).BuildAndSave();
            List <User> participants           = new List <User>();
            var         participantRoleBuilder = new RoleBuilder(context).WithName(Roles.Participant);

            for (var i = 0; i < 10; i++)
            {
                User user = new UserBuilder(context).WithEmail($"email{i}@gmail.com").BuildAndSave();
                participants.Add(user);
                participantRoleBuilder.AddUserToRole(user);
            }

            participantRoleBuilder.BuildAndSave();

            Command cmd = new Command
            {
                Name    = "Groupa zajęciowa",
                Anchors = new List <string> {
                    anchor.Id
                },
                IsSolo           = true,
                PassPrice        = 200,
                ParticipantLimit = 20,
                GroupLevelId     = groupLevel.Id,
                Participants     = participants.Select(x => new ParticipantDto
                {
                    Id   = x.Id,
                    Role = ParticipantRole.Leader
                }).ToList(),
                DayOfWeeks = new List <ClassDayOfWeekDto>(),
                RoomId     = room.Id
            };
            //Act
            DataResult result = await new Handler(context).Handle(cmd, CancellationToken.None);

            //Assert
            result
            .Should().NotBeNull();
            result.Status.Should().Be(DataResult.ResultStatus.Success, "all parameters are corrected");
            context.GroupClass.Should().NotBeEmpty("we add new group");
            GroupClass groupClass = context.GroupClass.First();

            groupClass.Anchors.Should().NotBeEmpty();
            groupClass.Room.Should().Be(room);
            groupClass.GroupLevel.Should().Be(groupLevel);
            groupClass.PassPrice.Should().Be(cmd.PassPrice);
            groupClass.Participants.Should().NotBeEmpty().And.HaveCount(participants.Count).And
            .Contain(x => participants.Contains(x.User));
        }
        public override void SetUp()
        {
            base.SetUp();

            var roleBuilder = new RoleBuilder();
            var userBuidler = new UserBuilder();

            roleBuilder.With(r => r.Name, PvPStatics.Permissions_Admin);
            roleBuilder.AddUser(userBuidler.Build());

            roleBuilder.BuildAndSave();
            user = userBuidler.BuildAndSave();

            requestHandler = new UserHasRoleRequestHandler(DataContext);
            request        = new UserHasAnyRoleRequest();
        }
Exemplo n.º 3
0
        public override void SetUp()
        {
            base.SetUp();

            // unsure if this test fixture should include the internal handlers
            // as the validator has no clue about *how* the property is validated.
            // on the other hand, there isn't much of a better way to test a validator
            // than to do a kind of sort of integration test
            var token = new CancellationToken();

            Task <bool> ReturnCall <TRequest, TRequestHandler>(CallInfo call)
                where TRequest : IRequest <bool>
                where TRequestHandler : IRequestHandler <TRequest, bool>
            {
                if (call.Args().Length > 0 && call.Args()[0] is TRequest sentRequest)
                {
                    var handler = (TRequestHandler)System.Activator.CreateInstance(typeof(TRequestHandler), DataContext);
                    return(handler.Handle(sentRequest, token));
                }
                return(Task.FromResult(false));
            }

            mediatorMock.Send(Arg.Any <UserHasAnyRoleRequest>()).Returns(ReturnCall <UserHasAnyRoleRequest, UserHasRoleRequestHandler>);
            mediatorMock.Send(Arg.Any <IsValidUserRequest>()).Returns(ReturnCall <IsValidUserRequest, IsValidUserRequestHandler>);

            var roleBuilder = new RoleBuilder();
            var userBuidler = new UserBuilder();

            roleBuilder.With(r => r.Name, PvPStatics.Permissions_Admin);
            roleBuilder.AddUser(userBuidler.Build());

            roleBuilder.BuildAndSave();
            adminUser = userBuidler.BuildAndSave();

            normalUser = new UserBuilder().BuildAndSave();

            request = new ResetSecurityStamp();
        }
Exemplo n.º 4
0
        public async Task ExecuteShouldAddGroupAndAddPresence()
        {
            SchoolManagementContext context = new ContextBuilder().BuildClean();
            GroupLevel  groupLevel          = new GroupLevelBuilder(context).With(x => x.Level = 1).With(x => x.Name = "Początkujący").BuildAndSave();
            Room        room                   = new RoomBuilder(context).WithName("Sala biała").BuildAndSave();
            User        anchor                 = new UserBuilder(context).WithEmail("*****@*****.**").BuildAndSave();
            Role        role                   = new RoleBuilder(context).WithName(Roles.Anchor).AddUserToRole(anchor).BuildAndSave();
            List <User> participants           = new List <User>();
            var         participantRoleBuilder = new RoleBuilder(context).WithName(Roles.Participant);

            for (var i = 0; i < 10; i++)
            {
                User user = new UserBuilder(context).WithEmail($"email{i}@gmail.com").BuildAndSave();
                participants.Add(user);
                participantRoleBuilder.AddUserToRole(user);
            }

            participantRoleBuilder.BuildAndSave();
            Command cmd = new Command
            {
                Name    = "Groupa zajęciowa",
                Anchors = new List <string> {
                    anchor.Id
                },
                IsSolo             = true,
                ParticipantLimit   = 20,
                PassPrice          = 200,
                GroupLevelId       = groupLevel.Id,
                UtcOffsetInMinutes = 0,
                Participants       = participants.Select(x => new ParticipantDto
                {
                    Id   = x.Id,
                    Role = ParticipantRole.Leader
                }).ToList(),
                RoomId     = room.Id,
                DayOfWeeks = new List <ClassDayOfWeekDto>
                {
                    new ClassDayOfWeekDto()
                    {
                        DayOfWeek = System.DayOfWeek.Monday,
                        BeginTime = new TimeSpan(18, 0, 0)
                    },
                    new ClassDayOfWeekDto()
                    {
                        DayOfWeek = System.DayOfWeek.Thursday,
                        BeginTime = new TimeSpan(19, 0, 0)
                    }
                },
                Start = new DateTime(2019, 09, 01), //Sunday
                DurationTimeInMinutes = 90,
                NumberOfClasses       = 20
            };

            DataResult dataResult = await new Handler(context).Handle(cmd, CancellationToken.None);

            dataResult.Status.Should().Be(DataResult.ResultStatus.Success, "all parameters are corrected");


            context.ParticipantPresences.Should().NotBeNullOrEmpty()
            .And.HaveCount(cmd.NumberOfClasses * cmd.Participants.Count)
            .And.NotContainNulls(x => x.ClassTime)
            .And.NotContainNulls(x => x.Participant);

            context.ClassTimes.Should().NotBeEmpty().And.HaveCount(cmd.NumberOfClasses).And
            .NotContainNulls(x => x.PresenceParticipants);

            ClassTime classTime = context.ClassTimes.First();

            classTime.PresenceParticipants.Should().HaveCount(10);

            ParticipantClassTime participantClassTime = context.ParticipantPresences.First();

            AssertPass(context, participants, cmd);
        }
Exemplo n.º 5
0
        public async Task ExecuteShouldEditScheduleGroupClass()
        {
            //Arrange
            SchoolManagementContext context = new ContextBuilder().BuildClean();
            GroupLevel groupLevel           = new GroupLevelBuilder(context).With(x => x.Level = 1).With(x => x.Name = "Początkujący").BuildAndSave();
            Room       room   = new RoomBuilder(context).WithName("Sala biała").BuildAndSave();
            User       anchor = new UserBuilder(context).WithEmail("*****@*****.**").BuildAndSave();

            new RoleBuilder(context).WithName(Roles.Anchor).AddUserToRole(anchor).BuildAndSave();
            List <User> participants           = new List <User>();
            var         participantRoleBuilder = new RoleBuilder(context).WithName(Roles.Participant);

            for (var i = 0; i < 10; i++)
            {
                User user = new UserBuilder(context).WithEmail($"email{i}@gmail.com").BuildAndSave();
                participants.Add(user);
                participantRoleBuilder.AddUserToRole(user);
            }

            participantRoleBuilder.BuildAndSave();

            string expectedAnchorEmail = "*****@*****.**";
            var    groupClass          = CreateGroupClass(context, expectedAnchorEmail);
            string expectedAnchorId    = groupClass.Anchors.Where(x => x.User.Email == expectedAnchorEmail).Select(x => x.UserId).First();

            Command cmd = new Command
            {
                GroupClassId = groupClass.Id,
                Name         = "Groupa zajęciowa",
                Anchors      = new List <string> {
                    anchor.Id, expectedAnchorId
                },
                IsSolo             = true,
                ParticipantLimit   = 20,
                UtcOffsetInMinutes = 0,
                GroupLevelId       = groupLevel.Id,
                Participants       = participants.Select(x => new ParticipantDto
                {
                    Id   = x.Id,
                    Role = ParticipantRole.Leader
                }).ToList(),
                DayOfWeeks = new List <ClassDayOfWeekDto>
                {
                    new ClassDayOfWeekDto()
                    {
                        BeginTime = new TimeSpan(19, 0, 0),
                        DayOfWeek = DayOfWeek.Tuesday
                    },
                    new ClassDayOfWeekDto()
                    {
                        BeginTime = new TimeSpan(18, 0, 0),
                        DayOfWeek = DayOfWeek.Wednesday
                    },
                    new ClassDayOfWeekDto()
                    {
                        BeginTime = new TimeSpan(19, 0, 0),
                        DayOfWeek = DayOfWeek.Friday
                    },
                },
                DurationTimeInMinutes = 90,
                NumberOfClasses       = 24,
                RoomId = room.Id
            };

            var            expectedParticipant = groupClass.Participants.Select(x => x.User).First();
            ParticipantDto expectedRole        = new ParticipantDto()
            {
                Id   = expectedParticipant.Id,
                Role = ParticipantRole.Leader
            };

            cmd.Participants.Add(expectedRole);
            //Act
            DataResult result = await new Handler(context).Handle(cmd, CancellationToken.None);

            //Assert
            result
            .Should().NotBeNull();
            result.Status.Should().Be(DataResult.ResultStatus.Success, "all parameters are corrected");
            context.GroupClass.Should().NotBeEmpty("we add new group");
            groupClass.Anchors.Should().NotBeEmpty().And.HaveCount(cmd.Anchors.Count);
            groupClass.Room.Should().Be(room);
            groupClass.IsSolo.Should().BeTrue();
            groupClass.Name.Should().Be(cmd.Name);
            groupClass.GroupLevel.Should().Be(groupLevel);
            groupClass.Participants.Should().NotBeEmpty().And.HaveCount(cmd.Participants.Count).And
            .Contain(x => participants.Contains(x.User));
            groupClass.Participants.Where(x => x.User.Email == expectedParticipant.Email).Select(x => x.Role).First()
            .Should().Be(expectedRole.Role, "we changed role");

            ValidateClassDayOfWeek(groupClass);

            groupClass.Schedule.Should().NotBeNullOrEmpty().And.HaveCount(24).And.OnlyContain(x =>
                                                                                              x.StartDate.DayOfWeek == DayOfWeek.Tuesday || x.StartDate.DayOfWeek == DayOfWeek.Friday ||
                                                                                              x.StartDate.DayOfWeek == DayOfWeek.Wednesday);
        }