コード例 #1
0
        public async Task HandlingCreateIpoCommand_ShouldThrowErrorIfMcScopeIsAcrossSystems()
        {
            var mcPkgDetails1 = new ProCoSysMcPkg {
                CommPkgNo = _commPkgNo, Description = "D1", Id = 1, McPkgNo = _mcPkgNo1, System = _system
            };
            var mcPkgDetails2 = new ProCoSysMcPkg {
                CommPkgNo = _commPkgNo2, Description = "D2", Id = 2, McPkgNo = _mcPkgNo2, System = _system2
            };
            IList <ProCoSysMcPkg> mcPkgDetails = new List <ProCoSysMcPkg> {
                mcPkgDetails1, mcPkgDetails2
            };

            _mcPkgApiServiceMock
            .Setup(x => x.GetMcPkgsByMcPkgNosAsync(_plant, _projectName, _mcPkgScope))
            .Returns(Task.FromResult(mcPkgDetails));

            var command = new CreateInvitationCommand(
                _title,
                _description,
                _location,
                new DateTime(2020, 9, 1, 12, 0, 0, DateTimeKind.Utc),
                new DateTime(2020, 9, 1, 13, 0, 0, DateTimeKind.Utc),
                _projectName,
                _type,
                _participants,
                _mcPkgScope,
                null);

            var result = await Assert.ThrowsExceptionAsync <IpoValidationException>(() =>
                                                                                    _dut.Handle(command, default));

            Assert.IsTrue(result.Message.StartsWith("Mc pkg scope must be within a system"));
        }
コード例 #2
0
 private void AssertMcPkgData(ProCoSysMcPkg PCSMcPkg, ProCoSysMcPkgDto mcPkgDto)
 {
     Assert.AreEqual(PCSMcPkg.Id, mcPkgDto.Id);
     Assert.AreEqual(PCSMcPkg.McPkgNo, mcPkgDto.McPkgNo);
     Assert.AreEqual(PCSMcPkg.Description, mcPkgDto.Description);
     Assert.AreEqual(PCSMcPkg.DisciplineCode, mcPkgDto.DisciplineCode);
 }
        public void Setup()
        {
            _mainApiOptions = new Mock <IOptionsMonitor <MainApiOptions> >();
            _mainApiOptions
            .Setup(x => x.CurrentValue)
            .Returns(new MainApiOptions {
                ApiVersion = "4.0", BaseAddress = "http://example.com"
            });

            _foreignApiClient = new Mock <IBearerTokenApiClient>();

            _proCoSysMcPkg1 = new ProCoSysMcPkg
            {
                Id             = 111111111,
                McPkgNo        = "McNo1",
                Description    = "Description1",
                DisciplineCode = "A",
                System         = "1|2"
            };
            _proCoSysMcPkg2 = new ProCoSysMcPkg
            {
                Id             = 222222222,
                McPkgNo        = "McNo2",
                Description    = "Description2",
                DisciplineCode = "A",
                System         = "1|2"
            };
            _proCoSysMcPkg3 = new ProCoSysMcPkg
            {
                Id             = 333333333,
                McPkgNo        = "McNo3",
                Description    = "Description3",
                DisciplineCode = "B",
                System         = "1|2"
            };

            _foreignApiClient
            .SetupSequence(x => x.QueryAndDeserializeAsync <List <ProCoSysMcPkg> >(It.IsAny <string>(), null))
            .Returns(Task.FromResult(new List <ProCoSysMcPkg> {
                _proCoSysMcPkg1, _proCoSysMcPkg2, _proCoSysMcPkg3
            }));

            _foreignApiClient
            .Setup(x => x.PutAsync(It.IsAny <string>(), It.IsAny <HttpContent>()))
            .Returns(Task.CompletedTask);

            _dut = new MainApiMcPkgService(_foreignApiClient.Object, _mainApiOptions.Object);
        }
コード例 #4
0
        public async Task HandlingUpdateIpoCommand_ShouldThrowErrorIfMcScopeIsNotFoundInMain()
        {
            var mcPkgDetails1 = new ProCoSysMcPkg {
                CommPkgNo = _commPkgNo, Description = "D1", Id = 1, McPkgNo = _mcPkgNo1, System = _system
            };
            var mcPkgDetails2 = new ProCoSysMcPkg {
                CommPkgNo = _commPkgNo, Description = "D2", Id = 2, McPkgNo = _mcPkgNo2, System = _system
            };
            IList <ProCoSysMcPkg> mcPkgDetails = new List <ProCoSysMcPkg> {
                mcPkgDetails1, mcPkgDetails2
            };
            var addedScope = new List <string>
            {
                _mcPkgNo1,
                _mcPkgNo2,
                _mcPkgNo3
            };

            _mcPkgApiServiceMock
            .Setup(x => x.GetMcPkgsByMcPkgNosAsync(_plant, _projectName, addedScope))
            .Returns(Task.FromResult(mcPkgDetails));

            var command = new EditInvitationCommand(
                _dpInvitationId,
                _newTitle,
                _newDescription,
                null,
                new DateTime(2020, 9, 1, 12, 0, 0, DateTimeKind.Utc),
                new DateTime(2020, 9, 1, 13, 0, 0, DateTimeKind.Utc),
                _typeDp,
                _updatedParticipants,
                addedScope,
                null,
                _rowVersion);

            var result = await Assert.ThrowsExceptionAsync <IpoValidationException>(() =>
                                                                                    _dut.Handle(command, default));

            Assert.IsTrue(result.Message.StartsWith("Could not find all mc pkgs in scope"));
        }
コード例 #5
0
        public async Task TestInitializeAsync()
        {
            _sigurdSigner    = TestFactory.Instance.GetTestUserForUserType(UserType.Signer).Profile;
            _pernillaPlanner = TestFactory.Instance.GetTestUserForUserType(UserType.Planner).Profile;
            _contractor      = TestFactory.Instance.GetTestUserForUserType(UserType.Contractor).Profile;
            _andreaAdmin     = TestFactory.Instance.GetTestUserForUserType(UserType.Admin).Profile;

            var personParticipant = new CreateInvitedPersonDto
            {
                AzureOid = Guid.NewGuid(),
                Email    = "*****@*****.**",
                Required = true
            };
            var person1InFunctionalRoleParticipant = new CreateInvitedPersonDto
            {
                AzureOid = new Guid(_contractor.Oid),
                Email    = "*****@*****.**"
            };
            var person2InFunctionalRoleParticipant = new CreateInvitedPersonDto
            {
                AzureOid = Guid.NewGuid(),
                Email    = "på[email protected]"
            };
            var functionalRoleParticipant = new CreateFunctionalRoleDto
            {
                Code    = FunctionalRoleCode,
                Persons = new List <CreateInvitedPersonDto>
                {
                    person1InFunctionalRoleParticipant,
                    person2InFunctionalRoleParticipant
                }
            };

            _participants = new List <CreateParticipantsDto>
            {
                new CreateParticipantsDto
                {
                    Organization   = Organization.Contractor,
                    FunctionalRole = functionalRoleParticipant,
                    SortKey        = 0
                },
                new CreateParticipantsDto
                {
                    Organization = Organization.ConstructionCompany,
                    Person       = personParticipant,
                    SortKey      = 1
                }
            };

            _participantsForSigning = new List <CreateParticipantsDto>
            {
                new CreateParticipantsDto
                {
                    Organization = Organization.Contractor,
                    Person       = _sigurdSigner.AsCreatePersonDto(true),
                    SortKey      = 0
                },
                new CreateParticipantsDto
                {
                    Organization = Organization.ConstructionCompany,
                    Person       = _sigurdSigner.AsCreatePersonDto(true),
                    SortKey      = 1
                },
                new CreateParticipantsDto
                {
                    Organization = Organization.TechnicalIntegrity,
                    Person       = _sigurdSigner.AsCreatePersonDto(false),
                    SortKey      = 2
                }
            };

            var knownGeneralMeeting = new ApiGeneralMeeting
            {
                Classification = string.Empty,
                Contract       = null,
                Convention     = string.Empty,
                DateCreatedUtc = DateTime.MinValue,
                DateEnd        = new ApiDateTimeTimeZoneModel
                {
                    DateTimeUtc = _invitationEndTime
                },
                DateStart = new ApiDateTimeTimeZoneModel
                {
                    DateTimeUtc = _invitationStartTime
                },
                ExternalId      = null,
                Id              = KnownTestData.MeetingId,
                InviteBodyHtml  = string.Empty,
                IsDisabled      = false,
                IsOnlineMeeting = false,
                Location        = InvitationLocation,
                Organizer       = new ApiPersonDetailsV1(),
                OutlookMode     = string.Empty,
                Participants    = new List <ApiMeetingParticipant>
                {
                    new ApiMeetingParticipant
                    {
                        Id     = Guid.NewGuid(),
                        Person = new ApiPersonDetailsV1 {
                            Id = Guid.NewGuid(), Mail = "*****@*****.**"
                        },
                        OutlookResponse = "Required"
                    },
                    new ApiMeetingParticipant
                    {
                        Id     = Guid.NewGuid(),
                        Person = new ApiPersonDetailsV1 {
                            Id = Guid.NewGuid(), Mail = "*****@*****.**"
                        },
                        OutlookResponse = "Accepted"
                    }
                },
                Project            = null,
                ResponsiblePersons = new List <ApiPersonDetailsV1>(),
                Series             = null,
                Title = string.Empty
            };

            _commentId = TestFactory.Instance.KnownTestData.CommentIds.First();

            const string McPkgNo1 = "MC1";
            const string McPkgNo2 = "MC2";

            _mcPkgScope = new List <string> {
                McPkgNo1, McPkgNo2
            };

            _mcPkgDetails1 = new ProCoSysMcPkg
            {
                CommPkgNo = KnownTestData.CommPkgNo, Description = "D1", Id = 1, McPkgNo = McPkgNo1, System = KnownTestData.System
            };
            _mcPkgDetails2 = new ProCoSysMcPkg
            {
                CommPkgNo = KnownTestData.CommPkgNo, Description = "D2", Id = 2, McPkgNo = McPkgNo2, System = KnownTestData.System
            };
            IList <ProCoSysMcPkg> mcPkgDetails = new List <ProCoSysMcPkg> {
                _mcPkgDetails1, _mcPkgDetails2
            };

            TestFactory.Instance
            .McPkgApiServiceMock
            .Setup(x => x.GetMcPkgsByMcPkgNosAsync(TestFactory.PlantWithAccess, TestFactory.ProjectWithAccess,
                                                   _mcPkgScope))
            .Returns(Task.FromResult(mcPkgDetails));

            var personsInFunctionalRole = new List <ProCoSysPerson>
            {
                new ProCoSysPerson
                {
                    AzureOid  = person1InFunctionalRoleParticipant.AzureOid.ToString(),
                    FirstName = "Per",
                    LastName  = "Persen",
                    Email     = person1InFunctionalRoleParticipant.Email,
                    UserName  = "******"
                },
                new ProCoSysPerson
                {
                    AzureOid  = person2InFunctionalRoleParticipant.AzureOid.ToString(),
                    FirstName = "Pål",
                    LastName  = "Persen",
                    Email     = person2InFunctionalRoleParticipant.Email,
                    UserName  = "******"
                }
            };

            IList <ProCoSysFunctionalRole> pcsFunctionalRoles1 = new List <ProCoSysFunctionalRole>
            {
                new ProCoSysFunctionalRole
                {
                    Code             = KnownTestData.FunctionalRoleCode,
                    Description      = "Description",
                    Email            = "*****@*****.**",
                    InformationEmail = null,
                    Persons          = personsInFunctionalRole,
                    UsePersonalEmail = true
                }
            };

            IList <ProCoSysFunctionalRole> pcsFunctionalRoles2 = new List <ProCoSysFunctionalRole>
            {
                new ProCoSysFunctionalRole
                {
                    Code             = FunctionalRoleCode,
                    Description      = "Description",
                    Email            = "*****@*****.**",
                    InformationEmail = null,
                    Persons          = personsInFunctionalRole,
                    UsePersonalEmail = true
                }
            };

            TestFactory.Instance
            .FunctionalRoleApiServiceMock
            .Setup(x => x.GetFunctionalRolesByCodeAsync(TestFactory.PlantWithAccess,
                                                        new List <string> {
                KnownTestData.FunctionalRoleCode
            }))
            .Returns(Task.FromResult(pcsFunctionalRoles1));

            TestFactory.Instance
            .FunctionalRoleApiServiceMock
            .Setup(x => x.GetFunctionalRolesByCodeAsync(TestFactory.PlantWithAccess,
                                                        new List <string> {
                FunctionalRoleCode
            }))
            .Returns(Task.FromResult(pcsFunctionalRoles2));

            TestFactory.Instance
            .PersonApiServiceMock
            .Setup(x => x.GetPersonByOidWithPrivilegesAsync(
                       TestFactory.PlantWithAccess,
                       _sigurdSigner.Oid,
                       "IPO",
                       It.IsAny <List <string> >()))
            .Returns(Task.FromResult(_sigurdSigner.AsProCoSysPerson()));

            TestFactory.Instance
            .PersonApiServiceMock
            .Setup(x => x.GetPersonByOidWithPrivilegesAsync(
                       TestFactory.PlantWithAccess,
                       _contractor.Oid,
                       "IPO",
                       It.IsAny <List <string> >()))
            .Returns(Task.FromResult(_contractor.AsProCoSysPerson()));

            TestFactory.Instance
            .PersonApiServiceMock
            .Setup(x => x.GetPersonByOidWithPrivilegesAsync(
                       TestFactory.PlantWithAccess,
                       _pernillaPlanner.Oid,
                       "IPO",
                       It.IsAny <List <string> >()))
            .Returns(Task.FromResult(_pernillaPlanner.AsProCoSysPerson()));

            TestFactory.Instance
            .PersonApiServiceMock
            .Setup(x => x.GetPersonByOidWithPrivilegesAsync(
                       TestFactory.PlantWithAccess,
                       _andreaAdmin.Oid,
                       "IPO",
                       It.IsAny <List <string> >()))
            .Returns(Task.FromResult(_andreaAdmin.AsProCoSysPerson()));

            TestFactory.Instance
            .PersonApiServiceMock
            .Setup(x => x.GetPersonByOidWithPrivilegesAsync(
                       TestFactory.PlantWithAccess,
                       personParticipant.AzureOid.ToString(),
                       "IPO",
                       new List <string> {
                "SIGN"
            }))
            .Returns(Task.FromResult(new ProCoSysPerson
            {
                AzureOid  = personParticipant.AzureOid.ToString(),
                Email     = personParticipant.Email,
                FirstName = "Ola",
                LastName  = "Nordmann",
                UserName  = "******"
            }));

            TestFactory.Instance
            .FusionMeetingClientMock
            .Setup(x => x.CreateMeetingAsync(It.IsAny <Action <GeneralMeetingBuilder> >()))
            .Returns(Task.FromResult(new GeneralMeeting(knownGeneralMeeting)));

            TestFactory.Instance
            .FusionMeetingClientMock
            .Setup(x => x.GetMeetingAsync(It.IsAny <Guid>(), It.IsAny <Action <ODataQuery> >()))
            .Returns(Task.FromResult(new GeneralMeeting(knownGeneralMeeting)));

            TestFactory.Instance
            .MeetingOptionsMock
            .Setup(x => x.CurrentValue)
            .Returns(new MeetingOptions {
                PcsBaseUrl = TestFactory.PlantWithAccess
            });
            _attachmentOnInitialMdpInvitation = await UploadAttachmentAsync(InitialMdpInvitationId);
        }
コード例 #6
0
        public void Setup()
        {
            _plantProviderMock = new Mock <IPlantProvider>();
            _plantProviderMock
            .Setup(x => x.Plant)
            .Returns(_plant);

            _currentUserProviderMock = new Mock <ICurrentUserProvider>();

            _personRepositoryMock = new Mock <IPersonRepository>();

            _meetingClientMock = new Mock <IFusionMeetingClient>();
            _meetingClientMock
            .Setup(x => x.CreateMeetingAsync(It.IsAny <Action <GeneralMeetingBuilder> >()))
            .Returns(Task.FromResult(
                         new GeneralMeeting(
                             new ApiGeneralMeeting()
            {
                Classification     = string.Empty,
                Contract           = null,
                Convention         = string.Empty,
                DateCreatedUtc     = DateTime.MinValue,
                DateEnd            = new ApiDateTimeTimeZoneModel(),
                DateStart          = new ApiDateTimeTimeZoneModel(),
                ExternalId         = null,
                Id                 = _meetingId,
                InviteBodyHtml     = string.Empty,
                IsDisabled         = false,
                IsOnlineMeeting    = false,
                Location           = string.Empty,
                Organizer          = new ApiPersonDetailsV1(),
                OutlookMode        = string.Empty,
                Participants       = new List <ApiMeetingParticipant>(),
                Project            = null,
                ResponsiblePersons = new List <ApiPersonDetailsV1>(),
                Series             = null,
                Title              = string.Empty
            })));

            _invitationRepositoryMock = new Mock <IInvitationRepository>();
            _invitationRepositoryMock
            .Setup(x => x.Add(It.IsAny <Invitation>()))
            .Callback <Invitation>(x => _createdInvitation = x);

            _transactionMock = new Mock <IDbContextTransaction>();
            _unitOfWorkMock  = new Mock <IUnitOfWork>();
            _unitOfWorkMock.Setup(x => x.BeginTransaction(It.IsAny <CancellationToken>()))
            .Returns(Task.FromResult(_transactionMock.Object));

            _commPkgApiServiceMock = new Mock <ICommPkgApiService>();

            _mcPkgDetails1 = new ProCoSysMcPkg {
                CommPkgNo = _commPkgNo, Description = "D1", Id = 1, McPkgNo = _mcPkgNo1, System = _system
            };
            _mcPkgDetails2 = new ProCoSysMcPkg {
                CommPkgNo = _commPkgNo, Description = "D2", Id = 2, McPkgNo = _mcPkgNo2, System = _system
            };
            IList <ProCoSysMcPkg> mcPkgDetails = new List <ProCoSysMcPkg> {
                _mcPkgDetails1, _mcPkgDetails2
            };

            _mcPkgApiServiceMock = new Mock <IMcPkgApiService>();
            _mcPkgApiServiceMock
            .Setup(x => x.GetMcPkgsByMcPkgNosAsync(_plant, _projectName, _mcPkgScope))
            .Returns(Task.FromResult(mcPkgDetails));

            _personDetails = new ProCoSysPerson
            {
                AzureOid  = _azureOid.ToString(),
                FirstName = "Ola",
                LastName  = "Nordman",
                Email     = "*****@*****.**"
            };

            _personApiServiceMock = new Mock <IPersonApiService>();
            _personApiServiceMock
            .Setup(x => x.GetPersonByOidWithPrivilegesAsync(_plant,
                                                            _azureOid.ToString(), "IPO", new List <string> {
                "SIGN"
            }))
            .Returns(Task.FromResult(_personDetails));

            _functionalRoleDetails = new ProCoSysFunctionalRole
            {
                Code             = _functionalRoleCode,
                Description      = "FR description",
                Email            = "*****@*****.**",
                InformationEmail = null,
                Persons          = null,
                UsePersonalEmail = false
            };
            _functionalRoleWithMultipleEmailsDetails = new ProCoSysFunctionalRole
            {
                Code             = _functionalRoleWithMultipleEmailsCode,
                Description      = "FR description",
                Email            = "[email protected];[email protected]",
                InformationEmail = null,
                Persons          = null,
                UsePersonalEmail = false
            };
            _functionalRoleWithMultipleInformationEmailsDetails = new ProCoSysFunctionalRole
            {
                Code             = _functionalRoleWithMultipleInformationEmailsCode,
                Description      = "FR description",
                Email            = "*****@*****.**",
                InformationEmail = "[email protected];[email protected]",
                Persons          = null,
                UsePersonalEmail = false
            };

            IList <ProCoSysFunctionalRole> frDetails = new List <ProCoSysFunctionalRole> {
                _functionalRoleDetails
            };
            IList <ProCoSysFunctionalRole> frMultipleEmailsDetails = new List <ProCoSysFunctionalRole> {
                _functionalRoleWithMultipleEmailsDetails
            };
            IList <ProCoSysFunctionalRole> frMultipleInformationDetails = new List <ProCoSysFunctionalRole> {
                _functionalRoleWithMultipleInformationEmailsDetails
            };

            _functionalRoleApiServiceMock = new Mock <IFunctionalRoleApiService>();
            _functionalRoleApiServiceMock
            .Setup(x => x.GetFunctionalRolesByCodeAsync(_plant, new List <string> {
                _functionalRoleCode
            }))
            .Returns(Task.FromResult(frDetails));
            _functionalRoleApiServiceMock
            .Setup(x => x.GetFunctionalRolesByCodeAsync(_plant, new List <string> {
                _functionalRoleWithMultipleEmailsCode
            }))
            .Returns(Task.FromResult(frMultipleEmailsDetails));
            _functionalRoleApiServiceMock
            .Setup(x => x.GetFunctionalRolesByCodeAsync(_plant, new List <string> {
                _functionalRoleWithMultipleInformationEmailsCode
            }))
            .Returns(Task.FromResult(frMultipleInformationDetails));

            _meetingOptionsMock = new Mock <IOptionsMonitor <MeetingOptions> >();

            _command = new CreateInvitationCommand(
                _title,
                _description,
                _location,
                new DateTime(2020, 9, 1, 12, 0, 0, DateTimeKind.Utc),
                new DateTime(2020, 9, 1, 13, 0, 0, DateTimeKind.Utc),
                _projectName,
                _type,
                _participants,
                _mcPkgScope,
                null);

            _dut = new CreateInvitationCommandHandler(
                _plantProviderMock.Object,
                _meetingClientMock.Object,
                _invitationRepositoryMock.Object,
                _unitOfWorkMock.Object,
                _commPkgApiServiceMock.Object,
                _mcPkgApiServiceMock.Object,
                _personApiServiceMock.Object,
                _functionalRoleApiServiceMock.Object,
                _meetingOptionsMock.Object,
                _personRepositoryMock.Object,
                _currentUserProviderMock.Object,
                new Mock <ILogger <CreateInvitationCommandHandler> >().Object);
        }
コード例 #7
0
        public void Setup()
        {
            _plantProviderMock = new Mock <IPlantProvider>();
            _plantProviderMock
            .Setup(x => x.Plant)
            .Returns(_plant);

            _personRepositoryMock = new Mock <IPersonRepository>();

            _meetingClientMock = new Mock <IFusionMeetingClient>();
            _meetingClientMock
            .Setup(x => x.UpdateMeetingAsync(_meetingId, It.IsAny <Action <GeneralMeetingPatcher> >()))
            .Returns(Task.FromResult(
                         new GeneralMeeting(
                             new ApiGeneralMeeting
            {
                Classification     = string.Empty,
                Contract           = null,
                Convention         = string.Empty,
                DateCreatedUtc     = DateTime.MinValue,
                DateEnd            = new ApiDateTimeTimeZoneModel(),
                DateStart          = new ApiDateTimeTimeZoneModel(),
                ExternalId         = null,
                Id                 = _meetingId,
                InviteBodyHtml     = string.Empty,
                IsDisabled         = false,
                IsOnlineMeeting    = false,
                Location           = string.Empty,
                Organizer          = new ApiPersonDetailsV1(),
                OutlookMode        = string.Empty,
                Participants       = new List <ApiMeetingParticipant>(),
                Project            = null,
                ResponsiblePersons = new List <ApiPersonDetailsV1>(),
                Series             = null,
                Title              = string.Empty
            })));

            _unitOfWorkMock = new Mock <IUnitOfWork>();

            //mock comm pkg response from main API
            var commPkgDetails = new ProCoSysCommPkg {
                CommPkgNo = _commPkgNo, Description = "D1", Id = 1, CommStatus = "OK", System = _system
            };
            IList <ProCoSysCommPkg> pcsCommPkgDetails = new List <ProCoSysCommPkg> {
                commPkgDetails
            };

            _commPkgApiServiceMock = new Mock <ICommPkgApiService>();
            _commPkgApiServiceMock
            .Setup(x => x.GetCommPkgsByCommPkgNosAsync(_plant, _projectName, _commPkgScope))
            .Returns(Task.FromResult(pcsCommPkgDetails));

            //mock mc pkg response from main API
            var mcPkgDetails1 = new ProCoSysMcPkg {
                CommPkgNo = _commPkgNo, Description = "D1", Id = 1, McPkgNo = _mcPkgNo1, System = _system
            };
            var mcPkgDetails2 = new ProCoSysMcPkg {
                CommPkgNo = _commPkgNo2, Description = "D2", Id = 2, McPkgNo = _mcPkgNo2, System = _system
            };
            IList <ProCoSysMcPkg> mcPkgDetails = new List <ProCoSysMcPkg> {
                mcPkgDetails1, mcPkgDetails2
            };

            _mcPkgApiServiceMock = new Mock <IMcPkgApiService>();
            _mcPkgApiServiceMock
            .Setup(x => x.GetMcPkgsByMcPkgNosAsync(_plant, _projectName, _mcPkgScope))
            .Returns(Task.FromResult(mcPkgDetails));

            //mock person response from main API
            var personDetails = new ProCoSysPerson
            {
                AzureOid  = _azureOid.ToString(),
                FirstName = _firstName,
                LastName  = _lastName,
                Email     = "*****@*****.**",
                UserName  = "******"
            };
            var newPersonDetails = new ProCoSysPerson
            {
                AzureOid  = _newAzureOid.ToString(),
                FirstName = "Kari",
                LastName  = "Nordman",
                Email     = "*****@*****.**",
                UserName  = "******"
            };

            _personApiServiceMock = new Mock <IPersonApiService>();
            _personApiServiceMock
            .Setup(x => x.GetPersonByOidWithPrivilegesAsync(_plant,
                                                            _azureOid.ToString(), "IPO", new List <string> {
                "SIGN"
            }))
            .Returns(Task.FromResult(personDetails));
            _personApiServiceMock
            .Setup(x => x.GetPersonByOidWithPrivilegesAsync(_plant,
                                                            _newAzureOid.ToString(), "IPO", new List <string> {
                "SIGN"
            }))
            .Returns(Task.FromResult(newPersonDetails));

            //mock functional role response from main API
            var frDetails = new ProCoSysFunctionalRole
            {
                Code             = _functionalRoleCode,
                Description      = "FR description",
                Email            = "*****@*****.**",
                InformationEmail = null,
                Persons          = null,
                UsePersonalEmail = false
            };
            var newFrDetails = new ProCoSysFunctionalRole
            {
                Code             = _newFunctionalRoleCode,
                Description      = "FR description2",
                Email            = "*****@*****.**",
                InformationEmail = null,
                Persons          = null,
                UsePersonalEmail = false
            };
            var frMultipleEmailsDetails = new ProCoSysFunctionalRole
            {
                Code             = _functionalRoleWithMultipleEmailsCode,
                Description      = "FR description",
                Email            = "[email protected];[email protected]",
                InformationEmail = null,
                Persons          = null,
                UsePersonalEmail = false
            };
            var frMultipleInformationEmailsDetails = new ProCoSysFunctionalRole
            {
                Code             = _functionalRoleWithMultipleInformationEmailsCode,
                Description      = "FR description",
                Email            = "*****@*****.**",
                InformationEmail = "[email protected];[email protected]",
                Persons          = null,
                UsePersonalEmail = false
            };
            IList <ProCoSysFunctionalRole> pcsFrDetails = new List <ProCoSysFunctionalRole> {
                frDetails
            };
            IList <ProCoSysFunctionalRole> newPcsFrDetails = new List <ProCoSysFunctionalRole> {
                newFrDetails
            };
            IList <ProCoSysFunctionalRole> pcsFrMultipleEmailsDetails = new List <ProCoSysFunctionalRole> {
                frMultipleEmailsDetails
            };
            IList <ProCoSysFunctionalRole> pcsFrMultipleInformationEmailsDetails = new List <ProCoSysFunctionalRole> {
                frMultipleInformationEmailsDetails
            };

            _functionalRoleApiServiceMock = new Mock <IFunctionalRoleApiService>();
            _functionalRoleApiServiceMock
            .Setup(x => x.GetFunctionalRolesByCodeAsync(_plant, new List <string> {
                _functionalRoleCode
            }))
            .Returns(Task.FromResult(pcsFrDetails));
            _functionalRoleApiServiceMock
            .Setup(x => x.GetFunctionalRolesByCodeAsync(_plant, new List <string> {
                _newFunctionalRoleCode
            }))
            .Returns(Task.FromResult(newPcsFrDetails));
            _functionalRoleApiServiceMock
            .Setup(x => x.GetFunctionalRolesByCodeAsync(_plant, new List <string> {
                _functionalRoleWithMultipleEmailsCode
            }))
            .Returns(Task.FromResult(pcsFrMultipleEmailsDetails));
            _functionalRoleApiServiceMock
            .Setup(x => x.GetFunctionalRolesByCodeAsync(_plant, new List <string> {
                _functionalRoleWithMultipleInformationEmailsCode
            }))
            .Returns(Task.FromResult(pcsFrMultipleInformationEmailsDetails));

            var mcPkgs = new List <McPkg>
            {
                new McPkg(_plant, _projectName, _commPkgNo, _mcPkgNo1, "d", _system),
                new McPkg(_plant, _projectName, _commPkgNo, _mcPkgNo2, "d2", _system)
            };

            //create invitation
            _dpInvitation = new Invitation(
                _plant,
                _projectName,
                _title,
                _description,
                _typeDp,
                new DateTime(),
                new DateTime(),
                null,
                mcPkgs,
                null)
            {
                MeetingId = _meetingId
            };

            var commPkgs = new List <CommPkg>
            {
                new CommPkg(_plant, _projectName, _commPkgNo, "d", "ok", _system),
                new CommPkg(_plant, _projectName, _commPkgNo, "d2", "ok", _system)
            };

            //create invitation
            _mdpInvitation = new Invitation(
                _plant,
                _projectName,
                _title,
                _description,
                _typeMdp,
                new DateTime(),
                new DateTime(),
                null,
                new List <McPkg>(),
                commPkgs)
            {
                MeetingId = _meetingId
            };
            _mdpInvitation.SetProtectedIdForTesting(_mdpInvitationId);

            var participant = new Participant(
                _plant,
                Organization.Contractor,
                IpoParticipantType.FunctionalRole,
                _functionalRoleCode,
                null,
                null,
                null,
                null,
                null,
                0);

            participant.SetProtectedIdForTesting(_participantId);
            _dpInvitation.AddParticipant(participant);
            _dpInvitation.AddParticipant(new Participant(
                                             _plant,
                                             Organization.ConstructionCompany,
                                             IpoParticipantType.Person,
                                             null,
                                             _firstName,
                                             _lastName,
                                             null,
                                             "*****@*****.**",
                                             _azureOid,
                                             1));
            _dpInvitation.SetProtectedIdForTesting(_dpInvitationId);

            _invitationRepositoryMock = new Mock <IInvitationRepository>();
            _invitationRepositoryMock
            .Setup(x => x.GetByIdAsync(_dpInvitationId))
            .Returns(Task.FromResult(_dpInvitation));

            _invitationRepositoryMock
            .Setup(x => x.GetByIdAsync(_mdpInvitationId))
            .Returns(Task.FromResult(_mdpInvitation));

            _meetingOptionsMock = new Mock <IOptionsMonitor <MeetingOptions> >();
            _meetingOptionsMock.Setup(x => x.CurrentValue)
            .Returns(new MeetingOptions {
                PcsBaseUrl = _plant
            });

            //command
            _command = new EditInvitationCommand(
                _dpInvitationId,
                _newTitle,
                _newDescription,
                null,
                new DateTime(2020, 9, 1, 12, 0, 0, DateTimeKind.Utc),
                new DateTime(2020, 9, 1, 13, 0, 0, DateTimeKind.Utc),
                _typeMdp,
                _updatedParticipants,
                null,
                _commPkgScope,
                _rowVersion);

            _dut = new EditInvitationCommandHandler(
                _invitationRepositoryMock.Object,
                _meetingClientMock.Object,
                _plantProviderMock.Object,
                _unitOfWorkMock.Object,
                _mcPkgApiServiceMock.Object,
                _commPkgApiServiceMock.Object,
                _personApiServiceMock.Object,
                _functionalRoleApiServiceMock.Object,
                _meetingOptionsMock.Object,
                _personRepositoryMock.Object);
        }
コード例 #8
0
        public void TestInitialize()
        {
            _sigurdSigner = TestFactory.Instance.GetTestUserForUserType(UserType.Signer).Profile;

            _participants = new List <CreateParticipantsDto>
            {
                new CreateParticipantsDto
                {
                    Organization = Organization.Contractor,
                    Person       = _sigurdSigner.AsCreatePersonDto(true),
                    SortKey      = 0
                },
                new CreateParticipantsDto
                {
                    Organization = Organization.ConstructionCompany,
                    Person       = _sigurdSigner.AsCreatePersonDto(true),
                    SortKey      = 1
                },
                new CreateParticipantsDto
                {
                    Organization = Organization.TechnicalIntegrity,
                    Person       = _sigurdSigner.AsCreatePersonDto(false),
                    SortKey      = 2
                }
            };

            const string McPkgNo = "MC1";

            _mcPkgScope = new List <string> {
                McPkgNo
            };

            _mcPkgDetails = new ProCoSysMcPkg
            {
                CommPkgNo   = KnownTestData.CommPkgNo,
                Description = "D1",
                Id          = 1,
                McPkgNo     = McPkgNo,
                System      = KnownTestData.System
            };

            IList <ProCoSysMcPkg> mcPkgDetails = new List <ProCoSysMcPkg> {
                _mcPkgDetails
            };

            _personsInFunctionalRole = new List <ProCoSysPerson>
            {
                new ProCoSysPerson
                {
                    AzureOid  = AzureOid,
                    FirstName = "FirstName",
                    LastName  = "LastName",
                    Email     = "*****@*****.**",
                    UserName  = "******"
                }
            };

            _pcsFunctionalRoles = new List <ProCoSysFunctionalRole>
            {
                new ProCoSysFunctionalRole
                {
                    Code             = FunctionalRoleCode,
                    Description      = "Description",
                    Email            = "*****@*****.**",
                    InformationEmail = null,
                    Persons          = _personsInFunctionalRole,
                    UsePersonalEmail = true
                }
            };

            var knownGeneralMeeting = new ApiGeneralMeeting
            {
                Classification = string.Empty,
                Contract       = null,
                Convention     = string.Empty,
                DateCreatedUtc = DateTime.MinValue,
                DateEnd        = new ApiDateTimeTimeZoneModel {
                    DateTimeUtc = _invitationEndTime
                },
                DateStart = new ApiDateTimeTimeZoneModel {
                    DateTimeUtc = _invitationStartTime
                },
                ExternalId      = null,
                Id              = KnownTestData.MeetingId,
                InviteBodyHtml  = string.Empty,
                IsDisabled      = false,
                IsOnlineMeeting = false,
                Location        = InvitationLocation,
                Organizer       = new ApiPersonDetailsV1(),
                OutlookMode     = string.Empty,
                Participants    = new List <ApiMeetingParticipant>
                {
                    new ApiMeetingParticipant
                    {
                        Id     = Guid.NewGuid(),
                        Person = new ApiPersonDetailsV1 {
                            Id = Guid.NewGuid(), Mail = "*****@*****.**"
                        },
                        OutlookResponse = "Required"
                    },
                    new ApiMeetingParticipant
                    {
                        Id     = Guid.NewGuid(),
                        Person = new ApiPersonDetailsV1 {
                            Id = Guid.NewGuid(), Mail = "*****@*****.**"
                        },
                        OutlookResponse = "Accepted"
                    }
                },
                Project            = null,
                ResponsiblePersons = new List <ApiPersonDetailsV1>(),
                Series             = null,
                Title = string.Empty
            };

            TestFactory.Instance
            .MeApiServiceMock
            .Setup(x => x.GetFunctionalRoleCodesAsync(
                       TestFactory.PlantWithAccess))
            .Returns(Task.FromResult(_functionalRoleCodes));

            TestFactory.Instance
            .McPkgApiServiceMock
            .Setup(x => x.GetMcPkgsByMcPkgNosAsync(
                       TestFactory.PlantWithAccess,
                       TestFactory.ProjectWithAccess,
                       _mcPkgScope))
            .Returns(Task.FromResult(mcPkgDetails));

            TestFactory.Instance
            .FunctionalRoleApiServiceMock
            .Setup(x => x.GetFunctionalRolesByCodeAsync(TestFactory.PlantWithAccess,
                                                        new List <string> {
                FunctionalRoleCode
            }))
            .Returns(Task.FromResult(_pcsFunctionalRoles));

            TestFactory.Instance
            .PersonApiServiceMock
            .Setup(x => x.GetPersonByOidWithPrivilegesAsync(
                       TestFactory.PlantWithAccess,
                       _sigurdSigner.Oid,
                       "IPO",
                       It.IsAny <List <string> >()))
            .Returns(Task.FromResult(_sigurdSigner.AsProCoSysPerson()));

            TestFactory.Instance
            .FusionMeetingClientMock
            .Setup(x => x.CreateMeetingAsync(It.IsAny <Action <GeneralMeetingBuilder> >()))
            .Returns(Task.FromResult(new GeneralMeeting(knownGeneralMeeting)));

            TestFactory.Instance
            .EmailServiceMock
            .Setup(x => x.SendEmailsAsync(It.IsAny <List <string> >(), It.IsAny <string>(), It.IsAny <string>(),
                                          It.IsAny <CancellationToken>()))
            .Returns(Task.CompletedTask);

            TestFactory.Instance
            .MeetingOptionsMock
            .Setup(x => x.CurrentValue)
            .Returns(new MeetingOptions {
                PcsBaseUrl = TestFactory.PlantWithAccess
            });
        }