コード例 #1
0
class MenuItemTestCase(unittest.TestCase):
    def setUp(self):
        self.menubuilder = MenuBuilder()

    def test_sorting_by_priority(self):
        menu_entries = []
        for n in range(0, 5):
            menu_entries.append(MenuItem(n, '', priority=n))
        self.assertEqual(
            str(sorted(menu_entries)),
            '[<MenuItem title="0" endpoint="" priority=0>, '
            '<MenuItem title="1" endpoint="" priority=1>, '
            '<MenuItem title="2" endpoint="" priority=2>, '
            '<MenuItem title="3" endpoint="" priority=3>, '
            '<MenuItem title="4" endpoint="" priority=4>]'
        )

    def test_sorting_by_title(self):
        menu_entries = []
        for n in sorted(range(0, 5), reverse=True):
            menu_entries.append(MenuItem(n, ''))
        menu_entries.append(MenuItem(5, '', priority=-1))

        self.assertEqual(
            str(sorted(menu_entries)),
            '[<MenuItem title="5" endpoint="" priority=-1>, '
            '<MenuItem title="0" endpoint="" priority=0>, '
            '<MenuItem title="1" endpoint="" priority=0>, '
            '<MenuItem title="2" endpoint="" priority=0>, '
            '<MenuItem title="3" endpoint="" priority=0>, '
            '<MenuItem title="4" endpoint="" priority=0>]'
        )

    def test_sorting_by_priority_then_title(self):
        menu_entries = []
        for n in sorted(range(0, 5), reverse=True):
            menu_entries.append(MenuItem(n, '', priority=n))
            menu_entries.append(MenuItem(n, '', priority=n*-1))
            for nn in sorted(range(n*2, n*3), reverse=True):
                menu_entries.append(MenuItem(n*nn, '', priority=n))
                menu_entries.append(MenuItem(n*nn, '', priority=n*-1))

        self.assertEqual(
            str(sorted(menu_entries)),
            '[<MenuItem title="4" endpoint="" priority=-4>, '
            '<MenuItem title="32" endpoint="" priority=-4>, '
            '<MenuItem title="36" endpoint="" priority=-4>, '
            '<MenuItem title="40" endpoint="" priority=-4>, '
            '<MenuItem title="44" endpoint="" priority=-4>, '
            '<MenuItem title="3" endpoint="" priority=-3>, '
            '<MenuItem title="18" endpoint="" priority=-3>, '
            '<MenuItem title="21" endpoint="" priority=-3>, '
            '<MenuItem title="24" endpoint="" priority=-3>, '
            '<MenuItem title="2" endpoint="" priority=-2>, '
            '<MenuItem title="8" endpoint="" priority=-2>, '
            '<MenuItem title="10" endpoint="" priority=-2>, '
            '<MenuItem title="1" endpoint="" priority=-1>, '
            '<MenuItem title="2" endpoint="" priority=-1>, '
            '<MenuItem title="0" endpoint="" priority=0>, '
            '<MenuItem title="0" endpoint="" priority=0>, '
            '<MenuItem title="1" endpoint="" priority=1>, '
            '<MenuItem title="2" endpoint="" priority=1>, '
            '<MenuItem title="2" endpoint="" priority=2>, '
            '<MenuItem title="8" endpoint="" priority=2>, '
            '<MenuItem title="10" endpoint="" priority=2>, '
            '<MenuItem title="3" endpoint="" priority=3>, '
            '<MenuItem title="18" endpoint="" priority=3>, '
            '<MenuItem title="21" endpoint="" priority=3>, '
            '<MenuItem title="24" endpoint="" priority=3>, '
            '<MenuItem title="4" endpoint="" priority=4>, '
            '<MenuItem title="32" endpoint="" priority=4>, '
            '<MenuItem title="36" endpoint="" priority=4>, '
            '<MenuItem title="40" endpoint="" priority=4>, '
            '<MenuItem title="44" endpoint="" priority=4>]'
        )

    def test_render(self):
        menu_entries = []
        true = lambda: True
        false = lambda: False
        for n in sorted(range(0, 5), reverse=True):
            menu_entries.append(MenuItem(n, 'root'))
        menu_entries.append(MenuItem(5, 'root', priority=-1))
        app = Flask(__name__)
        self.menubuilder.init_app(app)

        @app.route('/')
        def root():
            pass

        output = ''
        with app.test_request_context('/'):
            for entry in sorted(menu_entries):
                entry.builder = app.menubuilder.builder
                output += entry.render() + '\n'
        self.assertEqual(output, """<li class="active"><a class="active" href="/">5</a></li>
<li class="active"><a class="active" href="/">0</a></li>
<li class="active"><a class="active" href="/">1</a></li>
<li class="active"><a class="active" href="/">2</a></li>
<li class="active"><a class="active" href="/">3</a></li>
<li class="active"><a class="active" href="/">4</a></li>
""")

    def test_render_some_active(self):
        menu_entries = []
        true = lambda mi: True
        false = lambda mi: False
        for n in sorted(range(0, 5), reverse=True):
            menu_entries.append(MenuItem(n, 'root', activewhen=(n%2 and true or false)))
        menu_entries.append(MenuItem(5, 'root', priority=-1, activewhen=(n%2 and true or false)))
        app = Flask(__name__)
        self.menubuilder.init_app(app)

        @app.route('/')
        def root():
            pass

        output = ''
        with app.test_request_context('/'):
            for entry in sorted(menu_entries):
                entry.builder = app.menubuilder.builder
                output += entry.render() + '\n'
        self.assertEqual(output, """<li class="inactive"><a class="inactive" href="/">5</a></li>
<li class="inactive"><a class="inactive" href="/">0</a></li>
<li class="active"><a class="active" href="/">1</a></li>
<li class="inactive"><a class="inactive" href="/">2</a></li>
<li class="active"><a class="active" href="/">3</a></li>
<li class="inactive"><a class="inactive" href="/">4</a></li>
""")
コード例 #2
0
class MenuItemTestCase(unittest.TestCase):
    def setUp(self):
        self.menubuilder = MenuBuilder()

    def test_sorting_by_priority(self):
        menu_entries = []
        for n in range(0, 5):
            menu_entries.append(MenuItem(n, '', priority=n))
        self.assertEqual(
            str(sorted(menu_entries)),
            '[<MenuItem title="0" endpoint="" priority=0>, '
            '<MenuItem title="1" endpoint="" priority=1>, '
            '<MenuItem title="2" endpoint="" priority=2>, '
            '<MenuItem title="3" endpoint="" priority=3>, '
            '<MenuItem title="4" endpoint="" priority=4>]')

    def test_sorting_by_title(self):
        menu_entries = []
        for n in sorted(range(0, 5), reverse=True):
            menu_entries.append(MenuItem(n, ''))
        menu_entries.append(MenuItem(5, '', priority=-1))

        self.assertEqual(
            str(sorted(menu_entries)),
            '[<MenuItem title="5" endpoint="" priority=-1>, '
            '<MenuItem title="0" endpoint="" priority=0>, '
            '<MenuItem title="1" endpoint="" priority=0>, '
            '<MenuItem title="2" endpoint="" priority=0>, '
            '<MenuItem title="3" endpoint="" priority=0>, '
            '<MenuItem title="4" endpoint="" priority=0>]')

    def test_sorting_by_priority_then_title(self):
        menu_entries = []
        for n in sorted(range(0, 5), reverse=True):
            menu_entries.append(MenuItem(n, '', priority=n))
            menu_entries.append(MenuItem(n, '', priority=n * -1))
            for nn in sorted(range(n * 2, n * 3), reverse=True):
                menu_entries.append(MenuItem(n * nn, '', priority=n))
                menu_entries.append(MenuItem(n * nn, '', priority=n * -1))

        self.assertEqual(
            str(sorted(menu_entries)),
            '[<MenuItem title="4" endpoint="" priority=-4>, '
            '<MenuItem title="32" endpoint="" priority=-4>, '
            '<MenuItem title="36" endpoint="" priority=-4>, '
            '<MenuItem title="40" endpoint="" priority=-4>, '
            '<MenuItem title="44" endpoint="" priority=-4>, '
            '<MenuItem title="3" endpoint="" priority=-3>, '
            '<MenuItem title="18" endpoint="" priority=-3>, '
            '<MenuItem title="21" endpoint="" priority=-3>, '
            '<MenuItem title="24" endpoint="" priority=-3>, '
            '<MenuItem title="2" endpoint="" priority=-2>, '
            '<MenuItem title="8" endpoint="" priority=-2>, '
            '<MenuItem title="10" endpoint="" priority=-2>, '
            '<MenuItem title="1" endpoint="" priority=-1>, '
            '<MenuItem title="2" endpoint="" priority=-1>, '
            '<MenuItem title="0" endpoint="" priority=0>, '
            '<MenuItem title="0" endpoint="" priority=0>, '
            '<MenuItem title="1" endpoint="" priority=1>, '
            '<MenuItem title="2" endpoint="" priority=1>, '
            '<MenuItem title="2" endpoint="" priority=2>, '
            '<MenuItem title="8" endpoint="" priority=2>, '
            '<MenuItem title="10" endpoint="" priority=2>, '
            '<MenuItem title="3" endpoint="" priority=3>, '
            '<MenuItem title="18" endpoint="" priority=3>, '
            '<MenuItem title="21" endpoint="" priority=3>, '
            '<MenuItem title="24" endpoint="" priority=3>, '
            '<MenuItem title="4" endpoint="" priority=4>, '
            '<MenuItem title="32" endpoint="" priority=4>, '
            '<MenuItem title="36" endpoint="" priority=4>, '
            '<MenuItem title="40" endpoint="" priority=4>, '
            '<MenuItem title="44" endpoint="" priority=4>]')

    def test_render(self):
        menu_entries = []
        true = lambda: True
        false = lambda: False
        for n in sorted(range(0, 5), reverse=True):
            menu_entries.append(MenuItem(n, 'root'))
        menu_entries.append(MenuItem(5, 'root', priority=-1))
        app = Flask(__name__)
        self.menubuilder.init_app(app)

        @app.route('/')
        def root():
            pass

        output = ''
        with app.test_request_context('/'):
            for entry in sorted(menu_entries):
                entry.builder = app.menubuilder.builder
                output += entry.render() + '\n'
        self.assertEqual(
            output, """<li class="active"><a class="active" href="/">5</a></li>
<li class="active"><a class="active" href="/">0</a></li>
<li class="active"><a class="active" href="/">1</a></li>
<li class="active"><a class="active" href="/">2</a></li>
<li class="active"><a class="active" href="/">3</a></li>
<li class="active"><a class="active" href="/">4</a></li>
""")

    def test_render_some_active(self):
        menu_entries = []
        true = lambda mi: True
        false = lambda mi: False
        for n in sorted(range(0, 5), reverse=True):
            menu_entries.append(
                MenuItem(n, 'root', activewhen=(n % 2 and true or false)))
        menu_entries.append(
            MenuItem(5,
                     'root',
                     priority=-1,
                     activewhen=(n % 2 and true or false)))
        app = Flask(__name__)
        self.menubuilder.init_app(app)

        @app.route('/')
        def root():
            pass

        output = ''
        with app.test_request_context('/'):
            for entry in sorted(menu_entries):
                entry.builder = app.menubuilder.builder
                output += entry.render() + '\n'
        self.assertEqual(
            output,
            """<li class="inactive"><a class="inactive" href="/">5</a></li>
<li class="inactive"><a class="inactive" href="/">0</a></li>
<li class="active"><a class="active" href="/">1</a></li>
<li class="inactive"><a class="inactive" href="/">2</a></li>
<li class="active"><a class="active" href="/">3</a></li>
<li class="inactive"><a class="inactive" href="/">4</a></li>
""")