diff --git a/src/internal/connector/exchange/iterators_test.go b/src/internal/connector/exchange/iterators_test.go new file mode 100644 index 000000000..762d785db --- /dev/null +++ b/src/internal/connector/exchange/iterators_test.go @@ -0,0 +1,42 @@ +package exchange + +import ( + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "github.com/stretchr/testify/suite" + + "github.com/alcionai/corso/internal/connector/mockconnector" + "github.com/alcionai/corso/internal/connector/support" +) + +type ExchangeIteratorSuite struct { + suite.Suite +} + +func TestExchangeIteratorSuite(t *testing.T) { + suite.Run(t, new(ExchangeIteratorSuite)) +} + +func (suite *ExchangeIteratorSuite) TestDisplayable() { + t := suite.T() + bytes := mockconnector.GetMockContactBytes("Displayable") + contact, err := support.CreateContactFromBytes(bytes) + require.NoError(t, err) + aDisplayable, ok := contact.(displayable) + assert.True(t, ok) + assert.NotNil(t, aDisplayable.GetId()) + assert.NotNil(t, aDisplayable.GetDisplayName()) +} + +func (suite *ExchangeIteratorSuite) TestDescendable() { + t := suite.T() + bytes := mockconnector.GetMockMessageBytes("Descendable") + message, err := support.CreateMessageFromBytes(bytes) + require.NoError(t, err) + aDescendable, ok := message.(descendable) + assert.True(t, ok) + assert.NotNil(t, aDescendable.GetId()) + assert.NotNil(t, aDescendable.GetParentFolderId()) +} diff --git a/src/internal/connector/exchange/service_iterate.go b/src/internal/connector/exchange/service_iterators.go similarity index 94% rename from src/internal/connector/exchange/service_iterate.go rename to src/internal/connector/exchange/service_iterators.go index 7bcb53d23..a5621a908 100644 --- a/src/internal/connector/exchange/service_iterate.go +++ b/src/internal/connector/exchange/service_iterators.go @@ -18,6 +18,20 @@ const ( eventsCategory = "events" ) +// descendable represents objects that implement msgraph-sdk-go/models.entityable +// and have the concept of a "parent folder". +type descendable interface { + GetId() *string + GetParentFolderId() *string +} + +// displayable represents objects that implement msgraph-sdk-fo/models.entityable +// and have the concept of a display name. +type displayable interface { + GetId() *string + GetDisplayName() *string +} + // GraphIterateFuncs are iterate functions to be used with the M365 iterators (e.g. msgraphgocore.NewPageIterator) // @returns a callback func that works with msgraphgocore.PageIterator.Iterate function type GraphIterateFunc func(