Skip to content

Commit c20f163

Browse files
authored
generalize schema tests for all locales. (#519)
1 parent bd43a1e commit c20f163

File tree

51 files changed

+2183
-7
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

51 files changed

+2183
-7
lines changed

Diff for: Source/Bogus.Tests/SchemaTests/EnLocaleSchemaTests.cs renamed to Source/Bogus.Tests/SchemaTests/LocaleSchemaTests.cs

+26-7
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
#if NET6_0_OR_GREATER
22
using Argon;
33
using System;
4+
using System.Collections.Generic;
45
using System.IO;
56
using System.Linq;
67
using System.Runtime.CompilerServices;
78
using System.Threading.Tasks;
89
using VerifyTests;
910
using VerifyXunit;
1011
using Xunit;
12+
using Z.ExtensionMethods;
1113
using static VerifyXunit.Verifier;
1214

1315
namespace Bogus.Tests.SchemaTests;
@@ -24,20 +26,37 @@ public static void Init()
2426

2527

2628
[UsesVerify]
27-
public class EnLocaleSchemaTests
29+
public class LocaleSchemaTests
2830
{
29-
[Fact]
30-
public Task ensure_wellknown_en_locale_schema()
31+
const string DataFolder = "../../../../Bogus/data/";
32+
33+
[Theory]
34+
[MemberData(nameof(GetLocaleCodes))]
35+
public Task ensure_wellknown_locale_schema(string localeCode)
3136
{
32-
var localeJson = File.ReadAllText("../../../../Bogus/data/en.locale.json");
37+
var localeFile = Path.Combine(DataFolder, $"{localeCode}.locale.json");
38+
39+
var localeJsonRaw = File.ReadAllText(localeFile);
3340

34-
var enLocale = JToken.Parse(localeJson);
41+
var locale = JToken.Parse(localeJsonRaw);
3542

3643
var settings = new VerifySettings();
37-
44+
3845
settings.AddExtraSettings(jss => jss.ContractResolver = new InterceptedContractResolver(jss.ContractResolver));
3946

40-
return Verify(enLocale, settings);
47+
return Verify(locale, settings)
48+
.UseDirectory("../../Bogus/data/")
49+
.UseFileName($"{localeCode}.locale.schema");
50+
}
51+
52+
public static IEnumerable<object[]> GetLocaleCodes()
53+
{
54+
var localeCodes = Directory.GetFiles(DataFolder, "*.locale.json")
55+
.Select(file => Path.GetFileNameWithoutExtension(file).GetBefore("."));
56+
foreach(var localeCode in localeCodes )
57+
{
58+
yield return new[] { localeCode };
59+
}
4160
}
4261
}
4362

Diff for: Source/Bogus/data/af_ZA.locale.schema.verified.txt

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
{
2+
address: {
3+
default_country: [Array String; 1],
4+
postcode: [Array String; 2]
5+
},
6+
cell_phone: {
7+
formats: [Array String; 6]
8+
},
9+
company: {
10+
suffix: [Array String; 3]
11+
},
12+
internet: {
13+
domain_suffix: [Array String; 5]
14+
},
15+
phone_number: {
16+
formats: [Array String; 9]
17+
},
18+
title: Afrikaans
19+
}

Diff for: Source/Bogus/data/ar.locale.schema.verified.txt

+35
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
{
2+
address: {
3+
building_number: [Array String; 4],
4+
city: [Array String; 1],
5+
city_name: [Array String; 604],
6+
city_prefix: [Array String; 1],
7+
city_suffix: [Array String; 1],
8+
default_country: [Array String; 1],
9+
direction: [Array String; 8],
10+
postcode: [Array String; 1],
11+
secondary_address: [Array String; 6],
12+
state: [Array String; 22],
13+
street_address: [Array String; 2],
14+
street_name: [Array String; 1],
15+
street_prefix: [Array String; 6],
16+
street_suffix: [Array String; 26]
17+
},
18+
lorem: {
19+
supplemental: [Array String; 121],
20+
words: [Array String; 117]
21+
},
22+
name: {
23+
female_first_name: [Array String; 17],
24+
first_name: [Array String; 34],
25+
gender: [Array String; 2],
26+
last_name: [Array String; 25],
27+
male_first_name: [Array String; 17],
28+
name: [Array String; 10],
29+
prefix: [Array String; 2],
30+
title: {
31+
job: [Array String; 7]
32+
}
33+
},
34+
title: Arabic
35+
}

Diff for: Source/Bogus/data/az.locale.schema.verified.txt

+59
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
{
2+
address: {
3+
building_number: [Array String; 1],
4+
city: [Array String; 1],
5+
city_name: [Array String; 78],
6+
country: [Array String; 239],
7+
default_country: [Array String; 1],
8+
postcode: [Array String; 1],
9+
secondary_address: [Array String; 1],
10+
street_address: [Array String; 1],
11+
street_name: [Array String; 2],
12+
street_suffix: [Array String; 6],
13+
street_title: [Array String; 235]
14+
},
15+
commerce: {
16+
color: [Array String; 18],
17+
department: [Array String; 18],
18+
product_name: {
19+
adjective: [Array String; 10],
20+
material: [Array String; 7],
21+
product: [Array String; 8]
22+
}
23+
},
24+
company: {
25+
name: [Array String; 8],
26+
prefix: [Array String; 3],
27+
suffix: [Array String; 2]
28+
},
29+
date: {
30+
month: {
31+
abbr: [Array String; 12],
32+
abbr_context: [Array String; 12],
33+
wide: [Array String; 12],
34+
wide_context: [Array String; 12]
35+
},
36+
weekday: {
37+
abbr: [Array String; 7],
38+
abbr_context: [Array String; 7],
39+
wide: [Array String; 7],
40+
wide_context: [Array String; 7]
41+
}
42+
},
43+
internet: {
44+
domain_suffix: [Array String; 6],
45+
free_email: [Array String; 5]
46+
},
47+
name: {
48+
female_first_name: [Array String; 73],
49+
female_last_name: [Array String; 10],
50+
male_first_name: [Array String; 35],
51+
male_last_name: [Array String; 10],
52+
name: [Array String; 6]
53+
},
54+
phone_number: {
55+
formats: [Array String; 1]
56+
},
57+
separator: və ,
58+
title: Azerbaijani
59+
}

Diff for: Source/Bogus/data/cz.locale.schema.verified.txt

+63
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
{
2+
address: {
3+
building_number: [Array String; 3],
4+
city: [Array String; 1],
5+
city_name: [Array String; 602],
6+
country: [Array String; 195],
7+
default_country: [Array String; 1],
8+
postcode: [Array String; 3],
9+
secondary_address: [Array String; 2],
10+
street: [Array String; 8311],
11+
street_address: [Array String; 1],
12+
street_name: [Array String; 1],
13+
time_zone: [Array String; 143]
14+
},
15+
company: {
16+
adjective: [Array String; 100],
17+
bs_noun: [Array String; 109],
18+
bs_verb: [Array String; 60],
19+
descriptor: [Array String; 101],
20+
name: [Array String; 3],
21+
noun: [Array String; 104],
22+
suffix: [Array String; 3]
23+
},
24+
date: {
25+
month: {
26+
abbr: [Array String; 12],
27+
abbr_context: [Array String; 12],
28+
wide: [Array String; 12],
29+
wide_context: [Array String; 12]
30+
},
31+
weekday: {
32+
abbr: [Array String; 7],
33+
abbr_context: [Array String; 7],
34+
wide: [Array String; 7],
35+
wide_context: [Array String; 7]
36+
}
37+
},
38+
internet: {
39+
domain_suffix: [Array String; 5],
40+
free_email: [Array String; 5]
41+
},
42+
lorem: {
43+
words: [Array String; 249]
44+
},
45+
name: {
46+
female_first_name: [Array String; 786],
47+
female_last_name: [Array String; 999],
48+
male_first_name: [Array String; 796],
49+
male_last_name: [Array String; 999],
50+
name: [Array String; 10],
51+
prefix: [Array String; 4],
52+
suffix: [Array String; 1],
53+
title: {
54+
descriptor: [Array String; 22],
55+
job: [Array String; 25],
56+
level: [Array String; 37]
57+
}
58+
},
59+
phone_number: {
60+
formats: [Array String; 6]
61+
},
62+
title: Czech
63+
}

Diff for: Source/Bogus/data/de.locale.schema.verified.txt

+59
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
{
2+
address: {
3+
building_number: [Array String; 6],
4+
city: [Array String; 4],
5+
city_prefix: [Array String; 7],
6+
city_suffix: [Array String; 5],
7+
country: [Array String; 237],
8+
default_country: [Array String; 1],
9+
postcode: [Array String; 2],
10+
secondary_address: [Array String; 3],
11+
state: [Array String; 16],
12+
state_abbr: [Array String; 16],
13+
street_address: [Array String; 1],
14+
street_name: [Array String; 1],
15+
street_root: [Array String; 1031]
16+
},
17+
cell_phone: {
18+
formats: [Array String; 2]
19+
},
20+
company: {
21+
legal_form: [Array String; 7],
22+
name: [Array String; 3],
23+
suffix: [Array String; 7]
24+
},
25+
date: {
26+
month: {
27+
abbr: [Array String; 12],
28+
abbr_context: [Array String; 12],
29+
wide: [Array String; 12],
30+
wide_context: [Array String; 12]
31+
},
32+
weekday: {
33+
abbr: [Array String; 7],
34+
abbr_context: [Array String; 7],
35+
wide: [Array String; 7],
36+
wide_context: [Array String; 7]
37+
}
38+
},
39+
internet: {
40+
domain_suffix: [Array String; 7],
41+
free_email: [Array String; 3]
42+
},
43+
lorem: {
44+
words: [Array String; 249]
45+
},
46+
name: {
47+
female_first_name: [Array String; 583],
48+
first_name: [Array String; 1155],
49+
last_name: [Array String; 1688],
50+
male_first_name: [Array String; 572],
51+
name: [Array String; 6],
52+
nobility_title_prefix: [Array String; 4],
53+
prefix: [Array String; 4]
54+
},
55+
phone_number: {
56+
formats: [Array String; 4]
57+
},
58+
title: German
59+
}

Diff for: Source/Bogus/data/de_AT.locale.schema.verified.txt

+39
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
{
2+
address: {
3+
building_number: [Array String; 6],
4+
city: [Array String; 1],
5+
city_name: [Array String; 119],
6+
country: [Array String; 237],
7+
default_country: [Array String; 1],
8+
postcode: [Array String; 1],
9+
secondary_address: [Array String; 3],
10+
state: [Array String; 9],
11+
state_abbr: [Array String; 9],
12+
street_address: [Array String; 1],
13+
street_name: [Array String; 1],
14+
street_root: [Array String; 198]
15+
},
16+
cell_phone: {
17+
formats: [Array String; 4]
18+
},
19+
company: {
20+
legal_form: [Array String; 7],
21+
name: [Array String; 3],
22+
suffix: [Array String; 7]
23+
},
24+
internet: {
25+
domain_suffix: [Array String; 8],
26+
free_email: [Array String; 3]
27+
},
28+
name: {
29+
first_name: [Array String; 1155],
30+
last_name: [Array String; 1688],
31+
name: [Array String; 6],
32+
nobility_title_prefix: [Array String; 4],
33+
prefix: [Array String; 2]
34+
},
35+
phone_number: {
36+
formats: [Array String; 8]
37+
},
38+
title: German (Austria)
39+
}

Diff for: Source/Bogus/data/de_CH.locale.schema.verified.txt

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
{
2+
address: {
3+
country_code: [Array String; 10],
4+
default_country: [Array String; 1],
5+
postcode: [Array String; 9]
6+
},
7+
company: {
8+
name: [Array String; 3],
9+
suffix: [Array String; 8]
10+
},
11+
internet: {
12+
domain_suffix: [Array String; 9]
13+
},
14+
name: {
15+
first_name: [Array String; 336],
16+
last_name: [Array String; 209],
17+
name: [Array String; 6],
18+
prefix: [Array String; 3]
19+
},
20+
phone_number: {
21+
formats: [Array String; 9]
22+
},
23+
title: German (Switzerland)
24+
}

0 commit comments

Comments
 (0)