public void Given_employee_is_in_list_when_AddEmployee_to_distribution_list_then_employee_is_not_duplicated()
        {
            //GIVEN
            var site = new Site() { Id = 123123 };
            var employee = new Employee() { Id = Guid.NewGuid() };

            //WHEN
            site.AddAccidentRecordNotificationMember(employee, new UserForAuditing());
            site.AddAccidentRecordNotificationMember(employee, new UserForAuditing());

            //THEN
            Assert.That(site.AccidentRecordNotificationMembers.Count, Is.EqualTo(1));
        }
        public void SetUp()
        {
            _bus = new Mock<IBus>();
            _accidentRecordRepository = new Mock<IAccidentRecordRepository>();
            _siteRepository = new Mock<ISiteRepository>();
            _userRepository = new Mock<IUserForAuditingRepository>();
            _user = new UserForAuditing { Id = new Guid() };
            _site = new Site();
            _accidentRecord = new AccidentRecord()
            {
                Id = _accidentRecordId,
                CompanyId = _companyId,
                SiteWhereHappened = _site,
                DoNotSendEmailNotification = false,
                EmailNotificationSent = false
            };


            _userRepository
                .Setup(curUserRepository => curUserRepository.GetByIdAndCompanyId(It.IsAny<Guid>(),It.IsAny<long>()))
                .Returns(_user);


            _accidentRecordRepository.Setup(x => x.GetByIdAndCompanyId(It.IsAny<long>(), It.IsAny<long>()))
                .Returns(_accidentRecord);

            var emp = new Employee();
            emp.ContactDetails = new List<EmployeeContactDetail>();
            emp.ContactDetails.Add(new EmployeeContactDetail() { Employee = emp, Email = "*****@*****.**" });

            _site.AddAccidentRecordNotificationMember(emp, _user);

            _siteRepository.Setup(x => x.GetById(It.IsAny<long>())).Returns(_site);
            
        }
        public void Given_site_and_employee_exists_when_RemoveAccidentRecordNotificationMemberToSite_Then_employee_is_removed_from_site_distribution_list()
        {
            // given 
            long siteId = 1234;
            Guid employeeId = Guid.NewGuid();
            Guid userId = Guid.NewGuid();
            var employee = new Employee();
            employee.Id = employeeId;

            UserForAuditing user = new UserForAuditing()
            {
                Id = Guid.NewGuid()
            };

            var site = new Site { Id = siteId };
            site.AddAccidentRecordNotificationMember(employee,user);

            Site savedSite = null;
            _siteAddressRepository
                .Setup(x => x.SaveOrUpdate(It.IsAny<Site>()))
                .Callback<Site>(y => savedSite = y);

            _siteAddressRepository
                .Setup(x => x.GetById(site.Id))
                .Returns(() => site);

            _employeeRepository
               .Setup(x => x.GetById(employeeId))
               .Returns(() => employee);

            _userForAuditingRepository
                .Setup(x => x.GetByIdAndCompanyId(It.IsAny<Guid>(), It.IsAny<long>()))
                .Returns(user);

            // when
            var target = CreateSiteService();
            target.RemoveAccidentRecordNotificationMemberFromSite(siteId, employeeId, userId);

            // then
            Assert.IsNotNull(savedSite);
            Assert.IsNotNull(savedSite.AccidentRecordNotificationMembers);
            Assert.AreEqual(0, savedSite.AccidentRecordNotificationMembers.Count);
        }