public void GivenEmptyQueryStrings_WhenCallingGetAll_ThenTwoDummyResultsShouldBeReturned()
        {
            // Arrange
            var students = new List <IStudent>
            {
                new Student("Joe", "Smith"),
                new Student("John", "Bloggs")
            };

            var reply = new GetAllStudentsReplyMessage(Guid.NewGuid())
            {
                Students = students.Cast <Student>()
            };

            var queryCountWrapper = new Mock <IQueryCountWrapper>();

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

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

            bus
            .Setup(b => b.SendRequest <GetAllStudentsMessage, GetAllStudentsReplyMessage>(It.IsAny <string>(),
                                                                                          It.IsAny <GetAllStudentsMessage>(), null, It.IsAny <int>()))
            .Returns(reply);

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

            // Act
            var result = controller.GetAll("", "", 0, 0);

            // Assert
            Assert.NotNull(result);
            Assert.Equal(2, result.Count());
        }
        public void GivenGetAllMessage_WhenCallingGetAllStudentsHandler_ThenCorrespondingReplyIsSend()
        {
            // Arrange
            var repositry = new Mock <ISqlRepository <IStudent> >(MockBehavior.Strict);

            repositry.Setup(s => s.List(null, null, 0, 0)).Returns(new List <Student>
            {
                new Student("test1", "1")
                {
                    Id = 1
                },
                new Student("test2", "2")
                {
                    Id = 2
                }
            });

            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 <GetAllStudentsReplyMessage>()));

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

            GetAllStudentsMessage      request = new GetAllStudentsMessage(Guid.NewGuid(), null, null, 0, 0);
            GetAllStudentsReplyMessage reply   = null;

            // Act
            handler.Execute(request);

            // Assert
            context.Verify(c => c.Reply(It.IsAny <GetAllStudentsReplyMessage>()), Times.Once);
        }
        public void Execute(GetAllStudentsMessage message)
        {
            var username = _claimsHelper.GetClaims().UserClaims.Username;

            if (username == "ofebres-cordero")
            {
                var replyMessage = new GetAllStudentsReplyMessage(message.CorrelationId)
                {
                    Students = _repository.List().Cast <Student>().ToList()
                };
                Context.Reply(replyMessage);
            }
            else
            {
                Console.WriteLine("Request Failed - Invalid Token");
                Context.Reply(new GetAllStudentsReplyMessage(message.CorrelationId));
            }
        }
        public void GivenASearchValue_WhenCallingGetAll_ThenThatSearchValueIsPassedToTheMessage()
        {
            // Arrange
            var query    = "Name=Joe";
            var sortby   = "Name DESC";
            var pageSize = 10;
            var page     = 0;

            var students = new List <IStudent>
            {
                new Student("Joe", "Smith1")
                {
                    Id = 3
                },
                new Student("Joe", "Smith2")
                {
                    Id = 1
                },
                new Student("Joe", "Smith3")
                {
                    Id = 2
                }
            };

            GetAllStudentsMessage      request = null;
            GetAllStudentsReplyMessage reply   = null;

            var queryCountWrapper = new Mock <IQueryCountWrapper>();

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

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

            bus
            .Setup(b => b.SendRequest <GetAllStudentsMessage, GetAllStudentsReplyMessage>(It.IsAny <string>(),
                                                                                          It.IsAny <GetAllStudentsMessage>(), null, It.IsAny <int>()))
            .Returns <string, GetAllStudentsMessage, Dictionary <string, string>, int>(
                (endpoint, message, headers, timeout) =>
            {
                request = message;
                reply   = new GetAllStudentsReplyMessage(message.CorrelationId)
                {
                    Students = students.Cast <Student>()
                };
                return(reply);
            });

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

            // Act
            var result = controller.GetAll(query, sortby, pageSize, page);

            // Assert
            Assert.Equal(query, request.Query);
            Assert.Equal(sortby, request.SortBy);
            Assert.Equal(pageSize, request.PageSize);
            Assert.Equal(page, request.Page);

            Assert.NotNull(result);
            Assert.Equal(3, result.Count());
            Assert.Equal(1, result.First().Id);
            Assert.Equal(3, result.Last().Id);
        }