示例#1
0
        protected Common(EpicTransport transport, EpicOptions options)
        {
            Transport   = transport;
            EpicManager = Transport.EpicManager;
            Options     = options;

            AddNotifyPeerConnectionRequestOptions addNotifyPeerConnectionRequestOptions =
                new AddNotifyPeerConnectionRequestOptions {
                LocalUserId = EpicManager.AccountId.ProductUserId
            };

            _onIncomingConnectionRequest += OnNewConnection;
            _onRemoteConnectionClosed    += OnConnectionFailed;

            _incomingNotificationId = EpicManager.P2PInterface.AddNotifyPeerConnectionRequest(addNotifyPeerConnectionRequestOptions,
                                                                                              null, _onIncomingConnectionRequest);

            AddNotifyPeerConnectionClosedOptions addNotifyPeerConnectionClosedOptions =
                new AddNotifyPeerConnectionClosedOptions
            {
                LocalUserId = EpicManager.AccountId.ProductUserId
            };

            _outgoingNotificationId = EpicManager.P2PInterface.AddNotifyPeerConnectionClosed(addNotifyPeerConnectionClosedOptions,
                                                                                             null, _onRemoteConnectionClosed);
        }
        public async Task DeleteEpicAsync_FicticiousEpicId_ThrowsNotFoundException()
        {
            //arrange
            Guid    publicProjectId = Guid.NewGuid();
            Project expectedProject = new Project()
            {
                ProjectId       = 1,
                PublicProjectId = publicProjectId,
                Name            = "name",
                Description     = null,
                DateTimeCreated = DateTime.UtcNow.AddMinutes(-60)
            };
            var projectRepositoryMock = new Mock <IProjectRepository>(MockBehavior.Strict);

            projectRepositoryMock.Setup(x => x.GetProjectAsync(publicProjectId))
            .ReturnsAsync(expectedProject);

            Guid publicEpicId       = Guid.NewGuid();
            Epic expectedEpic       = null;
            var  epicRepositoryMock = new Mock <IEpicRepository>(MockBehavior.Strict);

            epicRepositoryMock.Setup(x => x.GetEpicAsync(publicEpicId))
            .ReturnsAsync(expectedEpic);
            epicRepositoryMock.Setup(x => x.DeleteEpicAsync(publicEpicId))
            .Returns(Task.CompletedTask);

            var epicManager = new EpicManager(projectRepositoryMock.Object, epicRepositoryMock.Object);

            //act/assert
            _ = await Assert.ThrowsAsync <NotFoundException>(async() =>
            {
                await epicManager.DeleteEpicAsync(publicProjectId, publicEpicId);
            });
        }
        public async Task CreateEpicAsync_DescriptionTooLong_ThrowsValidationException(string name, string description)
        {
            //arrange
            Guid    publicProjectId = Guid.NewGuid();
            Project expectedProject = new Project()
            {
                ProjectId       = 1,
                PublicProjectId = publicProjectId,
                Name            = "name",
                Description     = null,
                DateTimeCreated = DateTime.UtcNow.AddMinutes(-60)
            };
            var projectRepositoryMock = new Mock <IProjectRepository>(MockBehavior.Strict);

            projectRepositoryMock.Setup(x => x.GetProjectAsync(publicProjectId))
            .ReturnsAsync(expectedProject);
            var          epicRepositoryMock = new Mock <IEpicRepository>(MockBehavior.Strict);
            IEpicManager epicManager        = new EpicManager(projectRepositoryMock.Object, epicRepositoryMock.Object);

            //act/assert
            ValidationException exception = await Assert.ThrowsAsync <ValidationException>(async() =>
            {
                _ = await epicManager.CreateEpicAsync(publicProjectId, name, description);
            });

            //assert
            Assert.True(exception.ValidationErrors.Count == 1);
            Assert.True(exception.ValidationErrors.Single().Property == "description");
            Assert.True(exception.ValidationErrors.Single().ErrorMessage == "Must be shorter than 512 characters.");
        }
示例#4
0
        private void Start()
        {
            _epicOptions.Channels    = new PacketReliability[2];
            _epicOptions.Channels[0] = PacketReliability.ReliableOrdered;
            _epicOptions.Channels[1] = PacketReliability.UnreliableUnordered;

            EpicManager = GetComponent <EpicManager>();
        }
        public async Task UpdateEpicAsync_NameNotSet_ThrowsValidationException(string name, string description)
        {
            //arrange
            Guid    publicProjectId = Guid.NewGuid();
            Project expectedProject = new Project()
            {
                ProjectId       = 1,
                PublicProjectId = publicProjectId,
                Name            = "name",
                Description     = null,
                DateTimeCreated = DateTime.UtcNow.AddMinutes(-60)
            };
            var projectRepositoryMock = new Mock <IProjectRepository>(MockBehavior.Strict);

            projectRepositoryMock.Setup(x => x.GetProjectAsync(publicProjectId))
            .ReturnsAsync(expectedProject);

            Guid publicEpicId = Guid.NewGuid();
            Epic expectedEpic = new Epic()
            {
                EpicId          = 1,
                PublicEpicId    = publicEpicId,
                ProjectId       = 1,
                Project         = expectedProject,
                Name            = name,
                Description     = description,
                DateTimeCreated = DateTime.UtcNow.AddMinutes(-60)
            };
            var epicRepositoryMock = new Mock <IEpicRepository>(MockBehavior.Strict);

            epicRepositoryMock.Setup(x => x.GetEpicAsync(publicEpicId))
            .ReturnsAsync(expectedEpic);
            epicRepositoryMock.Setup(x => x.UpdateEpicAsync(publicEpicId,
                                                            expectedEpic.Name,
                                                            expectedEpic.Description))
            .ReturnsAsync(expectedEpic);

            var epicManager = new EpicManager(projectRepositoryMock.Object, epicRepositoryMock.Object);

            //act/assert
            ValidationException exception = await Assert.ThrowsAsync <ValidationException>(async() =>
            {
                _ = await epicManager.UpdateEpicAsync(publicProjectId, publicEpicId, name, description);
            });

            //assert
            Assert.True(exception.ValidationErrors.Count == 1);
            Assert.True(exception.ValidationErrors.Single().Property == "name");
            Assert.True(exception.ValidationErrors.Single().ErrorMessage == "Must be set.");
        }
        public async Task UpdateEpicAsync_ValidInput_ReturnsEpic(string name, string description)
        {
            //arrange
            Guid    publicProjectId = Guid.NewGuid();
            Project expectedProject = new Project()
            {
                ProjectId       = 1,
                PublicProjectId = publicProjectId,
                Name            = "name",
                Description     = null,
                DateTimeCreated = DateTime.UtcNow.AddMinutes(-60)
            };
            var projectRepositoryMock = new Mock <IProjectRepository>(MockBehavior.Strict);

            projectRepositoryMock.Setup(x => x.GetProjectAsync(publicProjectId))
            .ReturnsAsync(expectedProject);

            Guid publicEpicId = Guid.NewGuid();
            Epic expectedEpic = new Epic()
            {
                EpicId          = 1,
                PublicEpicId    = publicEpicId,
                ProjectId       = 1,
                Project         = expectedProject,
                Name            = name,
                Description     = description,
                DateTimeCreated = DateTime.UtcNow.AddMinutes(-60)
            };
            var epicRepositoryMock = new Mock <IEpicRepository>(MockBehavior.Strict);

            epicRepositoryMock.Setup(x => x.GetEpicAsync(publicEpicId))
            .ReturnsAsync(expectedEpic);
            epicRepositoryMock.Setup(x => x.UpdateEpicAsync(publicEpicId,
                                                            expectedEpic.Name,
                                                            expectedEpic.Description))
            .ReturnsAsync(expectedEpic);

            var epicManager = new EpicManager(projectRepositoryMock.Object, epicRepositoryMock.Object);

            //act
            Epic createdEpic = await epicManager.UpdateEpicAsync(publicProjectId,
                                                                 publicEpicId,
                                                                 name,
                                                                 description);

            //assert
            Assert.Equal(expectedEpic, createdEpic);
        }
        public async Task GetEpicsAsync_ValidProjectId_ReturnsEpics()
        {
            Guid    publicProjectId = Guid.NewGuid();
            Project expectedProject = new Project()
            {
                ProjectId       = 1,
                PublicProjectId = publicProjectId,
                Name            = "name",
                Description     = null,
                DateTimeCreated = DateTime.UtcNow.AddMinutes(-60)
            };
            var projectRepositoryMock = new Mock <IProjectRepository>(MockBehavior.Strict);

            projectRepositoryMock.Setup(x => x.GetProjectAsync(publicProjectId))
            .ReturnsAsync(expectedProject);
            List <Epic> expectedEpics = new List <Epic>()
            {
                new Epic()
                {
                    EpicId          = 1,
                    PublicEpicId    = Guid.NewGuid(),
                    ProjectId       = expectedProject.ProjectId,
                    Name            = "Epic 1",
                    Description     = null,
                    DateTimeCreated = DateTime.UtcNow
                },
                new Epic()
                {
                    EpicId          = 2,
                    PublicEpicId    = Guid.NewGuid(),
                    ProjectId       = expectedProject.ProjectId,
                    Name            = "Epic 2",
                    Description     = null,
                    DateTimeCreated = DateTime.UtcNow
                },
            };
            var          epicRepositoryMock = new Mock <IEpicRepository>(MockBehavior.Strict);
            IEpicManager epicManager        = new EpicManager(projectRepositoryMock.Object, epicRepositoryMock.Object);

            epicRepositoryMock.Setup(x => x.GetEpicsAsync(expectedProject.ProjectId))
            .ReturnsAsync(expectedEpics);

            //act
            List <Epic> epics = await epicManager.GetEpicsAsync(publicProjectId);

            //assert
            Assert.Equal(expectedEpics, epics);
        }
        public async Task GetEpicsAsync_FicticiousProjectId_ThrowsNotFoundException()
        {
            Guid    projectId             = Guid.NewGuid();
            Project expectedProject       = null;
            var     projectRepositoryMock = new Mock <IProjectRepository>(MockBehavior.Strict);

            projectRepositoryMock.Setup(x => x.GetProjectAsync(projectId))
            .ReturnsAsync(expectedProject);
            var          epicRepositoryMock = new Mock <IEpicRepository>(MockBehavior.Strict);
            IEpicManager epicManager        = new EpicManager(projectRepositoryMock.Object, epicRepositoryMock.Object);

            //act/assert
            _ = await Assert.ThrowsAsync <NotFoundException>(async() =>
            {
                _ = await epicManager.GetEpicsAsync(projectId);
            });
        }
        public async Task DeleteEpicAsync_ValidInput_NoExceptionsThrown()
        {
            //arrange
            Guid    publicProjectId = Guid.NewGuid();
            Project expectedProject = new Project()
            {
                ProjectId       = 1,
                PublicProjectId = publicProjectId,
                Name            = "name",
                Description     = null,
                DateTimeCreated = DateTime.UtcNow.AddMinutes(-60)
            };
            var projectRepositoryMock = new Mock <IProjectRepository>(MockBehavior.Strict);

            projectRepositoryMock.Setup(x => x.GetProjectAsync(publicProjectId))
            .ReturnsAsync(expectedProject);

            Guid publicEpicId = Guid.NewGuid();
            Epic expectedEpic = new Epic()
            {
                EpicId          = 1,
                PublicEpicId    = publicEpicId,
                ProjectId       = expectedProject.ProjectId,
                Project         = expectedProject,
                Name            = "name",
                Description     = null,
                DateTimeCreated = DateTime.UtcNow.AddMinutes(-60)
            };
            var epicRepositoryMock = new Mock <IEpicRepository>(MockBehavior.Strict);

            epicRepositoryMock.Setup(x => x.GetEpicAsync(publicEpicId))
            .ReturnsAsync(expectedEpic);
            epicRepositoryMock.Setup(x => x.DeleteEpicAsync(publicEpicId))
            .Returns(Task.CompletedTask);

            var epicManager = new EpicManager(projectRepositoryMock.Object, epicRepositoryMock.Object);

            //act
            await epicManager.DeleteEpicAsync(publicProjectId, publicEpicId);

            //assert - implicit
        }