Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 22 additions & 0 deletions source/HOP-Core-Tests/HOPSegmentTest.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,25 @@ Class {
#package : 'HOP-Core-Tests',
#tag : 'Tests'
}

{ #category : 'tests' }
HOPSegmentTest >> testResolveClassIsShortForOneClass [

| segment |
segment := HOPVariableSegment new resolveClass: HOPUriSpaceTestClass1.
self assert: segment resolveClasses equals: { HOPUriSpaceTestClass1 }.
self
assertCollection: segment instanceMapClasses
hasSameElements: HOPUriSpaceTestClass1 hopExposedClasses
]

{ #category : 'tests' }
HOPSegmentTest >> testResolveClassesExposesEveryClass [

| segment |
segment := HOPVariableSegment new resolveClasses: {
HOPUriSpaceTestClass1.
HOPUriSpaceTestClass2 }.
self assert: (segment instanceMapClasses includes: HOPUriSpaceTestClass1).
self assert: (segment instanceMapClasses includes: HOPUriSpaceTestClass2)
]
25 changes: 17 additions & 8 deletions source/HOP-Core/HOPVariableSegment.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ Class {
#instVars : [
'canonical',
'resourceRouteSelector',
'resourceClass',
'resourceClasses',
'segmentNameSelector',
'containerSelector'
],
Expand Down Expand Up @@ -83,8 +83,8 @@ HOPVariableSegment >> initializePresenter [

{ #category : 'accessing' }
HOPVariableSegment >> instanceMapClasses [
resourceClass ifNil: [ ^ nil ].
^ resourceClass hopExposedClasses
resourceClasses ifNil: [ ^ nil ].
^ resourceClasses flatCollect: [ :each | each hopExposedClasses ]
]

{ #category : 'testing' }
Expand Down Expand Up @@ -122,8 +122,9 @@ HOPVariableSegment >> nodeLabel [

{ #category : 'accessing' }
HOPVariableSegment >> presenterClasses [
"the classes resolved here may share presenters, each is registered once"

^ resourceClass presenterClasses
^ (resourceClasses flatCollect: [ :each | each presenterClasses ]) asOrderedCollection removeDuplicates
]

{ #category : 'accessing' }
Expand All @@ -132,15 +133,23 @@ HOPVariableSegment >> priority [
]

{ #category : 'accessing' }
HOPVariableSegment >> resolveClass [
HOPVariableSegment >> resolveClass: aClass [
"short form for a segment that resolves to the instances of one class"

^ resourceClass
self resolveClasses: { aClass }
]

{ #category : 'accessing' }
HOPVariableSegment >> resolveClass: anObject [
HOPVariableSegment >> resolveClasses [

resourceClass := anObject
^ resourceClasses
]

{ #category : 'accessing' }
HOPVariableSegment >> resolveClasses: aCollectionOfClasses [
"the instances at this segment may be of classes without a common superclass"

resourceClasses := aCollectionOfClasses
]

{ #category : 'as yet unclassified' }
Expand Down
Loading