Example #1
0
        public void ShouldBeAbleToCountWinsAndLosses()
        {
            using (var repository = new DisposableSqlLiteRepository())
            {
                repository.Images.Insert(MakeImages(2).ToArray());

                repository.Ratings.Insert(new Rating
                {
                    WinnerId = 1,
                    LoserId  = 2,
                    Added    = DateTime.Now
                });

                var images = repository.Images.Untracked.Select(image => new
                {
                    image.Id,
                    WinCount  = image.Wins.Count(),
                    LossCount = image.Losses.Count()
                }).ToList();

                Assert.AreEqual(1, images.First(image => image.Id == 1).WinCount);
                Assert.AreEqual(0, images.First(image => image.Id == 1).LossCount);
                Assert.AreEqual(0, images.First(image => image.Id == 2).WinCount);
                Assert.AreEqual(1, images.First(image => image.Id == 2).LossCount);
            }
        }
Example #2
0
        public void ShouldBeAbleToRemove()
        {
            using (var repository = new DisposableSqlLiteRepository())
            {
                // Should be able to remove by criteria

                repository.Images.Insert(MakeImages(20).ToArray());

                repository.Images.Remove(x => x.Id > 10);

                Assert.AreEqual(10, repository.Images.Untracked.Count());
            }

            using (var repository = new DisposableSqlLiteRepository())
            {
                // Should be able to remove multiple items

                repository.Images.Insert(MakeImages(5).ToArray());

                repository.Images.Remove(repository.Images.Untracked.ToArray());

                Assert.IsFalse(repository.Images.Untracked.Any());
            }

            using (var repository = new DisposableSqlLiteRepository())
            {
                // Should be able to remove one item

                repository.Images.Insert(MakeImages(1).ToArray());

                repository.Images.Remove(repository.Images.Untracked.First());

                Assert.IsFalse(repository.Images.Untracked.Any());
            }
        }
Example #3
0
        public void ShouldBeAbleToUpdate()
        {
            using (var repository = new DisposableSqlLiteRepository())
            {
                // Should be able to update one item

                var date = DateTime.Now;

                repository.Images.Insert(MakeImages(1, date).ToArray());

                repository.Images.Update(repository.Images.Untracked.ToList().Select(x => { x.Added = x.Added.AddDays(1); return(x); }).First());

                Assert.IsTrue(repository.Images.Untracked.All(x => x.Added > date));
            }

            using (var repository = new DisposableSqlLiteRepository())
            {
                // Should be able to update where criteria matches

                var date = DateTime.Now;

                repository.Images.Insert(MakeImages(20, date).ToArray());

                repository.Images.Update(image =>
                {
                    image.Added = image.Added.AddDays(1);
                }, image => image.Id == 1);

                Assert.AreEqual(1, repository.Images.Untracked.Count(x => x.Added > date));
            }

            using (var repository = new DisposableSqlLiteRepository())
            {
                // Should be able to update multiple items

                var date = DateTime.Now;

                repository.Images.Insert(MakeImages(20, date).ToArray());

                repository.Images.Update(repository.Images.Untracked.ToList().Select(image =>
                {
                    image.Added = image.Added.AddDays(1);
                    return(image);
                }).ToArray());

                Assert.AreEqual(20, repository.Images.Untracked.Count(x => x.Added > date));
            }
        }
Example #4
0
        public void ShouldAutomaticallyDeleteRequiredRelationships()
        {
            using (var repository = new DisposableSqlLiteRepository())
            {
                repository.Images.Insert(MakeImages(2).ToArray());

                repository.Ratings.Insert(new Rating
                {
                    Added    = DateTime.Now,
                    LoserId  = 1,
                    WinnerId = 2
                });

                repository.Images.Remove(x => x.Id == 1);

                Assert.IsFalse(repository.Ratings.Untracked.Any());
            }
        }