'Test for issue 4107
Build the following tree:
A
|-B (soft_root)
|-C'

def test_menu_beyond_soft_root(self):

    stdkwargs = {'template': 'nav_playground.html', 'language': 'en', 'published': True, 'in_navigation': True}
    a = create_page('A', reverse_id='a', **stdkwargs)
    a_public = a.publisher_public
    b = create_page('B', parent=a, soft_root=True, **stdkwargs)
    b_public = b.publisher_public
    c = create_page('C', parent=b, **stdkwargs)
    c_public = c.publisher_public
    context = self.get_context(a.get_absolute_url(), page=a_public)
    tpl = Template('{%    load    menu_tags    %}{%    show_menu    0    100    100    100    %}')
    tpl.render(context)
    nodes = context['children']
    self.assertEqual(len(nodes), 1)
    a_node = nodes[0]
    self.assertEqual(a_node.id, a.publisher_public.pk)
    self.assertEqual(len(a_node.children), 1)
    b_node = a_node.children[0]
    self.assertEqual(b_node.id, b.publisher_public.pk)
    self.assertEqual(len(b_node.children), 1)
    c_node = b_node.children[0]
    self.assertEqual(c_node.id, c.publisher_public.pk)
    self.assertEqual(len(c_node.children), 0)
    context = self.get_context(b.get_absolute_url(), page=b_public)
    tpl = Template('{%    load    menu_tags    %}{%    show_menu    0    100    100    100    %}')
    tpl.render(context)
    nodes = context['children']
    self.assertEqual(len(nodes), 1)
    b_node = nodes[0]
    self.assertEqual(b_node.id, b.publisher_public.pk)
    self.assertEqual(len(b_node.children), 1)
    c_node = b_node.children[0]
    self.assertEqual(c_node.id, c.publisher_public.pk)
    self.assertEqual(len(c_node.children), 0)
    context = self.get_context(c.get_absolute_url(), page=c_public)
    tpl = Template('{%    load    menu_tags    %}{%    show_menu    0    100    100    100    %}')
    tpl.render(context)
    nodes = context['children']
    self.assertEqual(len(nodes), 1)
    b_node = nodes[0]
    self.assertEqual(b_node.id, b.publisher_public.pk)
    self.assertEqual(len(b_node.children), 1)
    c_node = b_node.children[0]
    self.assertEqual(c_node.id, c.publisher_public.pk)
    self.assertEqual(len(c_node.children), 0)
    context = self.get_context(a.get_absolute_url(), page=a_public)
    tpl = Template("{%    load    menu_tags    %}{%    show_menu_below_id    'a'    0    100    100    100    %}")
    tpl.render(context)
    nodes = context['children']
    self.assertEqual(len(nodes), 1)
    b_node = nodes[0]
    self.assertEqual(b_node.id, b.publisher_public.pk)
    self.assertEqual(len(b_node.children), 1)
    c_node = b_node.children[0]
    self.assertEqual(c_node.id, c.publisher_public.pk)
    self.assertEqual(len(c_node.children), 0)
    context = self.get_context(b.get_absolute_url(), page=b_public)
    tpl = Template("{%    load    menu_tags    %}{%    show_menu_below_id    'a'    0    100    100    100    %}")
    tpl.render(context)
    nodes = context['children']
    self.assertEqual(len(nodes), 1)
    b_node = nodes[0]
    self.assertEqual(b_node.id, b.publisher_public.pk)
    self.assertEqual(len(b_node.children), 1)
    c_node = b_node.children[0]
    self.assertEqual(c_node.id, c.publisher_public.pk)
    self.assertEqual(len(c_node.children), 0)
    context = self.get_context(c.get_absolute_url(), page=c_public)
    tpl = Template("{%    load    menu_tags    %}{%    show_menu_below_id    'a'    0    100    100    100    %}")
    tpl.render(context)
    nodes = context['children']
    self.assertEqual(len(nodes), 1)
    b_node = nodes[0]
    self.assertEqual(b_node.id, b.publisher_public.pk)
    self.assertEqual(len(b_node.children), 1)
    c_node = b_node.children[0]
    self.assertEqual(c_node.id, c.publisher_public.pk)
    self.assertEqual(len(c_node.children), 0)
