示例#1
0
        public async static Task ProcessUpdateStudentMessageAsync([QueueTrigger("%queueName%")] UpdateStudentMessage message, TextWriter logger)
        {
            await Console.Out.WriteAsync($"Starting processing request for user: '******'");

            try
            {
                var repository = new StudentRepository();
                var student    = new Student
                {
                    Id        = message.Id,
                    FirstName = message.FirstName,
                    LastName  = message.LastName
                };

                await repository.AddStudent(student);
            }
            catch (Exception ex)
            {
                var baseException = ex.GetBaseException();
                var messageJson   = JsonConvert.SerializeObject(message);
                var error         = $"Error Message: '{baseException.Message}'; Stack Trace: '{baseException.StackTrace}'; Queue Message: {messageJson}";
                await logger.WriteAsync(error);
            }

            await Console.Out.WriteAsync($"Completed processsing request for user: '******'");
        }
        public IActionResult Update(long id, [FromBody] Student updateStudent)
        {
            var request = new UpdateStudentMessage(Guid.NewGuid(), id, updateStudent);
            var reply   = _bus.SendRequest <UpdateStudentMessage, UpdateStudentReplyMessage>("ClassroomApi_Consumer",
                                                                                             request);

            return(new AcceptedResult());
        }
示例#3
0
        private void UpdateStudentMessageReceived(UpdateStudentMessage obj)
        {
            var student    = obj.StudentListModel ?? throw new ArgumentException();
            var oldStudent = Students.First(s => s.Id == student.Id);

            var studentIndex = Students.IndexOf(oldStudent);

            Students[studentIndex] = student;
        }
        public void GivenUpdatingStudent_WhenPutting_ThenCorrespondingStudentIsUpdated()
        {
            // Arrange

            var testStudent = new Student("OliCreationTest", "test")
            {
                Id = 1
            };
            var updatedStudent = new Student("override", "override");
            UpdateStudentMessage      request = null;
            UpdateStudentReplyMessage reply   = null;

            var queryCountWrapper = new Mock <IQueryCountWrapper>();

            queryCountWrapper.SetupGet(qcw => qcw.QueryCount).Returns(0);

            var bus = new Mock <IBus>(MockBehavior.Strict);

            bus
            .Setup(b => b.SendRequest
                   <UpdateStudentMessage, UpdateStudentReplyMessage>
                       (It.IsAny <string>(), It.IsAny <UpdateStudentMessage>(), null, It.IsAny <int>()))
            .Returns <string, UpdateStudentMessage, Dictionary <string, string>, int>(
                (endpoint, message, headers, timeout) =>
            {
                request = message;
                reply   = new UpdateStudentReplyMessage(message.CorrelationId);
                return(reply);
            });

            var claimsHelper = new Mock <IClaimsHelper>(MockBehavior.Strict);
            var controller   = new StudentController(bus.Object, claimsHelper.Object, queryCountWrapper.Object);

            // Act
            var result         = controller.Update(1, updatedStudent);
            var okObjectResult = result as AcceptedResult;

            // Assert

            Assert.NotNull(okObjectResult);
        }
        [Fact] // TODO
        public void GivenUpdateStudentMessage_WhenCallingUpgradeStudentHandler_ThenCorrespondingReplyIsSend()
        {
            // Arrange
            var repositry      = new Mock <ISqlRepository <IStudent> >(MockBehavior.Strict);
            var updatedStudent = new Student("test1Updated", "1Updated");

            repositry.Setup(s => s.UpdateStudent(updatedStudent));
            repositry.Setup(s => s.Read(1)).Returns(updatedStudent);
            var claimsHelper = new Mock <IClaimsHelper>(MockBehavior.Strict);

            claimsHelper.Setup(h => h.GetClaims()).Returns(new Claims()
            {
                UserClaims = new UserClaim()
                {
                    Username = "******"
                }
            });

            var context = new Mock <IConsumeContext>(MockBehavior.Strict);

            context.Setup(c => c.Reply(It.IsAny <UpdateStudentReplyMessage>()));

            var handler = new SqlUpdateStudentHandler(repositry.Object, claimsHelper.Object)
            {
                Context = context.Object
            };

            UpdateStudentMessage      request = new UpdateStudentMessage(Guid.NewGuid(), 1, updatedStudent);
            UpdateStudentReplyMessage reply   = null;

            // Act
            handler.Execute(request);

            // Assert
            context.Verify(c => c.Reply(It.IsAny <UpdateStudentReplyMessage>()), Times.Once);
        }
示例#6
0
        public Task Put(Guid id, SaveStudentViewModel model)
        {
            var message = new UpdateStudentMessage(id, model.FirstName, model.LastName);

            return(_bus.PublishAsync(message));
        }