private object GetRandomEntity <T>(Expression <Func <T, bool> > predicate) where T : BaseEntity, new()
        {
            var dbSet = _services.DbContext.Set <T>();

            var query = dbSet.Where(predicate);

            // Determine how many entities match the given predicate
            var count = query.Count();

            object result;

            if (count > 0)
            {
                // Fetch a random one
                var skip = CommonHelper.GenerateRandomInteger(0, count);
                result = query.OrderBy(x => x.Id).Skip(() => skip).FirstOrDefault();
            }
            else
            {
                // No entity macthes the predicate. Provide a fallback test entity
                var entity = Activator.CreateInstance <T>();
                result = _templateEngine.CreateTestModelFor(entity, entity.GetUnproxiedType().Name);
            }

            return(result);
        }
Exemple #2
0
        private object GetRandomEntity <T>(Expression <Func <T, bool> > predicate) where T : BaseEntity, new()
        {
            var dbSet = _services.DbContext.Set <T>();

            var query = dbSet.Where(predicate);

            // Determine how many entities match the given predicate.
            var count = query.Count();

            object result;

            if (count > 0)
            {
                // Fetch a random one.
                var skip = CommonHelper.GenerateRandomInteger(0, count);
                result = query.OrderBy(x => x.Id).Skip(() => skip).FirstOrDefault();
            }
            else
            {
                // No entity matches the predicate. Provide a fallback test entity.
                var entity = Activator.CreateInstance <T>();

                if (entity is NewsLetterSubscription subscription)
                {
                    // Campaign preview requires NewsLetterSubscription entity.
                    subscription.NewsLetterSubscriptionGuid = Guid.NewGuid();
                    subscription.Email             = "*****@*****.**";
                    subscription.Active            = true;
                    subscription.CreatedOnUtc      = DateTime.UtcNow;
                    subscription.WorkingLanguageId = _services.WorkContext.WorkingLanguage.Id;

                    result = entity;
                }
                else
                {
                    result = _templateEngine.CreateTestModelFor(entity, entity.GetUnproxiedType().Name);
                }
            }

            return(result);
        }