public void GetStudentsCountForGroupFromEvent()
        {
            #region Mock.DB_1_Entities.Groups Initialize

            var group1 = new Mock.DB1_Context.Group()
            {
                Id = Guid.NewGuid(),
                Name = "Group1"
            };
            var group2 = new Mock.DB1_Context.Group()
            {
                Id = Guid.NewGuid(),
                Name = "Group2"
            };

            #endregion

            #region Mock.DB_1_Entities.Students Initialize

            var student1 = new Mock.DB1_Context.Student()
            {
                Id = Guid.NewGuid(),
                Name = "Student1",
                Group = group1
            };

            var student2 = new Mock.DB1_Context.Student()
            {
                Id = Guid.NewGuid(),
                Name = "Student2",
                Group = group1
            };

            var student3 = new Mock.DB1_Context.Student()
            {
                Id = Guid.NewGuid(),
                Name = "Student3",
                Group = group2
            };

            #endregion

            var db1Adapter = new DB1Adapter();
            db1Adapter.AddEntity<Group>(group1);
            db1Adapter.AddEntity<Group>(group2);
            db1Adapter.AddEntity<Student>(student1);
            db1Adapter.AddEntity<Student>(student2);
            db1Adapter.AddEntity<Student>(student3);
            db1Adapter.SaveChanges();

            #region Mock.DB_2_Entities.Events Initialize

            var event1 = new Mock.DB2_Context.Event()
            {
                Id = Guid.NewGuid(),
                Name = "eventForGroup1",
                GroupName = group1.Name
            };

            var event2 = new Mock.DB2_Context.Event()
            {
                Id = Guid.NewGuid(),
                Name = "eventForGroup2",
                GroupName = group2.Name
            };

            #endregion

            var db2Adapter = new DB2Adapter();
            db2Adapter.AddEntity<Event>(event1);
            db2Adapter.AddEntity<Event>(event2);
            db2Adapter.SaveChanges();

            var cqContext = new CQContext(null, db1Adapter, db2Adapter);

            var result = cqContext.GetEntities<Mock.DomainModel.Event>().Where(e => e.ID == event1.Id).SelectMany(e => e.Group.Students).Count();

            Assert.AreEqual(2, result);
        }
        public void GetGroupByID_GroupFromDB1()
        {
            #region Mock.DB_1_Entities.Groups Initialize

            var group1 = new Mock.DB1_Context.Group()
            {
                Id = Guid.NewGuid(),
                Name = "Group1"
            };
            var group2 = new Mock.DB1_Context.Group()
            {
                Id = Guid.NewGuid(),
                Name = "Group2"
            };

            #endregion

            var db1Adapter = new DB1Adapter();
            db1Adapter.AddEntity<Group>(group1);
            db1Adapter.AddEntity<Group>(group2);
            db1Adapter.SaveChanges();

            var mapper = new Mapper.Mapper();

            mapper.CreateConfiguration<Mock.DB1_Context.Group, Mock.DomainModel.Group>()
                .AddMap(s => s.Id, d => d.ID)
                .AddMap(s => s.Name, d => d.Name);

            var cqContext = new CQContext(mapper, db1Adapter);

            var result = cqContext.GetEntities<Mock.DomainModel.Group>().FirstOrDefault(g => g.ID == group1.Id);

            Assert.IsNotNull(result, "Event not found");
            Assert.AreEqual(group1.Id, result.ID, "Wrong group");
        }
        public void GetGroup_GroupWithAttributeWithoutAdapterName_AdapterNameIsNull()
        {
            #region Mock.DB_1_Entities.Groups Initialize

            var group1 = new Mock.DB1_Context.Group()
            {
                Id = Guid.NewGuid(),
                Name = "Group1"
            };
            var group2 = new Mock.DB1_Context.Group()
            {
                Id = Guid.NewGuid(),
                Name = "Group2"
            };

            #endregion

            var db1Adapter = new DB1Adapter();
            db1Adapter.AddEntity<Group>(group1);
            db1Adapter.AddEntity<Group>(group2);
            db1Adapter.SaveChanges();

            var mapper = new Mapper.Mapper();

            mapper.CreateConfiguration<Mock.DB1_Context.Group, Mock.DomainModel.GroupWitoutSourceClass>()
                .AddMap(s => s.Id, d => d.ID)
                .AddMap(s => s.Name, d => d.Name);

            var cqContext = new CQContext(mapper, db1Adapter);

            var result = cqContext.GetEntities<Mock.DomainModel.GroupAdapterNameNull>().FirstOrDefault();
        }
        public void GetGroupsWhereNumberEqual1_GroupFromDB1()
        {
            #region Mock.DB_1_Entities.Groups Initialize

            var group1 = new Mock.DB1_Context.Group()
            {
                Id = Guid.NewGuid(),
                Name = "Group1",
                Number = 1
            };
            var group2 = new Mock.DB1_Context.Group()
            {
                Id = Guid.NewGuid(),
                Name = "Group2",
                Number = 1
            };
            var group3 = new Mock.DB1_Context.Group()
            {
                Id = Guid.NewGuid(),
                Name = "Group3",
                Number = 2
            };

            #endregion

            var db1Adapter = new DB1Adapter();
            db1Adapter.AddEntity<Group>(group1);
            db1Adapter.AddEntity<Group>(group2);
            db1Adapter.AddEntity<Group>(group3);
            db1Adapter.SaveChanges();

            var mapper = new Mapper.Mapper();

            mapper.CreateConfiguration<Mock.DB1_Context.Group, Mock.DomainModel.Group>()
                .AddMap(s => s.Id, d => d.ID)
                .AddMap(s => s.Name, d => d.Name)
                .AddMap(s => s.Number, d => d.Number);

            var cqContext = new CQContext(mapper, db1Adapter);

            var result = cqContext.GetEntities<Mock.DomainModel.Group>().Where(g => g.Number == 1).ToList();

            Assert.AreEqual(2, result.Count(), "Wrong groups count");
            Assert.IsFalse(result.Any(g => g.Number != 1), "Wrong group returned");
        }
        public void GetGroupsSelectNewEntity_GroupFromDB1()
        {
            #region Mock.DB_1_Entities.Groups Initialize

            var group1 = new Mock.DB1_Context.Group()
            {
                Id = Guid.NewGuid(),
                Name = "Group1",
                Number = 1
            };
            var group2 = new Mock.DB1_Context.Group()
            {
                Id = Guid.NewGuid(),
                Name = "Group2",
                Number = 1
            };
            var group3 = new Mock.DB1_Context.Group()
            {
                Id = Guid.NewGuid(),
                Name = "Group3",
                Number = 2
            };

            #endregion

            var db1Adapter = new DB1Adapter();
            db1Adapter.AddEntity<Group>(group1);
            db1Adapter.AddEntity<Group>(group2);
            db1Adapter.AddEntity<Group>(group3);
            db1Adapter.SaveChanges();

            var mapper = new Mapper.Mapper();

            mapper.CreateConfiguration<Mock.DB1_Context.Group, Mock.DomainModel.Group>()
                .AddMap(s => s.Id, d => d.ID)
                .AddMap(s => s.Name, d => d.Name)
                .AddMap(s => s.Number, d => d.Number);

            var cqContext = new CQContext(mapper, db1Adapter);

            var result = cqContext.GetEntities<Mock.DomainModel.Group>()
                .Select(g => new { g.ID, g.Number })
                .ToList();

            Assert.IsTrue(result.Any(r => r.ID == group1.Id), "group1 is not found");
            Assert.IsTrue(result.Any(r => r.ID == group2.Id), "group2 is not found");
            Assert.IsTrue(result.Any(r => r.ID == group3.Id), "group3 is not found");
        }
        public void GetEventByGroupID_GroupFromDB1_EventFromDB2()
        {
            #region Mock.DB_1_Entities.Groups Initialize

            var group1 = new Mock.DB1_Context.Group()
            {
                Id = Guid.NewGuid(),
                Name = "Group1"
            };
            var group2 = new Mock.DB1_Context.Group()
            {
                Id = Guid.NewGuid(),
                Name = "Group2"
            };

            #endregion

            var db1Adapter = new DB1Adapter();
            db1Adapter.AddEntity<Group>(group1);
            db1Adapter.AddEntity<Group>(group2);
            db1Adapter.SaveChanges();

            #region Mock.DB_2_Entities.Events Initialize

            var event1 = new Mock.DB2_Context.Event()
            {
                Id = Guid.NewGuid(),
                Name = "eventForGroup1",
                GroupName = group1.Name
            };

            var event2 = new Mock.DB2_Context.Event()
            {
                Id = Guid.NewGuid(),
                Name = "eventForGroup2",
                GroupName = group2.Name
            };

            #endregion

            var db2Adapter = new DB2Adapter();
            db2Adapter.AddEntity<Event>(event1);
            db2Adapter.AddEntity<Event>(event2);
            db2Adapter.SaveChanges();

            var mapper = new Mapper.Mapper();

            mapper.CreateConfiguration<Mock.DB1_Context.Group, Mock.DomainModel.Group>()
                .AddMap(s => s.Id, d => d.ID)
                .AddMap(s => s.Name, d => d.Name);

            mapper.CreateConfiguration<Mock.DB2_Context.Event, Mock.DomainModel.Event>()
                .AddMap(s => s.Id, d => d.ID)
                .AddMap(s => s.Name, d => d.Name);

            var cqContext = new CQContext(mapper, db1Adapter, db2Adapter);

            var result = cqContext.GetEntities<Mock.DomainModel.Event>().FirstOrDefault(e => e.Group.ID == group1.Id);

            Assert.IsNotNull(result, "Event not found");
            Assert.AreEqual(event1.Id, result.ID, "Wrong event");
        }
        public void GetGroupsByNumberAndIdWhereWithAnd_GroupFromDB1()
        {
            #region Mock.DB_1_Entities.Groups Initialize

            var group1 = new Mock.DB1_Context.Group()
            {
                Id = Guid.NewGuid(),
                Name = "Group1",
                Number = 1
            };
            var group2 = new Mock.DB1_Context.Group()
            {
                Id = Guid.NewGuid(),
                Name = "Group2",
                Number = 1
            };
            var group3 = new Mock.DB1_Context.Group()
            {
                Id = Guid.NewGuid(),
                Name = "Group3",
                Number = 2
            };

            #endregion

            var db1Adapter = new DB1Adapter();
            db1Adapter.AddEntity<Group>(group1);
            db1Adapter.AddEntity<Group>(group2);
            db1Adapter.AddEntity<Group>(group3);
            db1Adapter.SaveChanges();

            var mapper = new Mapper.Mapper();

            mapper.CreateConfiguration<Mock.DB1_Context.Group, Mock.DomainModel.Group>()
                .AddMap(s => s.Id, d => d.ID)
                .AddMap(s => s.Name, d => d.Name)
                .AddMap(s => s.Number, d => d.Number);

            var cqContext = new CQContext(mapper, db1Adapter);

            var result = cqContext.GetEntities<Mock.DomainModel.Group>()
                .Where(g => g.Number == group1.Number && g.ID == group1.Id).First();

            Assert.AreEqual(group1.Id, result.ID, "Wrong group returned");
        }