コード例 #1
0
        private OrderCreationFacade CreateFacade(DateTime date)
        {
            var vatRateProvider = new Mock <IVatRateProvider>();

            vatRateProvider.Setup(p => p.GetVatRate(It.IsAny <DateTime>(), It.IsAny <CalculateAddressDTO>())).Returns(1.21m);

            var vatNumberValidator = new Mock <IVatNumberValidator>();

            vatNumberValidator.Setup(v => v.IsValidVat(It.IsAny <CalculateAddressDTO>())).Returns(true);

            var dateTimeProvider = new Mock <IDateTimeProvider>();

            dateTimeProvider.SetupGet(v => v.Now).Returns(date);

            var eventsApi = new Mock <OpenEvents.Client.IEventsApi>();

            eventsApi.Setup(a => a.ApiRegistrationsByEventIdCountGetAsync(It.IsAny <string>())).Returns(Task.FromResult(0));

            var ordersCollection        = new Mock <IMongoCollection <Order> >();
            var discountCodesCollection = new Mock <IMongoCollection <DiscountCode> >();

            var orderNumbersQuery = new Mock <OrderNumbersQuery>(ordersCollection.Object);

            orderNumbersQuery.Setup(q => q.Execute()).Returns(Task.FromResult <IList <string> >(new List <string>()
            {
                "2018000001"
            }));

            var orderCreatedPublisher = new Mock <IPublisher <OrderCreated> >();

            var orderDiscountFacade    = new Mock <OrderDiscountFacade>(discountCodesCollection.Object);
            var priceCalculationFacade = new OrderPriceCalculationFacade(vatRateProvider.Object, vatNumberValidator.Object, dateTimeProvider.Object, orderDiscountFacade.Object);

            return(new OrderCreationFacade(ordersCollection.Object, () => orderNumbersQuery.Object, priceCalculationFacade, orderCreatedPublisher.Object, dateTimeProvider.Object, eventsApi.Object));
        }
コード例 #2
0
 public OrdersController(OrdersFacade ordersFacade, OrderCreationFacade orderCreationFacade, OrderPriceCalculationFacade orderPriceCalculationFacade, EventsCache eventsCache, DocumentStorageService documentStorageService)
 {
     this.ordersFacade                = ordersFacade;
     this.orderCreationFacade         = orderCreationFacade;
     this.orderPriceCalculationFacade = orderPriceCalculationFacade;
     this.eventsCache            = eventsCache;
     this.documentStorageService = documentStorageService;
 }