minor refactoring before changes (#3638)

renaming structs so that they don't follow the interface naming conventions, updating and expanding the test suite setup for api.

---

#### Does this PR need a docs update or release note?

- [x]  No

#### Type of change

- [ ] 🧹 Tech Debt/Cleanup

#### Issue(s)

* #3562

#### Test Plan

- [x]  Unit test
- [x] 💚 E2E
This commit is contained in:
Keepers 2023-06-27 13:26:17 -06:00 committed by GitHub
parent 4f9793a824
commit f68fe90793
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
19 changed files with 119 additions and 104 deletions

View File

@ -2328,7 +2328,7 @@ func (suite *OneDriveCollectionsUnitSuite) TestGet() {
}, },
} }
itemPagers := map[string]api.DriveItemEnumerator{} itemPagers := map[string]api.DriveItemDeltaEnumerator{}
for driveID := range test.items { for driveID := range test.items {
itemPagers[driveID] = &mockItemPager{ itemPagers[driveID] = &mockItemPager{
@ -2704,7 +2704,7 @@ func (suite *OneDriveCollectionsUnitSuite) TestAddURLCacheToDriveCollections() {
ctx, flush := tester.NewContext(t) ctx, flush := tester.NewContext(t)
defer flush() defer flush()
itemPagers := map[string]api.DriveItemEnumerator{} itemPagers := map[string]api.DriveItemDeltaEnumerator{}
itemPagers[driveID] = &mockItemPager{} itemPagers[driveID] = &mockItemPager{}
mbh := mock.DefaultOneDriveBH() mbh := mock.DefaultOneDriveBH()

View File

@ -50,7 +50,7 @@ type BackupHandler interface {
// ServiceCat returns the service and category used by this implementation. // ServiceCat returns the service and category used by this implementation.
ServiceCat() (path.ServiceType, path.CategoryType) ServiceCat() (path.ServiceType, path.CategoryType)
NewDrivePager(resourceOwner string, fields []string) api.DrivePager NewDrivePager(resourceOwner string, fields []string) api.DrivePager
NewItemPager(driveID, link string, fields []string) api.DriveItemEnumerator NewItemPager(driveID, link string, fields []string) api.DriveItemDeltaEnumerator
// FormatDisplayPath creates a human-readable string to represent the // FormatDisplayPath creates a human-readable string to represent the
// provided path. // provided path.
FormatDisplayPath(driveName string, parentPath *path.Builder) string FormatDisplayPath(driveName string, parentPath *path.Builder) string

View File

@ -45,7 +45,7 @@ type itemCollector func(
// provided `collector` method // provided `collector` method
func collectItems( func collectItems(
ctx context.Context, ctx context.Context,
pager api.DriveItemEnumerator, pager api.DriveItemDeltaEnumerator,
driveID, driveName string, driveID, driveName string,
collector itemCollector, collector itemCollector,
oldPaths map[string]string, oldPaths map[string]string,

View File

@ -70,8 +70,8 @@ func (h itemBackupHandler) NewDrivePager(
func (h itemBackupHandler) NewItemPager( func (h itemBackupHandler) NewItemPager(
driveID, link string, driveID, link string,
fields []string, fields []string,
) api.DriveItemEnumerator { ) api.DriveItemDeltaEnumerator {
return h.ac.NewItemPager(driveID, link, fields) return h.ac.NewDriveItemDeltaPager(driveID, link, fields)
} }
func (h itemBackupHandler) AugmentItemInfo( func (h itemBackupHandler) AugmentItemInfo(

View File

@ -99,7 +99,7 @@ func (suite *ItemIntegrationSuite) TestItemReader_oneDrive() {
ip := suite.service.ac. ip := suite.service.ac.
Drives(). Drives().
NewItemPager(suite.userDriveID, "", api.DriveItemSelectDefault()) NewDriveItemDeltaPager(suite.userDriveID, "", api.DriveItemSelectDefault())
_, _, _, err := collectItems( _, _, _, err := collectItems(
ctx, ctx,

View File

@ -36,7 +36,7 @@ type BackupHandler struct {
DrivePagerV api.DrivePager DrivePagerV api.DrivePager
// driveID -> itemPager // driveID -> itemPager
ItemPagerV map[string]api.DriveItemEnumerator ItemPagerV map[string]api.DriveItemDeltaEnumerator
LocationIDFn locationIDer LocationIDFn locationIDer
@ -101,7 +101,7 @@ func (h BackupHandler) NewDrivePager(string, []string) api.DrivePager {
return h.DrivePagerV return h.DrivePagerV
} }
func (h BackupHandler) NewItemPager(driveID string, _ string, _ []string) api.DriveItemEnumerator { func (h BackupHandler) NewItemPager(driveID string, _ string, _ []string) api.DriveItemDeltaEnumerator {
return h.ItemPagerV[driveID] return h.ItemPagerV[driveID]
} }

View File

@ -47,7 +47,7 @@ type urlCache struct {
refreshMu sync.Mutex refreshMu sync.Mutex
deltaQueryCount int deltaQueryCount int
itemPager api.DriveItemEnumerator itemPager api.DriveItemDeltaEnumerator
errs *fault.Bus errs *fault.Bus
} }
@ -56,7 +56,7 @@ type urlCache struct {
func newURLCache( func newURLCache(
driveID, prevDelta string, driveID, prevDelta string,
refreshInterval time.Duration, refreshInterval time.Duration,
itemPager api.DriveItemEnumerator, itemPager api.DriveItemDeltaEnumerator,
errs *fault.Bus, errs *fault.Bus,
) (*urlCache, error) { ) (*urlCache, error) {
err := validateCacheParams( err := validateCacheParams(
@ -83,7 +83,7 @@ func newURLCache(
func validateCacheParams( func validateCacheParams(
driveID string, driveID string,
refreshInterval time.Duration, refreshInterval time.Duration,
itemPager api.DriveItemEnumerator, itemPager api.DriveItemDeltaEnumerator,
) error { ) error {
if len(driveID) == 0 { if len(driveID) == 0 {
return clues.New("drive id is empty") return clues.New("drive id is empty")

View File

@ -69,7 +69,7 @@ func (suite *URLCacheIntegrationSuite) TestURLCacheBasic() {
ac = suite.ac.Drives() ac = suite.ac.Drives()
driveID = suite.driveID driveID = suite.driveID
newFolderName = testdata.DefaultRestoreConfig("folder").Location newFolderName = testdata.DefaultRestoreConfig("folder").Location
driveItemPager = suite.ac.Drives().NewItemPager(driveID, "", api.DriveItemSelectDefault()) driveItemPager = suite.ac.Drives().NewDriveItemDeltaPager(driveID, "", api.DriveItemSelectDefault())
) )
ctx, flush := tester.NewContext(t) ctx, flush := tester.NewContext(t)
@ -108,7 +108,7 @@ func (suite *URLCacheIntegrationSuite) TestURLCacheBasic() {
// Get the previous delta to feed into url cache // Get the previous delta to feed into url cache
prevDelta, _, _, err := collectItems( prevDelta, _, _, err := collectItems(
ctx, ctx,
suite.ac.Drives().NewItemPager(driveID, "", api.DriveItemSelectDefault()), suite.ac.Drives().NewDriveItemDeltaPager(driveID, "", api.DriveItemSelectDefault()),
suite.driveID, suite.driveID,
"drive-name", "drive-name",
collectorFunc, collectorFunc,
@ -506,7 +506,7 @@ func (suite *URLCacheUnitSuite) TestNewURLCache() {
name string name string
driveID string driveID string
refreshInt time.Duration refreshInt time.Duration
itemPager api.DriveItemEnumerator itemPager api.DriveItemDeltaEnumerator
errors *fault.Bus errors *fault.Bus
expectedErr require.ErrorAssertionFunc expectedErr require.ErrorAssertionFunc
}{ }{

View File

@ -68,8 +68,8 @@ func (h libraryBackupHandler) NewDrivePager(
func (h libraryBackupHandler) NewItemPager( func (h libraryBackupHandler) NewItemPager(
driveID, link string, driveID, link string,
fields []string, fields []string,
) api.DriveItemEnumerator { ) api.DriveItemDeltaEnumerator {
return h.ac.NewItemPager(driveID, link, fields) return h.ac.NewDriveItemDeltaPager(driveID, link, fields)
} }
func (h libraryBackupHandler) AugmentItemInfo( func (h libraryBackupHandler) AugmentItemInfo(

View File

@ -105,7 +105,7 @@ func (c Contacts) NewContactsPager(
options := &users.ItemContactFoldersItemContactsRequestBuilderGetRequestConfiguration{ options := &users.ItemContactFoldersItemContactsRequestBuilderGetRequestConfiguration{
Headers: newPreferHeaders(preferPageSize(maxNonDeltaPageSize)), Headers: newPreferHeaders(preferPageSize(maxNonDeltaPageSize)),
QueryParameters: &users.ItemContactFoldersItemContactsRequestBuilderGetQueryParameters{ QueryParameters: &users.ItemContactFoldersItemContactsRequestBuilderGetQueryParameters{
Top: ptr.To[int32](maxNonDeltaPageSize), Top: ptr.To(maxNonDeltaPageSize),
}, },
} }
@ -181,7 +181,7 @@ func (c Contacts) NewContactIDsPager(
config := &users.ItemContactFoldersItemContactsRequestBuilderGetRequestConfiguration{ config := &users.ItemContactFoldersItemContactsRequestBuilderGetRequestConfiguration{
QueryParameters: &users.ItemContactFoldersItemContactsRequestBuilderGetQueryParameters{ QueryParameters: &users.ItemContactFoldersItemContactsRequestBuilderGetQueryParameters{
Select: idAnd(parentFolderID), Select: idAnd(parentFolderID),
Top: ptr.To[int32](maxNonDeltaPageSize), Top: ptr.To(maxNonDeltaPageSize),
}, },
Headers: newPreferHeaders(preferPageSize(maxNonDeltaPageSize), preferImmutableIDs(immutableIDs)), Headers: newPreferHeaders(preferPageSize(maxNonDeltaPageSize), preferImmutableIDs(immutableIDs)),
} }

View File

@ -15,7 +15,7 @@ import (
type ContactsPagerIntgSuite struct { type ContactsPagerIntgSuite struct {
tester.Suite tester.Suite
cts clientTesterSetup its intgTesterSetup
} }
func TestContactsPagerIntgSuite(t *testing.T) { func TestContactsPagerIntgSuite(t *testing.T) {
@ -27,23 +27,23 @@ func TestContactsPagerIntgSuite(t *testing.T) {
} }
func (suite *ContactsPagerIntgSuite) SetupSuite() { func (suite *ContactsPagerIntgSuite) SetupSuite() {
suite.cts = newClientTesterSetup(suite.T()) suite.its = newIntegrationTesterSetup(suite.T())
} }
func (suite *ContactsPagerIntgSuite) TestGetItemsInContainerByCollisionKey() { func (suite *ContactsPagerIntgSuite) TestGetItemsInContainerByCollisionKey() {
t := suite.T() t := suite.T()
ac := suite.cts.ac.Contacts() ac := suite.its.ac.Contacts()
ctx, flush := tester.NewContext(t) ctx, flush := tester.NewContext(t)
defer flush() defer flush()
container, err := ac.GetContainerByID(ctx, suite.cts.userID, "contacts") container, err := ac.GetContainerByID(ctx, suite.its.userID, "contacts")
require.NoError(t, err, clues.ToCore(err)) require.NoError(t, err, clues.ToCore(err))
conts, err := ac.Stable. conts, err := ac.Stable.
Client(). Client().
Users(). Users().
ByUserId(suite.cts.userID). ByUserId(suite.its.userID).
ContactFolders(). ContactFolders().
ByContactFolderId(ptr.Val(container.GetId())). ByContactFolderId(ptr.Val(container.GetId())).
Contacts(). Contacts().
@ -57,7 +57,7 @@ func (suite *ContactsPagerIntgSuite) TestGetItemsInContainerByCollisionKey() {
expect = append(expect, api.ContactCollisionKey(c)) expect = append(expect, api.ContactCollisionKey(c))
} }
results, err := ac.GetItemsInContainerByCollisionKey(ctx, suite.cts.userID, "contacts") results, err := suite.its.ac.Contacts().GetItemsInContainerByCollisionKey(ctx, suite.its.userID, "contacts")
require.NoError(t, err, clues.ToCore(err)) require.NoError(t, err, clues.ToCore(err))
require.Less(t, 0, len(results), "requires at least one result") require.Less(t, 0, len(results), "requires at least one result")

View File

@ -8,6 +8,7 @@ import (
"github.com/microsoftgraph/msgraph-sdk-go/drives" "github.com/microsoftgraph/msgraph-sdk-go/drives"
"github.com/microsoftgraph/msgraph-sdk-go/models" "github.com/microsoftgraph/msgraph-sdk-go/models"
"github.com/alcionai/corso/src/internal/common/ptr"
"github.com/alcionai/corso/src/internal/m365/graph" "github.com/alcionai/corso/src/internal/m365/graph"
"github.com/alcionai/corso/src/pkg/control" "github.com/alcionai/corso/src/pkg/control"
) )
@ -305,3 +306,13 @@ func (c Drives) DeleteItemPermission(
return nil return nil
} }
// DriveItemCollisionKeyy constructs a key from the item name.
// collision keys are used to identify duplicate item conflicts for handling advanced restoration config.
func DriveItemCollisionKey(item models.DriveItemable) string {
if item == nil {
return ""
}
return ptr.Val(item.GetName())
}

View File

@ -18,29 +18,29 @@ import (
) )
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// item pager // delta item pager
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
type DriveItemEnumerator interface { type DriveItemDeltaEnumerator interface {
GetPage(context.Context) (DeltaPageLinker, error) GetPage(context.Context) (DeltaPageLinker, error)
SetNext(nextLink string) SetNext(nextLink string)
Reset() Reset()
ValuesIn(DeltaPageLinker) ([]models.DriveItemable, error) ValuesIn(DeltaPageLinker) ([]models.DriveItemable, error)
} }
var _ DriveItemEnumerator = &DriveItemPager{} var _ DriveItemDeltaEnumerator = &DriveItemDeltaPageCtrl{}
type DriveItemPager struct { type DriveItemDeltaPageCtrl struct {
gs graph.Servicer gs graph.Servicer
driveID string driveID string
builder *drives.ItemItemsItemDeltaRequestBuilder builder *drives.ItemItemsItemDeltaRequestBuilder
options *drives.ItemItemsItemDeltaRequestBuilderGetRequestConfiguration options *drives.ItemItemsItemDeltaRequestBuilderGetRequestConfiguration
} }
func (c Drives) NewItemPager( func (c Drives) NewDriveItemDeltaPager(
driveID, link string, driveID, link string,
selectFields []string, selectFields []string,
) *DriveItemPager { ) *DriveItemDeltaPageCtrl {
preferHeaderItems := []string{ preferHeaderItems := []string{
"deltashowremovedasdeleted", "deltashowremovedasdeleted",
"deltatraversepermissiongaps", "deltatraversepermissiongaps",
@ -56,7 +56,7 @@ func (c Drives) NewItemPager(
}, },
} }
res := &DriveItemPager{ res := &DriveItemDeltaPageCtrl{
gs: c.Stable, gs: c.Stable,
driveID: driveID, driveID: driveID,
options: requestConfig, options: requestConfig,
@ -64,7 +64,9 @@ func (c Drives) NewItemPager(
Client(). Client().
Drives(). Drives().
ByDriveId(driveID). ByDriveId(driveID).
Items().ByDriveItemId(onedrive.RootID).Delta(), Items().
ByDriveItemId(onedrive.RootID).
Delta(),
} }
if len(link) > 0 { if len(link) > 0 {
@ -74,7 +76,7 @@ func (c Drives) NewItemPager(
return res return res
} }
func (p *DriveItemPager) GetPage(ctx context.Context) (DeltaPageLinker, error) { func (p *DriveItemDeltaPageCtrl) GetPage(ctx context.Context) (DeltaPageLinker, error) {
var ( var (
resp DeltaPageLinker resp DeltaPageLinker
err error err error
@ -88,11 +90,11 @@ func (p *DriveItemPager) GetPage(ctx context.Context) (DeltaPageLinker, error) {
return resp, nil return resp, nil
} }
func (p *DriveItemPager) SetNext(link string) { func (p *DriveItemDeltaPageCtrl) SetNext(link string) {
p.builder = drives.NewItemItemsItemDeltaRequestBuilder(link, p.gs.Adapter()) p.builder = drives.NewItemItemsItemDeltaRequestBuilder(link, p.gs.Adapter())
} }
func (p *DriveItemPager) Reset() { func (p *DriveItemDeltaPageCtrl) Reset() {
p.builder = p.gs.Client(). p.builder = p.gs.Client().
Drives(). Drives().
ByDriveId(p.driveID). ByDriveId(p.driveID).
@ -101,12 +103,12 @@ func (p *DriveItemPager) Reset() {
Delta() Delta()
} }
func (p *DriveItemPager) ValuesIn(l DeltaPageLinker) ([]models.DriveItemable, error) { func (p *DriveItemDeltaPageCtrl) ValuesIn(l DeltaPageLinker) ([]models.DriveItemable, error) {
return getValues[models.DriveItemable](l) return getValues[models.DriveItemable](l)
} }
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// user pager // user's drives pager
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
var _ DrivePager = &userDrivePager{} var _ DrivePager = &userDrivePager{}
@ -196,7 +198,7 @@ func (p *userDrivePager) ValuesIn(l PageLinker) ([]models.Driveable, error) {
} }
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// site pager // site's libraries pager
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
var _ DrivePager = &siteDrivePager{} var _ DrivePager = &siteDrivePager{}

View File

@ -12,44 +12,17 @@ import (
"github.com/alcionai/corso/src/internal/common/ptr" "github.com/alcionai/corso/src/internal/common/ptr"
"github.com/alcionai/corso/src/internal/m365/graph" "github.com/alcionai/corso/src/internal/m365/graph"
"github.com/alcionai/corso/src/internal/tester" "github.com/alcionai/corso/src/internal/tester"
"github.com/alcionai/corso/src/pkg/account"
"github.com/alcionai/corso/src/pkg/control" "github.com/alcionai/corso/src/pkg/control"
"github.com/alcionai/corso/src/pkg/control/testdata" "github.com/alcionai/corso/src/pkg/control/testdata"
"github.com/alcionai/corso/src/pkg/services/m365/api"
) )
type DriveAPISuite struct { type DriveAPISuite struct {
tester.Suite tester.Suite
creds account.M365Config its intgTesterSetup
ac api.Client
driveID string
rootFolderID string
} }
func (suite *DriveAPISuite) SetupSuite() { func (suite *DriveAPISuite) SetupSuite() {
t := suite.T() suite.its = newIntegrationTesterSetup(suite.T())
ctx, flush := tester.NewContext(t)
defer flush()
userID := tester.M365UserID(t)
a := tester.NewM365Account(t)
creds, err := a.M365Config()
require.NoError(t, err, clues.ToCore(err))
suite.creds = creds
suite.ac, err = api.NewClient(creds)
require.NoError(t, err, clues.ToCore(err))
drive, err := suite.ac.Users().GetDefaultDrive(ctx, userID)
require.NoError(t, err, clues.ToCore(err))
suite.driveID = ptr.Val(drive.GetId())
rootFolder, err := suite.ac.Drives().GetRootFolder(ctx, suite.driveID)
require.NoError(t, err, clues.ToCore(err))
suite.rootFolderID = ptr.Val(rootFolder.GetId())
} }
func TestDriveAPIs(t *testing.T) { func TestDriveAPIs(t *testing.T) {
@ -67,7 +40,7 @@ func (suite *DriveAPISuite) TestDrives_CreatePagerAndGetPage() {
defer flush() defer flush()
siteID := tester.M365SiteID(t) siteID := tester.M365SiteID(t)
pager := suite.ac.Drives().NewSiteDrivePager(siteID, []string{"name"}) pager := suite.its.ac.Drives().NewSiteDrivePager(siteID, []string{"name"})
a, err := pager.GetPage(ctx) a, err := pager.GetPage(ctx)
assert.NoError(t, err, clues.ToCore(err)) assert.NoError(t, err, clues.ToCore(err))
@ -95,21 +68,22 @@ func (suite *DriveAPISuite) TestDrives_PostItemInContainer() {
defer flush() defer flush()
rc := testdata.DefaultRestoreConfig("drive_api_post_item") rc := testdata.DefaultRestoreConfig("drive_api_post_item")
acd := suite.its.ac.Drives()
// generate a parent for the test data // generate a parent for the test data
parent, err := suite.ac.Drives().PostItemInContainer( parent, err := acd.PostItemInContainer(
ctx, ctx,
suite.driveID, suite.its.userDriveID,
suite.rootFolderID, suite.its.userDriveRootFolderID,
newItem(rc.Location, true), newItem(rc.Location, true),
control.Replace) control.Replace)
require.NoError(t, err, clues.ToCore(err)) require.NoError(t, err, clues.ToCore(err))
// generate a folder to use for collision testing // generate a folder to use for collision testing
folder := newItem("collision", true) folder := newItem("collision", true)
origFolder, err := suite.ac.Drives().PostItemInContainer( origFolder, err := acd.PostItemInContainer(
ctx, ctx,
suite.driveID, suite.its.userDriveID,
ptr.Val(parent.GetId()), ptr.Val(parent.GetId()),
folder, folder,
control.Copy) control.Copy)
@ -117,9 +91,9 @@ func (suite *DriveAPISuite) TestDrives_PostItemInContainer() {
// generate an item to use for collision testing // generate an item to use for collision testing
file := newItem("collision.txt", false) file := newItem("collision.txt", false)
origFile, err := suite.ac.Drives().PostItemInContainer( origFile, err := acd.PostItemInContainer(
ctx, ctx,
suite.driveID, suite.its.userDriveID,
ptr.Val(parent.GetId()), ptr.Val(parent.GetId()),
file, file,
control.Copy) control.Copy)
@ -232,9 +206,9 @@ func (suite *DriveAPISuite) TestDrives_PostItemInContainer() {
for _, test := range table { for _, test := range table {
suite.Run(test.name, func() { suite.Run(test.name, func() {
t := suite.T() t := suite.T()
i, err := suite.ac.Drives().PostItemInContainer( i, err := acd.PostItemInContainer(
ctx, ctx,
suite.driveID, suite.its.userDriveID,
ptr.Val(parent.GetId()), ptr.Val(parent.GetId()),
test.postItem, test.postItem,
test.onCollision) test.onCollision)

View File

@ -113,7 +113,7 @@ func (c Events) NewEventsPager(
options := &users.ItemCalendarsItemEventsRequestBuilderGetRequestConfiguration{ options := &users.ItemCalendarsItemEventsRequestBuilderGetRequestConfiguration{
Headers: newPreferHeaders(preferPageSize(maxNonDeltaPageSize)), Headers: newPreferHeaders(preferPageSize(maxNonDeltaPageSize)),
QueryParameters: &users.ItemCalendarsItemEventsRequestBuilderGetQueryParameters{ QueryParameters: &users.ItemCalendarsItemEventsRequestBuilderGetQueryParameters{
Top: ptr.To[int32](maxNonDeltaPageSize), Top: ptr.To(maxNonDeltaPageSize),
}, },
} }
@ -189,7 +189,7 @@ func (c Events) NewEventIDsPager(
options := &users.ItemCalendarsItemEventsRequestBuilderGetRequestConfiguration{ options := &users.ItemCalendarsItemEventsRequestBuilderGetRequestConfiguration{
Headers: newPreferHeaders(preferPageSize(maxNonDeltaPageSize), preferImmutableIDs(immutableIDs)), Headers: newPreferHeaders(preferPageSize(maxNonDeltaPageSize), preferImmutableIDs(immutableIDs)),
QueryParameters: &users.ItemCalendarsItemEventsRequestBuilderGetQueryParameters{ QueryParameters: &users.ItemCalendarsItemEventsRequestBuilderGetQueryParameters{
Top: ptr.To[int32](maxNonDeltaPageSize), Top: ptr.To(maxNonDeltaPageSize),
}, },
} }
@ -246,7 +246,7 @@ func (c Events) NewEventDeltaIDsPager(
options := &users.ItemCalendarsItemEventsDeltaRequestBuilderGetRequestConfiguration{ options := &users.ItemCalendarsItemEventsDeltaRequestBuilderGetRequestConfiguration{
Headers: newPreferHeaders(preferPageSize(maxDeltaPageSize), preferImmutableIDs(immutableIDs)), Headers: newPreferHeaders(preferPageSize(maxDeltaPageSize), preferImmutableIDs(immutableIDs)),
QueryParameters: &users.ItemCalendarsItemEventsDeltaRequestBuilderGetQueryParameters{ QueryParameters: &users.ItemCalendarsItemEventsDeltaRequestBuilderGetQueryParameters{
Top: ptr.To[int32](maxDeltaPageSize), Top: ptr.To(maxDeltaPageSize),
}, },
} }

View File

@ -15,7 +15,7 @@ import (
type EventsPagerIntgSuite struct { type EventsPagerIntgSuite struct {
tester.Suite tester.Suite
cts clientTesterSetup its intgTesterSetup
} }
func TestEventsPagerIntgSuite(t *testing.T) { func TestEventsPagerIntgSuite(t *testing.T) {
@ -27,23 +27,23 @@ func TestEventsPagerIntgSuite(t *testing.T) {
} }
func (suite *EventsPagerIntgSuite) SetupSuite() { func (suite *EventsPagerIntgSuite) SetupSuite() {
suite.cts = newClientTesterSetup(suite.T()) suite.its = newIntegrationTesterSetup(suite.T())
} }
func (suite *EventsPagerIntgSuite) TestGetItemsInContainerByCollisionKey() { func (suite *EventsPagerIntgSuite) TestGetItemsInContainerByCollisionKey() {
t := suite.T() t := suite.T()
ac := suite.cts.ac.Events() ac := suite.its.ac.Events()
ctx, flush := tester.NewContext(t) ctx, flush := tester.NewContext(t)
defer flush() defer flush()
container, err := ac.GetContainerByID(ctx, suite.cts.userID, "calendar") container, err := ac.GetContainerByID(ctx, suite.its.userID, "calendar")
require.NoError(t, err, clues.ToCore(err)) require.NoError(t, err, clues.ToCore(err))
evts, err := ac.Stable. evts, err := ac.Stable.
Client(). Client().
Users(). Users().
ByUserId(suite.cts.userID). ByUserId(suite.its.userID).
Calendars(). Calendars().
ByCalendarId(ptr.Val(container.GetId())). ByCalendarId(ptr.Val(container.GetId())).
Events(). Events().
@ -57,7 +57,7 @@ func (suite *EventsPagerIntgSuite) TestGetItemsInContainerByCollisionKey() {
expect = append(expect, api.EventCollisionKey(e)) expect = append(expect, api.EventCollisionKey(e))
} }
results, err := ac.GetItemsInContainerByCollisionKey(ctx, suite.cts.userID, "calendar") results, err := suite.its.ac.Events().GetItemsInContainerByCollisionKey(ctx, suite.its.userID, "calendar")
require.NoError(t, err, clues.ToCore(err)) require.NoError(t, err, clues.ToCore(err))
require.Less(t, 0, len(results), "requires at least one result") require.Less(t, 0, len(results), "requires at least one result")

View File

@ -6,17 +6,23 @@ import (
"github.com/alcionai/clues" "github.com/alcionai/clues"
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
"github.com/alcionai/corso/src/internal/common/ptr"
"github.com/alcionai/corso/src/internal/tester" "github.com/alcionai/corso/src/internal/tester"
"github.com/alcionai/corso/src/pkg/services/m365/api" "github.com/alcionai/corso/src/pkg/services/m365/api"
) )
type clientTesterSetup struct { type intgTesterSetup struct {
ac api.Client ac api.Client
userID string userID string
userDriveID string
userDriveRootFolderID string
siteID string
siteDriveID string
siteDriveRootFolderID string
} }
func newClientTesterSetup(t *testing.T) clientTesterSetup { func newIntegrationTesterSetup(t *testing.T) intgTesterSetup {
cts := clientTesterSetup{} its := intgTesterSetup{}
ctx, flush := tester.NewContext(t) ctx, flush := tester.NewContext(t)
defer flush() defer flush()
@ -25,10 +31,32 @@ func newClientTesterSetup(t *testing.T) clientTesterSetup {
creds, err := a.M365Config() creds, err := a.M365Config()
require.NoError(t, err, clues.ToCore(err)) require.NoError(t, err, clues.ToCore(err))
cts.ac, err = api.NewClient(creds) its.ac, err = api.NewClient(creds)
require.NoError(t, err, clues.ToCore(err)) require.NoError(t, err, clues.ToCore(err))
cts.userID = tester.GetM365UserID(ctx) its.userID = tester.M365UserID(t)
return cts userDrive, err := its.ac.Users().GetDefaultDrive(ctx, its.userID)
require.NoError(t, err, clues.ToCore(err))
its.userDriveID = ptr.Val(userDrive.GetId())
userDriveRootFolder, err := its.ac.Drives().GetRootFolder(ctx, its.userDriveID)
require.NoError(t, err, clues.ToCore(err))
its.userDriveRootFolderID = ptr.Val(userDriveRootFolder.GetId())
its.siteID = tester.M365SiteID(t)
siteDrive, err := its.ac.Sites().GetDefaultDrive(ctx, its.siteID)
require.NoError(t, err, clues.ToCore(err))
its.siteDriveID = ptr.Val(siteDrive.GetId())
siteDriveRootFolder, err := its.ac.Drives().GetRootFolder(ctx, its.siteDriveID)
require.NoError(t, err, clues.ToCore(err))
its.siteDriveRootFolderID = ptr.Val(siteDriveRootFolder.GetId())
return its
} }

View File

@ -136,7 +136,7 @@ func (c Mail) NewMailPager(
options := &users.ItemMailFoldersItemMessagesRequestBuilderGetRequestConfiguration{ options := &users.ItemMailFoldersItemMessagesRequestBuilderGetRequestConfiguration{
Headers: newPreferHeaders(preferPageSize(maxNonDeltaPageSize)), Headers: newPreferHeaders(preferPageSize(maxNonDeltaPageSize)),
QueryParameters: &users.ItemMailFoldersItemMessagesRequestBuilderGetQueryParameters{ QueryParameters: &users.ItemMailFoldersItemMessagesRequestBuilderGetQueryParameters{
Top: ptr.To[int32](maxNonDeltaPageSize), Top: ptr.To(maxNonDeltaPageSize),
}, },
} }
@ -190,7 +190,7 @@ func (c Mail) NewMailIDsPager(
config := &users.ItemMailFoldersItemMessagesRequestBuilderGetRequestConfiguration{ config := &users.ItemMailFoldersItemMessagesRequestBuilderGetRequestConfiguration{
QueryParameters: &users.ItemMailFoldersItemMessagesRequestBuilderGetQueryParameters{ QueryParameters: &users.ItemMailFoldersItemMessagesRequestBuilderGetQueryParameters{
Select: idAnd("isRead"), Select: idAnd("isRead"),
Top: ptr.To[int32](maxNonDeltaPageSize), Top: ptr.To(maxNonDeltaPageSize),
}, },
Headers: newPreferHeaders(preferPageSize(maxNonDeltaPageSize), preferImmutableIDs(immutableIDs)), Headers: newPreferHeaders(preferPageSize(maxNonDeltaPageSize), preferImmutableIDs(immutableIDs)),
} }
@ -287,7 +287,7 @@ func (c Mail) NewMailDeltaIDsPager(
config := &users.ItemMailFoldersItemMessagesDeltaRequestBuilderGetRequestConfiguration{ config := &users.ItemMailFoldersItemMessagesDeltaRequestBuilderGetRequestConfiguration{
QueryParameters: &users.ItemMailFoldersItemMessagesDeltaRequestBuilderGetQueryParameters{ QueryParameters: &users.ItemMailFoldersItemMessagesDeltaRequestBuilderGetQueryParameters{
Select: idAnd("isRead"), Select: idAnd("isRead"),
Top: ptr.To[int32](maxDeltaPageSize), Top: ptr.To(maxDeltaPageSize),
}, },
Headers: newPreferHeaders(preferPageSize(maxDeltaPageSize), preferImmutableIDs(immutableIDs)), Headers: newPreferHeaders(preferPageSize(maxDeltaPageSize), preferImmutableIDs(immutableIDs)),
} }

View File

@ -15,7 +15,7 @@ import (
type MailPagerIntgSuite struct { type MailPagerIntgSuite struct {
tester.Suite tester.Suite
cts clientTesterSetup its intgTesterSetup
} }
func TestMailPagerIntgSuite(t *testing.T) { func TestMailPagerIntgSuite(t *testing.T) {
@ -27,23 +27,23 @@ func TestMailPagerIntgSuite(t *testing.T) {
} }
func (suite *MailPagerIntgSuite) SetupSuite() { func (suite *MailPagerIntgSuite) SetupSuite() {
suite.cts = newClientTesterSetup(suite.T()) suite.its = newIntegrationTesterSetup(suite.T())
} }
func (suite *MailPagerIntgSuite) TestGetItemsInContainerByCollisionKey() { func (suite *MailPagerIntgSuite) TestGetItemsInContainerByCollisionKey() {
t := suite.T() t := suite.T()
ac := suite.cts.ac.Mail() ac := suite.its.ac.Mail()
ctx, flush := tester.NewContext(t) ctx, flush := tester.NewContext(t)
defer flush() defer flush()
container, err := ac.GetContainerByID(ctx, suite.cts.userID, "inbox") container, err := ac.GetContainerByID(ctx, suite.its.userID, "inbox")
require.NoError(t, err, clues.ToCore(err)) require.NoError(t, err, clues.ToCore(err))
msgs, err := ac.Stable. msgs, err := ac.Stable.
Client(). Client().
Users(). Users().
ByUserId(suite.cts.userID). ByUserId(suite.its.userID).
MailFolders(). MailFolders().
ByMailFolderId(ptr.Val(container.GetId())). ByMailFolderId(ptr.Val(container.GetId())).
Messages(). Messages().
@ -57,7 +57,7 @@ func (suite *MailPagerIntgSuite) TestGetItemsInContainerByCollisionKey() {
expect = append(expect, api.MailCollisionKey(m)) expect = append(expect, api.MailCollisionKey(m))
} }
results, err := ac.GetItemsInContainerByCollisionKey(ctx, suite.cts.userID, "inbox") results, err := suite.its.ac.Mail().GetItemsInContainerByCollisionKey(ctx, suite.its.userID, "inbox")
require.NoError(t, err, clues.ToCore(err)) require.NoError(t, err, clues.ToCore(err))
require.Less(t, 0, len(results), "requires at least one result") require.Less(t, 0, len(results), "requires at least one result")