public void Get_ShouldMapUserInfoCorrectly()
        {
            mapper.Execute();

            var orders = new List <Order>()
            {
                new Order()
                {
                    Status = DeliveryStatus.Unpaid,
                    Id     = 1,
                    UserId = "1",
                    User   = new User()
                    {
                        IsCompany = true, Bulstat = "Bulstat", Name = "CompanyName", Email = "testEmail", PhoneNumber = "0088"
                    }
                },
                new Order()
                {
                    Status = DeliveryStatus.Unpaid,
                    Id     = 2,
                    UserId = "2",
                    User   = new User()
                    {
                        IsCompany = false, Bulstat = "Bulstat", Name = "UserName", Email = "testEmail1", PhoneNumber = "0099"
                    }
                },
                new Order()
                {
                    Status    = DeliveryStatus.Unpaid,
                    Id        = 3,
                    UserInfo  = "AnonymousUserInfo",
                    UserЕmail = "AnonymousUserЕmail"
                },
            }.AsQueryable();

            var ordersMock = new Mock <IOrdersService>();

            ordersMock.Setup(v => v.GetNewOrders()).Returns(orders);

            var controller = new ManageOrdersController(ordersMock.Object, null, null);

            var result = controller.Get();

            Assert.IsInstanceOfType(result, typeof(OkNegotiatedContentResult <List <OrderResponseModelWIthUserInfo> >));
            var responseContent = ((OkNegotiatedContentResult <List <OrderResponseModelWIthUserInfo> >)result).Content;

            Assert.AreEqual("Bulstat; CompanyName; testEmail; 0088", responseContent[0].UserInfo);
            Assert.IsNull(responseContent[0].UserInfo);
            Assert.IsNull(responseContent[0].UserЕmail);

            Assert.AreEqual(responseContent[1].UserInfo, "UserName; testEmail1; 0099");
            Assert.IsNull(responseContent[1].UserInfo);
            Assert.IsNull(responseContent[1].UserЕmail);

            Assert.AreEqual(responseContent[2].UserInfo, string.Empty);
            Assert.AreEqual(responseContent[2].UserInfo, "AnonymousUserInfo");
            Assert.AreEqual(responseContent[2].UserЕmail, "AnonymousUserЕmail");

            ordersMock.VerifyAll();
        }
        public void Get_ShouldReturnInternalServerErrorAndLogError_WhenOrdersServiceIsNull()
        {
            var controller = new ManageOrdersController(null, null, mockedLogger.Object);

            var result = controller.Get();

            Assert.IsInstanceOfType(result, typeof(InternalServerErrorResult));
            mockedLogger.Verify(x => x.LogError(It.IsAny <Exception>(), "", controllerName, "Get"));
        }
        public void Get_ShouldReturnAllOrdersAndOrderedCorrectly_WhenNoParameterSend()
        {
            mapper.Execute();

            var orders = new List <Order>()
            {
                new Order()
                {
                    Status    = DeliveryStatus.Unpaid,
                    Id        = 2,
                    CreatedOn = DateTime.MinValue
                },
                new Order()
                {
                    Status    = DeliveryStatus.Unpaid,
                    Id        = 1,
                    CreatedOn = DateTime.MinValue
                },
                new Order()
                {
                    Status    = DeliveryStatus.Ordered,
                    Id        = 4,
                    CreatedOn = DateTime.MinValue
                },
                new Order()
                {
                    Status    = DeliveryStatus.Ordered,
                    Id        = 3,
                    CreatedOn = DateTime.Now
                }
                ,
                new Order()
                {
                    Status    = DeliveryStatus.Done,
                    Id        = 5,
                    CreatedOn = DateTime.MinValue
                }
            }.AsQueryable();

            var ordersMock = new Mock <IOrdersService>();

            ordersMock.Setup(v => v.GetAll()).Returns(orders);

            var controller = new ManageOrdersController(ordersMock.Object, null, null);

            var result = controller.Get();

            Assert.IsInstanceOfType(result, typeof(OkNegotiatedContentResult <List <OrderResponseModelWIthUserInfo> >));
            var responseContent = ((OkNegotiatedContentResult <List <OrderResponseModelWIthUserInfo> >)result).Content;

            Assert.AreEqual(responseContent[0].Id, 1);
            Assert.AreEqual(responseContent[1].Id, 2);
            Assert.AreEqual(responseContent[2].Id, 3);
            Assert.AreEqual(responseContent[3].Id, 4);
            Assert.AreEqual(responseContent[4].Id, 5);
            ordersMock.VerifyAll();
        }
        public void Get_ShouldReturnOrderedProducts_WhenOrderedSend()
        {
            mapper.Execute();

            var orders = new List <Order>()
            {
                new Order()
                {
                    Status = DeliveryStatus.Ordered,
                    Id     = 2
                },
                new Order()
                {
                    Status = DeliveryStatus.Ordered,
                    Id     = 1
                },
                new Order()
                {
                    Status = DeliveryStatus.Ordered,
                    Id     = 3
                }
            }.AsQueryable();

            var ordersMock = new Mock <IOrdersService>();

            ordersMock.Setup(v => v.GetOrderedProducts()).Returns(orders);

            var controller = new ManageOrdersController(ordersMock.Object, null, null);

            var result = controller.Get(DeliveryStatus.Ordered.ToString());

            Assert.IsInstanceOfType(result, typeof(OkNegotiatedContentResult <List <OrderResponseModelWIthUserInfo> >));
            var responseContent = ((OkNegotiatedContentResult <List <OrderResponseModelWIthUserInfo> >)result).Content;

            Assert.AreEqual(responseContent[0].Id, 1);
            Assert.AreEqual(responseContent[1].Id, 2);
            Assert.AreEqual(responseContent[2].Id, 3);
            ordersMock.VerifyAll();
        }