Ejemplo n.º 1
0
        public void Update_UpdatesObject()
        {
            //Arrange
            var orm = new OrMapper();
            PostGreSqlDatabase db = new PostGreSqlDatabase();
            Photographer       p  = GetPhotographer();
            int id = db.Insert(p);

            p.Id      = id;
            p.Name    = "OtherName";
            p.SurName = "OtherSurName";

            //Act
            db.Update(p);

            //Assert
            var lst = orm.GetQuery <Photographer>().Where(i => i.Id == id).ToList();

            Assert.NotNull(lst);
            Assert.IsAssignableFrom <List <Photographer> >(lst);
            Assert.Single(lst);
            Assert.Equal(p.Name, lst[0].Name);
            Assert.Equal(p.SurName, lst[0].SurName);

            //Cleanup
            p.Id = id;
            db.Delete(p);
        }
Ejemplo n.º 2
0
        public void GetEnumerable_ReturnsIEnumerable_WithData()
        {
            //Arrange
            Mock <IDatabase> mock = new Mock <IDatabase>();

            mock.Setup(foo => foo.Select <Camera>(It.IsAny <Expression>()))
            .Returns(new List <Camera>()
            {
                new Camera()
                {
                    Id = 5
                }, new Camera()
                {
                    Id = 5
                }, new Camera()
                {
                    Id = 5
                }
            });
            OrMapper or = new OrMapper(mock.Object, new ChangeTracker());
            var      x  = or.GetQuery <Camera>().Where(i => i.Id == 5);

            //Act
            var res = or.GetEnumerable <Camera>(x.Expression);

            //Assert
            Assert.NotNull(res);
            Assert.IsAssignableFrom <IEnumerable <Camera> >(res);
            foreach (var cam in res)
            {
                Assert.Equal(5, cam.Id);
            }
        }
Ejemplo n.º 3
0
        public void SubmitChanges_CallsRightDBAndCTMethods()
        {
            //Arrange
            var changes = new List <ChangeTrackerEntry>();

            changes.Add(new ChangeTrackerEntry(new Camera(), ChangeTrackerEntry.States.Added));
            changes.Add(new ChangeTrackerEntry(new Camera(), ChangeTrackerEntry.States.Deleted));
            changes.Add(new ChangeTrackerEntry(new Camera(), ChangeTrackerEntry.States.Modified));

            var ct = new Mock <IChangeTracker>();

            ct.Setup(foo => foo.DetectChanges()).Returns(changes).Verifiable("Was not Called");
            ct.Setup(foo => foo.ComputeChanges()).Verifiable("Was not Called");

            var db = new Mock <IDatabase>();

            db.Setup(foo => foo.Delete(It.IsAny <object>())).Verifiable("Was not Called");
            db.Setup(foo => foo.Update(It.IsAny <object>())).Verifiable("Was not Called");
            db.Setup(foo => foo.Insert(It.IsAny <object>())).Returns(1).Verifiable("Was not Called");

            OrMapper or = new OrMapper(db.Object, ct.Object);

            //Act
            or.SubmitChanges();

            //Assert
            ct.Verify(foo => foo.DetectChanges(), Times.Once);
            ct.Verify(foo => foo.ComputeChanges(), Times.Once);
            db.Verify(foo => foo.Delete(It.IsAny <object>()), Times.Once);
            db.Verify(foo => foo.Update(It.IsAny <object>()), Times.Once);
            db.Verify(foo => foo.Insert(It.IsAny <object>()), Times.Once);
        }
Ejemplo n.º 4
0
        public void GetQuery_ThrowsInvalidOperationException_OnNonTableType()
        {
            //Arrange
            OrMapper or = new OrMapper(new PostGreSqlDatabase(), new ChangeTracker());

            //Act & Assert
            Assert.Throws <InvalidOperationException>(() => or.GetQuery <OrMapper>());
        }
Ejemplo n.º 5
0
        public void IsTypeATable_False_OnNonTableType()
        {
            //Arrange
            OrMapper or = new OrMapper(new PostGreSqlDatabase(), new ChangeTracker());

            //Act & Assert
            Assert.False(or.IsTypeATable(new OrMapper().GetType()));
        }
Ejemplo n.º 6
0
        public void IsTypeATable_True_OnTableType()
        {
            //Arrange
            OrMapper or = new OrMapper(new PostGreSqlDatabase(), new ChangeTracker());

            //Act & Assert
            Assert.True(or.IsTypeATable(new Camera().GetType()));
            Assert.True(or.IsTypeATable(new Photographer().GetType()));
            Assert.True(or.IsTypeATable(new Picture().GetType()));
        }
Ejemplo n.º 7
0
        public void GetQuery_ReturnsIQueryable()
        {
            //Arrange
            OrMapper or = new OrMapper(new PostGreSqlDatabase(), new ChangeTracker());

            //Act
            var x = or.GetQuery <Camera>();

            //Assert
            Assert.NotNull(x);
            Assert.IsAssignableFrom <IQueryable>(x);
        }
Ejemplo n.º 8
0
        public void Delete_InsertsObjectIntoChangeTracker()
        {
            //Arrange
            var mock = new Mock <IChangeTracker>();

            mock.Setup(foo => foo.Delete(It.IsAny <Camera>())).Verifiable("Was not Called");
            OrMapper or = new OrMapper(new PostGreSqlDatabase(), mock.Object);

            //Act
            or.Delete(new Camera());

            //Assert
            mock.Verify(foo => foo.Delete(It.IsAny <Camera>()), Times.Once);
        }
Ejemplo n.º 9
0
        public void Select_ReturnsListGreaterOne()
        {
            //Arrange
            var qry      = new OrMapper().GetQuery <Picture>();
            var filtered = qry
                           .Where(i => true);

            //Act
            var lst = filtered.ToList();

            //Assert
            Assert.NotNull(lst);
            Assert.IsAssignableFrom <List <Picture> >(lst);
            Assert.True(1 < lst.Count);
        }
Ejemplo n.º 10
0
        public void GetEnumerable_ThrowsInvalidOperationException_OnNonTableType()
        {
            //Arrange
            Mock <IDatabase> mock = new Mock <IDatabase>();

            mock.Setup(foo => foo.Select <Camera>(It.IsAny <Expression>()))
            .Returns(new List <Camera>()
            {
                new Camera()
                {
                    Id = 5
                }
            });
            OrMapper or = new OrMapper(mock.Object, new ChangeTracker());
            var      x  = or.GetQuery <Camera>().Where(i => i.Id == 5);

            //Act & Assert
            Assert.Throws <InvalidOperationException>(() => or.GetEnumerable <OrMapper>(x.Expression));
        }
Ejemplo n.º 11
0
        public void Delete_DeletesObject()
        {
            //Arrange
            var orm = new OrMapper();
            PostGreSqlDatabase db = new PostGreSqlDatabase();
            Photographer       p  = GetPhotographer();

            p.Id = db.Insert(p);
            int id = p.Id; //only because .where(... == p.Id cant be resolved by visitor and it writes photographer.id instead of 5 or 7 or whatever id is

            //Act
            db.Delete(p);

            //Assert
            Assert.NotNull(p);
            var lst = orm.GetQuery <Photographer>().Where(i => i.Id == id).ToList();

            Assert.NotNull(lst);
            Assert.IsAssignableFrom <List <Photographer> >(lst);
            Assert.Empty(lst);
        }
Ejemplo n.º 12
0
        public void Insert_InsertsObject_ReturnsID()
        {
            //Arrange
            var orm = new OrMapper();
            PostGreSqlDatabase db = new PostGreSqlDatabase();
            Photographer       p  = GetPhotographer();

            //Act
            int id = db.Insert(p);

            //Assert
            Assert.NotNull(p);
            Assert.True(0 < id);
            var lst = orm.GetQuery <Photographer>().Where(i => i.Id == id).ToList();

            Assert.NotNull(lst);
            Assert.IsAssignableFrom <List <Photographer> >(lst);
            Assert.Single(lst);

            //Cleanup
            p.Id = id;
            db.Delete(p);
        }