Example #1
0
        public void Upsert_PageVisit_Update_On_WhenMatched_ValueSubtract(TestDbContext.DbDriver driver)
        {
            ResetDb(driver);
            using (var dbContext = new TestDbContext(_dataContexts[driver]))
            {
                var newVisit = new PageVisit
                {
                    UserID     = 1,
                    Date       = DateTime.Today,
                    Visits     = 1,
                    FirstVisit = _now,
                    LastVisit  = _now,
                };

                dbContext.PageVisits.Upsert(newVisit)
                .On(pv => new { pv.UserID, pv.Date })
                .WhenMatched(pv => new PageVisit
                {
                    Visits    = pv.Visits - 2,
                    LastVisit = _now,
                })
                .Run();

                Assert.Collection(dbContext.PageVisits.OrderBy(c => c.ID),
                                  visit => AssertEqual(_dbVisitOld, visit),
                                  visit =>
                {
                    Assert.Equal(newVisit.UserID, visit.UserID);
                    Assert.Equal(newVisit.Date, visit.Date);
                    Assert.NotEqual(newVisit.Visits, visit.Visits);
                    Assert.Equal(_dbVisit.Visits - 2, visit.Visits);
                    Assert.NotEqual(newVisit.FirstVisit, visit.FirstVisit);
                    Assert.Equal(_dbVisit.FirstVisit, visit.FirstVisit);
                    Assert.Equal(newVisit.LastVisit, visit.LastVisit);
                });
            }
        }
Example #2
0
        public void Upsert_Country_Update_NoColumns(TestDbContext.DbDriver driver)
        {
            ResetDb(driver);
            using (var dbContext = new TestDbContext(_dataContexts[driver]))
            {
                var newCountry = new Country
                {
                    Name    = "Australia",
                    ISO     = "AU",
                    Created = _now,
                    Updated = _now,
                };

                dbContext.Upsert(newCountry)
                .On(c => c.ISO)
                .Run();

                var country = dbContext.Countries.Single(c => c.ISO == newCountry.ISO);
                Assert.NotNull(country);
                Assert.Equal(newCountry.Name, country.Name);
                Assert.Equal(newCountry.Created, country.Created);
                Assert.Equal(newCountry.Updated, country.Updated);
            }
        }
Example #3
0
        public void UpsertRange_PageVisit_Update_On_WhenMatched_MultipleUpdate_FromSource(TestDbContext.DbDriver driver)
        {
            ResetDb(driver);
            using (var dbContext = new TestDbContext(_dataContexts[driver]))
            {
                var newVisit1 = new PageVisit
                {
                    UserID     = _dbVisitOld.UserID,
                    Date       = _dbVisitOld.Date,
                    Visits     = 1,
                    FirstVisit = _now,
                    LastVisit  = _now,
                };
                var newVisit2 = new PageVisit
                {
                    UserID     = _dbVisit.UserID,
                    Date       = _dbVisit.Date,
                    Visits     = 1,
                    FirstVisit = _now,
                    LastVisit  = _now,
                };

                dbContext.PageVisits.UpsertRange(newVisit1, newVisit2)
                .On(pv => new { pv.UserID, pv.Date })
                .WhenMatched((pv, pvi) => new PageVisit
                {
                    Visits    = pv.Visits + 1,
                    LastVisit = pvi.LastVisit,
                })
                .Run();

                Assert.Collection(dbContext.PageVisits.OrderBy(c => c.ID),
                                  visit =>
                {
                    Assert.Equal(newVisit1.UserID, visit.UserID);
                    Assert.Equal(newVisit1.Date, visit.Date);
                    Assert.NotEqual(newVisit1.Visits, visit.Visits);
                    Assert.Equal(_dbVisitOld.Visits + 1, visit.Visits);
                    Assert.NotEqual(newVisit1.FirstVisit, visit.FirstVisit);
                    Assert.Equal(_dbVisitOld.FirstVisit, visit.FirstVisit);
                    Assert.Equal(newVisit1.LastVisit, visit.LastVisit);
                },
                                  visit =>
                {
                    Assert.Equal(newVisit2.UserID, visit.UserID);
                    Assert.Equal(newVisit2.Date, visit.Date);
                    Assert.NotEqual(newVisit2.Visits, visit.Visits);
                    Assert.Equal(_dbVisit.Visits + 1, visit.Visits);
                    Assert.NotEqual(newVisit2.FirstVisit, visit.FirstVisit);
                    Assert.Equal(_dbVisit.FirstVisit, visit.FirstVisit);
                    Assert.Equal(newVisit2.LastVisit, visit.LastVisit);
                });
            }
        }