|  |  |  | package tests
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import (
 | 
					
						
							|  |  |  |   "testing"
 | 
					
						
							|  |  |  |   "fmt"
 | 
					
						
							|  |  |  |   "reflect"
 | 
					
						
							|  |  |  |   "github.com/stretchr/testify/require"
 | 
					
						
							|  |  |  |   "MY/webapp/data"
 | 
					
						
							|  |  |  |   "MY/webapp/admin"
 | 
					
						
							|  |  |  |   sq "github.com/Masterminds/squirrel"
 | 
					
						
							|  |  |  | )
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func TestAdminIndexPage(t *testing.T) {
 | 
					
						
							|  |  |  |   assert := require.New(t)
 | 
					
						
							|  |  |  |   models := data.Models()
 | 
					
						
							|  |  |  |   table := "user"
 | 
					
						
							|  |  |  |   model := models[table]
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   fmt.Printf("\n------\ntable=%s; model=%s\n", table, model.Name())
 | 
					
						
							|  |  |  |   fields := reflect.VisibleFields(model)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   for _, field := range fields {
 | 
					
						
							|  |  |  |     fmt.Println("\t", field.Name, field.Type, 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, 1)
 | 
					
						
							|  |  |  |     assert.NotEqual(id, 0)
 | 
					
						
							|  |  |  |     assert.NoError(err, email)
 | 
					
						
							|  |  |  |   }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   all_rows, err := admin.SelectTable(table, model, 20, 20 * 3)
 | 
					
						
							|  |  |  |   assert.NoError(err)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   for i, row := range all_rows { fmt.Println("row", i, row) }
 | 
					
						
							|  |  |  |   assert.Equal(20, len(all_rows))
 | 
					
						
							|  |  |  |   first_row := all_rows[0].(*data.User)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   result, err := admin.Get(table, model, int64(first_row.Id))
 | 
					
						
							|  |  |  |   if err != nil { fmt.Println("ERROR", err) }
 | 
					
						
							|  |  |  |   fmt.Println("TABLE: ", result)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   id := result.FieldByName("Id")
 | 
					
						
							|  |  |  |   result, err = admin.Get(table, model, id.Int())
 | 
					
						
							|  |  |  |   assert.NoError(err)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   fmt.Println("BEFORE: ", result)
 | 
					
						
							|  |  |  |   result.FieldByName("Username").SetString("joeblow")
 | 
					
						
							|  |  |  |   result.FieldByName("Email").SetString("what@what.com")
 | 
					
						
							|  |  |  |   fmt.Println("AFTER: ", result)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   err = admin.Update(table, result)
 | 
					
						
							|  |  |  |   assert.NoError(err, )
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   err = admin.Delete(table, id.Int())
 | 
					
						
							|  |  |  |   assert.NoError(err)
 | 
					
						
							|  |  |  | }
 |