Address review feedback from #1896 (#1913)

## Description

- Adds accessor methods for size/modified
- Do not initialize folder in test with a modified time

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

- [x]  Yes, it's included
- [ ] 🕐 Yes, but in a later PR
- [ ]  No 

## Type of change

<!--- Please check the type of change your PR introduces: --->
- [ ] 🌻 Feature
- [ ] 🐛 Bugfix
- [ ] 🗺️ Documentation
- [ ] 🤖 Test
- [ ] 💻 CI/Deployment
- [x] 🐹 Trivial/Minor

## Test Plan

<!-- How will this be tested prior to merging.-->
- [ ] 💪 Manual
- [x]  Unit test
- [ ] 💚 E2E
This commit is contained in:
Vaibhav Kamra 2022-12-21 22:13:30 -08:00 committed by GitHub
parent 8fa440e277
commit 3141b181b6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 43 additions and 23 deletions

View File

@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
### Added
- Folder entries in backup details now include size and modified time for the hierarchy (#1896)
### Changed
- **Breaking Change**:

View File

@ -145,26 +145,9 @@ func (b *Builder) AddFoldersForItem(folders []FolderEntry, itemInfo ItemInfo) {
}
// Update the folder's size and modified time
var (
itemSize int64
itemModified time.Time
)
itemModified := itemInfo.modified()
switch {
case itemInfo.Exchange != nil:
itemSize = itemInfo.Exchange.Size
itemModified = itemInfo.Exchange.Modified
case itemInfo.OneDrive != nil:
itemSize = itemInfo.OneDrive.Size
itemModified = itemInfo.OneDrive.Modified
case itemInfo.SharePoint != nil:
itemSize = itemInfo.SharePoint.Size
itemModified = itemInfo.SharePoint.Modified
}
folder.Info.Folder.Size += itemSize
folder.Info.Folder.Size += itemInfo.size()
if folder.Info.Folder.Modified.Before(itemModified) {
folder.Info.Folder.Modified = itemModified
@ -346,6 +329,42 @@ func (i ItemInfo) infoType() ItemType {
return UnknownType
}
func (i ItemInfo) size() int64 {
switch {
case i.Exchange != nil:
return i.Exchange.Size
case i.OneDrive != nil:
return i.OneDrive.Size
case i.SharePoint != nil:
return i.SharePoint.Size
case i.Folder != nil:
return i.Folder.Size
}
return 0
}
func (i ItemInfo) modified() time.Time {
switch {
case i.Exchange != nil:
return i.Exchange.Modified
case i.OneDrive != nil:
return i.OneDrive.Modified
case i.SharePoint != nil:
return i.SharePoint.Modified
case i.Folder != nil:
return i.Folder.Modified
}
return time.Time{}
}
type FolderInfo struct {
ItemType ItemType `json:"itemType,omitempty"`
DisplayName string `json:"displayName"`

View File

@ -341,7 +341,6 @@ func (suite *DetailsUnitSuite) TestDetails_AddFolders() {
func (suite *DetailsUnitSuite) TestDetails_AddFoldersDifferentServices() {
itemTime := time.Date(2022, 10, 21, 10, 0, 0, 0, time.UTC)
folderTimeOlderThanItem := time.Date(2022, 9, 21, 10, 0, 0, 0, time.UTC)
table := []struct {
name string
@ -395,9 +394,7 @@ func (suite *DetailsUnitSuite) TestDetails_AddFoldersDifferentServices() {
ShortRef: "sr1",
ParentRef: "pr1",
Info: details.ItemInfo{
Folder: &details.FolderInfo{
Modified: folderTimeOlderThanItem,
},
Folder: &details.FolderInfo{},
},
}