using System.Linq; using System.Threading; using System.Threading.Tasks; using FluentAssertions; using NUnit.Framework; using Strata.Analytics.Models.Workbooks; using Strata.Analytics.Biz.Workbooks.Services; using Strata.Analytics.Test.Unit.Biz.TestData; using Strata.CoreLib.Claims.Extensions; using Strata.Testing.Categories; namespace Strata.Analytics.Test.Unit.Biz.Workbooks { [NUnit.Framework.Category(TestCategory.Unit)] [Parallelizable(ParallelScope.Self)] public class WorkbookSourceCreateTest { [Test] public async Task Workbook_CurrentUserAssignedAsEditor_GivenUserIsNotStrata() { // arrange var claimsPrincipal = IClaimsPrincipalAccessorMock.GetClaimsPrincipalAccessor(); var dbContext = AnalyticsDbContextMock.GetAnalyticsDbContext(claimsPrincipal); var workbookService = new WorkbookService(dbContext, claimsPrincipal, AutoMapperMock.GetAutoMapper()); // act var workbook = await workbookService.CreateAsync(new WorkbookCreateInfo() { Name = "Workbook1" }, CancellationToken.None); // assert workbook.CreatedByUserGuid.Should().Be(claimsPrincipal.GetUserGuid()); workbook.CurrentUserRole.Should().Be(WorkbookRole.Editor); dbContext.WorkbookRoleAssignments.Should().HaveCount(1); dbContext.WorkbookRoleAssignments.FirstOrDefault().IdentityGuid.Should().Be(claimsPrincipal.GetUserGuid()); dbContext.WorkbookRoleAssignments.FirstOrDefault().Role.Should().Be(WorkbookRole.Editor); } [Test] public async Task Workbook_CurrentUserAssignedAsEditorButNoRoleAssignmentsCreated_GivenUserIsStrata() { // arrange var claimsPrincipal = IClaimsPrincipalAccessorMock.GetClaimsPrincipalAccessor(5, true); var dbContext = AnalyticsDbContextMock.GetAnalyticsDbContext(claimsPrincipal); var workbookService = new WorkbookService(dbContext, claimsPrincipal, AutoMapperMock.GetAutoMapper()); // act var workbook = await workbookService.CreateAsync(new WorkbookCreateInfo() { Name = "Workbook1" }, CancellationToken.None); // assert workbook.CreatedByUserGuid.Should().Be(claimsPrincipal.GetUserGuid()); workbook.CurrentUserRole.Should().Be(WorkbookRole.Editor); dbContext.WorkbookRoleAssignments.Should().HaveCount(0); } } }