@@ -495,6 +495,8 @@ var (
495495 tmC = slack.Message {Msg : slack.Msg {Timestamp : "125.000" , ThreadTimestamp : testThreadID , Text : "C" }}
496496 tmD = slack.Message {Msg : slack.Msg {Timestamp : "126.000" , ThreadTimestamp : testThreadID , Text : "D" }}
497497 tmC_ = slack.Message {Msg : slack.Msg {Timestamp : "125.000" , ThreadTimestamp : testThreadID , Text : "C'" }}
498+
499+ mNoThread = slack.Message {Msg : slack.Msg {Timestamp : "130.000" , Text : "No thread" }}
498500 // special additional message to test the reference counter
499501 tmXExtra = slack.Message {Msg : slack.Msg {Timestamp : "127.000" , ThreadTimestamp : "127.000" , Text : "X" }}
500502 // thread lead that has replies deleted
@@ -510,6 +512,8 @@ var (
510512 // these go into chunk 1
511513 dbtmXExtra = must (NewDBMessage (1 , 0 , testChannelID , & tmXExtra ))
512514 dbtmYExtra = must (NewDBMessage (1 , 0 , testChannelID , & tmYExtra ))
515+
516+ dbmNoThread = must (NewDBMessage (1 , 0 , testChannelID , & mNoThread ))
513517)
514518
515519// mkThreadSetupFn creates a utility function that sets up the thread messages.
@@ -827,6 +831,56 @@ func Test_messageRepository_CountUnfinished(t *testing.T) {
827831 }
828832 },
829833 },
834+ {
835+ name : "channel with no threads #533, unfinished" ,
836+ fields : fields {
837+ genericRepository : genericRepository [DBMessage ]{DBMessage {}},
838+ },
839+ args : args {
840+ ctx : t .Context (),
841+ conn : testConn (t ),
842+ sessionID : 1 ,
843+ channelID : "C123" ,
844+ },
845+ prepFn : func (t * testing.T , conn PrepareExtContext ) {
846+ prepChunkWithFinal (
847+ testChunk {typeID : chunk .CMessages , channelID : "C123" , final : false },
848+ )(t , conn )
849+ mr := NewMessageRepository ()
850+ if err := mr .Insert (t .Context (), conn ,
851+ dbmNoThread ,
852+ ); err != nil {
853+ t .Fatalf ("insert: %v" , err )
854+ }
855+ },
856+ want : 0 ,
857+ wantErr : true , // no rows in the result set. Set will be empty until there's a "final" message chunk for the channel.
858+ },
859+ {
860+ name : "channel with no threads #533, finished" ,
861+ fields : fields {
862+ genericRepository : genericRepository [DBMessage ]{DBMessage {}},
863+ },
864+ args : args {
865+ ctx : t .Context (),
866+ conn : testConn (t ),
867+ sessionID : 1 ,
868+ channelID : "C123" ,
869+ },
870+ prepFn : func (t * testing.T , conn PrepareExtContext ) {
871+ prepChunkWithFinal (
872+ testChunk {typeID : chunk .CMessages , channelID : "C123" , final : true },
873+ )(t , conn )
874+ mr := NewMessageRepository ()
875+ if err := mr .Insert (t .Context (), conn ,
876+ dbmNoThread ,
877+ ); err != nil {
878+ t .Fatalf ("insert: %v" , err )
879+ }
880+ },
881+ want : 0 ,
882+ wantErr : false ,
883+ },
830884 }
831885 for _ , tt := range tests {
832886 t .Run (tt .name , func (t * testing.T ) {
0 commit comments