Beispiel #1
0
        public void UpdateUserFactsWhenUserHasNoUpdatedTrackers_FactsInRepositoryNotUpdated()
        {
            var generalFact = CreateGeneralFact();

            _multipleFactsRepository.CreateUserGeneralFacts(_tracker.CreatorId, new[] { generalFact });
            var specificFact = CreateSpecificFact();

            _singleFactsRepository.CreateTrackerSpecificFacts(_tracker.Id, _tracker.CreatorId, new[] { specificFact });
            _tracker.IsUpdated = false;
            _trackerRepository.UpdateTracker(_tracker);

            _statisticGenerator.UpdateUserFacts(_tracker.CreatorId);
            var loadedGeneralFact  = _multipleFactsRepository.ReadUserGeneralFacts(_tracker.CreatorId);
            var loadedSpecificFact = _singleFactsRepository.ReadTrackerSpecificFacts(_tracker.CreatorId, _tracker.Id);

            Assert.AreEqual(generalFact.GetHashCode(), loadedGeneralFact.First().GetHashCode());
            Assert.AreEqual(specificFact.GetHashCode(), loadedSpecificFact.First().GetHashCode());
        }
        public IReadOnlyCollection <ISingleTrackerFact> GetSingleTrackerFacts(Guid trackerId, Guid userId)
        {
            if (!_trackerRepository.IsContainTracker(trackerId))
            {
                throw new TrackerNotFoundException(trackerId);
            }

            var tracker = _trackerRepository.LoadTracker(trackerId);

            if (userId != tracker.CreatorId)
            {
                throw new NoPermissionsForTrackerException(userId, trackerId);
            }

            if (!_singleFactsRepository.IsContainFactForTracker(trackerId, userId))
            {
                throw new TrackerStatisticsNotFoundException(trackerId);
            }

            var statisticFacts = _singleFactsRepository.ReadTrackerSpecificFacts(userId, trackerId);

            return(statisticFacts);
        }