private void InitializeEventLogAndGuards()
        {
            var eventSet = new HashSet <WorkEventArgs>()
            {
                new WorkEventArgs(5, new DateTime(2019, 5, 13), this.address),
                new WorkEventArgs(5, new DateTime(2019, 5, 14), this.address),
                new WorkEventArgs(5, new DateTime(2019, 5, 15), this.address),
                new WorkEventArgs(5, new DateTime(2019, 5, 16), this.address),
            };

            this.workTracker = new WorkTracker.WorkTracker(this.addressFactory.Create(), this.contractRegistry,
                                                           this.permissionManager.Address);
            this.contractRegistry.RegisterContract(this.workTracker);
            this.ConfigurePermissions();

            this.eventLog = new WorkEventLog(30, eventSet, this.workTracker);
            var addGuard = new AddTrackerGuardAction(string.Empty, this.workTracker.Address,
                                                     new WeeklyTrackerGuard(this.eventLog));

            this.permissionManager.ExecuteAction(addGuard);
            addGuard = new AddTrackerGuardAction(string.Empty, this.workTracker.Address,
                                                 new MonthlyTrackerGuard(this.eventLog));
            this.permissionManager.ExecuteAction(addGuard);
            addGuard = new AddTrackerGuardAction(string.Empty, this.workTracker.Address, new FutureDateTrackerGuard());
            this.permissionManager.ExecuteAction(addGuard);
        }
        public void AddTrackerGuard()
        {
            var guard    = new FutureDateTrackerGuard();
            var addGuard = new AddTrackerGuardAction(string.Empty, this.workTracker.Address, guard);

            this.permissionManager.ExecuteAction(addGuard);

            Assert.Contains(guard, this.workTracker.TrackGuards);
        }
        public void AddTrackerGuard_WhenDuplicate_RemainsSingle()
        {
            this.InitializeEventLogAndGuards();
            var guard    = new FutureDateTrackerGuard();
            var addGuard = new AddTrackerGuardAction(string.Empty, this.workTracker.Address, guard);

            this.permissionManager.ExecuteAction(addGuard);

            Assert.Equal(3, this.workTracker.TrackGuards.Count);
        }
 protected virtual bool HandleAddTrackerGuard(AddTrackerGuardAction action)
 {
     return(!this.TrackGuards.Contains(action.Guard) && this.TrackGuards.Add(action.Guard));
 }