Пример #1
0
        public void CreateEventWhenEventAndTrackerCustomizationEqualsAndCustomizationIsRequired_CreatesEvent()
        {
            var tracker = TestingMethods.CreateTrackerWithRequiredCustomization(Guid.NewGuid(), "tracker",
                                                                                new TrackerCustomizationSettings(
                                                                                    true,
                                                                                    true,
                                                                                    Option <string> .Some("meter"),
                                                                                    false,
                                                                                    true,
                                                                                    false,
                                                                                    true));

            _trackerRepository.SaveTracker(tracker);
            var newEventCustomization = new EventCustomParameters(
                Option <Photo> .Some(new Photo(photoBytes: new byte[5])),
                Option <double> .Some(1),
                Option <double> .None,
                Option <GeoTag> .Some(new GeoTag(10, 20)),
                Option <Comment> .None);

            var createdEventId = _eventService.CreateEvent(
                tracker.CreatorId,
                tracker.Id,
                DateTimeOffset.Now,
                newEventCustomization);

            Assert.True(_eventRepository.IsContainEvent(createdEventId));
            Assert.AreEqual(newEventCustomization.GetHashCode(),
                            _eventRepository.LoadEvent(createdEventId).CustomizationsParameters.GetHashCode());
            Assert.True(tracker.IsUpdated);
        }
Пример #2
0
        public void GetEventWhenUserAskNotHisOwnEvent_ThrowsException()
        {
            var eventOfAnotherUser = TestingMethods.CreateEvent(Guid.NewGuid(), Guid.NewGuid());

            _eventRepository.SaveEvent(eventOfAnotherUser);

            Assert.Throws <NoPermissionsForEventException>(() =>
                                                           _eventService.GetEvent(Guid.NewGuid(), eventOfAnotherUser.Id));
        }
Пример #3
0
 public void Init()
 {
     _trackerRepository = new TrackerRepository();
     _eventRepository   = new EventRepository();
     _eventService      =
         new EventService(_eventRepository, _trackerRepository,
                          EventFiltrationDapperRepository()); //TODO replace by in memory repository
     _tracker = TestingMethods.CreateTrackerWithDefaultCustomization(Guid.NewGuid());
     _event   = TestingMethods.CreateEvent(_tracker.Id, _tracker.CreatorId);
 }
Пример #4
0
        private List <Event> InitializeEvents()
        {
            var event1 = TestingMethods.CreateEvent(_tracker.Id, _tracker.CreatorId);
            var event2 = TestingMethods.CreateEvent(_tracker.Id, _tracker.CreatorId);

            return(new List <Event>()
            {
                event1, event2
            });
        }
Пример #5
0
        public void GetAllTrackerEventsWhenTrackerHasNoEvents_ReturnsEmptyCollection()
        {
            var tracker = TestingMethods.CreateTrackerWithDefaultCustomization(Guid.NewGuid(), "Tracker");

            _trackerRepository.SaveTracker(tracker);
            const int expected = 0;

            var events = _eventService.GetAllTrackerEvents(tracker.CreatorId, tracker.Id);

            Assert.AreEqual(expected, events.Count);
        }
Пример #6
0
        public void GetFactsFromTrackerWithoutEvents_ReturnsEmptyFactsCollection()
        {
            InitializeFactProviderWithCalculators();
            var       tracker = TestingMethods.CreateTrackerWithDefaultCustomization(Guid.NewGuid());
            var       emtyEventsCollection = new List <Event>();
            const int expected             = 0;

            var facts = _factProvider
                        .GetFacts(new [] { new TrackerWithItsEvents(tracker, emtyEventsCollection) });

            Assert.AreEqual(expected, facts.Count);
        }
 public EventTracker CreateTrackerWithRating()
 {
     return(TestingMethods.CreateTrackerWithRequiredCustomization(Guid.NewGuid(), "Tracker name",
                                                                  new TrackerCustomizationSettings(
                                                                      false,
                                                                      false,
                                                                      Option <string> .None,
                                                                      false,
                                                                      false,
                                                                      false,
                                                                      false)));
 }
Пример #8
0
        public void GetAllUserTrackers_ReturnsUserTrackers()
        {
            var userId   = Guid.NewGuid();
            var tracker1 = TestingMethods.CreateTrackerWithDefaultCustomization(userId);
            var tracker2 = TestingMethods.CreateTrackerWithDefaultCustomization(userId);

            _trackerRepository.SaveTracker(tracker1);
            _trackerRepository.SaveTracker(tracker2);
            const int expected = 2;

            var actual = _trackerRepository.LoadAllUserTrackers(userId).Count();

            Assert.AreEqual(expected, actual);
        }
Пример #9
0
        public void GetAllTrackerEventsGoodCase_ReturnsCollectionOfEvents()
        {
            _trackerRepository.SaveTracker(_tracker);
            var event2 = TestingMethods.CreateEvent(_tracker.Id, _tracker.CreatorId);

            _eventRepository.AddRangeOfEvents(new[] { _event, event2 });
            const int expected = 2;

            var events = _eventService.GetAllTrackerEvents(_tracker.CreatorId, _tracker.Id);

            Assert.AreEqual(expected, events.Count);
            Assert.AreEqual(_event.GetHashCode(), events.First().GetHashCode());
            Assert.AreEqual(event2.GetHashCode(), events.Last().GetHashCode());
        }
        public void GetFacts_ReturnsFacts()
        {
            InitializeFactProviderWithCalculators();
            var       tracker  = CreateTrackerWithRating();
            var       event1   = TestingMethods.CreateEventWithRating(tracker.Id, tracker.CreatorId, 2);
            var       event2   = TestingMethods.CreateEventWithRating(tracker.Id, tracker.CreatorId, 4);
            const int expected = 2;

            var facts      = _factProvider.GetFacts(new[] { event1, event2 }, tracker);
            var firstFact  = facts.First();
            var secondFact = facts.Last();

            Assert.AreEqual(expected, facts.Count);
            Assert.AreEqual("Среднее значение оценки", firstFact.FactName);
            Assert.AreEqual("Количество событий", secondFact.FactName);
        }
Пример #11
0
        public void GetFactsFromTrackerWithEvents_ReturnsFacts()
        {
            InitializeFactProviderWithCalculators();
            var       tracker  = TestingMethods.CreateTrackerWithDefaultCustomization(Guid.NewGuid());
            var       event1   = TestingMethods.CreateEvent(tracker.Id, tracker.CreatorId);
            var       event2   = TestingMethods.CreateEvent(tracker.Id, tracker.CreatorId);
            const int expected = 2;

            var facts = _factProvider
                        .GetFacts(new [] { new TrackerWithItsEvents(tracker, new [] { event1, event2 }) });
            var firstFact  = facts.First();
            var secondFact = facts.Last();

            Assert.AreEqual(expected, facts.Count);
            Assert.AreEqual("Самая насыщенная событиями неделя", firstFact.FactName);
            Assert.AreEqual("Самый насыщенный событиями день", secondFact.FactName);
        }
Пример #12
0
        public void CreateEventWhenEventAndTrackerCustomizationDiffersAndCustomizationIsRequired_ThrowsException()
        {
            var tracker = TestingMethods.CreateTrackerWithRequiredCustomization(Guid.NewGuid(), "tracker",
                                                                                new TrackerCustomizationSettings(
                                                                                    true,
                                                                                    true,
                                                                                    Option <string> .Some("meter"),
                                                                                    true,
                                                                                    false,
                                                                                    true,
                                                                                    true));

            _trackerRepository.SaveTracker(tracker);

            Assert.Throws <InvalidEventForTrackerException>(() =>
                                                            _eventService.CreateEvent(tracker.CreatorId, tracker.Id, DateTimeOffset.Now,
                                                                                      new EventCustomParameters()));
        }
Пример #13
0
        public void CreateEventWhenEventAndTrackerCustomizationDiffersAndCustomizationIsNotRequired_CreatesEvent()
        {
            var tracker = TestingMethods.CreateTrackerWithRequiredCustomization(Guid.NewGuid(), "tracker",
                                                                                new TrackerCustomizationSettings(
                                                                                    true,
                                                                                    true,
                                                                                    Option <string> .Some("meter"),
                                                                                    true,
                                                                                    false,
                                                                                    true,
                                                                                    false));

            _trackerRepository.SaveTracker(tracker);

            var createdEventId = _eventService.CreateEvent(tracker.CreatorId, tracker.Id, DateTimeOffset.Now,
                                                           new EventCustomParameters());

            Assert.True(_eventRepository.IsContainEvent(createdEventId));
            Assert.True(tracker.IsUpdated);
        }
Пример #14
0
        EditEventWhenNewCustomizationMatchTrackerCustomizationAndCustomizationIsRequired_EventInRepositoryUpdated()
        {
            var tracker = TestingMethods.CreateTrackerWithRequiredCustomization(Guid.NewGuid(), "tracker",
                                                                                new TrackerCustomizationSettings(
                                                                                    true,
                                                                                    true,
                                                                                    Option <string> .Some("meter"),
                                                                                    false,
                                                                                    true,
                                                                                    false,
                                                                                    true));

            _trackerRepository.SaveTracker(tracker);
            var oldEvent = new Event(Guid.NewGuid(), tracker.CreatorId, tracker.Id, DateTimeOffset.Now,
                                     new EventCustomParameters(
                                         Option <Photo> .Some(new Photo(photoBytes: new byte[5])),
                                         Option <double> .Some(1),
                                         Option <double> .None,
                                         Option <GeoTag> .Some(new GeoTag(10, 20)),
                                         Option <Comment> .None));

            _eventRepository.SaveEvent(oldEvent);

            var updatedCustomizationParameters = new EventCustomParameters(
                Option <Photo> .Some(new Photo(photoBytes: new byte[7])),
                Option <double> .Some(15),
                Option <double> .None,
                Option <GeoTag> .Some(new GeoTag(30, 40)),
                Option <Comment> .None);

            _eventService.EditEvent(tracker.CreatorId, oldEvent.Id, DateTimeOffset.Now,
                                    updatedCustomizationParameters);

            Assert.AreEqual(updatedCustomizationParameters.GetHashCode(),
                            _eventRepository.LoadEvent(oldEvent.Id).CustomizationsParameters.GetHashCode());
            Assert.True(tracker.IsUpdated);
        }
Пример #15
0
        public void UpdateUserFactsWhenTrackerWasUpdated_FactsInRepositoryUpdated()
        {
            var newEvent = TestingMethods.CreateEventFixDate(_tracker.Id, _tracker.CreatorId,
                                                             DateTimeOffset.Now - TimeSpan.FromDays(2));
            var newEvent2 = TestingMethods.CreateEventFixDate(_tracker.Id, _tracker.CreatorId,
                                                              DateTimeOffset.Now - TimeSpan.FromDays(2));

            _eventRepository.AddRangeOfEvents(new[] { newEvent, newEvent2 });
            var generalFact = CreateGeneralFact();

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

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

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

            Assert.AreNotEqual(generalFact.GetHashCode(), loadedGeneralFact.First().GetHashCode());
            Assert.AreNotEqual(specificFact.GetHashCode(), loadedSpecificFact.First().GetHashCode());
        }
Пример #16
0
        EditEventWhenNewCustomizationDontMatchTrackerCustomizationAndCustomizationNotRequired_EventInRepositoryUpdated()
        {
            var tracker = TestingMethods.CreateTrackerWithRequiredCustomization(Guid.NewGuid(), "tracker",
                                                                                new TrackerCustomizationSettings(
                                                                                    true,
                                                                                    true,
                                                                                    Option <string> .Some("meter"),
                                                                                    true,
                                                                                    false,
                                                                                    true,
                                                                                    false));

            _trackerRepository.SaveTracker(tracker);
            var oldEvent = TestingMethods.CreateEvent(tracker.Id, tracker.CreatorId);

            _eventRepository.SaveEvent(oldEvent);

            _eventService.EditEvent(tracker.CreatorId, oldEvent.Id, DateTimeOffset.Now,
                                    new EventCustomParameters());

            Assert.AreNotEqual(oldEvent.GetHashCode(),
                               _eventRepository.LoadEvent(oldEvent.Id).GetHashCode());
            Assert.True(tracker.IsUpdated);
        }
Пример #17
0
 public void Init()
 {
     _trackerRepository = new TrackerRepository();
     _trackerService    = new TrackerService(_trackerRepository);
     _tracker           = TestingMethods.CreateTrackerWithDefaultCustomization(Guid.NewGuid());
 }