package data_test import ( "context" "testing" "github.com/google/uuid" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "nixcn-cms/data" "nixcn-cms/testutil" ) func TestKycCreate(t *testing.T) { testutil.Setup(t) ctx := context.Background() userId := uuid.New() k := data.NewKyc( data.WithKycUserId(userId), data.WithKycType("cnrid"), data.WithKycInfo("encrypted-info"), ) kycId, err := k.Create(ctx) require.NoError(t, err) assert.NotEqual(t, uuid.Nil, kycId) } func TestKycGetByKycId(t *testing.T) { testutil.Setup(t) ctx := context.Background() userId := uuid.New() k := data.NewKyc(data.WithKycUserId(userId), data.WithKycType("cnrid"), data.WithKycInfo("info")) kycId, err := k.Create(ctx) require.NoError(t, err) got, err := new(data.Kyc).GetByKycId(ctx, &kycId) require.NoError(t, err) require.NotNil(t, got) assert.Equal(t, userId, got.UserId) } func TestKycGetByKycIdNotFound(t *testing.T) { testutil.Setup(t) ctx := context.Background() missing := uuid.New() got, err := new(data.Kyc).GetByKycId(ctx, &missing) require.NoError(t, err) assert.Nil(t, got) } func TestKycListByUserId(t *testing.T) { testutil.Setup(t) ctx := context.Background() userId := uuid.New() for _, typ := range []string{"cnrid", "passport"} { k := data.NewKyc(data.WithKycUserId(userId), data.WithKycType(typ), data.WithKycInfo("info")) _, err := k.Create(ctx) require.NoError(t, err) } list, err := new(data.Kyc).ListByUserId(ctx, &userId) require.NoError(t, err) assert.Len(t, list, 2) } func TestKycPatchByKycId(t *testing.T) { testutil.Setup(t) ctx := context.Background() userId := uuid.New() k := data.NewKyc(data.WithKycUserId(userId), data.WithKycType("cnrid"), data.WithKycInfo("original")) kycId, err := k.Create(ctx) require.NoError(t, err) require.NoError(t, new(data.Kyc).PatchByKycId(ctx, &kycId, data.WithKycInfo("updated"))) got, err := new(data.Kyc).GetByKycId(ctx, &kycId) require.NoError(t, err) assert.Equal(t, "updated", got.KycInfo) } func TestKycDeleteByKycID(t *testing.T) { testutil.Setup(t) ctx := context.Background() userId := uuid.New() k := data.NewKyc(data.WithKycUserId(userId), data.WithKycType("cnrid"), data.WithKycInfo("info")) kycId, err := k.Create(ctx) require.NoError(t, err) require.NoError(t, new(data.Kyc).DeleteByKycID(ctx, &kycId)) got, err := new(data.Kyc).GetByKycId(ctx, &kycId) require.NoError(t, err) assert.Nil(t, got) } func TestKycDeleteAllByUserId(t *testing.T) { testutil.Setup(t) ctx := context.Background() userId := uuid.New() for i := 0; i < 3; i++ { k := data.NewKyc(data.WithKycUserId(userId), data.WithKycType("cnrid"), data.WithKycInfo("info")) _, err := k.Create(ctx) require.NoError(t, err) } require.NoError(t, new(data.Kyc).DeleteAllByUserId(ctx, &userId)) list, err := new(data.Kyc).ListByUserId(ctx, &userId) require.NoError(t, err) assert.Empty(t, list) }