@@ -21,6 +21,12 @@ type TestSoldier struct {
21
21
Troop TestTroop `goedb:"fk=TestTroop(ID)"`
22
22
}
23
23
24
+ type TestCustomSoldier struct {
25
+ ID int
26
+ Name string
27
+ TroopName string
28
+ }
29
+
24
30
const persistenceUnitItComplexTest = "testSQLite3"
25
31
26
32
func init () {
@@ -134,29 +140,47 @@ func Test_Goedb_First_By_Name(t *testing.T) {
134
140
assert .Equal (t , 1 , soldier1 .Troop .ID )
135
141
}
136
142
143
+ func Test_Goedb_Native_First_By_Name (t * testing.T ) {
144
+
145
+ em , err := goedb .GetEntityManager (persistenceUnitItComplexTest )
146
+ assert .Nil (t , err )
147
+ assert .NotNil (t , em )
148
+
149
+ var customSoldier TestCustomSoldier
150
+
151
+ err = em .NativeFirst (& customSoldier , "SELECT ts.ID, ts.Name, tt.Name FROM TestSoldier ts, TestTroop tt WHERE ts.Name = :name AND ts.Troop = tt.ID" , map [string ]interface {}{"name" : "Ryan" })
152
+ assert .Nil (t , err )
153
+ assert .Equal (t , 1 , customSoldier .ID )
154
+ assert .Equal (t , "TheBestTeam" , customSoldier .TroopName )
155
+ }
156
+
137
157
func weaponCall () (* TestSoldier , * TestSoldier , * TestSoldier , * TestSoldier ) {
138
158
soldier2 := & TestSoldier {
139
159
Name : "Bryan" ,
140
160
Troop : TestTroop {
141
- ID : 1 ,
161
+ ID : 1 ,
162
+ Name : "ExampleTroop" ,
142
163
},
143
164
}
144
165
soldier3 := & TestSoldier {
145
166
Name : "Steve" ,
146
167
Troop : TestTroop {
147
- ID : 1 ,
168
+ ID : 1 ,
169
+ Name : "ExampleTroop" ,
148
170
},
149
171
}
150
172
soldier4 := & TestSoldier {
151
173
Name : "Eduard" ,
152
174
Troop : TestTroop {
153
- ID : 1 ,
175
+ ID : 1 ,
176
+ Name : "ExampleTroop" ,
154
177
},
155
178
}
156
179
soldier5 := & TestSoldier {
157
180
Name : "Chuck" ,
158
181
Troop : TestTroop {
159
- ID : 1 ,
182
+ ID : 1 ,
183
+ Name : "ExampleTroop" ,
160
184
},
161
185
}
162
186
return soldier2 , soldier3 , soldier4 , soldier5
@@ -192,9 +216,9 @@ func Test_Native_Find_All_Soldiers(t *testing.T) {
192
216
em .Insert (s3 )
193
217
em .Insert (s4 )
194
218
195
- foundSoldiers := make ([]TestSoldier , 0 )
219
+ foundSoldiers := make ([]TestCustomSoldier , 0 )
196
220
197
- err = em .NativeFind (& foundSoldiers , "select * from TestSoldier" , nil )
221
+ err = em .NativeFind (& foundSoldiers , "SELECT ts.ID, ts.Name, tt.Name FROM TestSoldier ts, TestTroop tt WHERE ts.Troop = tt.ID " , nil )
198
222
assert .Nil (t , err )
199
223
assert .NotNil (t , foundSoldiers )
200
224
assert .Equal (t , 5 , len (foundSoldiers ))
@@ -206,22 +230,24 @@ func Test_Find_One_Soldier(t *testing.T) {
206
230
assert .NotNil (t , em )
207
231
208
232
foundSoldiers := make ([]TestSoldier , 0 )
209
- err = em .Find (& foundSoldiers , "TestSoldier.ID = :soldier_id " , map [string ]interface {}{"soldier_id " : 3 })
233
+ err = em .Find (& foundSoldiers , "TestSoldier.Name = :soldier_name " , map [string ]interface {}{"soldier_name " : "Steve" })
210
234
assert .Nil (t , err )
211
235
assert .NotNil (t , foundSoldiers )
212
236
assert .Equal (t , 1 , len (foundSoldiers ))
237
+ assert .Equal (t , "Steve" , foundSoldiers [0 ].Name )
213
238
}
214
239
215
240
func Test_Native_Find_One_Soldier (t * testing.T ) {
216
241
em , err := goedb .GetEntityManager (persistenceUnitItComplexTest )
217
242
assert .Nil (t , err )
218
243
assert .NotNil (t , em )
219
244
220
- foundSoldiers := make ([]TestSoldier , 0 )
221
- err = em .NativeFind (& foundSoldiers , "select * from TestSoldier where TestSoldier.ID = :soldier_id " , map [string ]interface {}{"soldier_id " : 3 })
245
+ foundSoldiers := make ([]TestCustomSoldier , 0 )
246
+ err = em .NativeFind (& foundSoldiers , "SELECT ts.ID, ts.Name, tt.Name FROM TestSoldier ts, TestTroop tt WHERE ts.Name = :soldier_name AND ts.Troop = tt.ID " , map [string ]interface {}{"soldier_name " : "Steve" })
222
247
assert .Nil (t , err )
223
248
assert .NotNil (t , foundSoldiers )
224
249
assert .Equal (t , 1 , len (foundSoldiers ))
250
+ assert .Equal (t , "Steve" , foundSoldiers [0 ].Name )
225
251
}
226
252
227
253
func Test_Update_Soldier_By_PrimaryKey (t * testing.T ) {
0 commit comments