public async Task Send_when_query_with_authorization_required_attribute_and_signed_in_sets_user_prop() { int expectedResponse = 5; var mockMediatr = new Mock <IMediator>(); mockMediatr.Setup(f => f.Send(It.Is <IRequest <int> >( request => VerifyTestQuery(request) ), It.IsAny <CancellationToken>())) .ReturnsAsync(expectedResponse); var stubUserIdentityService = new Mock <IUserIdentityService>(); stubUserIdentityService.Setup(f => f.GetSignedInUserIdentity()).Returns(new UserIdentity(Guid.NewGuid(), "test")); var stubImplProvider = new Mock <IImplProvider>(); stubImplProvider.Setup(f => f.Get <IUserIdentityService>()) .Returns(stubUserIdentityService.Object); var queryMediator = new QueryMediator(mockMediatr.Object, stubImplProvider.Object, Mock.Of <ILogger <QueryMediator> >()); var response = await queryMediator.Send(new TestQueryAuth(100)); response.Should().Be(expectedResponse); }
public async Task Send_when_valid_query_passed_returns_response() { int expectedResponse = 5; var mockMediatr = new Mock <IMediator>(); mockMediatr .Setup(f => f.Send(It.IsAny <TestQuery>(), It.IsAny <CancellationToken>())) .ReturnsAsync(expectedResponse); var queryMediator = new QueryMediator(mockMediatr.Object, Mock.Of <IImplProvider>(), Mock.Of <ILogger <QueryMediator> >()); var response = await queryMediator.Send(new TestQuery()); response.Should().Be(5); }
public void Send_when_query_with_authorization_required_attribute_and_not_signed_in_throws() { var mockMediatr = new Mock <IMediator>(); var stubUserIdentityService = new Mock <IUserIdentityService>(); stubUserIdentityService.Setup(f => f.GetSignedInUserIdentity()).Returns(UserIdentity.Empty); var stubImplProvider = new Mock <IImplProvider>(); stubImplProvider.Setup(f => f.Get <IUserIdentityService>()) .Returns(stubUserIdentityService.Object); var queryMediator = new QueryMediator(mockMediatr.Object, stubImplProvider.Object, Mock.Of <ILogger <QueryMediator> >()); Assert.ThrowsAsync <NotSignedInException>(async() => await queryMediator.Send(new TestQueryAuth(5))); }
public LoanApplicationProcessManager(CommandMediator commandMediator, QueryMediator queryMediator) { _commandMediator = commandMediator; _queryMediator = queryMediator; }
public void SetUp() { QueryMediator.LoadQueryAttributeStrategies("Test.UnitTests"); }
// ++++++++++++++++++++++++++++++++++++ // helpers // ++++++++++++++++++++++++++++++++++++ private IQueryMediator GetTestSubject() { var subject = new QueryMediator(new IQueryHandler[] { new TestQueryHandler() }); return(subject); }
public AuctionQueryController(QueryMediator mediator, IMapper mapper) { _mediator = mediator; _mapper = mapper; }
public UserQueryController(QueryMediator mediator, IMapper mapper) { _mediator = mediator; _mapper = mapper; }
static void Main() { Console.WriteLine("Hello World!"); //------------------------ MONOLITHIC SERVICE ------------------------ var monilithicProductService = new MonolithicImplementation.Common.AuditedProductService( new MonolithicImplementation.ProductServices( new ProductRepository())); //------------------------ SOLID (SRP and ISP applied) SERVICE ------------------------ var solidRepo = new ProductRepository(); var solidProductService = new SOLID.Facades.ProductServices( new SOLID.Common.AuditedProductCreate(new SOLID.Product.ProductCreate(solidRepo)), new SOLID.Common.AuditedProductEdit(new SOLID.Product.ProductEdit(solidRepo)), new SOLID.Common.AuditedProductDelete(new SOLID.Product.ProductDelete(solidRepo)), new SOLID.Product.ProductGet(solidRepo), new SOLID.Product.ProductList(solidRepo)); //------------------------ CQS Basic (OCP applied) SERVICE ------------------------ var commandQueryRepo = new ProductRepository(); var cqsProductService = new FinalWithCasting.Facades.ProductServices( new FinalWithCasting.Common.CommandAspects.AuditedCommandHandler(new FinalWithCasting.Commands.Product.Create.CreateProductCommandHandler(commandQueryRepo)), new FinalWithCasting.Common.CommandAspects.AuditedCommandHandler(new FinalWithCasting.Commands.Product.Edit.EditProductCommandHandler(commandQueryRepo)), new FinalWithCasting.Common.CommandAspects.AuditedCommandHandler(new FinalWithCasting.Commands.Product.Delete.DeleteProductCommandHandler(commandQueryRepo)), new FinalWithCasting.Queries.Product.Get.GetProductQueryHandler(commandQueryRepo), new FinalWithCasting.Queries.Product.List.ListProductQueryHandler(commandQueryRepo) ); //------------------------ CQS Generic (OCP applied) SERVICE ------------------------ var commandQueryGenericRepo = new ProductRepository(); var cqsGenericProductService = new FinalGeneric.Facades.ProductServices( new AuditedCommandHandler <CreateProductCommand>(new CreateProductCommandHandler(commandQueryGenericRepo)), new AuditedCommandHandler <EditProductCommand>(new EditProductCommandHandler(commandQueryGenericRepo)), new AuditedCommandHandler <DeleteProductCommand>(new DeleteProductCommandHandler(commandQueryGenericRepo)), new GetProductQueryHandler(commandQueryGenericRepo), new ListProductQueryHandler(commandQueryGenericRepo)); //------------------------ CQS Generic SERVICE With IoC ------------------------ Container container = new Container(); container.Register <IProductRepository, ProductRepository>(Lifestyle.Singleton); container.Register( typeof(IQueryHandler <,>), typeof(IQueryHandler <,>).Assembly); container.Register( typeof(ICommandHandler <>), typeof(ICommandHandler <>).Assembly); container.RegisterDecorator( typeof(ICommandHandler <>), typeof(AuditedCommandHandler <>)); var queryMediator = new QueryMediator(container); var commandMediator = new CommandMediator(container); commandMediator.Process(new CreateProductCommand { Name = "Gel Runner", BrandName = "Asics", Price = 100, Count = 20 }); var products = queryMediator.Process <ListProductQuery, IEnumerable <ListProductResult> > (new ListProductQuery()); foreach (var product in products) { Console.WriteLine($"{product.Name} - {product.BrandName} / {product.Price:c}"); } }
public AuthenticationQueryController(QueryMediator mediator) { _mediator = mediator; }