Skip to content

Commit 945e13f

Browse files
Improve path items sorting (#72)
1 parent 00b186b commit 945e13f

8 files changed

Lines changed: 80 additions & 6 deletions

File tree

src/ByteSync.Client/Business/Profiles/LocalSessionProfileDetails.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,5 +23,5 @@ public override string ProfileId
2323

2424
public LocalSessionProfileOptions Options { get; set; }
2525

26-
public List<PathItem> PathItems { get; set; }
26+
public IList<PathItem> PathItems { get; set; }
2727
}

src/ByteSync.Client/Business/Sessions/RunSessionInfos/RunLocalSessionProfileInfo.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ public RunLocalSessionProfileInfo(LocalSessionProfile cloudSessionProfile,
1919

2020
public LocalSessionProfileDetails ProfileDetails { get; set; }
2121

22-
public List<PathItem> GetMyPathItems()
22+
public IList<PathItem> GetMyPathItems()
2323
{
2424
return ProfileDetails.PathItems;
2525
}

src/ByteSync.Client/Factories/InventoryBuilderFactory.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ public IInventoryBuilder CreateInventoryBuilder()
3131

3232
var sessionMember = sessionMemberRepository.GetCurrentSessionMember();
3333
var cloudSessionSettings = sessionService.CurrentSessionSettings!;
34-
var myPathItems = pathItemRepository.CurrentMemberPathItems.Items.ToList();
34+
var myPathItems = pathItemRepository.SortedCurrentMemberPathItems;
3535

3636
var inventoryBuilder = _context.Resolve<IInventoryBuilder>(
3737
new TypedParameter(typeof(SessionMemberInfo), sessionMember),

src/ByteSync.Client/Interfaces/Repositories/IPathItemRepository.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,6 @@ namespace ByteSync.Interfaces.Repositories;
66
public interface IPathItemRepository : IBaseSourceCacheRepository<PathItem, string>
77
{
88
public IObservableCache<PathItem, string> CurrentMemberPathItems { get; }
9+
10+
public IList<PathItem> SortedCurrentMemberPathItems { get; }
911
}

src/ByteSync.Client/Repositories/PathItemRepository.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,4 +23,12 @@ public PathItemRepository(IEnvironmentService environmentService, ISessionInvali
2323
protected override string KeySelector(PathItem pathItem) => pathItem.Key;
2424

2525
public IObservableCache<PathItem, string> CurrentMemberPathItems { get; }
26+
27+
public IList<PathItem> SortedCurrentMemberPathItems
28+
{
29+
get
30+
{
31+
return CurrentMemberPathItems.Items.OrderBy(pi => pi.Code).ToList();
32+
}
33+
}
2634
}

src/ByteSync.Client/Services/Inventories/DataInventoryStarter.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -250,7 +250,7 @@ private void FinalizeSessionSettings(SessionSettings sessionSettings)
250250
{
251251
if (session is LocalSession)
252252
{
253-
var pathItems = _pathItemRepository.CurrentMemberPathItems.Items.ToList();
253+
var pathItems = _pathItemRepository.SortedCurrentMemberPathItems;
254254
if (pathItems.Count < 2)
255255
{
256256
return LogAndBuildStartInventoryResult(session, StartInventoryStatuses.LessThan2DataSources);

src/ByteSync.Client/Services/Profiles/SessionProfileManager.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -395,8 +395,7 @@ private LocalSessionProfileDetails BuildLocalSessionProfileDetails(string profil
395395
localSessionProfileDetails.CreationDatetime = DateTime.Now;
396396
localSessionProfileDetails.CreatedWithVersion = _connectionService.CurrentEndPoint!.Version;
397397
localSessionProfileDetails.Options = localSessionProfileOptions;
398-
localSessionProfileDetails.PathItems = _pathItemRepository.CurrentMemberPathItems.Items
399-
.ToList();
398+
localSessionProfileDetails.PathItems = _pathItemRepository.SortedCurrentMemberPathItems;
400399

401400
var synchronizationRules = _synchronizationRulesConverter.ConvertLooseSynchronizationRules(
402401
_synchronizationRuleRepository.Elements.ToList());
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
using Autofac;
2+
using ByteSync.Business.Inventories;
3+
using ByteSync.Business.PathItems;
4+
using ByteSync.Business.SessionMembers;
5+
using ByteSync.Business.Sessions;
6+
using ByteSync.Common.Business.Misc;
7+
using ByteSync.Factories;
8+
using ByteSync.Interfaces.Controls.Applications;
9+
using ByteSync.Interfaces.Controls.Inventories;
10+
using ByteSync.Interfaces.Repositories;
11+
using ByteSync.Interfaces.Services.Sessions;
12+
using ByteSync.TestsCommon;
13+
using FluentAssertions;
14+
using Moq;
15+
16+
namespace ByteSync.Client.IntegrationTests.Factories;
17+
18+
public class TestInventoryBuilderFactory : IntegrationTest
19+
{
20+
private InventoryBuilderFactory _inventoryBuilderFactor;
21+
22+
[SetUp]
23+
public void Setup()
24+
{
25+
RegisterType<InventoryBuilderFactory>();
26+
BuildMoqContainer();
27+
28+
_inventoryBuilderFactor = Container.Resolve<InventoryBuilderFactory>();
29+
}
30+
31+
[Test]
32+
public void CreateInventoryBuilder_ShouldBuildInventoryWithCorrectParts()
33+
{
34+
// Arrange
35+
var mockSessionMemberRepo = Container.Resolve<Mock<ISessionMemberRepository>>();
36+
var mockSessionService = Container.Resolve<Mock<ISessionService>>();
37+
var mockInventoryService = Container.Resolve<Mock<IInventoryService>>();
38+
var mockEnvironmentService = Container.Resolve<Mock<IEnvironmentService>>();
39+
var mockPathItemRepository = Container.Resolve<Mock<IPathItemRepository>>();
40+
41+
var fakeSessionMember = new SessionMemberInfo();
42+
var fakeSessionSettings = new SessionSettings();
43+
var fakeProcessData = new InventoryProcessData();
44+
var fakePlatform = OSPlatforms.Windows;
45+
var fakePathItems = new List<PathItem> { Mock.Of<PathItem>(), Mock.Of<PathItem>() };
46+
47+
mockSessionMemberRepo.Setup(r => r.GetCurrentSessionMember()).Returns(fakeSessionMember).Verifiable();
48+
mockSessionService.SetupGet(s => s.CurrentSessionSettings).Returns(fakeSessionSettings).Verifiable();
49+
mockInventoryService.SetupGet(s => s.InventoryProcessData).Returns(fakeProcessData).Verifiable();
50+
mockEnvironmentService.SetupGet(e => e.OSPlatform).Returns(fakePlatform).Verifiable();
51+
mockPathItemRepository.SetupGet(r => r.SortedCurrentMemberPathItems).Returns(fakePathItems).Verifiable();
52+
53+
// Act
54+
var inventoryBuilder = _inventoryBuilderFactor.CreateInventoryBuilder();
55+
56+
// Assert
57+
inventoryBuilder.Should().NotBeNull();
58+
59+
mockSessionMemberRepo.Verify();
60+
mockSessionService.Verify();
61+
mockInventoryService.Verify();
62+
mockEnvironmentService.Verify();
63+
mockPathItemRepository.Verify();
64+
}
65+
}

0 commit comments

Comments
 (0)