Пример #1
0
 public TestRepoProvider(PodBoyContext context)
     : base(null, null, Observable.Return(new IOrderByExpression <TestEntity>[]
 {
     new OrderByExpression <TestEntity, int>(_ => _.Id)
 }))
 {
     CreateRepository = () => Substitute.For <PodboyRepository>(context);
 }
Пример #2
0
        public static void InitEntities <T>(PodBoyContext context, List <T> collection = null) where T : class, IEntity
        {
            if (collection == null)
            {
                collection = new List <T>();
            }

            // channels
            var observable = new ObservableCollection <T>(collection);
            var queryable  = collection.AsQueryable();
            var entitySet  = Substitute.For <DbSet <T>, IQueryable <T>, IDbAsyncEnumerable <T> >();

            ((IQueryable <T>)entitySet).Provider.Returns(new TestDbAsyncQueryProvider <T>(queryable.Provider));
            ((IQueryable <T>)entitySet).Expression.Returns(queryable.Expression);
            ((IQueryable <T>)entitySet).ElementType.Returns(queryable.ElementType);
            ((IQueryable <T>)entitySet).GetEnumerator().Returns(_ => queryable.GetEnumerator());
            ((IDbAsyncEnumerable <T>)entitySet).GetAsyncEnumerator()
            .Returns(_ => new TestDbAsyncEnumerator <T>(queryable.GetEnumerator()));

            // add
            entitySet.When(_ => _.Add(Arg.Any <T>())).Do(c =>
            {
                collection.Add(c.Arg <T>());
                observable.Add(c.Arg <T>());
            });

            // add range
            entitySet.When(_ => _.AddRange(Arg.Any <IEnumerable <T> >())).Do(c =>
            {
                collection.AddRange(c.Arg <IEnumerable <T> >());
                observable.AddRange(c.Arg <IEnumerable <T> >());
            });

            // remove
            entitySet.When(_ => _.Remove(Arg.Any <T>())).Do(c =>
            {
                collection.Remove(c.Arg <T>());
                observable.Remove(c.Arg <T>());
            });

            entitySet.Find(Arg.Any <object[]>())
            .Returns(c => collection.FirstOrDefault(_ => _.Id == c.Arg <object[]>().Cast <int>().First()));
            entitySet.FindAsync(Arg.Any <object[]>())
            .Returns(
                c => Task.FromResult(collection.FirstOrDefault(_ => _.Id == c.Arg <object[]>().Cast <int>().First())));

            context.Set <T>().Returns(entitySet);
            context.Set <T>().Local.Returns(observable);
            context.Set <T>().Include(Arg.Any <string>()).Returns(entitySet);
        }
Пример #3
0
        public async Task AddChannelTest()
        {
            using (var db = new PodBoyContext())
            {
                using (var transaction = db.Database.BeginTransaction())
                {
                    var channel = db.Channels.Add(new Channel("test")
                    {
                        Title       = "Test Channel",
                        Description = "This is a test!"
                    });
                    channel.Episodes.Add(new Episode
                    {
                        Media = new Media()
                    });

                    await db.SaveChangesAsync();

                    Assert.NotEqual(0, channel.Id);

                    transaction.Rollback();
                }
            }
        }