using Socialize.Api.Modules.CalendarIntegrations.Data; using Socialize.Api.Modules.CalendarIntegrations.Handlers; using Socialize.Api.Modules.CalendarIntegrations.Services; namespace Socialize.Tests.CalendarIntegrations; public class CalendarSourceRulesTests { [Theory] [InlineData(CalendarSourceScopes.Organization, true, false, true)] [InlineData(CalendarSourceScopes.Organization, false, true, false)] [InlineData(CalendarSourceScopes.Workspace, false, true, true)] [InlineData(CalendarSourceScopes.Workspace, true, false, false)] public void CanManageScope_uses_scope_specific_shared_calendar_permissions( string scope, bool canManageOrganizationCalendars, bool canManageWorkspaceCalendars, bool expected) { Guid currentUserId = Guid.NewGuid(); bool actual = CalendarSourceRules.CanManageScope( scope, canManageOrganizationCalendars, canManageWorkspaceCalendars, currentUserId, sourceUserId: null); Assert.Equal(expected, actual); } [Fact] public void CanManageScope_allows_only_owner_for_user_sources() { Guid currentUserId = Guid.NewGuid(); Assert.True(CalendarSourceRules.CanManageScope( CalendarSourceScopes.User, canManageOrganizationCalendars: false, canManageWorkspaceCalendars: false, currentUserId, currentUserId)); Assert.False(CalendarSourceRules.CanManageScope( CalendarSourceScopes.User, canManageOrganizationCalendars: true, canManageWorkspaceCalendars: true, currentUserId, Guid.NewGuid())); } [Fact] public void Workspace_context_marks_inherited_organization_sources_read_only() { Guid organizationId = Guid.NewGuid(); CalendarSource organizationSource = new() { Id = Guid.NewGuid(), Scope = CalendarSourceScopes.Organization, OrganizationId = organizationId, DisplayTitle = "Public holidays", Color = "#2F80ED", Category = "public-holiday", InheritanceMode = CalendarSourceInheritanceModes.Required, }; CalendarSource workspaceSource = new() { Id = Guid.NewGuid(), Scope = CalendarSourceScopes.Workspace, WorkspaceId = Guid.NewGuid(), DisplayTitle = "Campaign moments", Color = "#27AE60", Category = "marketing-moment", }; CalendarSourceDto inheritedDto = CalendarSourceDto.FromSource( organizationSource, CalendarSourceRules.IsInheritedOrganizationSource(organizationSource, organizationId)); CalendarSourceDto workspaceDto = CalendarSourceDto.FromSource( workspaceSource, CalendarSourceRules.IsInheritedOrganizationSource(workspaceSource, organizationId)); Assert.True(inheritedDto.IsReadOnly); Assert.False(workspaceDto.IsReadOnly); } }