Files
Jonathan Bourdon b66c10b681
Some checks failed
Backend CI/CD / build_and_deploy (push) Has been cancelled
Frontend CI/CD / build_and_deploy (push) Has been cancelled
Add calendar integrations and collaboration updates
2026-05-05 15:25:53 -04:00

88 lines
3.0 KiB
C#

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);
}
}