private async void HandleGroupScheduleChanged(object sender, EventArgs args) { try { if (args is ParamEventArgs <DayOfWeek> paramEventArgs) { var group = (IScheduleGroup)sender; logger?.LogInformation("Get notification about changed sch in group {0}", JsonConvert.SerializeObject(group)); if (groupToUsers.TryGetValue(group, out var list) && list != null && list.Any()) { logger?.LogInformation("Prepare notification about changed sch in group {0}, users: {1}", JsonConvert.SerializeObject(group), JsonConvert.SerializeObject(list)); var dayName = new CultureInfo("ru-Ru").DateTimeFormat.GetDayName(paramEventArgs.Param); var verbEnd = dayName.EndsWith('а') ? "ась" : "ся"; await notifiactionSender.SendNotificationsForIdsAsync(list, $"Изменил{verbEnd} {dayName}"); } } } catch (Exception e) { logger?.LogError(e, "Exc"); } }
public async Task NotifyUser_WhenGroupScheduleChanged() { var anyGroup = availableGroups.FirstOrDefault(); var chat = fixt.Create <Chat>(); await storage.TryAddGroupToChatAsync(anyGroup, chat); anyGroup.RaiseScheduleChanged(null, new ParamEventArgs <DayOfWeek>() { Param = DayOfWeek.Friday }); A.CallTo(() => fakeNotificator.SendNotificationsForIdsAsync(null, null)).WhenArgumentsMatch(args => { var ids = args.Get <IEnumerable <long> >(0); return(ids.Count() == 1 && ids.Contains(chat.Id)); }).MustHaveHappened(); }