public async Task NotInCache_ReturnsFalse()
        {
            var cache = new DefaultQueryPlanCacheProvider();
            var hash  = Guid.NewGuid().ToString("N");
            var found = await cache.TryGetPlanAsync(hash, out var plan);

            Assert.IsNull(plan);
            Assert.IsFalse(found);
        }
        public async Task AddPlanToCache_BecomesInCache()
        {
            var cache = new DefaultQueryPlanCacheProvider();
            var text  = "query Operation1{  simple {  simpleQueryMethod { property1 __typename} } }";

            var plan = this.CreatePlan(text);
            var hash = Guid.NewGuid().ToString("N");

            var wasCached = await cache.TryCachePlanAsync(hash, plan);

            Assert.IsTrue(wasCached);

            var found = await cache.TryGetPlanAsync(hash, out var foundPlan);

            Assert.IsTrue(found);
            Assert.AreEqual(plan, foundPlan);
        }
        public async Task ForceEvict_RemovesFromCache()
        {
            var cache = new DefaultQueryPlanCacheProvider();
            var text  = "query Operation1{  simple {  simpleQueryMethod { property1 __typename} } }";

            var plan = this.CreatePlan(text);
            var hash = Guid.NewGuid().ToString("N");

            var wasCached = await cache.TryCachePlanAsync(hash, plan);

            Assert.IsTrue(wasCached);

            var evicted = await cache.EvictAsync(hash);

            Assert.IsTrue(evicted);

            var found = await cache.TryGetPlanAsync(hash, out var foundPlan);

            Assert.IsFalse(found);
            Assert.IsNull(foundPlan);
        }