public void RelationTypes_IfRelationExists_SetTypesOfTheGeneralType() { var serviceUnderTest = CreateServiceUnderTest(); var session = CreateSession(); var expert = FromExpertRepositoryReturnFakeExpert("expertName", session); var generalType = Substitute.For <RelationType>(); FakeRelationTypeRepository.GetGeneralType().Returns(generalType); var relationTuple = new RelationTupleDto { StraightRelationId = GeneratedGuids.First, ReverseRelationId = GeneratedGuids.Second, DoesRelationExist = true }; serviceUnderTest.RelationTypes(relationTuple, "expertName", session); expert.Received(1) .SetTypesForRelation( Arg.Is(relationTuple.StraightRelationId), Arg.Is <IReadOnlyCollection <RelationType> >(x => x.Contains(generalType)), Arg.Is((string)null)); expert.Received(1) .SetTypesForRelation( Arg.Is(relationTuple.ReverseRelationId), Arg.Is <IReadOnlyCollection <RelationType> >(x => x.Contains(generalType)), Arg.Is((string)null)); }
public void RelationTypes_IfRelationDoesNotExist_SetTypesWithEmptyCollectionOfTypes() { var serviceUnderTest = CreateServiceUnderTest(); var session = CreateSession(); var expert = FromExpertRepositoryReturnFakeExpert("expertName", session); var relationTuple = new RelationTupleDto { StraightRelationId = GeneratedGuids.First, ReverseRelationId = GeneratedGuids.Second, DoesRelationExist = false }; serviceUnderTest.RelationTypes(relationTuple, "expertName", session); expert.Received(1) .SetTypesForRelation( Arg.Is(relationTuple.StraightRelationId), Arg.Is <IReadOnlyCollection <RelationType> >(x => x.Count == 0), Arg.Is((string)null)); expert.Received(1) .SetTypesForRelation( Arg.Is(relationTuple.ReverseRelationId), Arg.Is <IReadOnlyCollection <RelationType> >(x => x.Count == 0), Arg.Is((string)null)); }
/// <summary> /// Sets types for relations of expert. /// </summary> /// <param name="relationTuple">Plain object, that contains id of relation and flags of existence any relations.</param> /// <param name="expertName">Expert name.</param> /// <param name="sessionOfExperts">Session of experts.</param> public virtual void RelationTypes( [NotNull] RelationTupleDto relationTuple, [NotNull] string expertName, [NotNull] SessionOfExperts sessionOfExperts) { if (relationTuple == null) { throw new ArgumentNullException(nameof(relationTuple)); } if (expertName == null) { throw new ArgumentNullException(nameof(expertName)); } if (sessionOfExperts == null) { throw new ArgumentNullException(nameof(sessionOfExperts)); } var expert = GetExpertByNameAndSession(expertName, sessionOfExperts, ExpertFetch.Relations); IfExpertDoesNotExistThrow(expert, expertName, sessionOfExperts); var straightRelationTypes = new List <RelationType>(); var reverseRelationTypes = new List <RelationType>(); if (relationTuple.DoesRelationExist) { var generalType = _relationTypeRepository.GetGeneralType(); var taxonomyType = _relationTypeRepository.GetTaxonomyType(); var meronomyType = _relationTypeRepository.GetMeronomyType(); straightRelationTypes.Add(generalType); reverseRelationTypes.Add(generalType); if (relationTuple.IsStraightTaxonym) { straightRelationTypes.Add(taxonomyType); } if (relationTuple.IsStraightMeronym) { straightRelationTypes.Add(meronomyType); } if (relationTuple.IsReverseTaxonym) { reverseRelationTypes.Add(taxonomyType); } if (relationTuple.IsReverseMeronym) { reverseRelationTypes.Add(meronomyType); } } // ReSharper disable once PossibleNullReferenceException expert.SetTypesForRelation(relationTuple.StraightRelationId, straightRelationTypes, null); expert.SetTypesForRelation(relationTuple.ReverseRelationId, reverseRelationTypes, null); _expertRepository.AddOrUpdate(expert); }
public void Relation_SessionExistAndIsInAssociationPhase_CallExpertServiceRelation() { var serviceUnderTest = CreateServiceUnderTest(); var session = SetFakeSession(SessionPhase.SelectingAndSpecifyingRelations); var expertName = "expertTest"; var relation = new RelationTupleDto(); serviceUnderTest.Relations(relation, expertName); _fakeExpertService.Received(1).RelationTypes(Arg.Is(relation), Arg.Is(expertName), Arg.Is(session)); }
/// <summary> /// Sets types for generated relations of the expert. /// </summary> /// <param name="relationTupleDto">Pair of relations of expert for setting.</param> /// <param name="expertName">Expert name.</param> public void Relations([NotNull] RelationTupleDto relationTupleDto, [NotNull] string expertName) { if (relationTupleDto == null) { throw new ArgumentNullException(nameof(relationTupleDto)); } if (expertName == null) { throw new ArgumentNullException(nameof(expertName)); } IfCurrentSessionIsNotInPhaseThrow(SessionPhase.SelectingAndSpecifyingRelations); // ReSharper disable once AssignNullToNotNullAttribute _expertService.RelationTypes(relationTupleDto, expertName, CurrentSession); }