예제 #1
0
        public void GetBasket_ReturnsBasket()
        {
            var expectedBasket = new Basket()
            {
                Id = Guid.NewGuid()
            };
            var dummyRequest = new RestRequest()
            {
                Method = Method.GET, Resource = "baskets"
            };
            var dummySettings = new BasketClientSettings()
            {
                BaseUrl = "https://api.co.uk"
            };
            var restClientMock = new Mock <IRestClient>();

            restClientMock.Setup(
                x => x.Execute <Basket>(dummyRequest))
            .Returns(new RestResponse <Basket> {
                Data = expectedBasket
            });
            var restRequestFactoryMock = new Mock <IRestRequestBuilder>();

            restRequestFactoryMock.Setup(x => x.Build()).Returns(dummyRequest);
            var sut = new BasketClient(dummySettings, restClientMock.Object, restRequestFactoryMock.Object);

            var actual = sut.GetBasket();

            Assert.Equal(expectedBasket.Id, actual.Id);
        }
예제 #2
0
        public ShopperApiClient(ApiSettings apiSettings)
        {
            var factory = new ShopperHttpClientFactory(apiSettings);

            Baskets  = new BasketClient(factory);
            Products = new ProductClient(factory);
        }
예제 #3
0
        async Task Run()
        {
            var client = new BasketClient("https://localhost:5001");
            var userId = Guid.NewGuid();
            var basket = await client.Create(userId);

            await client.SetItem(basket.Id, Guid.NewGuid(), 2);

            await client.SetItem(basket.Id, Guid.NewGuid(), 3);

            basket = await client.Get(basket.Id);

            WriteBasket(basket);

            await client.RemoveItem(basket.Id, basket.Items.ToArray()[0].ProductId);

            basket = await client.Get(basket.Id);

            WriteBasket(basket);

            await client.Clear(basket.Id);

            basket = await client.Get(basket.Id);

            WriteBasket(basket);
        }
예제 #4
0
        public void CreateBasket_CallsApi()
        {
            var expectedBasket  = new Basket();
            var expectedRequest = new RestRequest()
            {
                Method = Method.POST, Resource = "baskets"
            };
            var dummySettings = new BasketClientSettings()
            {
                BaseUrl = "https://api.co.uk"
            };
            var restClientMock = new Mock <IRestClient>();

            restClientMock.Setup(
                x => x.Execute <Basket>(
                    expectedRequest))
            .Returns(new RestResponse <Basket> {
                Data = expectedBasket
            });
            var restRequestFactoryMock = new Mock <IRestRequestBuilder>();

            restRequestFactoryMock.Setup(x => x.Build()).Returns(expectedRequest);
            var sut = new BasketClient(dummySettings, restClientMock.Object, restRequestFactoryMock.Object);

            sut.CreateBasket();

            restClientMock.VerifyAll();
        }
예제 #5
0
        public BasketService(string username, string password)
        {
            Username = username;
            Password = password;

            tokenClient = TokenClient.Instance;
            bs          = BasketClient.Instance;
        }
예제 #6
0
파일: Program.cs 프로젝트: dessarn/Checkout
        static void Main(string[] arg)
        {
            IFakeDataStore dataStore     = new FakeDataStore();
            IBasketService basketService = new BasketService(dataStore);
            IBasketClient  basketClient  = new BasketClient(basketService);
            IScanManager   sm            = new ScanManager(basketClient);

            if (arg.Length > 0)
            {
                sm.SetupScanListener(arg[0]);
            }

            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1(basketClient));
        }
예제 #7
0
        public async void When_posting_to_client_the_basket_should_be_updated()
        {
            //setup client
            var userGuid = Guid.NewGuid();
            var client   = new BasketClient(userGuid.ToString());

            //add product
            var productId = Guid.NewGuid();
            await client.AddItemAsync(productId.ToString(), 2);

            //assert items match
            var basketResponse = await client.GetBasketAsync();

            Assert.Single(basketResponse.Items);
            Assert.Equal(2, basketResponse.Items[0].Quantity);

            //clear basket
            await client.ClearBasketAsync();

            //assert basket is clear
            basketResponse = await client.GetBasketAsync();

            Assert.Empty(basketResponse.Items);

            //add multiple items
            var secondProductId = Guid.NewGuid();
            await client.AddItemAsync(secondProductId.ToString(), 7);

            var thirdProductId = Guid.NewGuid();
            await client.AddItemAsync(thirdProductId.ToString(), 1);

            //assert items match
            basketResponse = await client.GetBasketAsync();

            Assert.Equal(7, basketResponse.Items.FirstOrDefault(x => x.ProductId == secondProductId.ToString()).Quantity);
            Assert.Equal(1, basketResponse.Items.FirstOrDefault(x => x.ProductId == thirdProductId.ToString()).Quantity);

            //clear basket
            await client.ClearBasketAsync();

            //assert basket is clear
            basketResponse = await client.GetBasketAsync();

            Assert.Empty(basketResponse.Items);
        }
예제 #8
0
        public void Clearbasket_ClearsBasket()
        {
            var expectedRequest = new RestRequest()
            {
                Method = Method.POST
            };
            var dummySettings = new BasketClientSettings()
            {
                BaseUrl = "https://api.co.uk"
            };
            var restClientMock         = new Mock <IRestClient>();
            var restRequestFactoryMock = new Mock <IRestRequestBuilder>();

            restRequestFactoryMock.Setup(x => x.Build()).Returns(expectedRequest);
            var sut = new BasketClient(dummySettings, restClientMock.Object, restRequestFactoryMock.Object);

            sut.Clear();

            restClientMock.Verify(x => x.Execute(expectedRequest));
        }
예제 #9
0
        public void RemoveItem_RemoveItemFromBasket()
        {
            var expectedItemCode = "Arduino";
            var expectedRequest  = new RestRequest()
            {
                Method = Method.DELETE
            };
            var dummySettings = new BasketClientSettings()
            {
                BaseUrl = "https://api.co.uk"
            };
            var restClientMock         = new Mock <IRestClient>();
            var restRequestFactoryMock = new Mock <IRestRequestBuilder>();

            restRequestFactoryMock.Setup(x => x.Build()).Returns(expectedRequest);
            var sut = new BasketClient(dummySettings, restClientMock.Object, restRequestFactoryMock.Object);

            sut.RemoveItem(expectedItemCode);

            restClientMock.Verify(x => x.Execute(expectedRequest));
        }
예제 #10
0
        public void UpdateItem_UpdatesItemInBasket()
        {
            var expectedItem = new Item {
                code = "Arduino", quantity = 42
            };
            var expectedRequest = new RestRequest()
            {
                Method = Method.PUT
            };
            var dummySettings = new BasketClientSettings()
            {
                BaseUrl = "https://api.co.uk"
            };
            var restClientMock         = new Mock <IRestClient>();
            var restRequestFactoryMock = new Mock <IRestRequestBuilder>();

            restRequestFactoryMock.Setup(x => x.Build()).Returns(expectedRequest);
            var sut = new BasketClient(dummySettings, restClientMock.Object, restRequestFactoryMock.Object);

            sut.UpdateItem(expectedItem);

            restRequestFactoryMock.Verify(x => x.AddBody(expectedItem));
            restClientMock.Verify(x => x.Execute(expectedRequest));
        }
예제 #11
0
        static void Main(string[] args)
        {
            bool returnStatus = false;

            Console.WriteLine("Program started for client C123");

            BasketClient basketClient = new BasketClient("C123");

            Console.WriteLine("Acquired new Basket ID: " + basketClient.BasketId);

            Console.WriteLine("Add item 1 with discount: ");
            returnStatus = basketClient.AddItem("111", "Car", "BMW", "Series 3", "Very cool", (float)5.50, 1, (float)2.50);
            Console.WriteLine("Return status for item 1: " + returnStatus);

            Console.WriteLine("Add item 2: ");
            returnStatus = basketClient.AddItem("112", "Bike", "Kawasaki", "Series 1", "Very cool", (float)3.50, 1, 0);
            Console.WriteLine("Return status for item 2: " + returnStatus);

            Console.WriteLine("Add item 3: ");
            returnStatus = basketClient.AddItem("113", "Boat", "Mercedes", "Series 2", "Very cool", (float)2.50, 1, 0);
            Console.WriteLine("Return status for item 3: " + returnStatus);

            Console.WriteLine("Retrieve basket after adding 3 items: ");
            string basketObject = basketClient.GetBasket();

            Console.WriteLine("Basket: " + basketObject);

            Console.WriteLine("Update quantity of item 2: ");
            returnStatus = basketClient.UpdateItem("112", 2);
            Console.WriteLine("Return status for item 2: " + returnStatus);

            Console.WriteLine("Retrieve basket after updating item 2: ");
            basketObject = basketClient.GetBasket();
            Console.WriteLine("Basket: " + basketObject);

            Console.WriteLine("Remove item 3: ");
            returnStatus = basketClient.RemoveItem("113");
            Console.WriteLine("Return status for item 3: " + returnStatus);

            Console.WriteLine("Retrieve basket after removing item 3: ");
            basketObject = basketClient.GetBasket();
            Console.WriteLine("Basket: " + basketObject);

            Console.WriteLine("Produce an order: ");
            string orderObject = basketClient.ProduceOrder("CUST123", "Jon Doe", "5th Street Somewhere", "07777777777", (float)20.00, (float)1.50);

            Console.WriteLine("Basket: " + orderObject);

            Console.WriteLine("Clear basket: ");
            returnStatus = basketClient.ClearBasket();
            Console.WriteLine("Return status for clear basket: " + returnStatus);

            Console.WriteLine("Retrieve basket clearing items: ");
            basketObject = basketClient.GetBasket();
            Console.WriteLine("Basket: " + basketObject);

            Console.WriteLine("Delete basket: ");
            returnStatus = basketClient.DeleteBasket();
            Console.WriteLine("Return status for delete basket: " + returnStatus);

            Console.WriteLine("Get basket after delete: ");
            basketObject = basketClient.GetBasket();
            Console.WriteLine("Basket: " + basketObject);

            Console.ReadLine();
        }
예제 #12
0
 public UserBasket(BasketClient basketClient)
 {
     _basketClient = basketClient
                     ?? throw new ArgumentNullException(nameof(basketClient));
 }