public IEnumerator TestShowPropogatesErrorsToShopOnError()
        {
            _controller.ProductGID = "notevenclose";
            _controller.Load();

            var waiter = new EditorTimeoutWaiter();

            _shop.When((x) => {
                x.OnError(Arg.Any <ShopifyError>());
            }).Do((x) => {
                var error = x.Args()[0] as ShopifyError;
                Assert.AreEqual(ShopifyError.ErrorType.GraphQL, error.Type);
                waiter.Complete();
            });

            while (!waiter.Await())
            {
                yield return(null);
            }

            _shop.DidNotReceive().OnProductLoaded(Arg.Any <Product>(), Arg.Any <ProductVariant[]>());
        }
        public IEnumerator TestLoadLoadsProductAndTellsShop()
        {
            _controller.ProductGID = "Z2lkOi8vc2hvcGlmeS9Qcm9kdWN0Lzk4OTUyODE0NzU=";
            _controller.Load();

            var waiter = new EditorTimeoutWaiter();

            _shop.When((x) => {
                x.OnProductLoaded(Arg.Any <Product>(), Arg.Any <ProductVariant[]>());
            }).Do((x) => {
                var product         = x.Args()[0] as Product;
                var productVariants = x.Args()[1] as ProductVariant[];

                Assert.AreEqual("Arena Zip Boot", product.title());
                Assert.AreEqual(10, productVariants.Length);

                waiter.Complete();
            });

            while (waiter.Await())
            {
                yield return(null);
            }
        }