public void Validate_ValidCommand_ShouldBeTrue()
        {
            var command = new CreateChannelConversationCommand
            {
                Members = new List <UserModel>
                {
                    new UserModel
                    {
                        UserId      = Guid.NewGuid(),
                        DisplayName = "Long"
                    },
                    new UserModel
                    {
                        UserId      = Guid.NewGuid(),
                        DisplayName = "Quan"
                    },
                },
                TeamId   = teamId1.ToString(),
                IsPublic = false,
                Name     = "Test channel ..",
            };

            var validator = new CreateChannelConversationCommandValidator();

            var result = validator.Validate(command);

            result.IsValid.ShouldBe(true);
        }
        public void Validate_NameIsGreaterThan200_ShouldBeFalse()
        {
            var command = new CreateChannelConversationCommand
            {
                Name    = new string('a', 201),
                Members = new List <UserModel>
                {
                    new UserModel
                    {
                        UserId      = Guid.NewGuid(),
                        DisplayName = "Long"
                    },
                    new UserModel
                    {
                        UserId      = Guid.NewGuid(),
                        DisplayName = "Quan"
                    },
                },
                TeamId   = teamId1.ToString(),
                IsPublic = false
            };

            var validator = new CreateChannelConversationCommandValidator();

            var result = validator.Validate(command);

            result.IsValid.ShouldBe(false);
        }
        public async Task GivenValidTeamId_EnsureSuccess()
        {
            var client = await _factory.GetAuthenticatedClientAsync();

            var command = new CreateChannelConversationCommand
            {
                Members = new List <UserModel>
                {
                    new UserModel()
                    {
                        UserId      = Guid.NewGuid(),
                        DisplayName = "TestUser1"
                    },
                    new UserModel()
                    {
                        UserId      = Guid.NewGuid(),
                        DisplayName = "TestUser1"
                    }
                },
                IsPublic = true,
                Name     = "test",
                TeamId   = "197d0438-e04b-453d-b5de-eca05960c6ae"
            };

            var content = IntegrationTestHelper.GetRequestContent(command);

            var response = await client.PostAsync($"/api/conversation/CreateChannel", content);

            response.EnsureSuccessStatusCode();
            response.StatusCode.ShouldBe(HttpStatusCode.OK);
        }
        public async Task GivenDupplicateName_ReturnsBadRequest()
        {
            var client = await _factory.GetAuthenticatedClientAsync();

            var command = new CreateChannelConversationCommand
            {
                Members = new List <UserModel>
                {
                    new UserModel()
                    {
                        UserId      = Guid.NewGuid(),
                        DisplayName = "TestUser1"
                    },
                    new UserModel()
                    {
                        UserId      = Guid.NewGuid(),
                        DisplayName = "TestUser1"
                    }
                },
                IsPublic = true,
                Name     = "duplicate",
                TeamId   = Guid.NewGuid().ToString()
            };

            var content = IntegrationTestHelper.GetRequestContent(command);

            var response = await client.PostAsync($"/api/conversation/CreateChannel", content);

            response.StatusCode.ShouldBe(HttpStatusCode.BadRequest);
        }
        public async Task GiveValidRequestWithIsPublic_ShouldCreateConversationChannel()
        {
            var sut = new CreateChannelConversationCommandHandler(_context, _mapper);

            // test general channel ->  IsPublic = true
            var command = new CreateChannelConversationCommand()
            {
                TeamId             = validTeamId.ToString(),
                ChannelDescription = "Channel test 1",
                IsPublic           = true,
                Name = "NAME ABC2",
            };

            await sut.Handle(command, CancellationToken.None);

            var entity = await _context.Conversations.Where(e => e.Name == "NAME ABC2").FirstOrDefaultAsync();

            entity.ShouldNotBeNull();
            entity.TeamId.ShouldBe(validTeamId.ToString());
            entity.isPublic.ShouldBeTrue();
            entity.Type.ShouldBe("channel");

            // Duplicate Member list??? dont know why

            var temp = entity.Members.GroupBy(e => e.UserOid).Select(group => group.First());

            temp.Count().ShouldBe(4);
            temp.Where(e => e.UserOid == userId1.ToString()).Count().ShouldBe(1);
            temp.Where(e => e.UserOid == userId2.ToString()).Count().ShouldBe(1);
            temp.Where(e => e.UserOid == userId3.ToString()).Count().ShouldBe(1);
            temp.Where(e => e.UserOid == userId4.ToString()).Count().ShouldBe(1);
        }
Exemple #6
0
        public async Task <ActionResult <ConversationModel> > CreateChannel(CreateChannelConversationCommand command)
        {
            try
            {
                var conversation = await Mediator.Send(command);

                return(conversation);
            }
            catch (Exception)
            {
                return(BadRequest());
            }
        }
        public void Validate_MemberIsLessThanTwo_ShouldBeFalse()
        {
            var command = new CreateChannelConversationCommand
            {
                Members  = new List <UserModel> {
                },
                TeamId   = teamId1.ToString(),
                IsPublic = true
            };

            var validator = new CreateChannelConversationCommandValidator();

            var result = validator.Validate(command);

            result.IsValid.ShouldBe(false);
        }
        public void Validate_MemberIsEmpty_IsNOTPublic_ShouldBeFalse()
        {
            var command = new CreateChannelConversationCommand
            {
                Members = new List <UserModel>()
                {
                },
                IsPublic = true,
                Name     = "TEST isPublic Channel",
                TeamId   = teamId1.ToString()
            };

            var validator = new CreateChannelConversationCommandValidator();

            var result = validator.Validate(command);

            result.IsValid.ShouldBe(true);
        }
        public async Task GiveValidRequestWithIsNOTPublic_ShouldCreateConversationChannel()
        {
            var sut = new CreateChannelConversationCommandHandler(_context, _mapper);
            List <UserModel> members1 = new List <UserModel>();

            members1.AddRange(new[] {
                new UserModel {
                    UserId      = userId1,
                    DisplayName = "User 1"
                },
                new UserModel {
                    UserId      = userId2,
                    DisplayName = "User 2"
                }
            });
            // test private channel ->  IsPublic = false
            var command = new CreateChannelConversationCommand()
            {
                TeamId             = validTeamId2.ToString(),
                ChannelDescription = "Channel test 1",
                IsPublic           = false,
                Members            = members1,
                Name = "TestisPublicFalse",
            };

            await sut.Handle(command, CancellationToken.None);

            var entity = await _context.Conversations.Where(e => e.Name == "TestisPublicFalse").FirstOrDefaultAsync();

            entity.ShouldNotBeNull();
            entity.TeamId.ShouldBe(validTeamId2.ToString());
            entity.isPublic.ShouldBeFalse();
            entity.Type.ShouldBe("channel");

            // Duplicate Member list??? dont know why

            var temp = entity.Members.GroupBy(e => e.UserOid).Select(group => group.First());

            temp.Count().ShouldBe(2);
            temp.Where(e => e.UserOid == userId1.ToString()).Count().ShouldBe(1);
            temp.Where(e => e.UserOid == userId2.ToString()).Count().ShouldBe(1);
        }