gitlab.com/beacon-software/gadget@v0.0.0-20181217202115-54565ea1ed5e/database/qb/update_test.go (about) 1 package qb 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/assert" 7 8 "gitlab.com/beacon-software/gadget/generator" 9 ) 10 11 func TestUpdateQuery(t *testing.T) { 12 assert := assert.New(t) 13 expectedName := generator.String(20) 14 query := Update(Person).Set(Person.Name, expectedName) 15 sql, values, err := query.SQL(0) 16 assert.NoError(err) 17 if assert.Equal(1, len(values)) { 18 assert.Equal(expectedName, values[0]) 19 } 20 assert.Equal("UPDATE `person` SET `person`.`name` = ?", sql) 21 } 22 23 func TestUpdateQueryParameterized(t *testing.T) { 24 assert := assert.New(t) 25 query := Update(Person).SetParam(Person.Name).Where(Person.ID.Equal(":" + Person.ID.GetName())) 26 sql, err := query.ParameterizedSQL(0) 27 assert.NoError(err) 28 assert.Equal("UPDATE `person` SET `person`.`name` = :name WHERE `person`.`id` = :id", sql) 29 } 30 31 func TestUpdateQueryMulitpleFields(t *testing.T) { 32 assert := assert.New(t) 33 expectedName := generator.String(20) 34 expectedAddressID := generator.TestID() 35 query := Update(Person).Set(Person.Name, expectedName).Set(Person.AddressID, expectedAddressID) 36 sql, values, err := query.SQL(0) 37 assert.NoError(err) 38 if assert.Equal(2, len(values)) { 39 assert.Equal(expectedName, values[0]) 40 assert.Equal(expectedAddressID, values[1]) 41 } 42 assert.Equal("UPDATE `person` SET `person`.`name` = ?, `person`.`address_id` = ?", sql) 43 } 44 45 func TestUpdateQueryWhere(t *testing.T) { 46 assert := assert.New(t) 47 expectedName := generator.String(20) 48 expectedAddressID := generator.TestID() 49 query := Update(Person).Set(Person.Name, expectedName).Where(Person.AddressID.Equal(expectedAddressID)) 50 sql, values, err := query.SQL(0) 51 assert.NoError(err) 52 if assert.Equal(2, len(values)) { 53 assert.Equal(expectedName, values[0]) 54 assert.Equal(expectedAddressID, values[1]) 55 } 56 assert.Equal("UPDATE `person` SET `person`.`name` = ? WHERE `person`.`address_id` = ?", sql) 57 } 58 59 func TestUpdateQueryOrderBy(t *testing.T) { 60 assert := assert.New(t) 61 expectedName := generator.String(20) 62 expectedAddressID := generator.TestID() 63 query := Update(Person).Set(Person.Name, expectedName) 64 query.Where(Person.AddressID.Equal(expectedAddressID)) 65 query.OrderBy(Person.Name, Descending) 66 sql, values, err := query.SQL(0) 67 assert.NoError(err) 68 if assert.Equal(2, len(values)) { 69 assert.Equal(expectedName, values[0]) 70 assert.Equal(expectedAddressID, values[1]) 71 } 72 assert.Equal("UPDATE `person` SET `person`.`name` = ? WHERE `person`.`address_id` = ? ORDER BY `name` DESC", sql) 73 } 74 75 func TestUpdateQueryWhereOrderByLimit(t *testing.T) { 76 assert := assert.New(t) 77 expectedName := generator.String(20) 78 expectedAddressID := generator.TestID() 79 query := Update(Person).Set(Person.Name, expectedName) 80 query.Where(Person.AddressID.Equal(expectedAddressID)) 81 query.OrderBy(Person.Name, Descending) 82 sql, values, err := query.SQL(10) 83 assert.NoError(err) 84 if assert.Equal(2, len(values)) { 85 assert.Equal(expectedName, values[0]) 86 assert.Equal(expectedAddressID, values[1]) 87 } 88 assert.Equal("UPDATE `person` SET `person`.`name` = ? WHERE `person`.`address_id` = ? ORDER BY `name` DESC LIMIT 10", sql) 89 }