package tests import ( "testing" "fmt" "strings" "reflect" "github.com/stretchr/testify/require" "MY/webapp/data" admin "MY/webapp/admin/table" sq "github.com/Masterminds/squirrel" ) func TestAdminIndexPage(t *testing.T) { assert := require.New(t) models := data.Models() table := "user" model := models[table] fields := reflect.VisibleFields(model) for _, field := range fields { assert.NotEqual(field.Name, "") assert.NotEqual(field.Tag, "") } for i := 0; i < 87; i++ { val := reflect.New(model).Elem() email := fmt.Sprintf("test%d@test.com", i) val.FieldByName("Email").SetString(email) val.FieldByName("Username").SetString(fmt.Sprintf("zed%d", i)) val.FieldByName("Password").SetString("garbage") sql_query, args, err := sq.Delete(table).Where(sq.Eq{"email": email}).ToSql() assert.NoError(err) _, err = data.DB.Exec(sql_query, args...) assert.NoError(err) id, count, err := admin.Insert(table, val) assert.Equal(count, int64(1)) assert.NotEqual(id, int64(0)) assert.NoError(err, email) } all_rows, err := admin.SelectTable(table, 20, 2) assert.NoError(err) assert.Equal(20, len(all_rows)) first_row := all_rows[0].(*data.User) result, err := admin.Get(table, int64(first_row.Id)) if err != nil { fmt.Println("ERROR", err) } id := result.FieldByName("Id") result, err = admin.Get(table, id.Int()) assert.NoError(err) username := result.FieldByName("Username").String() // only remove test users if strings.HasPrefix(username, "test") { result.FieldByName("Username").SetString("joeblow") result.FieldByName("Email").SetString("what@what.com") err = admin.Update(table, result) assert.NoError(err, ) err = admin.Delete(table, id.Int()) assert.NoError(err) } }