Example #1
0
        public async Task <SessionFeedback> CreateFeedbackAsync(SessionFeedback feedback)
        {
            try
            {
                await _sessionFeedbacks.InsertOneAsync(feedback);
            }
            catch (MongoWriteException ex)
            {
                throw ex;
            }

            return(feedback);
        }
Example #2
0
        public async Task <SessionFeedbackDto> AddFeedbackAsync(Guid sessionId, Guid userId, byte rating)
        {
            var entity = new SessionFeedback()
            {
                SessionId = sessionId,
                UserId    = userId,
                Rating    = rating
            };

            _repo.Add(entity);

            await _repo.SaveAsync();

            return(_mapper.Map <SessionFeedbackDto>(entity));
        }
Example #3
0
        public async Task Success_FeedbackController_CreateSessionFeedback_Created()
        {
            //Arrange
            var sessionId = "someSessionId";
            var userId    = "someUserId";
            var feedback  = new SessionFeedback()
            {
                Comment   = "",
                Id        = "",
                Rate      = 5,
                SessionId = sessionId,
                UserId    = userId
            };

            _mockFeedbackService.Setup(service => service.CreateFeedbackAsync(It.IsAny <SessionFeedback>()))
            .ReturnsAsync(feedback);
            var httpContext = new DefaultHttpContext();

            httpContext.Request.Headers["Ubi-UserId"] = "1234566";

            var controllerContext = new ControllerContext()
            {
                HttpContext = httpContext
            };

            //Act
            var feedbackController = new FeedbackController(_mockLogger.Object, _mockFeedbackService.Object)
            {
                ControllerContext = controllerContext
            };
            var action = await feedbackController.CreateSessionFeedback(sessionId, new SessionFeedback()
            {
                Comment = "", Rate = 4
            });

            var result = action.Result as StatusCodeResult;

            //Assert
            Assert.IsType <StatusCodeResult>(result);
            Assert.Equal(201, result.StatusCode);
            _mockFeedbackService.Verify(service => service.CreateFeedbackAsync(It.IsAny <SessionFeedback>()), Times.Once);
        }
Example #4
0
        public async Task Fail_FeedbackController_CreateSessionFeedback_BadRequest_When_Feedback_Allready_Exists()
        {
            //Arrange
            var sessionId = "someSessionId";
            var userId    = "someUserId";
            var feedback  = new SessionFeedback()
            {
                Comment   = "",
                Id        = "",
                Rate      = 5,
                SessionId = sessionId,
                UserId    = userId
            };

            _mockFeedbackService.Setup(service => service.CreateFeedbackAsync(It.IsAny <SessionFeedback>()))
            .ThrowsAsync(CreateDuplicateMongoWriteException());
            var httpContext = new DefaultHttpContext();

            httpContext.Request.Headers["Ubi-UserId"] = "1234566";

            var controllerContext = new ControllerContext()
            {
                HttpContext = httpContext
            };

            //Act
            var feedbackController = new FeedbackController(_mockLogger.Object, _mockFeedbackService.Object)
            {
                ControllerContext = controllerContext
            };
            var action = await feedbackController.CreateSessionFeedback(sessionId, new SessionFeedback()
            {
                Comment = "", Rate = 4
            });

            var result = action.Result as ConflictResult;

            //Assert
            Assert.IsType <ConflictResult>(result);
            _mockFeedbackService.Verify(service => service.CreateFeedbackAsync(It.IsAny <SessionFeedback>()), Times.Once);
        }
Example #5
0
        public async Task Fail_FeedbackController_CreateSessionFeedback_BadRequest_When_Wrong_Header(string headerValue)
        {
            //Arrange
            var sessionId = "someSessionId";
            var userId    = "someUserId";
            var feedback  = new SessionFeedback()
            {
                Comment   = "",
                Id        = "",
                Rate      = 5,
                SessionId = sessionId,
                UserId    = userId
            };

            _mockFeedbackService.Setup(service => service.CreateFeedbackAsync(It.IsAny <SessionFeedback>()))
            .ReturnsAsync(feedback);
            var httpContext = new DefaultHttpContext();

            httpContext.Request.Headers["Ubi-UserId"] = headerValue;

            var controllerContext = new ControllerContext()
            {
                HttpContext = httpContext
            };

            //Act
            var feedbackController = new FeedbackController(_mockLogger.Object, _mockFeedbackService.Object)
            {
                ControllerContext = controllerContext
            };
            var action = await feedbackController.CreateSessionFeedback(sessionId, new SessionFeedback()
            {
                Comment = "", Rate = 4
            });

            var result = action.Result as BadRequestResult;

            //Assert
            Assert.IsType <BadRequestResult>(result);
            _mockFeedbackService.Verify(service => service.CreateFeedbackAsync(It.IsAny <SessionFeedback>()), Times.Never);
        }
        public SessionDetailViewModel(SessionFeedback feedback, INavigation nav)
        {
            _nav = nav;

            this.Feedback = feedback;
        }
Example #7
0
        public async Task <ActionResult <SessionFeedback> > CreateSessionFeedback(string sessionId, [Required, FromBody] SessionFeedback sessionFeedback)
        {
            // Check that header userid is present.. Can be replaced by Middleware
            if (!Request.Headers.ContainsKey(USERID_HEADER_KEY))
            {
                _logger.LogWarning(USERID_HEADER_KEY + " must not be null");
                return(BadRequest());
            }

            Request.Headers.TryGetValue(USERID_HEADER_KEY, out var userId);
            if (String.IsNullOrWhiteSpace(userId))
            {
                _logger.LogWarning(USERID_HEADER_KEY + " must not be empty");
                return(BadRequest());
            }
            sessionFeedback.UserId    = userId;
            sessionFeedback.SessionId = sessionId;
            sessionFeedback.CreatedOn = DateTime.Now;

            try
            {
                await _feedbackService.CreateFeedbackAsync(sessionFeedback);
            }
            catch (MongoWriteException e)
            {
                if (e.WriteError.Category == ServerErrorCategory.DuplicateKey)
                {
                    return(Conflict());
                }
            }

            return(StatusCode(201));
        }