Skip to content

Commit 1c1923f

Browse files
committed
After-merge changes
1 parent 771aa90 commit 1c1923f

8 files changed

Lines changed: 245 additions & 121 deletions

File tree

Extensions/Xtensive.Orm.Localization.Tests/Model/DictionaryModel.cs

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,9 @@
44

55
using System.Globalization;
66
using Xtensive.Orm.Model;
7+
using Xtensive.Orm.Upgrade;
78

8-
namespace Xtensive.Orm.Localization.Tests.Model
9+
namespace Xtensive.Orm.Localization.Tests.CustomTypeModel
910
{
1011
[HierarchyRoot(InheritanceSchema = InheritanceSchema.ConcreteTable)]
1112
public abstract class AbstractDictionary : Entity
@@ -46,13 +47,31 @@ protected AbstractDictionaryLocalization(Session session, CultureInfo culture, T
4647

4748
public class Country : AbstractLocalizableDictionary<Country, CountryLocalization>, ILocalizable<CountryLocalization>
4849
{
49-
public Country(Session session) : base(session) { }
50+
public Country(Session session)
51+
: base(session)
52+
{
53+
}
5054
}
5155

5256
[HierarchyRoot]
5357
public class CountryLocalization : AbstractDictionaryLocalization<Country, CountryLocalization>
5458
{
55-
public CountryLocalization(Session session, CultureInfo culture, Country target) : base(session, culture, target) { }
59+
public CountryLocalization(Session session, CultureInfo culture, Country target)
60+
: base(session, culture, target)
61+
{
62+
}
5663
}
5764

65+
namespace Upgrade
66+
{
67+
public class CustomUpgradeHandler : UpgradeHandler
68+
{
69+
public override bool CanUpgradeFrom(string oldVersion)
70+
{
71+
return true;
72+
}
73+
74+
public override void OnBeforeExecuteActions(UpgradeActionSequence actions) => base.OnBeforeExecuteActions(actions);
75+
}
76+
}
5877
}

Extensions/Xtensive.Orm.Localization.Tests/ProjectionToCustomTypesTests.cs

Lines changed: 125 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,95 @@
55
using System.Linq;
66
using System.Threading;
77
using NUnit.Framework;
8-
using Xtensive.Orm.Localization.Tests.Model;
8+
using Xtensive.Orm.Localization.Tests.CustomTypeModel;
9+
using Xtensive.Orm.Configuration;
10+
using Xtensive.Orm.Tests;
11+
using English = Xtensive.Orm.Localization.Tests.WellKnownCultures.English;
12+
using Spanish = Xtensive.Orm.Localization.Tests.WellKnownCultures.Spanish;
913

1014
namespace Xtensive.Orm.Localization.Tests
1115
{
1216
[TestFixture]
13-
public class ProjectionToCustomTypesTests : LocalizationBaseTest
17+
public class ProjectionToCustomTypesTests : AutoBuildTest
1418
{
19+
protected override DomainConfiguration BuildConfiguration()
20+
{
21+
var configuration = base.BuildConfiguration();
22+
configuration.Types.Register(typeof(ILocalizable<>).Assembly);
23+
configuration.Types.Register(typeof(Country).Assembly, typeof(Country).Namespace);
24+
configuration.UpgradeMode = DomainUpgradeMode.Recreate;
25+
return configuration;
26+
}
27+
1528
protected override void PopulateData()
1629
{
17-
using (var session = Domain.OpenSession())
30+
using (var session = Domain.OpenSession())
1831
using (var ts = session.OpenTransaction()) {
32+
// populating database
33+
var m1 = new Country(session) {
34+
Identifier = "HUN",
35+
Name = "Magyarország"
36+
};
37+
var m2 = new Country(session) {
38+
Identifier = "RUS",
39+
Name = "Oroszország"
40+
};
41+
using (new LocalizationScope(English.Culture)) {
42+
m2.Name = "Russia";
43+
}
44+
using (new LocalizationScope(Spanish.Culture)) {
45+
m2.Name = "Rusia";
46+
}
47+
ts.Complete();
48+
}
49+
}
50+
51+
[Test]
52+
public void EntityHierarchyWithAbstractPropertyTest()
53+
{
54+
var currentCulture = Thread.CurrentThread.CurrentCulture;
55+
try {
56+
Thread.CurrentThread.CurrentCulture = English.Culture;
57+
using (var session = Domain.OpenSession())
58+
using (var ts = session.OpenTransaction()) {
59+
var q = session.Query.All<Country>().OrderBy(e => e.Identifier).Select(e => new { e.Name });
60+
var l = q.ToList();
61+
// assertions
62+
Assert.That(l.Count, Is.EqualTo(2));
63+
64+
var propertyInfos = l.First().GetType().GetProperties();
65+
Assert.That(propertyInfos.Length, Is.EqualTo(1));
66+
Assert.That(propertyInfos.First().Name, Is.EqualTo(nameof(Country.Name)));
67+
Assert.That(l.First().Name, Is.EqualTo("Magyarország"));
68+
Assert.That(l.Last().Name, Is.EqualTo("Russia"));
69+
}
70+
}
71+
finally {
72+
Thread.CurrentThread.CurrentCulture = currentCulture;
73+
}
74+
}
75+
}
76+
77+
public sealed class CustomTypesUpgradeTest
78+
{
79+
[Test]
80+
[TestCase(DomainUpgradeMode.Skip)]
81+
[TestCase(DomainUpgradeMode.Validate)]
82+
[TestCase(DomainUpgradeMode.Recreate)]
83+
[TestCase(DomainUpgradeMode.Perform)]
84+
[TestCase(DomainUpgradeMode.PerformSafely)]
85+
[TestCase(DomainUpgradeMode.LegacySkip)]
86+
[TestCase(DomainUpgradeMode.LegacyValidate)]
87+
public void MainTest(DomainUpgradeMode upgradeMode)
88+
{
89+
TestDomainBuild(DomainUpgradeMode.Recreate, upgradeMode);
90+
}
91+
92+
private void TestDomainBuild(DomainUpgradeMode initialDomainMode, DomainUpgradeMode upgradedDomainMode)
93+
{
94+
using (var initialDomain = Domain.Build(BuildConfiguration(initialDomainMode))) {
95+
using (var session = initialDomain.OpenSession())
96+
using (var ts = session.OpenTransaction()) {
1997
// populating database
2098
var m1 = new Country(session) {
2199
Identifier = "HUN",
@@ -25,32 +103,57 @@ protected override void PopulateData()
25103
Identifier = "RUS",
26104
Name = "Oroszország"
27105
};
28-
using (new LocalizationScope(EnglishCulture)) {
106+
using (new LocalizationScope(English.Culture)) {
29107
m2.Name = "Russia";
30108
}
31-
using (new LocalizationScope(SpanishCulture)) {
32-
m2.Name = "Rusia";
109+
using (new LocalizationScope(Spanish.Culture)) {
110+
m2.Name = "Rusia";
33111
}
34-
ts.Complete();
112+
ts.Complete();
113+
}
114+
}
115+
116+
using (var upgradedDomain = Domain.Build(BuildConfiguration(upgradedDomainMode))) {
117+
118+
var currentCulture = Thread.CurrentThread.CurrentCulture;
119+
try {
120+
Thread.CurrentThread.CurrentCulture = English.Culture;
121+
using (var session = upgradedDomain.OpenSession())
122+
using (var ts = session.OpenTransaction()) {
123+
124+
if (upgradedDomainMode == DomainUpgradeMode.Recreate) {
125+
var q = session.Query.All<Country>().OrderBy(e => e.Identifier).Select(e => new { e.Name });
126+
var l = q.ToList();
127+
// assertions
128+
Assert.That(l.Count, Is.EqualTo(0));
129+
}
130+
else {
131+
var q = session.Query.All<Country>().OrderBy(e => e.Identifier).Select(e => new { e.Name });
132+
var l = q.ToList();
133+
// assertions
134+
Assert.That(l.Count, Is.EqualTo(2));
135+
136+
var propertyInfos = l.First().GetType().GetProperties();
137+
Assert.That(propertyInfos.Length, Is.EqualTo(1));
138+
Assert.That(propertyInfos.First().Name, Is.EqualTo(nameof(Country.Name)));
139+
Assert.That(l.First().Name, Is.EqualTo("Magyarország"));
140+
Assert.That(l.Last().Name, Is.EqualTo("Russia"));
141+
}
142+
}
143+
}
144+
finally {
145+
Thread.CurrentThread.CurrentCulture = currentCulture;
146+
}
35147
}
36148
}
37149

38-
[Test]
39-
public void EntityHierarchyWithAbstractPropertyTest()
150+
private DomainConfiguration BuildConfiguration(DomainUpgradeMode upgradeMode)
40151
{
41-
Thread.CurrentThread.CurrentCulture = EnglishCulture;
42-
using (var session = Domain.OpenSession())
43-
using (var ts = session.OpenTransaction()) {
44-
var q = session.Query.All<Country>().OrderBy(e => e.Identifier).Select(e => new { e.Name });
45-
var l = q.ToList();
46-
// assertions
47-
Assert.AreEqual(2, l.Count);
48-
var propertyInfos = l.First().GetType().GetProperties();
49-
Assert.AreEqual(propertyInfos.Length, 1);
50-
Assert.AreEqual(propertyInfos.First().Name, nameof(Country.Name));
51-
Assert.AreEqual(l.First().Name, "Magyarország");
52-
Assert.AreEqual(l.Last().Name, "Russia");
53-
}
152+
var configuration = DomainConfigurationFactory.Create();
153+
configuration.Types.Register(typeof(ILocalizable<>).Assembly);
154+
configuration.Types.Register(typeof(Country).Assembly, typeof(Country).Namespace);
155+
configuration.UpgradeMode = upgradeMode;
156+
return configuration;
54157
}
55158
}
56159
}

Orm/Xtensive.Orm.Tests.Sql/DriverFactoryTest.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -273,7 +273,7 @@ public async Task ConnectionAccessorAsyncTest()
273273
Assert.That(accessorInstance.OpeningFailedAsyncCounter, Is.EqualTo(0));
274274

275275
var configuration = new SqlDriverConfiguration(accessorsArray);
276-
_ = await factory.GetDriverAsync(new ConnectionInfo(Url), configuration, CancellationToken.None);
276+
_ = await factory.GetDriverAsync(new ConnectionInfo(url), configuration, CancellationToken.None);
277277
Assert.That(accessorInstance.OpeningCounter, Is.EqualTo(1));
278278
Assert.That(accessorInstance.OpeningAsyncCounter, Is.EqualTo(1));
279279
Assert.That(accessorInstance.OpeningInitCounter, Is.EqualTo(0));
@@ -284,7 +284,7 @@ public async Task ConnectionAccessorAsyncTest()
284284
Assert.That(accessorInstance.OpeningFailedAsyncCounter, Is.EqualTo(0));
285285

286286
configuration = new SqlDriverConfiguration(accessorsArray) { EnsureConnectionIsAlive = true };
287-
_ = await factory.GetDriverAsync(new ConnectionInfo(Url), configuration, CancellationToken.None);
287+
_ = await factory.GetDriverAsync(new ConnectionInfo(url), configuration, CancellationToken.None);
288288
Assert.That(accessorInstance.OpeningCounter, Is.EqualTo(2));
289289
Assert.That(accessorInstance.OpeningAsyncCounter, Is.EqualTo(2));
290290

@@ -303,7 +303,7 @@ public async Task ConnectionAccessorAsyncTest()
303303
Assert.That(accessorInstance.OpeningFailedAsyncCounter, Is.EqualTo(0));
304304

305305
configuration = new SqlDriverConfiguration(accessorsArray) { ConnectionInitializationSql = InitQueryPerProvider(provider) };
306-
_ = await factory.GetDriverAsync(new ConnectionInfo(Url), configuration, CancellationToken.None);
306+
_ = await factory.GetDriverAsync(new ConnectionInfo(url), configuration, CancellationToken.None);
307307
Assert.That(accessorInstance.OpeningCounter, Is.EqualTo(3));
308308
Assert.That(accessorInstance.OpeningAsyncCounter, Is.EqualTo(3));
309309
if (provider == WellKnown.Provider.SqlServer) {
@@ -322,7 +322,7 @@ public async Task ConnectionAccessorAsyncTest()
322322

323323
configuration = new SqlDriverConfiguration(accessorsArray) { ConnectionInitializationSql = "dummy string to trigger error" };
324324
try {
325-
_ = await factory.GetDriverAsync(new ConnectionInfo(Url), configuration, CancellationToken.None);
325+
_ = await factory.GetDriverAsync(new ConnectionInfo(url), configuration, CancellationToken.None);
326326
}
327327
catch {
328328
//skip it

0 commit comments

Comments
 (0)