@@ -126,7 +126,8 @@ func TestEventStore_Create(t *testing.T) {
126126 defer ctrl .Finish ()
127127
128128 strategy := mockSQL .NewPersistenceStrategy (ctrl )
129- strategy .EXPECT ().ColumnNames ().Return ([]string {}).AnyTimes ()
129+ strategy .EXPECT ().InsertColumnNames ().Return ([]string {}).AnyTimes ()
130+ strategy .EXPECT ().EventColumnNames ().Return ([]string {}).AnyTimes ()
130131 strategy .EXPECT ().GenerateTableName (goengine .StreamName ("orders" )).Return ("events_orders" , nil ).AnyTimes ()
131132 strategy .EXPECT ().CreateSchema ("events_orders" ).Return ([]string {}).AnyTimes ()
132133
@@ -184,7 +185,7 @@ func TestEventStore_AppendTo(t *testing.T) {
184185
185186 payloadConverter , messages := mockMessages (ctrl )
186187
187- dbMock .ExpectExec (`INSERT(.+)VALUES \(\$1,\$2,\$3,\$4,\$5\),\(\ $6,\$7,\$8,\ $9,\$10\ ),\(\$11 (.+)` ).
188+ dbMock .ExpectExec (`INSERT(.+)VALUES \(\$1,\$2,\$3,\$4,\$5\,\ $6,\$7,\$8\),\(\ $9,\$10,\$11,\$12,\$13,\$14,\$15,\$16\ ),\(\$17 (.+)` ).
188189 WillReturnResult (sqlmock .NewResult (111 , 3 ))
189190
190191 eventStore := createEventStore (t , db , payloadConverter )
@@ -230,7 +231,8 @@ func TestEventStore_AppendTo(t *testing.T) {
230231 persistenceStrategy := mockSQL .NewPersistenceStrategy (ctrl )
231232 persistenceStrategy .EXPECT ().PrepareData (messages ).Return (nil , expectedError ).AnyTimes ()
232233 persistenceStrategy .EXPECT ().GenerateTableName (goengine .StreamName ("orders" )).Return ("events_orders" , nil ).AnyTimes ()
233- persistenceStrategy .EXPECT ().ColumnNames ().Return ([]string {"event_id" , "event_name" }).AnyTimes ()
234+ persistenceStrategy .EXPECT ().InsertColumnNames ().Return ([]string {"event_id" , "event_name" }).AnyTimes ()
235+ persistenceStrategy .EXPECT ().EventColumnNames ().Return ([]string {"event_id" , "event_name" }).AnyTimes ()
234236
235237 store , err := postgres .NewEventStore (persistenceStrategy , db , & mockSQL.MessageFactory {}, nil )
236238 require .NoError (t , err )
@@ -262,7 +264,7 @@ func TestEventStore_Load(t *testing.T) {
262264 m = metadata .WithConstraint (m , "version" , metadata .LowerThan , 100 )
263265 return m
264266 },
265- `SELECT \* FROM event_stream WHERE no >= \$1 AND metadata ->> ' version' > \$2 AND metadata ->> ' version' < \$3 ORDER BY no` ,
267+ `SELECT "no", "payload", "metadata" FROM event_stream WHERE no >= \$1 AND version > \$2 AND version < \$3 ORDER BY no` ,
266268 },
267269 {
268270 "Without matcher" ,
@@ -271,7 +273,7 @@ func TestEventStore_Load(t *testing.T) {
271273 func () metadata.Matcher {
272274 return nil
273275 },
274- `SELECT \* FROM event_stream WHERE no >= \$1 ORDER BY no` ,
276+ `SELECT "no", "payload", "metadata" FROM event_stream WHERE no >= \$1 ORDER BY no` ,
275277 },
276278 {
277279 "With limit" ,
@@ -280,7 +282,7 @@ func TestEventStore_Load(t *testing.T) {
280282 func () metadata.Matcher {
281283 return nil
282284 },
283- `SELECT \* FROM event_stream WHERE no >= \$1 ORDER BY no LIMIT 50` ,
285+ `SELECT "no", "payload", "metadata" FROM event_stream WHERE no >= \$1 ORDER BY no LIMIT 50` ,
284286 },
285287 }
286288
@@ -289,6 +291,8 @@ func TestEventStore_Load(t *testing.T) {
289291 ctrl := gomock .NewController (t )
290292 defer ctrl .Finish ()
291293
294+ matcher := testCase .matcher ()
295+
292296 expectedStream := & mocks.EventStream {}
293297
294298 dbMock .ExpectQuery (testCase .expectedQuery ).WillReturnRows (sqlmock .NewRows (columns ))
@@ -297,7 +301,15 @@ func TestEventStore_Load(t *testing.T) {
297301 factory .EXPECT ().CreateEventStream (gomock .AssignableToTypeOf (& sql.Rows {})).Return (expectedStream , nil ).Times (1 )
298302
299303 strategy := mockSQL .NewPersistenceStrategy (ctrl )
300- strategy .EXPECT ().ColumnNames ().Return (columns ).AnyTimes ()
304+
305+ if matcher != nil {
306+ strategy .EXPECT ().PrepareSearch (matcher ).Return ([]byte (" AND version > $2 AND version < $3" ), []interface {}{1 , 100 }).Times (1 )
307+ } else {
308+ strategy .EXPECT ().PrepareSearch (matcher ).Return ([]byte {}, []interface {}{}).AnyTimes ()
309+ }
310+
311+ strategy .EXPECT ().InsertColumnNames ().Return ([]string {}).AnyTimes ()
312+ strategy .EXPECT ().EventColumnNames ().Return (columns ).AnyTimes ()
301313 strategy .EXPECT ().GenerateTableName (goengine .StreamName ("event_stream" )).Return ("event_stream" , nil ).AnyTimes ()
302314
303315 store , err := postgres .NewEventStore (strategy , db , factory , nil )
@@ -308,7 +320,7 @@ func TestEventStore_Load(t *testing.T) {
308320 "event_stream" ,
309321 testCase .fromNumber ,
310322 testCase .count ,
311- testCase . matcher () ,
323+ matcher ,
312324 )
313325
314326 assert .NoError (t , err )
@@ -318,7 +330,8 @@ func TestEventStore_Load(t *testing.T) {
318330 })
319331
320332 t .Run ("persistent strategy failures" , func (t * testing.T ) {
321- columns := []string {"no" , "payload" }
333+ insertColumns := []string {"no" , "payload" , "aggregate_id" }
334+ eventColumns := []string {"no" , "payload" }
322335
323336 testCases := []struct {
324337 title string
@@ -329,7 +342,8 @@ func TestEventStore_Load(t *testing.T) {
329342 "Empty table name returned" ,
330343 func (ctrl * gomock.Controller ) * mockSQL.PersistenceStrategy {
331344 strategy := mockSQL .NewPersistenceStrategy (ctrl )
332- strategy .EXPECT ().ColumnNames ().Return (columns ).AnyTimes ()
345+ strategy .EXPECT ().InsertColumnNames ().Return (insertColumns ).AnyTimes ()
346+ strategy .EXPECT ().EventColumnNames ().Return (eventColumns ).AnyTimes ()
333347 strategy .EXPECT ().GenerateTableName (goengine .StreamName ("event_stream" )).
334348 Return ("" , nil ).AnyTimes ()
335349 return strategy
@@ -340,7 +354,8 @@ func TestEventStore_Load(t *testing.T) {
340354 "Empty table name returned" ,
341355 func (ctrl * gomock.Controller ) * mockSQL.PersistenceStrategy {
342356 strategy := mockSQL .NewPersistenceStrategy (ctrl )
343- strategy .EXPECT ().ColumnNames ().Return (columns ).AnyTimes ()
357+ strategy .EXPECT ().InsertColumnNames ().Return (insertColumns ).AnyTimes ()
358+ strategy .EXPECT ().EventColumnNames ().Return (eventColumns ).AnyTimes ()
344359 strategy .EXPECT ().GenerateTableName (goengine .StreamName ("event_stream" )).
345360 Return ("" , errors .New ("failed gen" )).AnyTimes ()
346361 return strategy
@@ -419,7 +434,7 @@ func BenchmarkEventStore_AppendToWithExecer(b *testing.B) {
419434 dbExecer .EXPECT ().ExecContext (ctx , gomock .Any (), gomock .Any ()).Return (nil , nil ).AnyTimes ()
420435
421436 persistenceStrategy := mockSQL .NewPersistenceStrategy (ctrl )
422- persistenceStrategy .EXPECT ().ColumnNames ().Return ([]string {"event_id" , "event_name" , "payload" , "metadata" , "created_at" }).AnyTimes ()
437+ persistenceStrategy .EXPECT ().InsertColumnNames ().Return ([]string {"event_id" , "event_name" , "payload" , "metadata" , "created_at" }).AnyTimes ()
423438 persistenceStrategy .EXPECT ().GenerateTableName (goengine .StreamName ("hello" )).Return ("hello" , nil ).AnyTimes ()
424439 persistenceStrategy .EXPECT ().PrepareData (gomock .Any ()).Return ([]interface {}{
425440 "event_id" , "event_name" , "payload" , "metadata" , "created_at" ,
@@ -461,7 +476,7 @@ func BenchmarkEventStore_LoadWithConnection(b *testing.B) {
461476 dbQueryer .EXPECT ().QueryContext (ctx , gomock .Any (), gomock .Any ()).Return (nil , nil ).AnyTimes ()
462477
463478 persistenceStrategy := mockSQL .NewPersistenceStrategy (ctrl )
464- persistenceStrategy .EXPECT ().ColumnNames ().Return ([]string {"event_id" , "event_name" , "payload" , "metadata" , "created_at" }).AnyTimes ()
479+ persistenceStrategy .EXPECT ().InsertColumnNames ().Return ([]string {"event_id" , "event_name" , "payload" , "metadata" , "created_at" }).AnyTimes ()
465480 persistenceStrategy .EXPECT ().GenerateTableName (goengine .StreamName ("hello" )).Return ("hello" , nil ).AnyTimes ()
466481 require .NoError (b , err )
467482
0 commit comments