示例#1
0
        public async Task Update_SupplyValidData_ReturnResponseDto()
        {
            #region Arrange
            var message = new CreateSubscriptionRequestDto {
                Email = "*****@*****.**", Details = new List <SubscriptionDetailDto> {
                    new SubscriptionDetailDto {
                        Catalogue = "catalogue", Key = "item", Operator = "=", Value = "BMW"
                    }
                }
            };
            var mockSubscriptionId = Guid.NewGuid().ToString();
            var mocKSubscription   = new Subscription {
                SubscriptionId = mockSubscriptionId
            };
            _mockSubscriptionRepository.Setup(x => x.UpdateAsync(mocKSubscription, mockSubscriptionId)).ReturnsAsync(mocKSubscription);
            #endregion

            #region Act
            var result = await _subscriptionService.UpdateAsync(message, mockSubscriptionId, "100");

            #endregion

            #region Assert
            Assert.NotNull(result);
            Assert.Equal(mockSubscriptionId, result.SubscriptionId);
            _mockCacheProvider.Verify(c => c.AddOrUpdateItem(It.IsAny <string>(), It.IsAny <object>()), Times.Once);
            #endregion
        }
        public Task <CreateSubscriptionResponseDto> CreateAsync(CreateSubscriptionRequestDto request, string userId)
        {
            if (request is null)
            {
                throw new ArgumentNullException(nameof(request));
            }

            if (request.Details == null || !request.Details.Any())
            {
                throw new ArgumentException("Missing Details");
            }

            return(CreateSubscriptionAsync(request, userId));
        }
示例#3
0
        public async Task <IActionResult> PostAsync([Required] CreateSubscriptionRequestDto request, [Required][FromHeader(Name = "User-Id")] string userId)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState.Values));
            }

            var response = await _subscriptionService.CreateAsync(request, userId);

            response.Url    = GetUrl(response.SubscriptionId);
            response.UserId = userId;

            return(Ok(response));
        }
        private async Task <CreateSubscriptionResponseDto> CreateSubscriptionAsync(CreateSubscriptionRequestDto request, string userId, string subscriptionId = null)
        {
            subscriptionId ??= Guid.NewGuid().ToString();

            var subscription = new Subscription
            {
                Id             = Guid.NewGuid().ToString(),
                CreatedOn      = DateTime.Now,
                SubscriptionId = subscriptionId,
                UserId         = userId,
                Email          = request.Email,
                Details        = request.Details.Select(x => new SubscriptionDetail {
                    Catalogue = x.Catalogue, Key = x.Key, Operator = x.Operator, Value = x.Value
                })
            };

            var id = await _subscriptionRepository.CreateAsync(subscription);

            _cacheProvider.AddOrUpdateItem(subscriptionId, subscription);

            return(new CreateSubscriptionResponseDto {
                SubscriptionId = subscriptionId
            });
        }
        public async Task <CreateSubscriptionResponseDto> UpdateAsync(CreateSubscriptionRequestDto request, string subscriptionId, string userId)
        {
            if (request is null)
            {
                throw new ArgumentNullException(nameof(request));
            }

            if (subscriptionId is null)
            {
                throw new ArgumentNullException(nameof(subscriptionId));
            }

            if (userId is null)
            {
                throw new ArgumentNullException(nameof(userId));
            }

            if (!await DeleteAsync(subscriptionId, userId))
            {
                return(null);
            }

            return(await CreateSubscriptionAsync(request, userId, subscriptionId));
        }