public UniMicroTestSetup UniMicroServiceReturnsWorkItem(IAbsenceMessageData message)
        {
            var absence = MessageToAbsenceMapper.CreateAbsenceFromMessage(message);

            foreach (var absenceEntry in absence.AbsenceEntries)
            {
                if (absenceEntry.LocalAbsenceCode == (int)AbsenceSubType.ParentalLeave)
                {
                    var employementId = _entityMapService.GetEmploymentId(absence.EmployeeId, absence.UnitId).Result.Value;
                    var leaveTypeId   = _entityMapService.GetEmploymentLeaveId(absenceEntry.LocalAbsenceCode, absence.UnitId).Result.Value;

                    A.CallTo(() => _uniMicroClient.PostEmploymentLeave(A <EmploymentLeave>
                                                                       .That.Matches(w =>
                                                                                     w.FromDate == absenceEntry.StartTime &&
                                                                                     w.ToDate == absenceEntry.EndTime &&
                                                                                     w.EmploymentID == employementId &&
                                                                                     w.LeaveType == (LeaveType)leaveTypeId
                                                                                     )))
                    .ReturnsLazily(() => Task.FromResult(_externalEmploymentLeaveIds++));
                }
                else
                {
                    A.CallTo(() => _uniMicroClient.PostWorkItem(A <WorkItem> .That.Matches(w =>
                                                                                           w.StartTime == absenceEntry.StartTime &&
                                                                                           w.EndTime == absenceEntry.EndTime &&
                                                                                           w.WorkRelationId == _entityMapService.GetWorkRelationId(absence.EmployeeId, absence.UnitId).Result.Value &&
                                                                                           w.WorkTypeId == _entityMapService.GetWorkTypeId(absenceEntry.LocalAbsenceCode, absence.UnitId).Result.Value
                                                                                           ))).ReturnsLazily(() => Task.FromResult(_externalWorkItemIds++));
                }
            }

            return(this);
        }
        public static Absence CreateAbsenceFromMessage(IAbsenceMessageData message)
        {
            var absenceEntries = message.AbsenceEntries?.Select(entry => new AbsenceEntry
            {
                ExternalAbsenceCode = null,
                ExternalEntityId    = null,
                ExternalId          = null,
                IsFullDay           = entry.IsFullDay,
                StartTime           = entry.FromDate,
                EndTime             = entry.ToDate,
                LocalAbsenceCode    = (int)entry.AbsenceSubType
            }).ToList();

            absenceEntries = absenceEntries ?? new List <AbsenceEntry>();
            return(new Absence
            {
                LunchInMinutes = LunchInMinutes,
                LocalId = message.AbsenceId,
                Description = "Imported from Sticos Personal",
                EmployeeId = message.EmployeeId,
                UnitId = message.UnitId,
                AbsenceEntries = absenceEntries
            });
        }