From e6db0a1efe4bb7c56906659c0168c4f21c24f2ff Mon Sep 17 00:00:00 2001 From: enisn Date: Wed, 20 Jan 2021 17:57:55 +0300 Subject: [PATCH] CmsKit - Add more test-cases for BlogPosts --- .../Volo/CmsKit/Admin/Blogs/BlogPostDto.cs | 12 +- .../Admin/Blogs/CreateUpdateBlogPostDto.cs | 8 +- .../Admin/Blogs/BlogPostAdminAppService.cs | 11 +- ...CmsKitAdminApplicationAutoMapperProfile.cs | 8 + .../Volo/CmsKit/Blogs/BlogPostConsts.cs | 4 +- .../Volo/CmsKit/Blogs/Blog.cs | 3 +- .../Volo/CmsKit/Blogs/BlogPost.cs | 4 +- .../Volo/CmsKit/Blogs/BlogPostManager.cs | 25 ++- .../BlogPostUrlSlugAlreadyExistException.cs | 6 +- .../CmsKitDbContextModelCreatingExtensions.cs | 2 + .../Blogs/BlogPostAdminAppService_Tests.cs | 199 ++++++++++++++++++ .../Data/BlogPostSample.png | Bin 0 -> 6932 bytes .../Volo.CmsKit.Application.Tests.csproj | 8 + .../CmsKitDataSeedContributor.cs | 2 +- .../Volo.CmsKit.TestBase/CmsKitTestData.cs | 1 + 15 files changed, 263 insertions(+), 30 deletions(-) create mode 100644 modules/cms-kit/test/Volo.CmsKit.Application.Tests/Data/BlogPostSample.png diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/BlogPostDto.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/BlogPostDto.cs index 823efdfc4e..2c3ff84d48 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/BlogPostDto.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/BlogPostDto.cs @@ -5,16 +5,10 @@ namespace Volo.CmsKit.Admin.Blogs { public class BlogPostDto : EntityDto { - public Guid BlogId { get; protected set; } + public Guid BlogId { get; set; } - public string Title { get; protected set; } + public string Title { get; set; } - public string UrlSlug { get; protected set; } - - public string CoverImageUrl { get; set; } - - public bool IsPublished { get; protected set; } - - public DateTime? PublishDate { get; protected set; } + public string UrlSlug { get; set; } } } diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/CreateUpdateBlogPostDto.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/CreateUpdateBlogPostDto.cs index b013a9d397..09d881189b 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/CreateUpdateBlogPostDto.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/CreateUpdateBlogPostDto.cs @@ -4,12 +4,12 @@ namespace Volo.CmsKit.Admin.Blogs { public class CreateUpdateBlogPostDto { - public Guid BlogId { get; protected set; } + public Guid BlogId { get; set; } - public string Title { get; protected set; } + public string Title { get; set; } - public string UrlSlug { get; protected set; } + public string UrlSlug { get; set; } - public string CoverImageUrl { get; set; } + public string ShortDescription { get; set; } } } diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Blogs/BlogPostAdminAppService.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Blogs/BlogPostAdminAppService.cs index c714c6482b..36ded2ba1f 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Blogs/BlogPostAdminAppService.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Blogs/BlogPostAdminAppService.cs @@ -1,8 +1,5 @@ using Microsoft.AspNetCore.Authorization; using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; using System.Threading.Tasks; using Volo.Abp.Application.Dtos; using Volo.Abp.Application.Services; @@ -34,10 +31,12 @@ namespace Volo.CmsKit.Admin.Blogs public BlogPostAdminAppService( IRepository repository, IBlogPostManager blogPostManager, - IBlogPostRepository blogPostRepository) : base(repository) + IBlogPostRepository blogPostRepository, + IBlobContainer blobContainer) : base(repository) { BlogPostManager = blogPostManager; BlogPostRepository = blogPostRepository; + BlobContainer = blobContainer; GetListPolicyName = CmsKitAdminPermissions.BlogPosts.Default; GetPolicyName = CmsKitAdminPermissions.BlogPosts.Default; @@ -63,7 +62,7 @@ namespace Volo.CmsKit.Admin.Blogs input.BlogId, input.Title, input.UrlSlug, - input.CoverImageUrl)); + input.ShortDescription)); return MapToGetOutputDto(entity); } @@ -78,6 +77,8 @@ namespace Volo.CmsKit.Admin.Blogs MapToEntity(input, entity); + await BlogPostManager.UpdateAsync(entity); + return MapToGetOutputDto(entity); } diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/CmsKitAdminApplicationAutoMapperProfile.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/CmsKitAdminApplicationAutoMapperProfile.cs index 1524fe6299..e682e80d30 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/CmsKitAdminApplicationAutoMapperProfile.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/CmsKitAdminApplicationAutoMapperProfile.cs @@ -1,6 +1,8 @@ using AutoMapper; +using Volo.CmsKit.Admin.Blogs; using Volo.CmsKit.Admin.Contents; using Volo.CmsKit.Admin.Pages; +using Volo.CmsKit.Blogs; using Volo.CmsKit.Contents; using Volo.CmsKit.Pages; @@ -16,6 +18,12 @@ namespace Volo.CmsKit.Admin CreateMap(MemberList.Destination); CreateMap(MemberList.Source); CreateMap(MemberList.Source); + + CreateMap(MemberList.Destination); + CreateMap(MemberList.Source); + + CreateMap(MemberList.Destination) + .ReverseMap(); } } } diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Blogs/BlogPostConsts.cs b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Blogs/BlogPostConsts.cs index a4388aa945..607effcebd 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Blogs/BlogPostConsts.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Blogs/BlogPostConsts.cs @@ -2,10 +2,12 @@ { public static class BlogPostConsts { - public static int MaxTitleLength { get; set; } = 256; + public static int MaxTitleLength { get; set; } = 64; public static int MaxUrlSlugLength { get; set; } = 256; public static int MinUrlSlugLength { get; set; } = 2; + + public static int MaxShortDescriptionLength { get; set; } = 256; } } diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Blogs/Blog.cs b/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Blogs/Blog.cs index 9ae19ff512..0ec587f52e 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Blogs/Blog.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Blogs/Blog.cs @@ -9,8 +9,9 @@ namespace Volo.CmsKit.Blogs public class Blog : FullAuditedAggregateRoot, IMultiTenant { public Blog( + Guid id, [NotNull] string name, - [CanBeNull] Guid? tenantId = null) + [CanBeNull] Guid? tenantId = null) : base(id) { SetName(name); TenantId = tenantId; diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Blogs/BlogPost.cs b/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Blogs/BlogPost.cs index ac41adbe2a..62a73ec352 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Blogs/BlogPost.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Blogs/BlogPost.cs @@ -15,10 +15,10 @@ namespace Volo.CmsKit.Blogs public string Title { get; protected set; } - public string ShortDescription { get; set; } - public string UrlSlug { get; protected set; } + public string ShortDescription { get; set; } + public Guid? TenantId { get; } protected BlogPost() diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Blogs/BlogPostManager.cs b/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Blogs/BlogPostManager.cs index 2b139fbdb6..6bbb772072 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Blogs/BlogPostManager.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Blogs/BlogPostManager.cs @@ -9,33 +9,46 @@ namespace Volo.CmsKit.Blogs { public class BlogPostManager : DomainService, IBlogPostManager { - protected readonly IBlogPostRepository _blogPostRepository; + protected readonly IBlogPostRepository blogPostRepository; + protected readonly IBlogRepository blogRepository; - public BlogPostManager(IBlogPostRepository blogPostRepository) + public BlogPostManager( + IBlogPostRepository blogPostRepository, + IBlogRepository blogRepository) { - _blogPostRepository = blogPostRepository; + this.blogPostRepository = blogPostRepository; + this.blogRepository = blogRepository; } public async Task CreateAsync(BlogPost blogPost) { + await CheckBlogExistenceAsync(blogPost.BlogId); + await CheckUrlSlugExistenceAsync(blogPost.UrlSlug); - return await _blogPostRepository.InsertAsync(blogPost); + return await blogPostRepository.InsertAsync(blogPost); } public async Task UpdateAsync(BlogPost blogPost) { + await CheckBlogExistenceAsync(blogPost.BlogId); + await CheckUrlSlugExistenceAsync(blogPost.UrlSlug); - await _blogPostRepository.UpdateAsync(blogPost); + await blogPostRepository.UpdateAsync(blogPost); } private async Task CheckUrlSlugExistenceAsync(string urlSlug) { - if (await _blogPostRepository.SlugExistsAsync(urlSlug)) + if (await blogPostRepository.SlugExistsAsync(urlSlug)) { throw new BlogPostUrlSlugAlreadyExistException(urlSlug); } } + + private async Task CheckBlogExistenceAsync(Guid blogId) + { + await blogRepository.GetAsync(blogId); + } } } diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Blogs/BlogPostUrlSlugAlreadyExistException.cs b/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Blogs/BlogPostUrlSlugAlreadyExistException.cs index 22816c5d7e..c21ccfa8e7 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Blogs/BlogPostUrlSlugAlreadyExistException.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Blogs/BlogPostUrlSlugAlreadyExistException.cs @@ -19,9 +19,13 @@ namespace Volo.CmsKit.Blogs public BlogPostUrlSlugAlreadyExistException(string urlSlug) { + UrlSlug = urlSlug; + Code = CmsKitErrorCodes.Blogs.UrlSlugAlreadyExist; - WithData(nameof(BlogPost.UrlSlug), urlSlug); + WithData(nameof(UrlSlug), UrlSlug); } + + public string UrlSlug { get; } } } diff --git a/modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/EntityFrameworkCore/CmsKitDbContextModelCreatingExtensions.cs b/modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/EntityFrameworkCore/CmsKitDbContextModelCreatingExtensions.cs index 3322253205..c868bde907 100644 --- a/modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/EntityFrameworkCore/CmsKitDbContextModelCreatingExtensions.cs +++ b/modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/EntityFrameworkCore/CmsKitDbContextModelCreatingExtensions.cs @@ -229,6 +229,8 @@ namespace Volo.CmsKit.EntityFrameworkCore b.Property(p => p.UrlSlug).IsRequired().HasMaxLength(BlogPostConsts.MaxUrlSlugLength); + b.Property(p => p.ShortDescription).HasMaxLength(BlogPostConsts.MaxShortDescriptionLength); + b.HasIndex(x => x.UrlSlug); }); } diff --git a/modules/cms-kit/test/Volo.CmsKit.Application.Tests/Blogs/BlogPostAdminAppService_Tests.cs b/modules/cms-kit/test/Volo.CmsKit.Application.Tests/Blogs/BlogPostAdminAppService_Tests.cs index f0b3d595f4..07897d0d5b 100644 --- a/modules/cms-kit/test/Volo.CmsKit.Application.Tests/Blogs/BlogPostAdminAppService_Tests.cs +++ b/modules/cms-kit/test/Volo.CmsKit.Application.Tests/Blogs/BlogPostAdminAppService_Tests.cs @@ -1,16 +1,215 @@ using System; +using System.IO; +using System.Threading.Tasks; +using Castle.DynamicProxy.Generators; using Shouldly; +using Volo.Abp.Application.Dtos; +using Volo.Abp.Content; +using Volo.Abp.Domain.Entities; using Volo.CmsKit.Admin.Blogs; +using Xunit; namespace Volo.CmsKit.Blogs { public class BlogPostAdminAppService_Tests : CmsKitApplicationTestBase { private readonly IBlogPostAdminAppService blogPostAdminAppService; + private readonly CmsKitTestData cmsKitTestData; + private readonly IBlogPostRepository blogPostRepository; public BlogPostAdminAppService_Tests() { blogPostAdminAppService = GetRequiredService(); + cmsKitTestData = GetRequiredService(); + blogPostRepository = GetRequiredService(); } + + [Fact] + public async Task CreateAsync_ShouldWorkProperly_WithCorrectData() + { + var title = "My awesome new Post"; + var urlSlug = "my-awesome-new-post"; + var shortDescription = "This blog is all about awesomeness 🤗!"; + + var created = await blogPostAdminAppService.CreateAsync(new CreateUpdateBlogPostDto + { + BlogId = cmsKitTestData.Blog_Id, + Title = title, + UrlSlug = urlSlug, + ShortDescription = shortDescription + }); + + created.Id.ShouldNotBe(Guid.Empty); + + var blogPost = await blogPostRepository.GetAsync(created.Id); + + blogPost.Title.ShouldBe(title); + blogPost.UrlSlug.ShouldBe(urlSlug); + blogPost.ShortDescription.ShouldBe(shortDescription); + } + + [Fact] + public async Task CreateAsync_ShouldThrowException_WithNonExistingBlogId() + { + var title = "Another My Awesome New Post"; + var urlSlug = "another-my-awesome-new-post"; + var shortDescription = "This blog is all about awesomeness 🤗!"; + + var dto = new CreateUpdateBlogPostDto + { + // Non-existing Id + BlogId = Guid.NewGuid(), + Title = title, + UrlSlug = urlSlug, + ShortDescription = shortDescription + }; + + var exception = await Should.ThrowAsync(async () => + await blogPostAdminAppService.CreateAsync(dto)); + + exception.EntityType.ShouldBe(typeof(Blog)); + } + + [Fact] + public async Task GetAsync_ShouldWorkProperly_WithExistingId() + { + var blogPost = await blogPostAdminAppService.GetAsync(cmsKitTestData.BlogPost_1_Id); + + blogPost.Title.ShouldBe(cmsKitTestData.BlogPost_1_Title); + blogPost.UrlSlug.ShouldBe(cmsKitTestData.BlogPost_1_UrlSlug); + } + + [Fact] + public async Task GetAsync_ShouldThrowException_WithNonExistingId() + { + var nonExistingId = Guid.NewGuid(); + var exception = await Should.ThrowAsync(async () => + await blogPostAdminAppService.GetAsync(nonExistingId)); + + exception.EntityType.ShouldBe(typeof(BlogPost)); + exception.Id.ShouldBe(nonExistingId); + } + + [Fact] + public async Task GetByUrlSlugAsync_ShouldWorkProperly_WithExistingUrlSlug() + { + var blogPost = await blogPostAdminAppService.GetByUrlSlugAsync(cmsKitTestData.BlogPost_1_UrlSlug); + + blogPost.Id.ShouldBe(cmsKitTestData.BlogPost_1_Id); + blogPost.Title.ShouldBe(cmsKitTestData.BlogPost_1_Title); + } + + [Fact] + public async Task GetByUrlSlugAsync_ShouldThrowException_WithNonExistingUrlSlug() + { + var nonExistingUrlSlug = "any-other-url"; + var exception = await Should.ThrowAsync(async () => + await blogPostAdminAppService.GetByUrlSlugAsync(cmsKitTestData.Page_1_Url)); + + exception.EntityType.ShouldBe(typeof(BlogPost)); + } + + [Fact] + public async Task GetListAsync_ShouldWorkProperly_WithDefaultParameters() + { + var list = await blogPostAdminAppService.GetListAsync(new PagedAndSortedResultRequestDto()); + + list.ShouldNotBeNull(); + list.TotalCount.ShouldBe(2); + list.Items.ShouldNotBeEmpty(); + list.Items.Count.ShouldBe(2); + } + + [Fact] + public async Task UpdateAsync_ShouldWorkProperly_WithRegularDatas() + { + var shortDescription = "Another short description"; + var title = "[Solved] Another Blog Post"; + var urlSlug = "another-short-blog-post"; + + await blogPostAdminAppService.UpdateAsync(cmsKitTestData.BlogPost_2_Id, new CreateUpdateBlogPostDto + { + BlogId = cmsKitTestData.Blog_Id, + ShortDescription = shortDescription, + Title = title, + UrlSlug = urlSlug, + }); + + var blogPost = await blogPostRepository.GetAsync(cmsKitTestData.BlogPost_2_Id); + + blogPost.Title.ShouldBe(title); + blogPost.ShortDescription.ShouldBe(shortDescription); + blogPost.UrlSlug.ShouldBe(urlSlug); + } + + [Fact] + public async Task UpdateAsync_ShouldThrowException_WhileChangingWithNonExistingBlogId() + { + var nonExistingId = Guid.NewGuid(); + + var dto = new CreateUpdateBlogPostDto + { + BlogId = nonExistingId, + Title = cmsKitTestData.Page_2_Title, + UrlSlug = cmsKitTestData.BlogPost_2_UrlSlug + }; + + var exception = await Should.ThrowAsync(async () => + await blogPostAdminAppService.UpdateAsync(cmsKitTestData.BlogPost_2_Id, dto)); + + exception.EntityType.ShouldBe(typeof(Blog)); + exception.Id.ShouldBe(nonExistingId); + } + + [Fact] + public async Task UpdateAsync_ShouldThrowException_WhileUpdatingWithAlreadyExistingSlug() + { + var dto = new CreateUpdateBlogPostDto + { + BlogId = cmsKitTestData.Blog_Id, + Title = "Some new title", + UrlSlug = cmsKitTestData.BlogPost_1_UrlSlug + }; + + var exception = await Should.ThrowAsync(async () => + await blogPostAdminAppService.UpdateAsync(cmsKitTestData.BlogPost_2_Id, dto)); + + exception.UrlSlug.ShouldBe(cmsKitTestData.BlogPost_1_UrlSlug); + } + + [Fact] + public async Task DeleteAsync_ShouldWorkProperly_WithExistingId() + { + await blogPostAdminAppService.DeleteAsync(cmsKitTestData.Page_2_Id); + + var exception = await Should.ThrowAsync(async () => + await blogPostRepository.GetAsync(cmsKitTestData.Page_2_Id)); + + exception.EntityType.ShouldBe(typeof(BlogPost)); + exception.Id.ShouldBe(cmsKitTestData.Page_2_Id); + } + + [Fact] + public async Task SetCoverImage_ShouldNotThrowException_WithCorrectData() + { + using (var imageStream = GetSampleImageStream()) + { + await WithUnitOfWorkAsync(async () => + { + await blogPostAdminAppService.SetCoverImageAsync( + cmsKitTestData.BlogPost_2_Id, + new RemoteStreamContent(imageStream)); + }); + } + } + + private Stream GetSampleImageStream() + { + var assembly = GetType().Assembly; + var resourceName = "Volo.CmsKit.Data.BlogPostSample.png"; + + return assembly.GetManifestResourceStream(resourceName); + } + // SetCoverImage } } diff --git a/modules/cms-kit/test/Volo.CmsKit.Application.Tests/Data/BlogPostSample.png b/modules/cms-kit/test/Volo.CmsKit.Application.Tests/Data/BlogPostSample.png new file mode 100644 index 0000000000000000000000000000000000000000..117bc57c3d3730c6ddc12346bb60c351716520c6 GIT binary patch literal 6932 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 arvC?iPWR;4_05R@0000Volo.CmsKit + + + + + + + + diff --git a/modules/cms-kit/test/Volo.CmsKit.TestBase/CmsKitDataSeedContributor.cs b/modules/cms-kit/test/Volo.CmsKit.TestBase/CmsKitDataSeedContributor.cs index 66489f80e8..42b0605e5d 100644 --- a/modules/cms-kit/test/Volo.CmsKit.TestBase/CmsKitDataSeedContributor.cs +++ b/modules/cms-kit/test/Volo.CmsKit.TestBase/CmsKitDataSeedContributor.cs @@ -276,7 +276,7 @@ namespace Volo.CmsKit private async Task SeedBlogsAsync() { - var blog = await _blogRepository.InsertAsync(new Blog(_cmsKitTestData.BlogName)); + var blog = await _blogRepository.InsertAsync(new Blog(_cmsKitTestData.Blog_Id, _cmsKitTestData.BlogName)); await _blogPostRepository.InsertAsync(new BlogPost(_cmsKitTestData.BlogPost_1_Id, blog.Id, _cmsKitTestData.BlogPost_1_Title, _cmsKitTestData.BlogPost_1_UrlSlug, "Short desc 1")); diff --git a/modules/cms-kit/test/Volo.CmsKit.TestBase/CmsKitTestData.cs b/modules/cms-kit/test/Volo.CmsKit.TestBase/CmsKitTestData.cs index 2da69a5ac6..117cf49b11 100644 --- a/modules/cms-kit/test/Volo.CmsKit.TestBase/CmsKitTestData.cs +++ b/modules/cms-kit/test/Volo.CmsKit.TestBase/CmsKitTestData.cs @@ -7,6 +7,7 @@ namespace Volo.CmsKit public class CmsKitTestData : ISingletonDependency { public Guid User1Id { get; } = Guid.NewGuid(); + public string User1UserName => "fake.user"; public Guid User2Id { get; } = Guid.NewGuid();