Skip to content
This repository was archived by the owner on Dec 24, 2022. It is now read-only.

Commit 275bf3a

Browse files
committed
Add test for DomainUser SaveReferences issue
1 parent d941828 commit 275bf3a

File tree

2 files changed

+114
-0
lines changed

2 files changed

+114
-0
lines changed
Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
using System.Collections.Generic;
2+
using NUnit.Framework;
3+
using ServiceStack.DataAnnotations;
4+
using ServiceStack.Text;
5+
6+
namespace ServiceStack.OrmLite.Tests.Issues
7+
{
8+
[Alias("ProUser")]
9+
public class DomainUser
10+
{
11+
public int UserType { get; set; }
12+
public string Id { get; set; }
13+
14+
[Reference]
15+
public Address HomeAddress { get; set; }
16+
17+
[Reference]
18+
public List<Order> Orders { get; set; }
19+
20+
[DataAnnotations.Ignore]
21+
public UserType UserTypeEnum
22+
{
23+
get { return (UserType)UserType; }
24+
set { UserType = (int)value; }
25+
}
26+
}
27+
28+
public class Address
29+
{
30+
[AutoIncrement]
31+
public int Id { get; set; }
32+
public string ProUserId { get; set; }
33+
public string StreetName { get; set; }
34+
}
35+
36+
public enum UserType
37+
{
38+
Normal = 1,
39+
Domain = 2
40+
}
41+
42+
public class Order
43+
{
44+
[AutoIncrement]
45+
public int Id { get; set; }
46+
47+
public string ProUserId { get; set; }
48+
49+
public string Details { get; set; }
50+
51+
}
52+
53+
[TestFixture]
54+
public class SaveDomainUserReferencesIssue
55+
: OrmLiteTestBase
56+
{
57+
[Test]
58+
public void Can_save_DomainUser_references()
59+
{
60+
using (var db = OpenDbConnection())
61+
{
62+
db.DropAndCreateTable<DomainUser>();
63+
db.DropAndCreateTable<Order>();
64+
db.DropAndCreateTable<Address>();
65+
66+
var user = new DomainUser
67+
{
68+
Id = "UserId",
69+
UserType = 1,
70+
HomeAddress = new Address
71+
{
72+
StreetName = "1 Street"
73+
},
74+
Orders = new List<Order>
75+
{
76+
new Order { Details = "Order1 Details" },
77+
new Order { Details = "Order2 Details" },
78+
}
79+
};
80+
81+
//Same as below in 1 line
82+
//db.Save(user, references: true);
83+
db.Save(user);
84+
db.SaveReferences(user, user.HomeAddress);
85+
db.SaveReferences(user, user.Orders);
86+
87+
user = db.LoadSingleById<DomainUser>("UserId");
88+
user.PrintDump();
89+
Assert.That(user.Orders.Count, Is.EqualTo(2));
90+
91+
user.UserTypeEnum = UserType.Domain;
92+
user.HomeAddress.StreetName = "Some new street";
93+
user.Orders[1].Details = "Nestle Chocolates";
94+
user.Orders.Add(new Order
95+
{
96+
ProUserId = user.Id,
97+
Details = "Reese",
98+
});
99+
100+
//Same as below in 1 line
101+
//db.Save(user, references: true);
102+
db.Save(user);
103+
db.SaveReferences(user, user.HomeAddress);
104+
db.SaveReferences(user, user.Orders);
105+
106+
user = db.LoadSingleById<DomainUser>("UserId");
107+
user.PrintDump();
108+
109+
Assert.That(user.Orders.Count, Is.EqualTo(3));
110+
}
111+
}
112+
}
113+
}

tests/ServiceStack.OrmLite.Tests/ServiceStack.OrmLite.Tests.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,7 @@
132132
<Compile Include="Issues\MismatchSchemaTests.cs" />
133133
<Compile Include="Issues\MultiFieldReferenceTests.cs" />
134134
<Compile Include="Issues\MultithreadingIssueTests.cs" />
135+
<Compile Include="Issues\SaveDomainUserReferencesIssue.cs" />
135136
<Compile Include="Issues\SchemaTests.cs" />
136137
<Compile Include="Issues\SelectDistinctTests.cs" />
137138
<Compile Include="Issues\SelectIntoTests.cs" />

0 commit comments

Comments
 (0)