profileShare

rasmusjy / splitapp-backend-clean-onion

Read-only snapshot

No repository description.

main default branch 429 files Expires Sep 13, 2026, 9:06 AM
LangStrTests.cs 1,484 bytes
1 using Base.Domain;
2 using FluentAssertions;
3
4 namespace App.Tests.Domain;
5
6 public class LangStrTests
7 {
8 [Fact]
9 public void Constructor_WithDefaultCulture_StoresValueUnderDefaultKey()
10 {
11 var s = new LangStr("Hello", "en");
12
13 s.Translate("en").Should().Be("Hello");
14 }
15
16 [Fact]
17 public void Translate_WithUnknownCulture_FallsBackToDefault()
18 {
19 var s = new LangStr();
20 s["en"] = "Hello";
21
22 s.Translate("fr").Should().Be("Hello");
23 }
24
25 [Fact]
26 public void Translate_WithRegionalCulture_FallsBackToNeutralCulture()
27 {
28 // "et-EE" not stored, but "et" is — should match neutral
29 var s = new LangStr();
30 s["et"] = "Tere";
31
32 s.Translate("et-EE").Should().Be("Tere");
33 }
34
35 // Parameterized: same translate logic across multiple inputs (lecture: [Theory])
36 [Theory]
37 [InlineData("en", "Hello")]
38 [InlineData("et", "Tere")]
39 [InlineData("de", "Hallo")]
40 public void Translate_ReturnsCorrectValueForKnownCulture(string culture, string expected)
41 {
42 var s = new LangStr();
43 s["en"] = "Hello";
44 s["et"] = "Tere";
45 s["de"] = "Hallo";
46
47 s.Translate(culture).Should().Be(expected);
48 }
49
50 [Fact]
51 public void ImplicitOperator_FromString_CreatesLangStrWithCurrentCulture()
52 {
53 // string → LangStr conversion (used in EF migrations and admin UX)
54 LangStr s = "Test";
55
56 s.Translate().Should().Be("Test");
57 }
58 }
59