diff --git a/activities.go b/activities.go index e5e2989..2ddf0f9 100644 --- a/activities.go +++ b/activities.go @@ -2,6 +2,7 @@ package libwekan import ( "context" + "go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo/options" "time" @@ -215,6 +216,9 @@ func (wekan *Wekan) GetActivityFromID(ctx context.Context, activityID ActivityID var activity Activity err := wekan.db.Collection("activities").FindOne(ctx, bson.M{"_id": activityID}).Decode(&activity) if err != nil { + if err == mongo.ErrNoDocuments { + return Activity{}, ActivityNotFoundError{string(activityID)} + } return Activity{}, UnexpectedMongoError{err} } return activity, nil diff --git a/activities_integration_test.go b/activities_integration_test.go index 42e9872..0bbf20c 100644 --- a/activities_integration_test.go +++ b/activities_integration_test.go @@ -105,8 +105,8 @@ func TestActivities_GetActivityFromID_WhenActivityDoesntExist(t *testing.T) { // THEN ass.Empty(actualActivityFromMethod) ass.Empty(actualActivityFromID) - ass.IsType(UnknownActivityError{}, errFromMethod) - ass.IsType(UnknownActivityError{}, errFromID) + ass.IsType(ActivityNotFoundError{}, errFromMethod) + ass.IsType(ActivityNotFoundError{}, errFromID) } func TestActivities_CheckActivityFromID(t *testing.T) { @@ -128,5 +128,5 @@ func TestActivities_CheckActivityFromID_WhenActivityDoesntExist(t *testing.T) { activityID := ActivityID(t.Name() + "absent") // THEN - ass.IsType(UnknownActivityError{}, activityID.Check(ctx, &wekan)) + ass.IsType(ActivityNotFoundError{}, activityID.Check(ctx, &wekan)) } diff --git a/errors.go b/errors.go index 9a69784..a35313b 100644 --- a/errors.go +++ b/errors.go @@ -218,11 +218,11 @@ func (e NothingDoneError) Error() string { return "le traitement n'a eu aucun effet" } -type UnknownActivityError struct { +type ActivityNotFoundError struct { key string } -func (e UnknownActivityError) Error() string { +func (e ActivityNotFoundError) Error() string { return fmt.Sprintf("l'activité n'existe pas (ID: %s)", e.key) } diff --git a/errors_test.go b/errors_test.go index 9e07df7..cae31d3 100644 --- a/errors_test.go +++ b/errors_test.go @@ -135,7 +135,7 @@ func TestErrors_NothingDoneError(t *testing.T) { assert.EqualError(t, e, expected) } func TestErrors_UnknownActivityError(t *testing.T) { - e := UnknownActivityError{"test"} + e := ActivityNotFoundError{"test"} expected := fmt.Sprintf("l'activité n'existe pas (ID: %s)", e.key) assert.EqualError(t, e, expected) }