package userstore import ( "testing" "github.com/stretchr/testify/assert" ) func TestAddMail(t *testing.T) { store, err := NewDummyStore() assert.Nil(t, err, "[setup] should be abel to create dummystore") tts := []struct { name string mail string primearyMail bool ExptErr error ExptErrString string }{ { name: "test-add-first-mail", mail: "mail1@kekskurse.de", primearyMail: false, }, { name: "test-add-mail-again-should-return-error", mail: "mail1@kekskurse.de", primearyMail: false, ExptErr: ErrCantExecuteQuery, ExptErrString: "cant execute query: constraint failed: UNIQUE constraint failed: mail.mail (2067)", }, } for _, tt := range tts { t.Run(tt.name, func(t *testing.T) { err := store.MailAdd(tt.mail, tt.primearyMail) if tt.ExptErr == nil { assert.Nil(t, err) } else { assert.ErrorIs(t, err, tt.ExptErr) assert.Equal(t, tt.ExptErrString, err.Error()) return } var isValidated bool var validateCode string isValidated = true err = store.db.QueryRow("SELECT validationCode, isValidated FROM mail WHERE mail = ?", tt.mail).Scan(&validateCode, &isValidated) assert.Nil(t, err, "should get mail infos from db without error") assert.False(t, isValidated, "mail should not be validated") assert.NotEmpty(t, validateCode, "validaten code should not be empty") }) } }