(t *testing.T)
| 145 | } |
| 146 | |
| 147 | func TestUserModel(t *testing.T) { |
| 148 | var ( |
| 149 | testTimeValue = time.Now() |
| 150 | testTable = "`user`" |
| 151 | testUpdateName = "gozero1" |
| 152 | testUser = "gozero" |
| 153 | testPassword = "test" |
| 154 | testMobile = "test_mobile" |
| 155 | testGender = "男" |
| 156 | testNickname = "test_nickname" |
| 157 | testRowsAffected int64 = 1 |
| 158 | testInsertId int64 = 1 |
| 159 | ) |
| 160 | |
| 161 | var data User |
| 162 | data.ID = testInsertId |
| 163 | data.User = testUser |
| 164 | data.Name = "gozero" |
| 165 | data.Password = testPassword |
| 166 | data.Mobile = testMobile |
| 167 | data.Gender = testGender |
| 168 | data.Nickname = testNickname |
| 169 | data.CreateTime = testTimeValue |
| 170 | data.UpdateTime = testTimeValue |
| 171 | |
| 172 | err := mockUser(func(mock sqlmock.Sqlmock) { |
| 173 | mock.ExpectExec(fmt.Sprintf("insert into %s", testTable)). |
| 174 | WithArgs(data.User, data.Name, data.Password, data.Mobile, data.Gender, data.Nickname). |
| 175 | WillReturnResult(sqlmock.NewResult(testInsertId, testRowsAffected)) |
| 176 | }, func(m UserModel) { |
| 177 | r, err := m.Insert(data) |
| 178 | assert.Nil(t, err) |
| 179 | |
| 180 | lastInsertId, err := r.LastInsertId() |
| 181 | assert.Nil(t, err) |
| 182 | assert.Equal(t, testInsertId, lastInsertId) |
| 183 | |
| 184 | rowsAffected, err := r.RowsAffected() |
| 185 | assert.Nil(t, err) |
| 186 | assert.Equal(t, testRowsAffected, rowsAffected) |
| 187 | }) |
| 188 | assert.Nil(t, err) |
| 189 | |
| 190 | err = mockUser(func(mock sqlmock.Sqlmock) { |
| 191 | mock.ExpectQuery(fmt.Sprintf("select (.+) from %s", testTable)). |
| 192 | WithArgs(testInsertId). |
| 193 | WillReturnRows(sqlmock.NewRows([]string{"id", "user", "name", "password", "mobile", "gender", "nickname", "create_time", "update_time"}).AddRow(testInsertId, data.User, data.Name, data.Password, data.Mobile, data.Gender, data.Nickname, testTimeValue, testTimeValue)) |
| 194 | }, func(m UserModel) { |
| 195 | result, err := m.FindOne(testInsertId) |
| 196 | assert.Nil(t, err) |
| 197 | assert.Equal(t, *result, data) |
| 198 | }) |
| 199 | assert.Nil(t, err) |
| 200 | |
| 201 | err = mockUser(func(mock sqlmock.Sqlmock) { |
| 202 | mock.ExpectExec(fmt.Sprintf("update %s", testTable)).WithArgs(data.User, testUpdateName, data.Password, data.Mobile, data.Gender, data.Nickname, testInsertId).WillReturnResult(sqlmock.NewResult(testInsertId, testRowsAffected)) |
| 203 | }, func(m UserModel) { |
| 204 | data.Name = testUpdateName |
nothing calls this directly
no test coverage detected
searching dependent graphs…