public void create_order_invokes_factory_create_order(
            OrderData data)
        {
            var cart = new CartDataBuilder()
                .WithId(data.CartId)
                .Build();

            var user = new UserDataBuilder()
                .WithId(data.UserId)
                .Build();

            cartRepository.GetCartById(data.CartId)
                .Returns(cart);

            userRepository.GetUserById(data.UserId)
                .Returns(user);

            sut.CreateOrder(data);

            factory.Received()
                .CreateOrder(user,
                             cart,
                             data.Address,
                             data.City,
                             data.Zip);
        }
        public void sucessful_scenario_of_order_creation(
            OrderData data)
        {
            // Arrange
            var products = new ProductDataFactory()
                .CreateSavedProductsList(3);
            productRepository.Save(products);

            var cart = new CartDataBuilder()
                .WithProducts(products)
                .Build();
            cartRepository.Save(cart);

            var user = new UserDataBuilder()
                .WithId(data.UserId)
                .Build();
            userRepository.CreateUser(user);

            data.CartId = cart.Id.Value;
            data.UserId = user.Id;

            //Act
            var actual = sut.CreateOrder(data);

            //Assert
            actual.User
                .ShouldBeEquivalentTo(user);
            //actual.OrderItems
            //    .ShouldAllBeEquivalentTo(cart.Items);

            actual.Address
                .Should().Be(data.Address);
            actual.City
                .Should().Be(data.City);
            actual.Zip
               .Should().Be(data.Zip);
        }