Skip to content

Commit

Permalink
Revert "Time entries are not deleted anymore. #32"
Browse files Browse the repository at this point in the history
This reverts commit 05a7ab1.
  • Loading branch information
ahilwers committed Sep 9, 2023
1 parent a101ad8 commit 8625812
Show file tree
Hide file tree
Showing 4 changed files with 6 additions and 138 deletions.
11 changes: 5 additions & 6 deletions server/src/pkg/database/gorm_timeentry_repository.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,33 +41,32 @@ func (repo *gormTimeEntryRepository) UpdateTimeEntry(timeEntry *model.TimeEntry)
}

func (repo *gormTimeEntryRepository) DeleteTimeEntry(timeEntry *model.TimeEntry) error {
if err := repo.db.Model(&timeEntry).Update("deleted", true).Error; err != nil {
if err := repo.db.Delete(timeEntry).Error; err != nil {
return err
}
return nil
}

func (repo *gormTimeEntryRepository) GetAllTimeEntries() ([]model.TimeEntry, error) {
var timeEntries []model.TimeEntry
if err := repo.db.Order("start_time desc").Order("end_time desc").Find(&timeEntries, "deleted=?", false).Error; err != nil {
if err := repo.db.Order("start_time desc").Order("end_time desc").Find(&timeEntries).Error; err != nil {
return nil, err
}
return timeEntries, nil
}

func (repo *gormTimeEntryRepository) GetAllTimeEntriesOfUser(userId uuid.UUID) ([]model.TimeEntry, error) {
var timeEntries []model.TimeEntry
if err := repo.db.Order("start_time desc").Order("end_time desc").Find(&timeEntries, "deleted=? AND user_id=?",
false, userId).Error; err != nil {
if err := repo.db.Order("start_time desc").Order("end_time desc").Find(&timeEntries, "user_id=?", userId).Error; err != nil {
return nil, err
}
return timeEntries, nil
}

func (repo *gormTimeEntryRepository) GetAllTimeEntriesOfUserAndProject(userId uuid.UUID, projectId uuid.UUID) ([]model.TimeEntry, error) {
var timeEntries []model.TimeEntry
if err := repo.db.Order("start_time desc").Order("end_time desc").Find(&timeEntries, " deleted=? AND user_id=? AND project_id=?",
false, userId, projectId).Error; err != nil {
if err := repo.db.Order("start_time desc").Order("end_time desc").Find(&timeEntries, "user_id=? AND project_id=?",
userId, projectId).Error; err != nil {
return nil, err
}
return timeEntries, nil
Expand Down
1 change: 0 additions & 1 deletion server/src/pkg/domain/model/timeentry.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ type TimeEntry struct {
StartTime time.Time `gorm:"type:timestamp;"` // db: timestamp without time zone
EndTime time.Time `gorm:"type:timestamp;"` // db: timestamp without time zone
Description string
Deleted bool
}

func (timeEntry *TimeEntry) BeforeCreate(db *gorm.DB) error {
Expand Down
2 changes: 1 addition & 1 deletion server/src/pkg/usecase/timeentry_usecase.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ func NewTimeEntryUsecase(repo repository.TimeEntryRepository, projectUsecase Pro

func (tu *timeEntryUsecase) GetTimeEntryById(id uuid.UUID) (*model.TimeEntry, error) {
entry, err := tu.repo.GetTimeEntryById(id)
if err != nil || entry.Deleted {
if err != nil {
return nil, NewEntityNotFoundError(fmt.Sprintf("timeentry with if %v does not exist", id))
}
return entry, nil
Expand Down
130 changes: 0 additions & 130 deletions server/src/pkg/usecase/timeentry_usecase_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -98,30 +98,6 @@ func Test_timeEntryUsecase_GetTimeEntryByIdFailsIfItDoesNotExist(t *testing.T) {
assert.True(t, errors.As(err, &entityNotFoundError))
}

func Test_timeEntryUsecase_GetTimeEntryByIdFailsIfItIsDeleted(t *testing.T) {
usecaseTest := NewUsecaseTest()
teardownTest := usecaseTest.SetupTest(t)
defer teardownTest(t)

userId := GetTestUserId(t)
project := addProject(t, usecaseTest.ProjectUsecase, "project", userId)

timeEntry := model.TimeEntry{
Description: "timeentry",
StartTime: time.Now(),
UserId: userId,
ProjectId: project.ID,
Deleted: true,
}
err := usecaseTest.TimeEntryUsecase.AddTimeEntry(&timeEntry)
assert.Nil(t, err)

_, err = usecaseTest.TimeEntryUsecase.GetTimeEntryById(timeEntry.ID)
assert.NotNil(t, err)
var entityNotFoundError *EntityNotFoundError
assert.True(t, errors.As(err, &entityNotFoundError))
}

func Test_timeEntryUsecase_GetAllTimeEntriesOfUser(t *testing.T) {
usecaseTest := NewUsecaseTest()
teardownTest := usecaseTest.SetupTest(t)
Expand All @@ -148,40 +124,6 @@ func Test_timeEntryUsecase_GetAllTimeEntriesOfUser(t *testing.T) {
}
}

func Test_timeEntryUsecase_GetAllTimeEntriesOfUserShouldNotReturnDeletedEntries(t *testing.T) {
usecaseTest := NewUsecaseTest()
teardownTest := usecaseTest.SetupTest(t)
defer teardownTest(t)

userId := GetTestUserId(t)
otherUserId := GetTestUserId(t)

project := addProject(t, usecaseTest.ProjectUsecase, "project", userId)

_ = addTimeEntries(t, usecaseTest.TimeEntryUsecase, 3, userId, project)
deletedTimeEntry := model.TimeEntry{
Description: "deletedtimeentry",
StartTime: time.Now(),
UserId: userId,
ProjectId: project.ID,
Deleted: true,
}
usecaseTest.TimeEntryUsecase.AddTimeEntry(&deletedTimeEntry)
_ = addTimeEntriesWithStartIndex(t, usecaseTest.TimeEntryUsecase, 4, 3, otherUserId, project)

entriesOfUser, err := usecaseTest.TimeEntryUsecase.GetAllTimeEntriesOfUser(userId)
assert.Nil(t, err)
for i, entry := range entriesOfUser {
assert.Equal(t, fmt.Sprintf("entry %v", i+1), entry.Description)
}

entriesOfOtherUser, err := usecaseTest.TimeEntryUsecase.GetAllTimeEntriesOfUser(otherUserId)
assert.Nil(t, err)
for i, entry := range entriesOfOtherUser {
assert.Equal(t, fmt.Sprintf("entry %v", i+4), entry.Description)
}
}

func Test_timeEntryUsecase_GetAllTimeEntriesOfUserAndProject(t *testing.T) {
usecaseTest := NewUsecaseTest()
teardownTest := usecaseTest.SetupTest(t)
Expand All @@ -208,39 +150,6 @@ func Test_timeEntryUsecase_GetAllTimeEntriesOfUserAndProject(t *testing.T) {
}
}

func Test_timeEntryUsecase_GetAllTimeEntriesOfUserAndProjectShouldNotReturnDeletedEntries(t *testing.T) {
usecaseTest := NewUsecaseTest()
teardownTest := usecaseTest.SetupTest(t)
defer teardownTest(t)

userId := GetTestUserId(t)

project := addProject(t, usecaseTest.ProjectUsecase, "project", userId)
otherProject := addProject(t, usecaseTest.ProjectUsecase, "otherproject", userId)

_ = addTimeEntries(t, usecaseTest.TimeEntryUsecase, 3, userId, project)
deletedTimeEntry := model.TimeEntry{
Description: "deletedtimeentry",
StartTime: time.Now(),
UserId: userId,
ProjectId: project.ID,
Deleted: true,
}
usecaseTest.TimeEntryUsecase.AddTimeEntry(&deletedTimeEntry)
_ = addTimeEntriesWithStartIndex(t, usecaseTest.TimeEntryUsecase, 4, 3, userId, otherProject)

entriesOfUser, err := usecaseTest.TimeEntryUsecase.GetAllTimeEntriesOfUserAndProject(userId, project.ID)
assert.Nil(t, err)
for i, entry := range entriesOfUser {
assert.Equal(t, fmt.Sprintf("entry %v", i+1), entry.Description)
}

entriesOfOtherUser, err := usecaseTest.TimeEntryUsecase.GetAllTimeEntriesOfUserAndProject(userId, otherProject.ID)
assert.Nil(t, err)
for i, entry := range entriesOfOtherUser {
assert.Equal(t, fmt.Sprintf("entry %v", i+4), entry.Description)
}
}
func Test_timeEntryUsecase_UpdateTimeEntry(t *testing.T) {
usecaseTest := NewUsecaseTest()
teardownTest := usecaseTest.SetupTest(t)
Expand Down Expand Up @@ -433,45 +342,6 @@ func Test_timeEntryUsecase_DeleteTimeEntry(t *testing.T) {
assert.Nil(t, err)
}

func Test_timeEntryUsecase_DeleteTimeEntryDoesNotDeleteOtherEntries(t *testing.T) {
usecaseTest := NewUsecaseTest()
teardownTest := usecaseTest.SetupTest(t)
defer teardownTest(t)

userId := GetTestUserId(t)
project := addProject(t, usecaseTest.ProjectUsecase, "project", userId)

timeEntry := model.TimeEntry{
Description: "timeentry",
StartTime: time.Now(),
UserId: userId,
ProjectId: project.ID,
}
err := usecaseTest.TimeEntryUsecase.AddTimeEntry(&timeEntry)
assert.Nil(t, err)
otherTimeEntry := model.TimeEntry{
Description: "othertimeentry",
StartTime: time.Now(),
UserId: userId,
ProjectId: project.ID,
}
err = usecaseTest.TimeEntryUsecase.AddTimeEntry(&otherTimeEntry)
assert.Nil(t, err)

// Check if both entires are available:
entryList, err := usecaseTest.TimeEntryUsecase.GetAllTimeEntriesOfUser(userId)
assert.Nil(t, err)
assert.Equal(t, 2, len(entryList))

err = usecaseTest.TimeEntryUsecase.DeleteTimeEntry(timeEntry.ID)
assert.Nil(t, err)

entryList, err = usecaseTest.TimeEntryUsecase.GetAllTimeEntriesOfUser(userId)
assert.Nil(t, err)
assert.Equal(t, 1, len(entryList))
assert.Equal(t, "othertimeentry", entryList[0].Description)
}

func Test_timeEntryUsecase_DeleteTimeEntryFailsIfItDoesNotExist(t *testing.T) {
usecaseTest := NewUsecaseTest()
teardownTest := usecaseTest.SetupTest(t)
Expand Down

0 comments on commit 8625812

Please sign in to comment.