public void TestSmartContext_RetrieveMultipleUsersWithCondition_AllUsersShouldBeSavedToOffline()
        {
            using (SmartContext sCtx = new SmartContext())
            {
                int usersInOfflineCountBefore = this.offlineContext.Users.Count();

                IEnumerable<User> users = sCtx.GetMultiple<User>((u) => u.UserId > 1);

                IList<int> userIds = new List<int>();
                foreach (User user in users)
                {
                    userIds.Add(user.UserId);
                }

                int usersInOfflineCountAfter = this.offlineContext.Users.Count();
                IEnumerable<User> usersFromOfflineStorage = this.offlineContext.Users.Where(usr => userIds.Contains(usr.UserId)).ToList();

                Assert.AreNotEqual(0, users.Count());
                Assert.AreNotEqual(usersInOfflineCountBefore, usersInOfflineCountAfter);
                Assert.AreEqual(users.Count(), usersFromOfflineStorage.Count());
            }
        }
        public void TestSmartContext_RetrieveMultipleUsers_AllUsersShouldBeSavedToOffline()
        {
            using (SmartContext sCtx = new SmartContext())
            {
                int usersInOfflineCountBefore = this.offlineContext.Users.Count();

                IEnumerable<User> users = sCtx.GetMultiple<User>();

                IList<int> userIds = users.Select(usr => usr.UserId).ToList();

                int usersInOfflineCountAfter = this.offlineContext.Users.Count();
                IEnumerable<User> usersFromOfflineStorage = this.offlineContext.Users.Where(usr => userIds.Contains(usr.UserId)).ToList();

                Assert.AreNotEqual(0, users.Count());
                Assert.AreNotEqual(usersInOfflineCountBefore, usersInOfflineCountAfter);
                Assert.AreEqual(users.Count(), usersFromOfflineStorage.Count());
            }
        }
        public void TestSmartContext_RetrieveMultipleUsersAndRelatedGroups_AllUsersAndGroupsShouldBeSavedToOffline()
        {
            using (SmartContext sCtx = new SmartContext())
            {
                int usersInOfflineCountBefore = this.offlineContext.Users.Count();
                int groupsInOfflineCountBefore = this.offlineContext.Groups.Count();

                FetchStrategy loadWithGroup = new FetchStrategy();
                loadWithGroup.LoadWith<User>(u => u.Group);

                IEnumerable<User> users = sCtx.GetMultiple<User>(fetchStrategy: loadWithGroup);

                IList<int> userIds = users.Select(usr => usr.UserId).ToList();

                IList<int> groupIds = users.Select(usr => usr.GroupId).Distinct().ToList();

                int usersInOfflineCountAfter = this.offlineContext.Users.Count();
                int groupsInOfflineCountAfter = this.offlineContext.Groups.Count();
                IEnumerable<User> usersFromOfflineStorage = this.offlineContext.Users.Where(usr => userIds.Contains(usr.UserId)).ToList();
                IEnumerable<Group> groupsFromOfflineStorage = this.offlineContext.Groups.Where(grp => groupIds.Contains(grp.GroupId)).ToList();

                Assert.AreNotEqual(0, users.Count());
                Assert.AreNotEqual(usersInOfflineCountBefore, usersInOfflineCountAfter);
                Assert.AreNotEqual(groupsInOfflineCountBefore, groupsInOfflineCountAfter);
                Assert.AreEqual(users.Count(), usersFromOfflineStorage.Count());
                Assert.AreEqual(groupIds.Count, groupsFromOfflineStorage.Count());
            }
        }