public GenericDataModel GetItemBasedDataModel() { FastByIDMap <IPreferenceArray> data = new FastByIDMap <IPreferenceArray>(); IEnumerable <UserBookReview> allBookReviews = _userBookReviewRepository.GetListOf(); var everyReviewsBookId = allBookReviews.GroupBy(b => b.BookId).Select(x => x.Key).ToList(); foreach (int bookId in everyReviewsBookId) { List <UserBookReview> bookReviewsForABook = (from userReviews in allBookReviews where userReviews.BookId == bookId select userReviews).ToList(); List <IPreference> listOfPreferences = new List <IPreference>(); foreach (UserBookReview review in bookReviewsForABook) { int rating = review.Rating; int reviewUserId = review.UserId; GenericPreference pref = new GenericPreference(reviewUserId, bookId, rating); /// userId, itemid, valueId listOfPreferences.Add(pref); } GenericItemPreferenceArray dataArray = new GenericItemPreferenceArray(listOfPreferences); data.Put(bookId, dataArray); } return(new GenericDataModel(data)); }
public void testStrategy() { FastIDSet itemIDsFromUser123 = new FastIDSet(); itemIDsFromUser123.Add(1L); FastIDSet itemIDsFromUser456 = new FastIDSet(); itemIDsFromUser456.Add(1L); itemIDsFromUser456.Add(2L); List <IPreference> prefs = new List <IPreference>(); prefs.Add(new GenericPreference(123L, 1L, 1.0f)); prefs.Add(new GenericPreference(456L, 1L, 1.0f)); IPreferenceArray preferencesForItem1 = new GenericItemPreferenceArray(prefs); var dataModelMock = new DynamicMock(typeof(IDataModel)); dataModelMock.ExpectAndReturn("GetPreferencesForItem", preferencesForItem1, (1L)); dataModelMock.ExpectAndReturn("GetItemIDsFromUser", itemIDsFromUser123, (123L)); dataModelMock.ExpectAndReturn("GetItemIDsFromUser", itemIDsFromUser456, (456L)); IPreferenceArray prefArrayOfUser123 = new GenericUserPreferenceArray(new List <IPreference>() { new GenericPreference(123L, 1L, 1.0f) }); ICandidateItemsStrategy strategy = new PreferredItemsNeighborhoodCandidateItemsStrategy(); //EasyMock.replay(dataModel); FastIDSet candidateItems = strategy.GetCandidateItems(123L, prefArrayOfUser123, (IDataModel)dataModelMock.MockInstance); Assert.AreEqual(1, candidateItems.Count()); Assert.True(candidateItems.Contains(2L)); dataModelMock.Verify(); // EasyMock.verify(dataModel); }