public async Task HandleShouldReturnOk()
        {
            // Arrange
            var id = Guid.NewGuid();

            var sourceReadRepositoryMock = new Mock <ISourceReadRepository>();

            sourceReadRepositoryMock.Setup(x => x.GetAsync(id)).Returns(Task.FromResult(new Source(id, "name", "description")));
            var sourceReadRepository = sourceReadRepositoryMock.Object;

            var mapperMock = new Mock <IMapper>();

            mapperMock.Setup(x => x.Map <SourceModel>(It.IsAny <object>())).Returns(new SourceModel());
            var mapper = mapperMock.Object;

            var query = new GetSourceQuery(id);

            var handler = new GetSourceQueryHandler(mapper, sourceReadRepository);

            // Act
            var result = await handler.Handle(query, CancellationToken.None);

            // Assert
            result.IsFailure.Should().BeFalse();
            result.Should().BeOfType(typeof(Result <SourceModel>));
        }
        public async Task HandleShouldReturnFailWhenDatabaseSpecificErrorOccurs()
        {
            // Arrange
            var id = Guid.NewGuid();

            var sourceReadRepositoryMock = new Mock <ISourceReadRepository>();

            sourceReadRepositoryMock.Setup(x => x.GetAsync(id)).Throws <SomeDatabaseSpecificException>();
            var sourceReadRepository = sourceReadRepositoryMock.Object;

            var mapperMock = new Mock <IMapper>();

            mapperMock.Setup(x => x.Map <SourceModel>(It.IsAny <object>())).Returns(new SourceModel());
            var mapper = mapperMock.Object;

            var query = new GetSourceQuery(id);

            var handler = new GetSourceQueryHandler(mapper, sourceReadRepository);

            // Act
            var result = await handler.Handle(query, CancellationToken.None);

            // Assert
            result.IsFailure.Should().BeTrue();
            result.Failures.Should().OnlyContain(x => x.Message == CustomFailures.GetSourceFailure);
        }
        public async Task HandleShouldReturnFailWhenNotFound()
        {
            // Arrange
            var id = Guid.NewGuid();

            var sourceReadRepositoryMock = new Mock <ISourceReadRepository>();

            sourceReadRepositoryMock.Setup(x => x.GetAsync(id)).Throws <EntityNotFoundDbException>();
            var sourceReadRepository = sourceReadRepositoryMock.Object;

            var mapperMock = new Mock <IMapper>();

            mapperMock.Setup(x => x.Map <SourceModel>(It.IsAny <object>())).Returns(new SourceModel());
            var mapper = mapperMock.Object;

            var query = new GetSourceQuery(id);

            var handler = new GetSourceQueryHandler(mapper, sourceReadRepository);

            // Act
            var result = await handler.Handle(query, CancellationToken.None);

            // Assert
            result.IsFailure.Should().BeTrue();
            result.Failures.Should().OnlyContain(x => x.Code == HandlerFaultCode.NotFound.Name);
        }
Пример #4
0
        public GetSourceQuery Map(GetSourceRequest request)
        {
            var id = new Guid(request.RouteId);

            var result = new GetSourceQuery(id);

            return(result);
        }
Пример #5
0
        public void ShouldReturnNotFound_WhenPathIdNotFound()
        {
            var query = new GetSourceQuery()
            {
                PathId = 99999, ModuleId = 1, ThemeId = 1, Id = 1
            };

            FluentActions.Invoking(() =>
                                   SendAsync(query)).Should().ThrowAsync <NotFoundException>();
        }
        public void ShouldContainNoErrors()
        {
            // Arrange
            var query = new GetSourceQuery(id: Guid.NewGuid());

            // Act
            var validationResult = _validator.Validate(query);
            var exists           = validationResult.Errors.Count > 0;

            // Assert
            exists.Should().BeFalse();
        }
Пример #7
0
        public async Task GetOne_ShouldReturnSource()
        {
            var path = await AddAsync(
                new Path { Title = "Some Path", Key = "some-path", Description = "Some Path Description" });

            var module = await SendAsync(new CreateModule
            {
                Key         = "module-key",
                Title       = "New Module Module",
                Description = "New Module Description",
                Necessity   = Necessity.MustKnow
            });

            var theme = await AddAsync(new Theme
            {
                Title       = "New Theme",
                ModuleId    = module.Id,
                Description = "New Theme Description",
                Necessity   = Necessity.MustKnow,
                Complexity  = Complexity.Beginner,
                Order       = 2
            });

            var source = await AddAsync(new Source
            {
                ThemeId      = theme.Id,
                Title        = "Source 1",
                Description  = "Some description",
                Url          = "https://source1.com",
                Order        = 0,
                Type         = SourceType.Documentation,
                Availability = Availability.Free,
                Relevance    = Relevance.Relevant,
                Tags         = new List <string> {
                    "Tag1", "Tag2", "Tag3"
                }
            });

            var query = new GetSourceQuery()
            {
                PathId = path.Id, ModuleId = module.Id, ThemeId = theme.Id, Id = source.Id
            };

            var createdSource = await SendAsync(query);

            createdSource.Id.Should().Be(source.Id);
            createdSource.Title.Should().Be("Source 1");
            createdSource.Description.Should().Be("Some description");
            createdSource.Url.Should().Be("https://source1.com");
            createdSource.Type.Should().Be(SourceType.Documentation);
            createdSource.ThemeId.Should().Be(theme.Id);
            createdSource.Tags.Should().HaveCount(3);
        }
        public void ShouldHaveSourceNotFoundCustomFailureWhenIdIsGuidEmpty()
        {
            // Arrange
            var query = new GetSourceQuery(id: Guid.Empty);

            // Act
            var validationResult = _validator.Validate(query);
            var exists           =
                validationResult.Errors.Any(
                    a => a.PropertyName.Equals("Id") && a.ErrorMessage.Contains(CustomFailures.SourceNotFound));

            // Assert
            exists.Should().BeTrue();
        }
Пример #9
0
        public void GetOne_ShouldThrow_WhenCanceled()
        {
            var cts = new CancellationTokenSource();

            cts.Cancel();

            var query = new GetSourceQuery()
            {
                PathId = 1, ModuleId = 1, ThemeId = 1, Id = 1
            };

            FluentActions.Invoking(() =>
                                   SendAsync(query, cts.Token)).Should().ThrowAsync <TaskCanceledException>();
        }