public void when_method_name_given_condition_should_expectation() { // arrange ConsoleView.ShowGettingChannels(); ReplicateResult replicateResult = ReplicateResult.BuildChannelCreated(channelName: "foo channel"); // act ConsoleView.Show(replicateResult); }
private ReplicateResult Replicate(ChannelDto channelDto) { var newChannel = new Channel(channelDto, _entityFactory); LookUpCourses(ref newChannel); _db.Channels.Add(newChannel); return(ReplicateResult.BuildChannelCreated(newChannel.Name)); }
private ReplicateResult Replicate(ChannelDto channelDto, Channel channelDb) { bool channelModified = channelDb.Merge(channelDto, _entityFactory); if (channelModified) { LookUpCourses(ref channelDb); } return(channelModified ? ReplicateResult.BuildChannelUpdated(channelDb.Name) : ReplicateResult.BuildChannelUnchanged(channelDb.Name)); }
public async Task <ReplicateResult> Replicate(IEnumerable <ChannelDto> channelDtosList, CancellationToken cancellationToken) { if (channelDtosList == null) { return(ReplicateResult.BuildEmpty()); } Dictionary <string, Channel> channelsDbByName = await _db.Channels.Include(c => c.ChannelCourses) .ThenInclude(channelCourses => channelCourses.Course) .ToDictionaryAsync(c => c.Name, cancellationToken); var result = new ReplicateResult(); foreach (ChannelDto channelDto in channelDtosList) { cancellationToken.ThrowIfCancellationRequested(); ReplicateResult replicateResult; if (string.IsNullOrWhiteSpace(channelDto.Name)) { Log.Error("channel without name. ChannelPageUrl: [{ChannelPageUrl}]", channelDto.Url); continue; } if (channelsDbByName.TryGetValue(channelDto.Name, out Channel channelDb)) { replicateResult = Replicate(channelDto, channelDb); channelsDbByName.Remove(channelDb.Name); } else { replicateResult = Replicate(channelDto); } result.Add(replicateResult); } foreach (Channel channelDb in channelsDbByName.Values) { ReplicateResult channelDeleted = ReplicateResult.BuildChannelDeleted(channelDb.Name); result.Add(channelDeleted); } _db.Channels.RemoveRange(channelsDbByName.Values); await _db.SaveChangesAsync(cancellationToken); return(result); }
public static void Show(ReplicateResult result) { var columnsConfig = new[] { new TableColumn(TableRenderer.COLUMN_NAME_INDEX, length: 5, alignment: "right", getValue: (detail, i) => i.ToString()), new TableColumn(TableRenderer.COLUMN_NAME_CHANNEL_NAME, length: 30, alignment: "left", getValue: (detail, i) => detail.ChannelName), new TableColumn(TableRenderer.COLUMN_NAME_ACTION, length: 10, alignment: "left", getValue: (detail, i) => detail.Action.ToString()), }; var tableRenderer = new TableRenderer(columnsConfig); var sb = new StringBuilder(); sb.AppendLine(); sb.AppendLine(tableRenderer.Headers); var rowIndex = 1; foreach (ReplicateResultDetail detail in result.Details) { sb.AppendLine(tableRenderer.DataRow(detail, rowIndex)); rowIndex += 1; } sb.AppendLine(); sb.AppendLine($" channels created : [{result.ChannelsCreatedCount}]"); sb.AppendLine($" channels updated : [{result.ChannelsUpdatedCount}]"); sb.AppendLine($" channels deleted : [{result.ChannelsDeletedCount}]"); sb.AppendLine($" channels unchanged : [{result.ChannelsUnchangedCount}]"); sb.AppendLine("------------------- ------"); sb.AppendLine($" total channels : [{result.TotalChannelsCount}]"); sb.AppendLine(); sb.AppendLine($" elapsed : [{_stopWatch?.Elapsed}]"); Log.Information(sb.ToString()); }
private static async Task ReplicateChannels(IEnumerable <ChannelDto> channels) { ReplicateResult result = await Replicator.Replicate(channels, _cancellation.Token); ConsoleView.Show(result); }