Hal SchemaFactory ctor takes (schemaFactory, definitionNameFactory,
resourceMetadataFactory). setUp() omitted the third argument, so
Hal's ResourceMetadataTrait::isResourceClass(Dummy) returned false,
causing Hal to bypass its own wrap and delegate straight to the base
factory with format='jsonhal'. The base factory then wrote
Dummy.jsonhal={type:object}, never producing the allOf wrap the
tests assert on.
Hal was added to the CI matrix in 49c622b1a, exposing this for the
first time. Pass the existing $resourceMetadataFactory mock so
isResourceClass() resolves true and the wrap fires.