createTestMapper function

RdfMapper createTestMapper({
  1. required Map<Type, IriTerm> resourceTypes,
  2. IriTermFactory? iriTermFactory,
  3. RdfCore? rdfCore,
  4. required RdfMapper initRdfMapper(
    1. RdfMapper rdfMapper,
    2. IriTermMapper<(String)> indexItemIriFactory<T>(
      1. Type
      ),
    3. IriTermMapper<(String)> resourceIriFactory<T>(
      1. RootIriConfig
      ),
    4. IriTermMapper<String> resourceRefFactory<T>(
      1. Type
      ),
    ),
})

Implementation

RdfMapper createTestMapper(
    {required Map<Type, IriTerm> resourceTypes,
    IriTermFactory? iriTermFactory,
    RdfCore? rdfCore,
    required RdfMapper Function(
            RdfMapper rdfMapper,
            IriTermMapper<(String id,)> Function<T>(Type) indexItemIriFactory,
            IriTermMapper<(String id,)> Function<T>(RootIriConfig)
                resourceIriFactory,
            IriTermMapper<String> Function<T>(Type) resourceRefFactory)
        initRdfMapper}) {
  // Initialize mapper exactly as in Locorda.setup()
  iriTermFactory ??= IriTerm.validated;
  rdfCore ??= RdfCore.withStandardCodecs();

  final localResourceLocator =
      LocalResourceLocator(iriTermFactory: iriTermFactory);
  final iriService = LocalResourceIriService(localResourceLocator);

  final context = MappingContext(
    resourceIriFactory: iriService.createResourceIriMapper,
    resourceRefFactory: iriService.createResourceRefMapper,
    indexItemIriFactory: iriService.createIndexItemIriMapper,
    baseRdfMapper: RdfMapper(
      registry: RdfMapperRegistry(),
      iriTermFactory: iriTermFactory,
      rdfCore: rdfCore,
    ),
  );

  RdfMapper mapper = initRdfMapper(
    context.baseRdfMapper,
    context.indexItemIriFactory,
    context.resourceIriFactory,
    context.resourceRefFactory,
  );
  final validation = iriService.finishSetupAndValidate(
    ResourceTypeCache(resourceTypes),
  );
  validation.throwIfInvalid();
  return mapper;
}