@@ -3,7 +3,7 @@ import { fromPointer } from '@rdfine/shacl/lib/NodeShape'
33import { NodeShape } from '@rdfine/shacl'
44import { html } from 'lit'
55import sinon from 'sinon'
6- import { dash , foaf , rdf , rdfs , sh } from '@tpluscode/rdf-ns-builders/strict'
6+ import { dash , foaf , rdf , rdfs , schema , sh } from '@tpluscode/rdf-ns-builders/strict'
77import { Initializer } from '@tpluscode/rdfine/RdfResource'
88import { render } from '../../lib/render'
99import { blankNode , namedNode } from '../_support/clownface'
@@ -161,6 +161,45 @@ describe('@hydrofoil/roadshow/lib/render', () => {
161161 expect ( result . textContent ) . to . eq ( 'Count: 3' )
162162 } )
163163
164+ it ( 'renders using selected viewer when overridden in .show()' , async ( ) => {
165+ // given
166+ const shape = createShape ( {
167+ property : [ {
168+ path : schema . breadcrumb ,
169+ viewer : ex . BreadcrumbViewer ,
170+ node : {
171+ property : {
172+ path : schema . itemListElement ,
173+ } ,
174+ } ,
175+ } ] ,
176+ } )
177+ const focusNode = namedNode ( '/page/child' )
178+ . addOut ( schema . breadcrumb , ( bc ) => {
179+ bc . addOut ( schema . itemListElement , ( item ) => {
180+ item . addOut ( schema . item , item . namedNode ( '/page' ) )
181+ . addOut ( schema . name , 'Parent' )
182+ } )
183+ } )
184+ const state : FocusNodeState = create ( { shape, term : focusNode . term , pointer : focusNode } )
185+ renderers . set ( ex . BreadcrumbViewer , function ( this : FocusNodeViewContext ) {
186+ const [ itemsProperty ] = this . state . properties
187+
188+ return html `< ol class ="breadcrumbs ">
189+ ${ this . show ( { property : itemsProperty , viewer : ex . BreadcrumbItemViewer } ) }
190+ </ ol > `
191+ } )
192+ renderers . set ( ex . BreadcrumbItemViewer , resource => html `< li > ${ resource . out ( schema . name ) . value } </ li > ` )
193+
194+ // when
195+ const result = await fixture ( render ( { state, focusNode, controller, params } ) )
196+
197+ // then
198+ expect ( result ) . dom . to . eq ( `<ol class="breadcrumbs">
199+ <li>Parent</li>
200+ </ol>` )
201+ } )
202+
164203 it ( 'calling sub-renderer for individual objects' , async ( ) => {
165204 // given
166205 const shape = createShape ( {
0 commit comments