示例#1
0
        public async Task Delete_SystemRelation_Returns_204()
        {
            //Arrange
            var system1 = await ItSystemHelper.CreateItSystemInOrganizationAsync(CreateName(), OrganizationId, AccessModifier.Public);

            var system2 = await ItSystemHelper.CreateItSystemInOrganizationAsync(CreateName(), OrganizationId, AccessModifier.Public);

            var usage1 = await ItSystemHelper.TakeIntoUseAsync(system1.Id, OrganizationId);

            var usage2 = await ItSystemHelper.TakeIntoUseAsync(system2.Id, OrganizationId);

            var input = new CreateSystemRelationDTO
            {
                FromUsageId = usage1.Id,
                ToUsageId   = usage2.Id,
                Description = A <string>(),
                Reference   = A <string>(),
            };

            using (var response = await SystemRelationHelper.SendPostRelationRequestAsync(input))
            {
                Assert.Equal(HttpStatusCode.Created, response.StatusCode);
                var createdRelation = await response.ReadResponseBodyAsKitosApiResponseAsync <SystemRelationDTO>();

                //Act
                using (var deleteResponse = await SystemRelationHelper.SendDeleteRelationRequestAsync(usage1.Id, createdRelation.Id))
                {
                    //Assert
                    Assert.Equal(HttpStatusCode.NoContent, deleteResponse.StatusCode);
                }
            }
        }
示例#2
0
        public async Task Deleting_Contract_Clears_ContractField_In_All_AssociatedRelations()
        {
            //Arrange
            var input = await PrepareFullRelationAsync(true, false, false);

            //Act
            using (var response = await SystemRelationHelper.SendPostRelationRequestAsync(input))
            {
                Assert.Equal(HttpStatusCode.Created, response.StatusCode);
                var relation = await response.ReadResponseBodyAsKitosApiResponseAsync <SystemRelationDTO>();

                Assert.NotNull(relation.Contract);

                using (var deleteContractRequest = await ItContractHelper.SendDeleteContractRequestAsync(input.ContractId.GetValueOrDefault()))
                    using (var getAfterDeleteResponse = await SystemRelationHelper.SendGetRelationRequestAsync(input.FromUsageId, relation.Id))
                    {
                        //Assert
                        Assert.Equal(HttpStatusCode.OK, deleteContractRequest.StatusCode);
                        Assert.Equal(HttpStatusCode.OK, getAfterDeleteResponse.StatusCode);
                        var relationAfterChange = await getAfterDeleteResponse.ReadResponseBodyAsKitosApiResponseAsync <SystemRelationDTO>();

                        Assert.Null(relationAfterChange.Contract);
                    }
            }
        }
示例#3
0
        public async Task Deleting_Interface_Clears_InterfaceField_In_All_Relations_To_Old_Exposing_System()
        {
            //Arrange
            var input = await PrepareFullRelationAsync(false, false, true);

            //Act
            using (var response = await SystemRelationHelper.SendPostRelationRequestAsync(input))
            {
                Assert.Equal(HttpStatusCode.Created, response.StatusCode);
                var relation = await response.ReadResponseBodyAsKitosApiResponseAsync <SystemRelationDTO>();

                Assert.NotNull(relation.Interface);

                using (var removeExhibitResponse = await InterfaceExhibitHelper.SendRemoveExhibitRequest(input.InterfaceId.GetValueOrDefault())) //Must remove exposition to allow deletion
                    using (var deleteInterfaceResponse = await InterfaceHelper.SendDeleteInterfaceRequestAsync(input.InterfaceId.GetValueOrDefault()))
                        using (var getAfterDeleteResponse = await SystemRelationHelper.SendGetRelationRequestAsync(input.FromUsageId, relation.Id))
                        {
                            //Assert
                            Assert.Equal(HttpStatusCode.OK, removeExhibitResponse.StatusCode);
                            Assert.Equal(HttpStatusCode.OK, deleteInterfaceResponse.StatusCode);
                            Assert.Equal(HttpStatusCode.OK, getAfterDeleteResponse.StatusCode);
                            var relationAfterChange = await getAfterDeleteResponse.ReadResponseBodyAsKitosApiResponseAsync <SystemRelationDTO>();

                            Assert.Null(relationAfterChange.Interface);
                        }
            }
        }
示例#4
0
        public async Task Post_SystemRelation_Returns_201(bool withContract, bool withInterface, bool withFrequency)
        {
            //Arrange
            var input = await PrepareFullRelationAsync(withContract, withInterface, withFrequency);

            //Act
            using (var response = await SystemRelationHelper.SendPostRelationRequestAsync(input))
            {
                //Assert
                Assert.Equal(HttpStatusCode.Created, response.StatusCode);
                var relationsFrom = (await SystemRelationHelper.GetRelationsFromAsync(input.FromUsageId)).ToList();
                var relationsTo   = (await SystemRelationHelper.GetRelationsToAsync(input.ToUsageId)).ToList();
                var fromDto       = Assert.Single(relationsFrom);
                var toDto         = Assert.Single(relationsTo);

                fromDto.ToExpectedObject().ShouldMatch(toDto); //Same relation should yield same data at the dto level

                Assert.Equal(input.FromUsageId, fromDto.FromUsage.Id);
                Assert.Equal(input.ToUsageId, fromDto.ToUsage.Id);
                Assert.Equal(input.Description, fromDto.Description);
                Assert.Equal(input.Reference, fromDto.Reference);
                Assert.Equal(input.ContractId, fromDto.Contract?.Id);
                Assert.Equal(input.InterfaceId, fromDto.Interface?.Id);
                Assert.Equal(input.FrequencyTypeId, fromDto.FrequencyType?.Id);
            }
        }
示例#5
0
        public async Task Changing_Exposing_System_On_Interface_Clears_InterfaceField_In_All_Relations_To_Old_Exposing_System()
        {
            //Arrange
            var newExhibitor = await ItSystemHelper.CreateItSystemInOrganizationAsync(A <string>(), TestEnvironment.DefaultOrganizationId, AccessModifier.Public);

            var input = await PrepareFullRelationAsync(false, false, true);

            //Act
            using (var response = await SystemRelationHelper.SendPostRelationRequestAsync(input))
                using (var changeExposingSystem = await InterfaceExhibitHelper.SendCreateExhibitRequest(newExhibitor.Id, input.InterfaceId.GetValueOrDefault()))
                {
                    //Assert
                    Assert.Equal(HttpStatusCode.Created, response.StatusCode);
                    Assert.Equal(HttpStatusCode.Created, changeExposingSystem.StatusCode);
                    var relation = await response.ReadResponseBodyAsKitosApiResponseAsync <SystemRelationDTO>();

                    Assert.NotNull(relation.Interface);
                    using (var getAfterDeleteResponse = await SystemRelationHelper.SendGetRelationRequestAsync(input.FromUsageId, relation.Id))
                    {
                        Assert.Equal(HttpStatusCode.OK, getAfterDeleteResponse.StatusCode);
                        var relationAfterChange = await getAfterDeleteResponse.ReadResponseBodyAsKitosApiResponseAsync <SystemRelationDTO>();

                        Assert.Null(relationAfterChange.Interface);
                    }
                }
        }
示例#6
0
        public async Task Changing_Exposing_System_To_Same_As_Existing_Does_Nothing()
        {
            //Arrange
            var input = await PrepareFullRelationAsync(false, false, true);

            var toUsage = await ItSystemHelper.GetItSystemUsage(input.ToUsageId);

            //Act
            using (var response = await SystemRelationHelper.SendPostRelationRequestAsync(input))
                using (var changeExposingSystem = await InterfaceExhibitHelper.SendCreateExhibitRequest(toUsage.ItSystemId, input.InterfaceId.GetValueOrDefault()))
                {
                    //Assert
                    Assert.Equal(HttpStatusCode.Created, response.StatusCode);
                    Assert.Equal(HttpStatusCode.Created, changeExposingSystem.StatusCode);
                    var relation = await response.ReadResponseBodyAsKitosApiResponseAsync <SystemRelationDTO>();

                    Assert.NotNull(relation.Interface);
                    using (var getAfterDeleteResponse = await SystemRelationHelper.SendGetRelationRequestAsync(input.FromUsageId, relation.Id))
                    {
                        Assert.Equal(HttpStatusCode.OK, getAfterDeleteResponse.StatusCode);
                        var relationAfterChange = await getAfterDeleteResponse.ReadResponseBodyAsKitosApiResponseAsync <SystemRelationDTO>();

                        Assert.NotNull(relationAfterChange.Interface); //interface should not have been cleared since the same exhibitor was provided as the existing --> no change
                    }
                }
        }
示例#7
0
        public async Task Can_Edit_SystemUsageWithRelations_Resets_Interface()
        {
            //Arrange
            var input = await PrepareFullRelationAsync(true, true, true);

            await SystemRelationHelper.SendPostRelationRequestAsync(input);

            var relations = await SystemRelationHelper.GetRelationsFromAsync(input.FromUsageId);

            var relationToEdit = relations.Single();
            var edited         = PrepareEditedRelation(relationToEdit, relationToEdit.ToUsage, relationToEdit.Contract, relationToEdit.FrequencyType, null);

            //Act
            using (var response = await SystemRelationHelper.SendPatchRelationRequestAsync(edited))
            {
                //Assert
                Assert.Equal(HttpStatusCode.OK, response.StatusCode);
                var relationDTO = await response.ReadResponseBodyAsKitosApiResponseAsync <SystemRelationDTO>();

                Assert.Equal(input.FromUsageId, relationDTO.FromUsage.Id);
                Assert.Equal(edited.ToUsage.Id, relationDTO.ToUsage.Id);
                Assert.Equal(edited.Description, relationDTO.Description);
                Assert.Equal(edited.Reference, relationDTO.Reference);
                Assert.NotNull(relationDTO.FrequencyType);
                Assert.NotNull(relationDTO.Contract);
                Assert.Null(relationDTO.Interface);
            }
        }
示例#8
0
        public async Task Can_Get_AvailableDestinationSystems()
        {
            //Arrange
            var prefix = CreateName();
            var source = await ItSystemHelper.CreateItSystemInOrganizationAsync(CreateName(), OrganizationId, AccessModifier.Public);

            var target1 = await ItSystemHelper.CreateItSystemInOrganizationAsync(prefix + 1, OrganizationId, AccessModifier.Public);

            var target2 = await ItSystemHelper.CreateItSystemInOrganizationAsync(prefix + 2, OrganizationId, AccessModifier.Public);

            var ignoredSystem = await ItSystemHelper.CreateItSystemInOrganizationAsync(CreateName(), OrganizationId, AccessModifier.Public);

            var sourceUsage = await ItSystemHelper.TakeIntoUseAsync(source.Id, OrganizationId);

            var targetUsage1 = await ItSystemHelper.TakeIntoUseAsync(target1.Id, OrganizationId);

            var targetUsage2 = await ItSystemHelper.TakeIntoUseAsync(target2.Id, OrganizationId);

            await ItSystemHelper.TakeIntoUseAsync(ignoredSystem.Id, OrganizationId);

            //Act
            var availableDestinationSystems = (await SystemRelationHelper.GetAvailableDestinationSystemsAsync(sourceUsage.Id, prefix))?.ToList();

            //Assert
            Assert.NotNull(availableDestinationSystems);
            Assert.Equal(2, availableDestinationSystems.Count);
            Assert.True(new[] { targetUsage1.Id, targetUsage2.Id }.SequenceEqual(availableDestinationSystems.Select(x => x.Id)));
        }
示例#9
0
        private static async Task AssertRelationExists(SystemRelationDTO expectedRelation, ItSystemUsageDTO usage, bool hasInterface = false, bool hasFrequency = false, bool hasContract = false)
        {
            var response = await SystemRelationHelper.SendGetRelationRequestAsync(usage.Id, expectedRelation.Id);

            var relation = await response.ReadResponseBodyAsKitosApiResponseAsync <SystemRelationDTO>();

            Assert.Equal(expectedRelation.Id, relation.Id);
            Assert.Equal(expectedRelation.Description, relation.Description);
            if (hasInterface)
            {
                AssertEqualNamedEntities(expectedRelation.Interface, relation.Interface);
            }
            else
            {
                Assert.Null(relation.Interface);
            }

            if (hasFrequency)
            {
                AssertEqualNamedEntities(expectedRelation.FrequencyType, relation.FrequencyType);
            }
            else
            {
                Assert.Null(relation.FrequencyType);
            }

            if (hasContract)
            {
                AssertEqualNamedEntities(expectedRelation.Contract, relation.Contract);
            }
            else
            {
                Assert.Null(relation.Contract);
            }
        }
示例#10
0
        public async Task Can_Delete_SystemUsageWithRelations()
        {
            //Arrange
            var input = await PrepareFullRelationAsync(false, false, false);

            using (await SystemRelationHelper.SendPostRelationRequestAsync(input))
                using (var deletionResponse = await ItSystemHelper.SendRemoveUsageAsync(input.FromUsageId, OrganizationId))
                    using (var getAfterDeleteResponse = await SystemRelationHelper.SendGetRelationRequestAsync(input.FromUsageId, OrganizationId))
                    {
                        Assert.Equal(HttpStatusCode.OK, deletionResponse.StatusCode);
                        Assert.Equal(HttpStatusCode.NotFound, getAfterDeleteResponse.StatusCode);
                    }
        }
示例#11
0
        public async Task Can_Get_AvailableOptions()
        {
            //Arrange
            var input = await PrepareFullRelationAsync(true, true, true);


            //Act
            var options = await SystemRelationHelper.GetAvailableOptionsAsync(input.FromUsageId, input.ToUsageId);

            //Assert
            Assert.NotNull(options);
            var interfaceDTO = Assert.Single(options.AvailableInterfaces);

            Assert.Equal(input.InterfaceId.Value, interfaceDTO.Id);
            Assert.Contains(options.AvailableContracts.Select(x => x.Id), x => x == input.ContractId);
            Assert.Contains(options.AvailableFrequencyTypes.Select(x => x.Id), x => x == input.FrequencyTypeId);
        }
示例#12
0
        public async Task Can_Get_SystemRelations_AssociatedWithContract()
        {
            //Arrange
            var input = await PrepareFullRelationAsync(true, false, false);

            //Act
            using (var response = await SystemRelationHelper.SendPostRelationRequestAsync(input))
            {
                //Assert
                Assert.Equal(HttpStatusCode.Created, response.StatusCode);
                var relationsToContract          = (await SystemRelationHelper.GetRelationsAssociatedWithContractAsync(input.ContractId.GetValueOrDefault(-1))).ToList();
                var originalRelations            = (await SystemRelationHelper.GetRelationsFromAsync(input.FromUsageId)).ToList();
                var relationFromContractResponse = Assert.Single(relationsToContract);
                var relationFromOriginalResponse = Assert.Single(originalRelations);

                relationFromContractResponse.ToExpectedObject().ShouldMatch(relationFromOriginalResponse); //Same relation should yield same data at the dto level
            }
        }
示例#13
0
        public async Task Deleting_ToSystemUsage_Removes_Relation()
        {
            //Arrange
            var input = await PrepareFullRelationAsync(false, false, false);

            //Act
            using (var response = await SystemRelationHelper.SendPostRelationRequestAsync(input))
            {
                Assert.Equal(HttpStatusCode.Created, response.StatusCode);
                var relation = await response.ReadResponseBodyAsKitosApiResponseAsync <SystemRelationDTO>();

                using (var deleteUsageResponse = await ItSystemHelper.SendRemoveUsageAsync(input.ToUsageId, TestEnvironment.DefaultOrganizationId))
                {
                    //Assert
                    Assert.Equal(HttpStatusCode.OK, deleteUsageResponse.StatusCode);
                    var relations = (await SystemRelationHelper.GetRelationsFromAsync(input.FromUsageId)).ToList();
                    Assert.Empty(relations.Where(x => x.Id == relation.Id));
                }
            }
        }
示例#14
0
        private static async Task <SystemRelationDTO> CreateSystemRelation(
            int fromSystemId,
            int toSystemId,
            string description,
            int?interfaceId,
            int?frequencyTypeId,
            int?contractId)
        {
            var relationDTO = new CreateSystemRelationDTO()
            {
                FromUsageId     = fromSystemId,
                ToUsageId       = toSystemId,
                Description     = description,
                InterfaceId     = interfaceId,
                FrequencyTypeId = frequencyTypeId,
                ContractId      = contractId
            };
            var response = await SystemRelationHelper.SendPostRelationRequestAsync(relationDTO);

            Assert.Equal(HttpStatusCode.Created, response.StatusCode);
            return(await response.ReadResponseBodyAsKitosApiResponseAsync <SystemRelationDTO>());
        }
示例#15
0
        public async Task Can_Get_SystemRelations_Defined_In_Organization()
        {
            //Arrange
            var input1 = await PrepareFullRelationAsync(false, false, false);

            var input2 = await PrepareFullRelationAsync(false, false, false);

            var input3 = await PrepareFullRelationAsync(false, false, false);

            var input4 = await PrepareFullRelationAsync(false, false, false);

            await SystemRelationHelper.PostRelationAsync(input1);

            await SystemRelationHelper.PostRelationAsync(input2);

            await SystemRelationHelper.PostRelationAsync(input3);

            await SystemRelationHelper.PostRelationAsync(input4);

            const int pageSize         = 2;
            const int firstPageNumber  = 0;
            const int secondPageNumber = firstPageNumber + 1;
            var       twoPages         = (await SystemRelationHelper.GetRelationsDefinedInOrganization(TestEnvironment.DefaultOrganizationId, firstPageNumber, pageSize * 2)).ToList();

            Assert.Equal(pageSize * 2, twoPages.Count); //We expect all 4 to be there

            //Act
            var firstPage = await SystemRelationHelper.GetRelationsDefinedInOrganization(TestEnvironment.DefaultOrganizationId, firstPageNumber, pageSize);

            var secondPage = await SystemRelationHelper.GetRelationsDefinedInOrganization(TestEnvironment.DefaultOrganizationId, secondPageNumber, pageSize);

            //Assert - first page with 2 items
            Assert.Equal(twoPages.Take(pageSize).Select(x => x.Id), firstPage.Select(x => x.Id));

            //Assert - second page with 1 item since there are only 3 in total
            Assert.Equal(twoPages.Skip(pageSize).Take(pageSize).Select(x => x.Id).ToList(), secondPage.Select(x => x.Id).ToList());
        }