Skip to content

Commit 2f01245

Browse files
committed
docs: translate remaining Portuguese identifiers in tests and samples
Complete the English-only policy: translate domain identifiers still in Portuguese across the test suite and samples 01/02 (sample 03 was already done). Venda->Sale, Cliente->Customer, Valor->Amount, Data->Date, Vendas->Sales, vendas-mensal->monthly-sales, and stray test params (regiao->region, sul->south, inicio->start, valor->amount). Also fix one XML-doc example (SheetName("Vendas") ->"Sales") and the column header labels (Sale ID / Sale Date). SQL fixture and queries translated consistently. Full suite 69 green.
1 parent 0e01396 commit 2f01245

24 files changed

Lines changed: 189 additions & 189 deletions

File tree

samples/01-sql-to-csv-local/Program.cs

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@
1010

1111
// Sample 01 — SQL Server -> CSV -> local filesystem (the first end-to-end report).
1212
//
13-
// Run against any SQL Server with a Vendas table:
13+
// Run against any SQL Server with a Sales table:
1414
// dotnet run --project samples/01-sql-to-csv-local -- "<connection-string>"
1515
//
16-
// Expected schema: Vendas(Id BIGINT, Cliente NVARCHAR, Valor DECIMAL, Data DATETIME2).
16+
// Expected schema: Sales(Id BIGINT, Customer NVARCHAR, Amount DECIMAL, Date DATETIME2).
1717

1818
var connectionString = args.Length > 0
1919
? args[0]
@@ -22,25 +22,25 @@
2222
var services = new ServiceCollection();
2323
services.AddLogging(b => b.AddConsole().SetMinimumLevel(LogLevel.Information));
2424

25-
services.AddReport<Venda>("vendas-mensal", b => b
25+
services.AddReport<Sale>("monthly-sales", b => b
2626
.From(Source.Sql(
2727
connectionString,
28-
"SELECT Id, Cliente, Valor, Data FROM Vendas " +
28+
"SELECT Id, Customer, Amount, Date FROM Sales " +
2929
"WHERE (@cursor IS NULL OR Id > @cursor) ORDER BY Id")
30-
.Keyset<Venda, long>(v => v.Id, pageSize: 1000))
31-
.Filter(v => v.Valor > 0)
30+
.Keyset<Sale, long>(v => v.Id, pageSize: 1000))
31+
.Filter(v => v.Amount > 0)
3232
.Columns(
33-
Col<Venda, long>(v => v.Id, "ID Venda"),
34-
Col<Venda, string>(v => v.Cliente, "Cliente"),
35-
Col<Venda, decimal>(v => v.Valor, "Valor", format: "C2", culture: "pt-BR"),
36-
Col<Venda, DateTime>(v => v.Data, "Data Venda", format: "yyyy-MM-dd"))
33+
Col<Sale, long>(v => v.Id, "Sale ID"),
34+
Col<Sale, string>(v => v.Customer, "Customer"),
35+
Col<Sale, decimal>(v => v.Amount, "Amount", format: "C2", culture: "pt-BR"),
36+
Col<Sale, DateTime>(v => v.Date, "Sale Date", format: "yyyy-MM-dd"))
3737
.To(Format.Csv(o => o.Delimiter(';').Encoding(Encoding.UTF8)))
3838
.UploadTo(Destination.Local("./out/{name}-{date:yyyy-MM-dd}.{ext}")));
3939

4040
var provider = services.BuildServiceProvider();
4141
var runner = provider.GetRequiredService<IReportRunner>();
4242

43-
var result = await runner.RunAsync("vendas-mensal");
43+
var result = await runner.RunAsync("monthly-sales");
4444

4545
Console.WriteLine($"Status: {result.Status}");
4646
Console.WriteLine($"Records read/written: {result.Stats.RecordsRead}/{result.Stats.RecordsWritten}");
@@ -49,4 +49,4 @@
4949

5050
return result.Status == ReportRunStatus.Failed ? 1 : 0;
5151

52-
internal sealed record Venda(long Id, string Cliente, decimal Valor, DateTime Data);
52+
internal sealed record Sale(long Id, string Customer, decimal Amount, DateTime Date);

samples/02-sql-to-xlsx-s3/Program.cs

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -25,26 +25,26 @@
2525
var services = new ServiceCollection();
2626
services.AddLogging(b => b.AddConsole().SetMinimumLevel(LogLevel.Information));
2727

28-
services.AddReport<Venda>("vendas-mensal", b => b
28+
services.AddReport<Sale>("monthly-sales", b => b
2929
.From(Source.Sql(
3030
connectionString,
31-
"SELECT Id, Cliente, Valor, Data FROM Vendas " +
31+
"SELECT Id, Customer, Amount, Date FROM Sales " +
3232
"WHERE (@cursor IS NULL OR Id > @cursor) ORDER BY Id")
33-
.Keyset<Venda, long>(v => v.Id, pageSize: 1000))
34-
.Filter(v => v.Valor > 0)
33+
.Keyset<Sale, long>(v => v.Id, pageSize: 1000))
34+
.Filter(v => v.Amount > 0)
3535
.Columns(
36-
Col<Venda, long>(v => v.Id, "ID Venda"),
37-
Col<Venda, string>(v => v.Cliente, "Cliente"),
38-
Col<Venda, decimal>(v => v.Valor, "Valor", format: "C2", culture: "pt-BR"),
39-
Col<Venda, DateTime>(v => v.Data, "Data Venda", format: "yyyy-MM-dd"))
36+
Col<Sale, long>(v => v.Id, "Sale ID"),
37+
Col<Sale, string>(v => v.Customer, "Customer"),
38+
Col<Sale, decimal>(v => v.Amount, "Amount", format: "C2", culture: "pt-BR"),
39+
Col<Sale, DateTime>(v => v.Date, "Sale Date", format: "yyyy-MM-dd"))
4040
.To(Csv(o => o.Delimiter(';').Encoding(Encoding.UTF8)))
41-
.To(Xlsx(o => o.SheetName("Vendas").AutoFilter()))
41+
.To(Xlsx(o => o.SheetName("Sales").AutoFilter()))
4242
.UploadTo(Destination.S3(bucket, "reports/{name}/{date:yyyy-MM-dd}.{ext}")));
4343

4444
var provider = services.BuildServiceProvider();
4545
var runner = provider.GetRequiredService<IReportRunner>();
4646

47-
var result = await runner.RunAsync("vendas-mensal");
47+
var result = await runner.RunAsync("monthly-sales");
4848

4949
Console.WriteLine($"Status: {result.Status}");
5050
Console.WriteLine($"Records read/written: {result.Stats.RecordsRead}/{result.Stats.RecordsWritten}");
@@ -53,4 +53,4 @@
5353

5454
return result.Status == ReportRunStatus.Failed ? 1 : 0;
5555

56-
internal sealed record Venda(long Id, string Cliente, decimal Valor, DateTime Data);
56+
internal sealed record Sale(long Id, string Customer, decimal Amount, DateTime Date);

src/Formats/NeoReports.Formats.Xlsx/XlsxOptions.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
namespace NeoReports.Formats.Xlsx;
22

33
/// <summary>
4-
/// Fluent options for the XLSX writer (<c>o.SheetName("Vendas").AutoFilter()</c>).
4+
/// Fluent options for the XLSX writer (<c>o.SheetName("Sales").AutoFilter()</c>).
55
/// Defaults: sheet "Sheet1", a header row from each column's <c>DisplayName</c>, auto-filter off.
66
/// </summary>
77
public sealed class XlsxOptions

tests/NeoReports.AspNetCore.IntegrationTests/EndpointsTests.cs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ public async Task List_reports_returns_registered_report()
2929
var reports = await client.GetFromJsonAsync<List<JsonElement>>("/api/reports", Json);
3030

3131
reports.ShouldNotBeNull();
32-
reports.ShouldContain(r => r.GetProperty("name").GetString() == "vendas");
32+
reports.ShouldContain(r => r.GetProperty("name").GetString() == "sales");
3333
}
3434

3535
[Fact]
@@ -39,7 +39,7 @@ public async Task Async_run_goes_queued_to_completed_and_downloads()
3939
var client = host.GetTestClient();
4040

4141
// CA-9: async trigger returns 202 + jobId.
42-
var run = await client.PostAsJsonAsync("/api/reports/vendas/run", new { parameters = (object?)null }, Json);
42+
var run = await client.PostAsJsonAsync("/api/reports/sales/run", new { parameters = (object?)null }, Json);
4343
run.StatusCode.ShouldBe(HttpStatusCode.Accepted);
4444

4545
var accepted = await run.Content.ReadFromJsonAsync<JsonElement>(Json);
@@ -65,7 +65,7 @@ public async Task Async_run_goes_queued_to_completed_and_downloads()
6565
download.Content.Headers.ContentDisposition!.FileName!.Trim('"').ShouldEndWith(".csv");
6666

6767
var text = await download.Content.ReadAsStringAsync();
68-
text.ShouldContain("ID;Cliente"); // header
68+
text.ShouldContain("ID;Customer"); // header
6969
text.ShouldContain("1;C1"); // first row
7070
var dataLines = text.Split('\n', StringSplitOptions.RemoveEmptyEntries);
7171
dataLines.Length.ShouldBe(31); // header + 30 rows
@@ -78,14 +78,14 @@ public async Task Sync_run_streams_single_output_with_content_disposition()
7878
var client = host.GetTestClient();
7979

8080
// CA-10: sync streams the file directly.
81-
var response = await client.PostAsJsonAsync("/api/reports/vendas/run?mode=sync", new { }, Json);
81+
var response = await client.PostAsJsonAsync("/api/reports/sales/run?mode=sync", new { }, Json);
8282

8383
response.StatusCode.ShouldBe(HttpStatusCode.OK);
8484
response.Content.Headers.ContentType!.MediaType.ShouldBe("text/csv");
8585
response.Content.Headers.ContentDisposition!.FileName!.Trim('"').ShouldEndWith(".csv");
8686

8787
var text = await response.Content.ReadAsStringAsync();
88-
text.ShouldContain("ID;Cliente");
88+
text.ShouldContain("ID;Customer");
8989
text.ShouldContain("30;C30");
9090
}
9191

@@ -94,7 +94,7 @@ public async Task Sync_run_rejects_multi_output_with_400()
9494
{
9595
using var host = await TestApp.StartAsync(services =>
9696
{
97-
services.AddReport<Venda>("multi", b => b
97+
services.AddReport<Sale>("multi", b => b
9898
.From(new InMemorySource(rows: 5, pageSize: 10))
9999
.Column(v => v.Id, "ID")
100100
.To(Csv(o => o.Delimiter(';')))
@@ -157,7 +157,7 @@ public async Task Cancel_running_job_is_accepted()
157157
// A slow source keeps the job running long enough to cancel it deterministically.
158158
using var host = await TestApp.StartAsync(services =>
159159
{
160-
services.AddReport<Venda>("slow", b => b
160+
services.AddReport<Sale>("slow", b => b
161161
.From(new InMemorySource(rows: 100_000, pageSize: 10, delay: TimeSpan.FromMilliseconds(20)))
162162
.Column(v => v.Id, "ID")
163163
.To(Csv(o => o.Delimiter(';'))));
@@ -185,7 +185,7 @@ public async Task Download_multi_output_returns_zip()
185185
{
186186
using var host = await TestApp.StartAsync(services =>
187187
{
188-
services.AddReport<Venda>("multi", b => b
188+
services.AddReport<Sale>("multi", b => b
189189
.From(new InMemorySource(rows: 5, pageSize: 10))
190190
.Column(v => v.Id, "ID")
191191
.To(Csv(o => o.Delimiter(';')))

tests/NeoReports.AspNetCore.IntegrationTests/TestApp.cs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@
1616
namespace NeoReports.AspNetCore.IntegrationTests;
1717

1818
/// <summary>Reference row type for the API tests.</summary>
19-
public sealed record Venda(long Id, string Cliente);
19+
public sealed record Sale(long Id, string Customer);
2020

2121
/// <summary>In-memory batch source synthesizing a fixed number of rows, one page at a time.</summary>
22-
public sealed class InMemorySource : IBatchSource<Venda>
22+
public sealed class InMemorySource : IBatchSource<Sale>
2323
{
2424
private readonly long _rows;
2525
private readonly int _pageSize;
@@ -34,23 +34,23 @@ public InMemorySource(long rows, int pageSize, TimeSpan delay = default)
3434

3535
public ReportSchema Schema { get; } = new(new[] { new ReportColumn("Id", ColumnType.Integer) });
3636

37-
public async Task<BatchResult<Venda>> ReadBatchAsync(BatchContext context, CancellationToken cancellationToken)
37+
public async Task<BatchResult<Sale>> ReadBatchAsync(BatchContext context, CancellationToken cancellationToken)
3838
{
3939
if (_delay > TimeSpan.Zero)
4040
await Task.Delay(_delay, cancellationToken).ConfigureAwait(false);
4141

4242
var last = context.Cursor is null ? 0L : long.Parse(context.Cursor, System.Globalization.CultureInfo.InvariantCulture);
4343
var start = last + 1;
4444
if (start > _rows)
45-
return BatchResult<Venda>.Empty;
45+
return BatchResult<Sale>.Empty;
4646

4747
var end = Math.Min(start + _pageSize - 1, _rows);
48-
var rows = new List<Venda>();
48+
var rows = new List<Sale>();
4949
for (var id = start; id <= end; id++)
50-
rows.Add(new Venda(id, $"C{id}"));
50+
rows.Add(new Sale(id, $"C{id}"));
5151

5252
var hasMore = end < _rows;
53-
return new BatchResult<Venda>(rows, hasMore ? end.ToString(System.Globalization.CultureInfo.InvariantCulture) : null, hasMore);
53+
return new BatchResult<Sale>(rows, hasMore ? end.ToString(System.Globalization.CultureInfo.InvariantCulture) : null, hasMore);
5454
}
5555
}
5656

@@ -76,10 +76,10 @@ public static async Task<IHost> StartAsync(Action<IServiceCollection>? configure
7676
}
7777
else
7878
{
79-
services.AddReport<Venda>("vendas", b => b
79+
services.AddReport<Sale>("sales", b => b
8080
.From(new InMemorySource(rows: 30, pageSize: 10))
8181
.Column(v => v.Id, "ID")
82-
.Column(v => v.Cliente, "Cliente")
82+
.Column(v => v.Customer, "Customer")
8383
.To(Csv(o => o.Delimiter(';'))));
8484
}
8585

tests/NeoReports.Core.UnitTests/Fakes/TestFakes.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
namespace NeoReports.Core.UnitTests.Fakes;
55

66
/// <summary>Reference row type used across the tests.</summary>
7-
public sealed record Venda(long Id, string Cliente, decimal Valor, DateTime Data);
7+
public sealed record Sale(long Id, string Customer, decimal Amount, DateTime Date);
88

99
/// <summary>Minimal service provider that resolves nothing (factories under test ignore it).</summary>
1010
public sealed class EmptyServiceProvider : IServiceProvider

tests/NeoReports.Core.UnitTests/FileSystemArtifactStoreTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,11 @@ public async Task Save_then_list_round_trips_file_and_mime()
2323
var store = new FileSystemArtifactStore(_root);
2424
var src = MakeSourceFile("id;name\n1;Ana\n");
2525

26-
await store.SaveAsync("job-1", src, "vendas.csv", "text/csv", Ct);
26+
await store.SaveAsync("job-1", src, "sales.csv", "text/csv", Ct);
2727

2828
var artifacts = await store.ListAsync("job-1", Ct);
2929
var artifact = artifacts.ShouldHaveSingleItem();
30-
artifact.FileName.ShouldBe("vendas.csv");
30+
artifact.FileName.ShouldBe("sales.csv");
3131
artifact.MimeType.ShouldBe("text/csv");
3232
artifact.SizeBytes.ShouldBeGreaterThan(0);
3333
File.Exists(artifact.Path).ShouldBeTrue();

tests/NeoReports.Core.UnitTests/PipelineTests.cs

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ namespace NeoReports.Core.UnitTests;
1111

1212
public class PipelineTests
1313
{
14-
private static IReadOnlyList<Venda> Page(params long[] ids) =>
15-
ids.Select(id => new Venda(id, $"C{id}", id * 10m, DateTime.UnixEpoch)).ToArray();
14+
private static IReadOnlyList<Sale> Page(params long[] ids) =>
15+
ids.Select(id => new Sale(id, $"C{id}", id * 10m, DateTime.UnixEpoch)).ToArray();
1616

1717
private static ReportExecutionContext Exec() =>
1818
new(Guid.NewGuid().ToString("N"), "r", null, NullLogger.Instance, CancellationToken.None);
@@ -23,11 +23,11 @@ private static Task<ReportRunResult> Run(CompiledReport report) =>
2323
[Fact]
2424
public async Task Reads_all_pages_writes_rows_and_uploads_file()
2525
{
26-
var source = new FakeBatchSource<Venda>(new[] { Page(1, 2), Page(3) });
26+
var source = new FakeBatchSource<Sale>(new[] { Page(1, 2), Page(3) });
2727
var writer = new FakeWriterFactory();
2828
var destination = new CapturingDestinationFactory();
2929

30-
var report = new ReportBuilder<Venda>("r")
30+
var report = new ReportBuilder<Sale>("r")
3131
.From(source)
3232
.Column(v => v.Id, "Id")
3333
.To(new OutputSpec(writer))
@@ -51,11 +51,11 @@ public async Task Reads_all_pages_writes_rows_and_uploads_file()
5151
[Fact]
5252
public async Task Multi_output_reads_source_only_once_per_page()
5353
{
54-
var source = new FakeBatchSource<Venda>(new[] { Page(1, 2), Page(3, 4) });
54+
var source = new FakeBatchSource<Sale>(new[] { Page(1, 2), Page(3, 4) });
5555
var csvLike = new FakeWriterFactory("csv", "csv");
5656
var xlsxLike = new FakeWriterFactory("xlsx", "xlsx");
5757

58-
var report = new ReportBuilder<Venda>("r")
58+
var report = new ReportBuilder<Sale>("r")
5959
.From(source)
6060
.Column(v => v.Id, "Id")
6161
.To(new OutputSpec(csvLike))
@@ -74,10 +74,10 @@ public async Task Multi_output_reads_source_only_once_per_page()
7474
[Fact]
7575
public async Task Filter_excludes_non_matching_rows()
7676
{
77-
var source = new FakeBatchSource<Venda>(new[] { Page(1, 2, 3, 4) });
77+
var source = new FakeBatchSource<Sale>(new[] { Page(1, 2, 3, 4) });
7878
var writer = new FakeWriterFactory();
7979

80-
var report = new ReportBuilder<Venda>("r")
80+
var report = new ReportBuilder<Sale>("r")
8181
.From(source)
8282
.Filter(v => v.Id % 2 == 0)
8383
.Column(v => v.Id, "Id")
@@ -94,11 +94,11 @@ public async Task Filter_excludes_non_matching_rows()
9494
[Fact]
9595
public async Task Streaming_source_is_sliced_into_batches()
9696
{
97-
var items = Enumerable.Range(1, 5).Select(i => new Venda(i, $"C{i}", i, DateTime.UnixEpoch)).ToArray();
98-
var source = new FakeStreamingSource<Venda>(items);
97+
var items = Enumerable.Range(1, 5).Select(i => new Sale(i, $"C{i}", i, DateTime.UnixEpoch)).ToArray();
98+
var source = new FakeStreamingSource<Sale>(items);
9999
var writer = new FakeWriterFactory();
100100

101-
var report = new ReportBuilder<Venda>("r")
101+
var report = new ReportBuilder<Sale>("r")
102102
.From(source)
103103
.WithPageSize(2)
104104
.Column(v => v.Id, "Id")
@@ -122,10 +122,10 @@ public async Task Mapping_from_source_type_projects_to_row_type()
122122
});
123123
var writer = new FakeWriterFactory();
124124

125-
var report = new ReportBuilder<Venda>("r")
126-
.From(source, t => new Venda(t.Id, t.Name, t.Id, DateTime.UnixEpoch))
125+
var report = new ReportBuilder<Sale>("r")
126+
.From(source, t => new Sale(t.Id, t.Name, t.Id, DateTime.UnixEpoch))
127127
.Column(v => v.Id, "Id")
128-
.Column(v => v.Cliente, "Cliente")
128+
.Column(v => v.Customer, "Customer")
129129
.To(new OutputSpec(writer))
130130
.Build();
131131

0 commit comments

Comments
 (0)