mirror of
https://github.com/opengram-server/opengram.git
synced 2026-07-19 04:00:18 +03:00
Initial commit
This commit is contained in:
+214
@@ -0,0 +1,214 @@
|
||||
//using EventFlow.Extensions;
|
||||
//using Microsoft.Extensions.DependencyInjection;
|
||||
//using MyTelegram.Domain.Aggregates.Channel;
|
||||
//using MyTelegram.Domain.Aggregates.Messaging;
|
||||
//using MyTelegram.Domain.Aggregates.User;
|
||||
//using MyTelegram.Domain.Commands.Channel;
|
||||
//using MyTelegram.Domain.Commands.Messaging;
|
||||
//using MyTelegram.Domain.Commands.User;
|
||||
//using MyTelegram.Queries;
|
||||
//using MyTelegram.QueryHandlers.InMemory;
|
||||
//using MyTelegram.ReadModel.InMemory;
|
||||
//using MyTelegram.TestBase;
|
||||
//using Shouldly;
|
||||
//using System;
|
||||
//using System.Collections.Generic;
|
||||
//using System.Linq;
|
||||
//using System.Threading.Tasks;
|
||||
//using MyTelegram.Domain.Aggregates.Temp;
|
||||
//using Xunit;
|
||||
|
||||
//namespace MyTelegram.Domain.IntegrationTests.Aggregates.Sagas;
|
||||
|
||||
//public class MessageSagaIntegrationTests : IntegrationTest
|
||||
//{
|
||||
// [Fact]
|
||||
// public async Task SendMessage_To_UserPeer_Test()
|
||||
// {
|
||||
// var senderPeerId = 1;
|
||||
// var recipientPeerId = 2;
|
||||
// var message = A<string>();
|
||||
// await CreateUserAsync(senderPeerId);
|
||||
// await CreateUserAsync(recipientPeerId);
|
||||
|
||||
// await SendMessageToPeerAsync(senderPeerId.ToUserPeer(), recipientPeerId.ToUserPeer(), message);
|
||||
|
||||
// var outboxMessageReadModel = await GetLatestMessageAsync(senderPeerId);
|
||||
// var inboxMessageReadModel = await GetLatestMessageAsync(recipientPeerId);
|
||||
// outboxMessageReadModel.Message.ShouldBe(message);
|
||||
// outboxMessageReadModel.Out.ShouldBeTrue();
|
||||
// inboxMessageReadModel.Message.ShouldBe(message);
|
||||
// inboxMessageReadModel.Out.ShouldBeFalse();
|
||||
// }
|
||||
|
||||
// [Fact]
|
||||
// public async Task SendMessage_To_ChatPeer_Test()
|
||||
// {
|
||||
// var senderPeerId = 1;
|
||||
// var recipientPeerId = 2L;
|
||||
// var message = A<string>();
|
||||
// var chatId = MyTelegramConsts.ChatIdInitId + 1;
|
||||
// await CreateUserAsync(senderPeerId);
|
||||
// await CreateUserAsync(recipientPeerId);
|
||||
// await CreateChatAsync(chatId, senderPeerId, new[] { recipientPeerId });
|
||||
|
||||
// await SendMessageToPeerAsync(senderPeerId.ToUserPeer(), chatId.ToChatPeer(), message);
|
||||
|
||||
// var member1MessageReadModel = await GetLatestMessageAsync(senderPeerId);
|
||||
// var member2MessageReadModel = await GetLatestMessageAsync(recipientPeerId);
|
||||
// member1MessageReadModel.Out.ShouldBeTrue();
|
||||
// member1MessageReadModel.SenderPeerId.ShouldBe(senderPeerId);
|
||||
// member1MessageReadModel.ToPeerId.ShouldBe(chatId);
|
||||
// member1MessageReadModel.Message.ShouldBe(message);
|
||||
// member2MessageReadModel.Out.ShouldBeFalse();
|
||||
// member2MessageReadModel.Message.ShouldBe(message);
|
||||
// member2MessageReadModel.SenderPeerId.ShouldBe(senderPeerId);
|
||||
// member2MessageReadModel.ToPeerId.ShouldBe(chatId);
|
||||
// }
|
||||
|
||||
// [Fact]
|
||||
// public async Task SendMessage_To_ChannelPeer_Test()
|
||||
// {
|
||||
// // Arrange
|
||||
// var senderPeerId = 1;
|
||||
// var recipientPeerId = 2;
|
||||
// var message = A<string>();
|
||||
// var channelId = MyTelegramConsts.ChannelInitId + 1;
|
||||
// await CreateUserAsync(senderPeerId);
|
||||
// await CreateUserAsync(recipientPeerId);
|
||||
// await CreateChannelAsync(channelId, senderPeerId);
|
||||
// await AddChannelMemberAsync(channelId, recipientPeerId, senderPeerId);
|
||||
|
||||
// // Act
|
||||
// await SendMessageToPeerAsync(senderPeerId.ToUserPeer(), channelId.ToChannelPeer(), message);
|
||||
|
||||
// // Assert
|
||||
// var readModel = await GetLatestMessageAsync(channelId);
|
||||
// readModel.Message.ShouldBe(message);
|
||||
// readModel.Out.ShouldBeTrue();
|
||||
// readModel.OwnerPeerId.ShouldBe(channelId);
|
||||
// readModel.SenderPeerId.ShouldBe(senderPeerId);
|
||||
// var channelReadModel = await QueryProcessor.ProcessAsync(new GetChannelByIdQuery(channelId), default)
|
||||
// ;
|
||||
// channelReadModel.TopMessageId.ShouldBe(readModel.MessageId);
|
||||
// }
|
||||
|
||||
// private async Task<IMessageReadModel> GetLatestMessageAsync(long ownerPeerId)
|
||||
// {
|
||||
// var readModels = await QueryProcessor.ProcessAsync(new GetMessagesQuery(ownerPeerId,
|
||||
// MessageType.Text,
|
||||
// null,
|
||||
// null,
|
||||
// 0,
|
||||
// 10,
|
||||
// null,
|
||||
// null,
|
||||
// 0,
|
||||
// 0), default);
|
||||
|
||||
// var maxMessageId = readModels.Max(p => p.MessageId);
|
||||
// return readModels.Single(p => p.MessageId == maxMessageId);
|
||||
// }
|
||||
|
||||
// private Task AddChannelMemberAsync(long channelId,
|
||||
// long memberPeerId,
|
||||
// long inviterId)
|
||||
// {
|
||||
// var command = new StartInviteToChannelCommand(TempId.New,
|
||||
// A<RequestInfo>() with { UserId = inviterId },
|
||||
// channelId,
|
||||
// true,
|
||||
// true,
|
||||
// inviterId,
|
||||
// new[] { memberPeerId },
|
||||
// Array.Empty<long>(),
|
||||
// //A<int>(),
|
||||
// //A<long>(),
|
||||
// Array.Empty<long>(),
|
||||
// A<int>(),
|
||||
// A<long>(),
|
||||
// ChatJoinType.InvitedByAdmin);
|
||||
// return CommandBus.PublishAsync(command, default);
|
||||
// }
|
||||
|
||||
// private Task SendMessageToPeerAsync(Peer senderPeer, Peer toPeer, string message)
|
||||
// {
|
||||
// var randomId = A<long>();
|
||||
// var messageId = A<int>();
|
||||
// var aggregateId = MessageId.Create(senderPeer.PeerId, messageId);
|
||||
// var item = new MessageItem(
|
||||
// toPeer.PeerType == PeerType.Channel ? toPeer : senderPeer,
|
||||
// toPeer,
|
||||
// senderPeer,
|
||||
// senderPeer.PeerId,
|
||||
// messageId,
|
||||
// message,
|
||||
// A<int>(),
|
||||
// randomId,
|
||||
// true);
|
||||
// var command = new CreateOutboxMessageCommand(aggregateId, A<RequestInfo>() with { UserId = senderPeer.PeerId }, item);
|
||||
// return CommandBus.PublishAsync(command, default);
|
||||
// }
|
||||
|
||||
// private Task CreateChannelAsync(long channelId, long creatorId)
|
||||
// {
|
||||
// var title = A<string>();
|
||||
// var command = new CreateChannelCommand(ChannelId.Create(channelId),
|
||||
// A<RequestInfo>() with { UserId = creatorId },
|
||||
// channelId,
|
||||
// creatorId,
|
||||
// title,
|
||||
// true,
|
||||
// false,
|
||||
// null,
|
||||
// null,
|
||||
// 0,
|
||||
// A<int>(),
|
||||
// A<long>(),
|
||||
// A<string>(),
|
||||
// 0,
|
||||
// false,
|
||||
// null, null, null
|
||||
// );
|
||||
// return CommandBus.PublishAsync(command, default);
|
||||
// }
|
||||
|
||||
// private Task CreateChatAsync(long chatId, long creatorId, IReadOnlyList<long> memberUidList)
|
||||
// {
|
||||
// var command = new CreateChatCommand(ChatId.Create(chatId),
|
||||
// A<RequestInfo>() with { UserId = creatorId },
|
||||
// chatId,
|
||||
// creatorId,
|
||||
// A<string>(),
|
||||
// memberUidList,
|
||||
// A<int>(),
|
||||
// A<long>(),
|
||||
// A<string>());
|
||||
// return CommandBus.PublishAsync(command, default);
|
||||
// }
|
||||
|
||||
// private Task CreateUserAsync(long userId)
|
||||
// {
|
||||
// var command = new CreateUserCommand(UserId.Create(userId),
|
||||
// A<RequestInfo>(),
|
||||
// userId,
|
||||
// 1,
|
||||
// userId.ToString(),
|
||||
// userId.ToString(),
|
||||
// null);
|
||||
// return CommandBus.PublishAsync(command, default);
|
||||
// }
|
||||
|
||||
// protected override IServiceProvider Configure(IEventFlowOptions options)
|
||||
// {
|
||||
// options.AddDefaults(typeof(MyTelegram.Domain.IChatInviteLinkHelper).Assembly);
|
||||
// options.ServiceCollection.AddMyEventFlow();
|
||||
// options.ServiceCollection.AddSingleton<IIdGenerator, SimpleInMemoryIdGenerator>();
|
||||
// options.AddInMemoryReadModel();
|
||||
// options.AddInMemoryQueryHandlers();
|
||||
|
||||
// var serviceProvider = options.ServiceCollection.BuildServiceProvider();
|
||||
|
||||
// return serviceProvider;
|
||||
// }
|
||||
//}
|
||||
@@ -0,0 +1,3 @@
|
||||
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
|
||||
<ConfigureAwait />
|
||||
</Weavers>
|
||||
@@ -0,0 +1,30 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
|
||||
<!-- This file was generated by Fody. Manual changes to this file will be lost when your project is rebuilt. -->
|
||||
<xs:element name="Weavers">
|
||||
<xs:complexType>
|
||||
<xs:all>
|
||||
<xs:element name="ConfigureAwait" minOccurs="0" maxOccurs="1">
|
||||
<xs:complexType>
|
||||
<xs:attribute name="ContinueOnCapturedContext" type="xs:boolean" />
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:all>
|
||||
<xs:attribute name="VerifyAssembly" type="xs:boolean">
|
||||
<xs:annotation>
|
||||
<xs:documentation>'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="VerifyIgnoreCodes" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>A comma-separated list of error codes that can be safely ignored in assembly verification.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="GenerateXsd" type="xs:boolean">
|
||||
<xs:annotation>
|
||||
<xs:documentation>'false' to turn off automatic generation of the XML Schema file.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:schema>
|
||||
@@ -0,0 +1,4 @@
|
||||
// Global using directives
|
||||
|
||||
global using EventFlow;
|
||||
global using MyTelegram.ReadModel.Interfaces;
|
||||
+36
@@ -0,0 +1,36 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net9.0</TargetFramework>
|
||||
<Nullable>enable</Nullable>
|
||||
|
||||
<IsPackable>false</IsPackable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" />
|
||||
<PackageReference Include="Shouldly" />
|
||||
<PackageReference Include="xunit" />
|
||||
<PackageReference Include="xunit.runner.visualstudio">
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="coverlet.collector">
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
</PackageReference>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\src\MyTelegram.QueryHandlers.InMemory\MyTelegram.QueryHandlers.InMemory.csproj" />
|
||||
<ProjectReference Include="..\..\src\MyTelegram.TestBase\MyTelegram.TestBase.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Update="Fody">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
|
||||
</PackageReference>
|
||||
</ItemGroup>
|
||||
|
||||
|
||||
</Project>
|
||||
Reference in New Issue
Block a user