go.charczuk.com@v0.0.0-20240327042549-bc490516bd1a/projects/kana-server/pkg/model/manager_test.go (about)

     1  /*
     2  
     3  Copyright (c) 2023 - Present. Will Charczuk. All rights reserved.
     4  Use of this source code is governed by a MIT license that can be found in the LICENSE file at the root of the repository.
     5  
     6  */
     7  
     8  package model_test
     9  
    10  import (
    11  	"context"
    12  	"testing"
    13  
    14  	"go.charczuk.com/projects/kana-server/pkg/model"
    15  	"go.charczuk.com/projects/kana-server/pkg/types"
    16  	"go.charczuk.com/sdk/apputil"
    17  	"go.charczuk.com/sdk/assert"
    18  )
    19  
    20  func Test_Model_AllQuizzes(t *testing.T) {
    21  	mgr, done := apputil.NewTest(t)
    22  	defer done()
    23  
    24  	u0 := apputil.CreateTestUser(t, mgr)
    25  	u1 := apputil.CreateTestUser(t, mgr)
    26  
    27  	q0 := CreateTestQuiz(t, mgr, u0)
    28  	q1 := CreateTestQuiz(t, mgr, u0)
    29  	q2 := CreateTestQuiz(t, mgr, u0)
    30  	q3 := CreateTestQuiz(t, mgr, u1)
    31  
    32  	all, err := model.Manager{BaseManager: mgr.BaseManager}.AllQuzzes(context.Background(), u0.ID)
    33  	assert.ItsNil(t, err)
    34  	assert.ItsLen(t, all, 3)
    35  	assert.ItsAny(t, all, func(v *types.Quiz) bool { return v.ID.Equal(q0.ID) })
    36  	assert.ItsAny(t, all, func(v *types.Quiz) bool { return v.ID.Equal(q1.ID) })
    37  	assert.ItsAny(t, all, func(v *types.Quiz) bool { return v.ID.Equal(q2.ID) })
    38  	assert.ItsNone(t, all, func(v *types.Quiz) bool { return v.ID.Equal(q3.ID) })
    39  	assert.ItsAll(t, all, func(v *types.Quiz) bool { return len(v.Results) > 0 })
    40  	assert.ItsAll(t, all, func(v *types.Quiz) bool {
    41  		for _, qr := range v.Results {
    42  			if !qr.QuizID.Equal(v.ID) {
    43  				return false
    44  			}
    45  		}
    46  		return true
    47  	})
    48  }