public void WhenGetAssetsIsCalledThenMediaServicesContextIsCreatedWithTheAccountProvided()
        {
            const string AccountName = "myAccount";
            const string AccountKey  = "myKey";

            var client = new AzureMediaServicesClient(AccountName, AccountKey);

            using (ShimsContext.Create())
            {
                string providedAccountName = null;
                string providedAccountKey  = null;

                ShimCloudMediaContext.ConstructorStringString = (context, accountName, accountKey) =>
                {
                    providedAccountName = accountName;
                    providedAccountKey  = accountKey;
                };

                ShimQueryable.WhereOf1IQueryableOfM0ExpressionOfFuncOfM0Boolean <IAsset>((assets, predicate) => null);

                client.GetAssets(asset => asset.Name == "EZ");

                Assert.AreEqual(AccountName, providedAccountName);
                Assert.AreEqual(AccountKey, providedAccountKey);
            }
        }
        public void WhenGetAssetsIsCalledWithNoPredicateThenAllAssetsAreReturned()
        {
            var client = new AzureMediaServicesClient("myAccountName", "myAccountKey");

            using (ShimsContext.Create())
            {
                var asset = new StubIAsset {
                    NameGet = () => "EZ"
                };

                var assets = new List <IAsset> {
                    asset
                };

                var collection = new StubAssetBaseCollection {
                    QueryableGet = assets.AsQueryable
                };

                ShimCloudMediaContext.ConstructorStringString = (context, accountName, accountKey) => { };
                ShimCloudMediaContext.AllInstances.AssetsGet  = context => collection;

                var returnedAssets = client.GetAssets();

                Assert.AreEqual(1, returnedAssets.Count());
                Assert.AreSame(collection, returnedAssets);
            }
        }
        public void WhenGetAssetsIsCalledWithAPredicateThenAssetsCollectionIsFiltered()
        {
            var client = new AzureMediaServicesClient("myAccountName", "myAccountKey");

            using (ShimsContext.Create())
            {
                var asset1 = new StubIAsset {
                    NameGet = () => "EZ"
                };
                var asset2 = new StubIAsset {
                    NameGet = () => "VOD"
                };

                var sampleAssets = new List <IAsset> {
                    asset1, asset2
                };

                var collection = new StubAssetBaseCollection {
                    QueryableGet = sampleAssets.AsQueryable
                };

                Expression <Func <IAsset, bool> > filter = asset => asset.Name == "EZ";

                Expression <Func <IAsset, bool> > providedPredicate = null;

                ShimCloudMediaContext.ConstructorStringString = (context, accountName, accountKey) => { };
                ShimCloudMediaContext.AllInstances.AssetsGet  = context => collection;
                ShimQueryable.WhereOf1IQueryableOfM0ExpressionOfFuncOfM0Boolean <IAsset>((assets, predicate) =>
                {
                    Assert.AreEqual(2, assets.Count());

                    providedPredicate = predicate;

                    return(ShimsContext.ExecuteWithoutShims(() => assets.Where(predicate)));
                });

                var returnedAssets = client.GetAssets(filter);

                Assert.AreSame(filter, providedPredicate);
                Assert.AreEqual(1, returnedAssets.Count());
                Assert.AreEqual(asset1.NameGet(), returnedAssets.First().Name);
            }
        }
        public void WhenGetAssetsIsCalledWithNoPredicateThenAllAssetsAreReturned()
        {
            var client = new AzureMediaServicesClient("myAccountName", "myAccountKey");

            using (ShimsContext.Create())
            {
                var asset = new StubIAsset { NameGet = () => "EZ" };

                var assets = new List<IAsset> { asset };

                var collection = new StubAssetBaseCollection { QueryableGet = assets.AsQueryable };

                ShimCloudMediaContext.ConstructorStringString = (context, accountName, accountKey) => { };
                ShimCloudMediaContext.AllInstances.AssetsGet = context => collection;

                var returnedAssets = client.GetAssets();

                Assert.AreEqual(1, returnedAssets.Count());
                Assert.AreSame(collection, returnedAssets);
            }
        }
        public void WhenGetAssetsIsCalledWithAPredicateThenAssetsCollectionIsFiltered()
        {
            var client = new AzureMediaServicesClient("myAccountName", "myAccountKey");

            using (ShimsContext.Create())
            {
                var asset1 = new StubIAsset { NameGet = () => "EZ" };
                var asset2 = new StubIAsset { NameGet = () => "VOD" };

                var sampleAssets = new List<IAsset> { asset1, asset2 };

                var collection = new StubAssetBaseCollection { QueryableGet = sampleAssets.AsQueryable };

                Expression<Func<IAsset, bool>> filter = asset => asset.Name == "EZ";

                Expression<Func<IAsset, bool>> providedPredicate = null;

                ShimCloudMediaContext.ConstructorStringString = (context, accountName, accountKey) => { };
                ShimCloudMediaContext.AllInstances.AssetsGet = context => collection;
                ShimQueryable.WhereOf1IQueryableOfM0ExpressionOfFuncOfM0Boolean<IAsset>((assets, predicate) =>
                    {
                        Assert.AreEqual(2, assets.Count());

                        providedPredicate = predicate;

                        return ShimsContext.ExecuteWithoutShims(() => assets.Where(predicate));
                    });

                var returnedAssets = client.GetAssets(filter);

                Assert.AreSame(filter, providedPredicate);
                Assert.AreEqual(1, returnedAssets.Count());
                Assert.AreEqual(asset1.NameGet(), returnedAssets.First().Name);
            }
        }
        public void WhenGetAssetsIsCalledThenMediaServicesContextIsCreatedWithTheAccountProvided()
        {
            const string AccountName = "myAccount";
            const string AccountKey = "myKey";

            var client = new AzureMediaServicesClient(AccountName, AccountKey);

            using (ShimsContext.Create())
            {
                string providedAccountName = null;
                string providedAccountKey = null;

                ShimCloudMediaContext.ConstructorStringString = (context, accountName, accountKey) =>
                {
                    providedAccountName = accountName;
                    providedAccountKey = accountKey;
                };

                ShimQueryable.WhereOf1IQueryableOfM0ExpressionOfFuncOfM0Boolean<IAsset>((assets, predicate) => null);

                client.GetAssets(asset => asset.Name == "EZ");

                Assert.AreEqual(AccountName, providedAccountName);
                Assert.AreEqual(AccountKey, providedAccountKey);
            }
        }