Exemplo n.º 1
0
 public Scope ClickLink(string locator,
                        PredicateQuery until,
                        Options options = null)
 {
     TryUntil(WaitThenClickLink(locator, Merge(options)), until, Merge(options));
     return(this);
 }
Exemplo n.º 2
0
        public void TryUntil(BrowserAction tryThis, PredicateQuery until, TimeSpan overrallTimeout, TimeSpan waitBeforeRetry)
        {
            var outcome = Robustly(new ActionSatisfiesPredicateQuery(tryThis, until, overrallTimeout, until.RetryInterval, waitBeforeRetry, this));

            if (!outcome)
            {
                throw new MissingHtmlException("Timeout from TryUntil: the page never reached the required state.");
            }
        }
Exemplo n.º 3
0
        public void TryUntil(BrowserAction tryThis, PredicateQuery until, Options options)
        {
            var outcome = Synchronise(new ActionSatisfiesPredicateQuery(tryThis, until, options, this));

            if (!outcome)
            {
                throw new MissingHtmlException("Timeout from TryUntil: the page never reached the required state.");
            }
        }
        private async Task <IQuery <ContentItem> > FilterWhereArguments(
            IQuery <ContentItem, ContentItemIndex> query,
            JObject where,
            ResolveFieldContext fieldContext,
            ISession session,
            GraphQLContext context)
        {
            if (where == null)
            {
                return(query);
            }

            string defaultTableAlias = query.GetTypeAlias(typeof(ContentItemIndex));

            var transaction = await session.DemandAsync();

            IPredicateQuery predicateQuery = new PredicateQuery(
                dialect: session.Store.Configuration.SqlDialect,
                shellSettings: context.ServiceProvider.GetService <ShellSettings>(),
                propertyProviders: context.ServiceProvider.GetServices <IIndexPropertyProvider>());

            // Create the default table alias
            predicateQuery.CreateAlias("", nameof(ContentItemIndex));
            predicateQuery.CreateTableAlias(nameof(ContentItemIndex), defaultTableAlias);

            // Add all provided table alias to the current predicate query
            var providers    = context.ServiceProvider.GetServices <IIndexAliasProvider>();
            var indexes      = new Dictionary <string, IndexAlias>(StringComparer.OrdinalIgnoreCase);
            var indexAliases = new Dictionary <string, string>(StringComparer.OrdinalIgnoreCase);

            foreach (var aliasProvider in providers)
            {
                foreach (var alias in aliasProvider.GetAliases())
                {
                    predicateQuery.CreateAlias(alias.Alias, alias.Index);
                    indexAliases.Add(alias.Alias, alias.Alias);
                    if (!indexes.ContainsKey(alias.Index))
                    {
                        indexes.Add(alias.Index, alias);
                    }
                }
            }

            var expressions = Expression.Conjunction();

            BuildWhereExpressions(where, expressions, null, fieldContext, indexAliases);
            expressions.SearchUsedAlias(predicateQuery);

            // Add all Indexes that were used in the predicate query

            IQuery <ContentItem> contentQuery = query;

            foreach (var usedAlias in predicateQuery.GetUsedAliases())
            {
                if (indexes.ContainsKey(usedAlias))
                {
                    contentQuery = contentQuery.With(indexes[usedAlias].IndexType);
                    var tableAlias = query.GetTypeAlias(indexes[usedAlias].IndexType);
                    predicateQuery.CreateTableAlias(indexes[usedAlias].Index, tableAlias);
                }
            }

            var whereSqlClause = expressions.ToSqlString(predicateQuery);


            query = query.Where(whereSqlClause);

            // Add all parameters that were used in the predicate query
            foreach (var parameter in predicateQuery.Parameters)
            {
                query = query.WithParameter(parameter.Key, parameter.Value);
            }

            return(contentQuery);
        }
 public void TryUntil(BrowserAction tryThis, PredicateQuery until, TimeSpan overallTimeout, TimeSpan waitBeforeRetry)
 {
     tryThis.Act();
 }
Exemplo n.º 6
0
 public void TryUntil(BrowserAction tryThis, PredicateQuery until, Options options)
 {
     tryThis.Act();
 }
Exemplo n.º 7
0
 public Scope ClickLink(string locator, PredicateQuery until, TimeSpan waitBeforeRetry, Options options = null)
 {
     options = SetOptions(options);
     TryUntil(WaitThenClickLink(locator, options), until, waitBeforeRetry, options);
     return(this);
 }
Exemplo n.º 8
0
 public void TryUntil(BrowserAction tryThis, PredicateQuery until, TimeSpan waitBeforeRetry, Options options = null)
 {
     robustWrapper.TryUntil(tryThis, until, SetOptions(options).Timeout, waitBeforeRetry);
 }
Exemplo n.º 9
0
 public void TryUntil(BrowserAction tryThis, PredicateQuery until, Options options)
 {
     DeferredTryUntils.Add(new TryUntilArgs(tryThis, until, options));
 }
Exemplo n.º 10
0
 public void TryUntil(BrowserAction tryThis, PredicateQuery until, TimeSpan overallTimeout, TimeSpan waitBeforeRetry)
 {
     DeferredTryUntils.Add(new TryUntilArgs(tryThis, until, overallTimeout, waitBeforeRetry));
 }
Exemplo n.º 11
0
 public void TryUntil(BrowserAction tryThis, PredicateQuery until, Options options = null)
 {
     timingStrategy.TryUntil(tryThis, until, Merge(options));
 }