예제 #1
0
        public IList <T> Complete <T>()
        {
            var queryResult = _currentQueryResults.CreateSnapshot();

            foreach (BlittableJsonReaderObject include in queryResult.Includes)
            {
                var newDocumentInfo = DocumentInfo.GetNewDocumentInfo(include);
                _session.includedDocumentsByKey[newDocumentInfo.Id] = newDocumentInfo;
            }

            var usedTransformer = string.IsNullOrEmpty(_indexQuery.Transformer) == false;
            var list            = new List <T>();

            foreach (BlittableJsonReaderObject document in queryResult.Results)
            {
                if (usedTransformer)
                {
                    BlittableJsonReaderArray values;
                    if (document.TryGet("$values", out values) == false)
                    {
                        throw new InvalidOperationException("Transformed document must have a $values property");
                    }

                    list.AddRange(TransformerHelpers.ParseValuesFromBlittableArray <T>(_session, values));

                    continue;
                }

                BlittableJsonReaderObject metadata;
                string id;
                if (document.TryGet(Constants.Metadata.Key, out metadata) == false)
                {
                    throw new InvalidOperationException("Document must have a metadata");
                }
                if (metadata.TryGet(Constants.Metadata.Id, out id) == false)
                {
                    throw new InvalidOperationException("Document must have an id");
                }

                list.Add(_session.TrackEntity <T>(id, document, metadata, _disableEntitiesTracking));
            }

            if (_disableEntitiesTracking == false)
            {
                _session.RegisterMissingIncludes(queryResult.Results, _includes);
            }

            if (_transformResults == null)
            {
                return(list);
            }

            return(_transformResults(_indexQuery, list.Cast <object>()).Cast <T>().ToList());
        }
        public T[] GetTransformedDocuments <T>(GetDocumentResult result)
        {
            if (result == null)
            {
                return(null);
            }

            if (typeof(T).IsArray)
            {
                return(TransformerHelpers.ParseResultsArray <T>(_session, result));
            }

            var items = TransformerHelpers.ParseResults <T>(_session, result).ToArray();

            return(items);
        }
        public void TransformToFPlaces_WhenCorrectVenues_ShouldReturnListOfFPlaces()
        {
            List <Venue> venues = new List <Venue>();

            venues.Add(new Venue {
                id = "1"
            });
            venues.Add(new Venue {
                id = "2"
            });
            venues.Add(new Venue {
                id = "3"
            });

            List <FPlace> places = TransformerHelpers.TransformToFPlaces(venues, null);

            Assert.IsNotNull(places);
            Assert.IsTrue(places.Count > 0);
        }
        public void TransformToFUser_WhenCorrectUser_ShouldReturnTransformedFUser()
        {
            User user = new User
            {
                id        = "1",
                firstName = "Jimmy",
                lastName  = "McNulty",
                photo     = new Icon
                {
                    prefix = "a.b/",
                    suffix = "/c"
                },
                homeCity = "Baltimore",
                friends  = new FourSquareEntityGroups <User>()
            };

            FUser fUser = TransformerHelpers.TransformToFUser(user);

            Assert.IsNotNull(fUser);
            Assert.IsTrue(fUser.Name == "Jimmy McNulty");
            Assert.AreEqual(fUser.FriendsCount, 0);
        }
        public void TransformToFPlaces_WhenCheckinsProvided_ShouldReturnListOfFPlacesWithFriendsNames()
        {
            List <Venue> venues = new List <Venue>();
            var          venue  = new Venue {
                id = "1"
            };

            venues.Add(venue);
            venue = new Venue {
                id = "2"
            };
            venues.Add(venue);
            venue = new Venue {
                id = "3"
            };
            venues.Add(venue);
            List <Checkin> checkins = new List <Checkin>();

            checkins.Add(new Checkin
            {
                venue = venue,
                user  = new User
                {
                    firstName = "John",
                    lastName  = "Luther"
                }
            });

            List <FPlace> places = TransformerHelpers.TransformToFPlaces(venues, checkins);

            Assert.IsNotNull(places);
            Assert.IsTrue(places.Count > 0);

            FPlace place = places.Find(p => p.Id == "3");

            Assert.IsNotNull(place);
            Assert.IsTrue(place.FriendsHere.Contains("John Luther"));
        }
        public T[] GetTransformedDocuments <T>(GetDocumentResult result)
        {
            if (result == null)
            {
                return(null);
            }

            if (typeof(T).IsArray)
            {
                return(TransformerHelpers.ParseResultsArray <T>(_session, result));
            }

            var items = TransformerHelpers.ParseResults <T>(_session, result).ToArray();

            if (items.Length > _ids.Length)
            {
                throw new InvalidOperationException(String.Format("A load was attempted with transformer {0}, and more than one item was returned per entity - please use {1}[] as the projection type instead of {1}",
                                                                  _transformer,
                                                                  typeof(T).Name));
            }

            return(items);
        }
 public void TransformToFUser_WhenUserIsNull_ShouldThrowArgumentNullException()
 {
     TransformerHelpers.TransformToFUser(null);
 }
        public void TransformToFPlaces_WhenEmptyVenues_ShouldReturnEmptyListOfFPlaces()
        {
            List <FPlace> places = TransformerHelpers.TransformToFPlaces(new List <Venue>(), null);

            Assert.IsTrue(places.Count == 0);
        }
 public void TransformToFPlaces_WhenVenuesNull_ShouldThrowArgumentNullException()
 {
     TransformerHelpers.TransformToFPlaces(null, null);
 }