Skip to content

Commit

Permalink
Change the return value type of GetTaskById from value to pointer
Browse files Browse the repository at this point in the history
  • Loading branch information
claudealdric committed Sep 16, 2024
1 parent d8c416d commit 0ec6612
Show file tree
Hide file tree
Showing 4 changed files with 14 additions and 16 deletions.
13 changes: 6 additions & 7 deletions data/file_system_store.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,23 +41,22 @@ func NewFileSystemStore(file *os.File) (*FileSystemStore, error) {
}, nil
}

func (f *FileSystemStore) GetTaskById(id int) (models.Task, error) {
var task models.Task
func (f *FileSystemStore) GetTaskById(id int) (*models.Task, error) {
tasks, err := f.getTasksFromFile()
if err != nil {
return task, err
return nil, err
}
task, ok := utils.SliceFind(tasks, func(t models.Task) bool {
return t.Id == id
})
if !ok {
return task, fmt.Errorf(
return nil, fmt.Errorf(
"task with ID %d: %w",
id,
ErrResourceNotFound,
)
}
return task, nil
return &task, nil
}

func (f *FileSystemStore) GetTasks() ([]models.Task, error) {
Expand Down Expand Up @@ -117,7 +116,7 @@ func (f *FileSystemStore) UpdateTask(task models.Task) (models.Task, error) {
taskToUpdate.Title = task.Title
for i, t := range tasks {
if t.Id == task.Id {
tasks[i] = taskToUpdate
tasks[i] = *taskToUpdate
break
}
}
Expand All @@ -126,7 +125,7 @@ func (f *FileSystemStore) UpdateTask(task models.Task) (models.Task, error) {
return models.Task{}, err
}

return taskToUpdate, nil
return *taskToUpdate, nil
}

func (f *FileSystemStore) GetUserByEmail(email string) (*models.User, error) {
Expand Down
4 changes: 2 additions & 2 deletions data/file_system_store_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ func TestFileSystemStoreTasks(t *testing.T) {
got, err := store.GetTaskById(wantedTask.Id)

assert.HasNoError(t, err)
assert.Equals(t, got, wantedTask)
assert.Equals(t, *got, wantedTask)
})

t.Run("GetTaskById returns an `ErrNotFound` error if task does not exist", func(t *testing.T) {
Expand Down Expand Up @@ -135,7 +135,7 @@ func TestFileSystemStoreTasks(t *testing.T) {

retrievedTask, err := store.GetTaskById(task.Id)
assert.HasNoError(t, err)
assert.Equals(t, retrievedTask, wantedTask)
assert.Equals(t, *retrievedTask, wantedTask)
})

t.Run("UpdateTaskById returns an error with an invalid ID", func(t *testing.T) {
Expand Down
2 changes: 1 addition & 1 deletion data/store.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ var ErrResourceNotFound = errors.New("resource not found")
type Store interface {
CreateTask(dto *models.CreateTaskDTO) (*models.Task, error)
DeleteTaskById(id int) error
GetTaskById(id int) (models.Task, error)
GetTaskById(id int) (*models.Task, error)
GetTasks() ([]models.Task, error)
UpdateTask(task models.Task) (models.Task, error)

Expand Down
11 changes: 5 additions & 6 deletions testutils/mock_store.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,21 +46,20 @@ func (m *mockStore) CreateTask(dto *models.CreateTaskDTO) (*models.Task, error)
return &task, nil
}

func (m *mockStore) GetTaskById(id int) (models.Task, error) {
func (m *mockStore) GetTaskById(id int) (*models.Task, error) {
m.GetTaskByIdCalls++
var task models.Task
if m.shouldForceError {
if id == -1 {
return task, data.ErrResourceNotFound
return nil, data.ErrResourceNotFound
} else {
return task, forcedError
return nil, forcedError
}
}
tasks, _ := m.GetTasks()
task, _ = utils.SliceFind(tasks, func(t models.Task) bool {
task, _ := utils.SliceFind(tasks, func(t models.Task) bool {
return t.Id == id
})
return task, nil
return &task, nil
}

func (m *mockStore) GetTasks() ([]models.Task, error) {
Expand Down

0 comments on commit 0ec6612

Please sign in to comment.