Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
80 changes: 67 additions & 13 deletions parcel_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,57 +31,103 @@ func getTestParcel() Parcel {
// TestAddGetDelete проверяет добавление, получение и удаление посылки
func TestAddGetDelete(t *testing.T) {
// prepare
db, err := // настройте подключение к БД
db, err := sql.Open("sqlite", "tracker.db")
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PR все еще не туда
image

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

обрати внимание что в ветке нет изменений по реализации хранилища - только тесты

должн быть весь код который ты написал по заданию

require.NoError(t, err)
defer db.Close()

// настройте подключение к БД
store := NewParcelStore(db)
parcel := getTestParcel()

// add
// добавьте новую посылку в БД, убедитесь в отсутствии ошибки и наличии идентификатора

id, err := store.Add(parcel)
require.NoError(t, err)
require.NotZero(t, id)
parcel.Number = id
// get
// получите только что добавленную посылку, убедитесь в отсутствии ошибки
// проверьте, что значения всех полей в полученном объекте совпадают со значениями полей в переменной parcel

storedParcel, err := store.Get(id)
require.NoError(t, err)
require.Equal(t, parcel, storedParcel)
// delete
// удалите добавленную посылку, убедитесь в отсутствии ошибки
// проверьте, что посылку больше нельзя получить из БД
err = store.Delete(id)
require.NoError(t, err)
_, err = store.Get(id)
require.Error(t, err)
}

// TestSetAddress проверяет обновление адреса
func TestSetAddress(t *testing.T) {
// prepare
db, err := // настройте подключение к БД
db, err := sql.Open("sqlite", "tracker.db")
require.NoError(t, err)
defer db.Close()

store := NewParcelStore(db)
parcel := getTestParcel()

// настройте подключение к БД

// add
// добавьте новую посылку в БД, убедитесь в отсутствии ошибки и наличии идентификатора

id, err := store.Add(parcel)
require.NoError(t, err)
require.NotZero(t, id)
parcel.Number = id
// set address
// обновите адрес, убедитесь в отсутствии ошибки
newAddress := "new test address"

err = store.SetAddress(id, newAddress)
require.NoError(t, err)
// check
// получите добавленную посылку и убедитесь, что адрес обновился
storedParcel, err := store.Get(id)
require.NoError(t, err)
require.Equal(t, newAddress, storedParcel.Address)
}

// TestSetStatus проверяет обновление статуса
func TestSetStatus(t *testing.T) {
// prepare
db, err := // настройте подключение к БД
db, err := sql.Open("sqlite", "tracker.db")
require.NoError(t, err)
defer db.Close()

store := NewParcelStore(db)
parcel := getTestParcel()
// настройте подключение к БД

// add
// добавьте новую посылку в БД, убедитесь в отсутствии ошибки и наличии идентификатора

id, err := store.Add(parcel)
require.NoError(t, err)
require.NotZero(t, id)
parcel.Number = id
// set status
// обновите статус, убедитесь в отсутствии ошибки

newStatus := ParcelStatusSent
err = store.SetStatus(id, newStatus)
require.NoError(t, err)
// check
// получите добавленную посылку и убедитесь, что статус обновился
storedParcel, err := store.Get(id)
require.NoError(t, err)
require.Equal(t, newStatus, storedParcel.Status)
}

// TestGetByClient проверяет получение посылок по идентификатору клиента
func TestGetByClient(t *testing.T) {
// prepare
db, err := // настройте подключение к БД
db, err := sql.Open("sqlite", "tracker.db")
require.NoError(t, err)
defer db.Close()

store := NewParcelStore(db)
// настройте подключение к БД

parcels := []Parcel{
getTestParcel(),
Expand All @@ -98,7 +144,10 @@ func TestGetByClient(t *testing.T) {

// add
for i := 0; i < len(parcels); i++ {
id, err := // добавьте новую посылку в БД, убедитесь в отсутствии ошибки и наличии идентификатора
id, err := store.Add(parcels[i])
require.NoError(t, err)
require.NotZero(t, id)
// добавьте новую посылку в БД, убедитесь в отсутствии ошибки и наличии идентификатора

// обновляем идентификатор добавленной у посылки
parcels[i].Number = id
Expand All @@ -108,14 +157,19 @@ func TestGetByClient(t *testing.T) {
}

// get by client
storedParcels, err := // получите список посылок по идентификатору клиента, сохранённого в переменной client
storedParcels, err := store.GetByClient(client)
// получите список посылок по идентификатору клиента, сохранённого в переменной client
// убедитесь в отсутствии ошибки
require.NoError(t, err)
// убедитесь, что количество полученных посылок совпадает с количеством добавленных

require.Equal(t, len(parcels), len(storedParcels))
// check
for _, parcel := range storedParcels {
// в parcelMap лежат добавленные посылки, ключ - идентификатор посылки, значение - сама посылка
// убедитесь, что все посылки из storedParcels есть в parcelMap
expectedParcel, exists := parcelMap[parcel.Number]
require.True(t, exists, "parcel not found")
// убедитесь, что значения полей полученных посылок заполнены верно
require.Equal(t, expectedParcel, parcel)
}
}