public async Task GetSkillResponse_ShouldReturnSkillResponse_WhenInputIsValid() { TokenUser tokenUser = new TokenUser() { Id = "existingTokenUser", Players = new List <Player>() }; SkillResponse expectedSkillResponse = new SkillResponse(); Mock <ISkillRequestValidator> mockSkillRequestValidator = new Mock <ISkillRequestValidator>(); mockSkillRequestValidator.Setup(x => x.IsValid(It.IsAny <SkillRequest>())).Returns(true); Mock <SkillProductsClient> mockInSkillProductsClient = new Mock <SkillProductsClient>(MockBehavior.Loose); mockInSkillProductsClient.Setup(x => x.GetProducts()).ReturnsAsync(new InSkillProductsResponse() { Products = new InSkillProduct[0] }); Mock <ISkillProductsClientAdapter> mockSkillProductsAdapter = new Mock <ISkillProductsClientAdapter>(MockBehavior.Loose); mockSkillProductsAdapter.Setup(x => x.GetClient(It.IsAny <SkillRequest>())).Returns(mockInSkillProductsClient.Object); Mock <ILogger <RequestBusinessLogic> > mockLogger = new Mock <ILogger <RequestBusinessLogic> >(); Mock <IRequestRouter> mockIntentRequestRouter = new Mock <IRequestRouter>(); mockIntentRequestRouter.Setup(x => x.GetSkillResponse(It.IsAny <SkillRequest>(), It.IsAny <TokenUser>())).ReturnsAsync(expectedSkillResponse); mockIntentRequestRouter.Setup(x => x.RequestType).Returns(RequestType.IntentRequest); Mock <IRequestMapper> mockRequestMapper = new Mock <IRequestMapper>(); mockRequestMapper.Setup(x => x.GetRequestHandler(It.IsAny <SkillRequest>())).Returns(mockIntentRequestRouter.Object); Mock <ITokenUserData> mockTokenUserData = new Mock <ITokenUserData>(); mockTokenUserData.Setup(x => x.Get(It.IsAny <string>())).ReturnsAsync(tokenUser); Mock <IUserProfileClient> mockUserProfileClient = new Mock <IUserProfileClient>(); mockUserProfileClient.Setup(x => x.GetUserId(It.IsAny <string>())).ReturnsAsync("TestProfileUserId"); RequestBusinessLogic sut = new RequestBusinessLogic(mockUserProfileClient.Object, mockSkillRequestValidator.Object, mockSkillProductsAdapter.Object, mockLogger.Object, mockRequestMapper.Object, mockTokenUserData.Object); SkillResponse skillResponse = await sut.GetSkillResponse(ValidSkillRequest, tokenUser); Assert.IsType <SkillResponse>(skillResponse); }
public async Task GetSkillResponse_ShouldThrowArgumentNullException_WhenTokenUserIsNull() { SkillResponse expectedSkillResponse = new SkillResponse(); Mock <ISkillRequestValidator> mockSkillRequestValidator = new Mock <ISkillRequestValidator>(); mockSkillRequestValidator.Setup(x => x.IsValid(It.IsAny <SkillRequest>())).Returns(true); Mock <SkillProductsClient> mockInSkillProductsClient = new Mock <SkillProductsClient>(MockBehavior.Loose); mockInSkillProductsClient.Setup(x => x.GetProducts()).ReturnsAsync(new InSkillProductsResponse() { Products = new InSkillProduct[0] }); Mock <ISkillProductsClientAdapter> mockSkillProductsAdapter = new Mock <ISkillProductsClientAdapter>(MockBehavior.Loose); mockSkillProductsAdapter.Setup(x => x.GetClient(It.IsAny <SkillRequest>())).Returns(mockInSkillProductsClient.Object); Mock <ILogger <RequestBusinessLogic> > mockLogger = new Mock <ILogger <RequestBusinessLogic> >(); Mock <IRequestRouter> mockIntentRequestRouter = new Mock <IRequestRouter>(); mockIntentRequestRouter.Setup(x => x.GetSkillResponse(It.IsAny <SkillRequest>(), It.IsAny <TokenUser>())).ReturnsAsync(expectedSkillResponse); mockIntentRequestRouter.Setup(x => x.RequestType).Returns(RequestType.IntentRequest); Mock <IRequestMapper> mockRequestMapper = new Mock <IRequestMapper>(); mockRequestMapper.Setup(x => x.GetRequestHandler(It.IsAny <SkillRequest>())).Returns(mockIntentRequestRouter.Object); Mock <ITokenUserData> mockTokenUserData = new Mock <ITokenUserData>(); Mock <IUserProfileClient> mockUserProfileClient = new Mock <IUserProfileClient>(); mockUserProfileClient.Setup(x => x.GetUserId(It.IsAny <string>())).ReturnsAsync("TestProfileUserId"); RequestBusinessLogic sut = new RequestBusinessLogic(mockUserProfileClient.Object, mockSkillRequestValidator.Object, mockSkillProductsAdapter.Object, mockLogger.Object, mockRequestMapper.Object, mockTokenUserData.Object); await Assert.ThrowsAsync <ArgumentNullException>(() => sut.GetSkillResponse(ValidSkillRequest, null)); }