You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@wicket.apache.org by "mmukada@gmail.com" <mm...@gmail.com> on 2012/04/21 21:54:13 UTC

How do I keep component paths constant across unit tests when using Wicket Tester

I have several wicket tests that target a sortable DataTable, specifically
ajax-clicking the sortable column headers and asserting the contents of the
rendered body rows. Now the component hierarchy of the table component's
descendants is auto generated by the wicket framework, and results in paths
to the sorting links (ajax) similar to:

    table:topToolbars:toolbars:0:headers:1:header:orderByLink

However, when the DataTable gets re-rendered across tests, the index of the
toolbars component is incremented each time i.e similar to:

    table:topToolbars:toolbars:1:headers:1:header:orderByLink

which then breaks the hard-coded paths of the succeeding tests as they will
no longer match.

The code fragment for the datatable construction is as follows:

    		final PayeesProvider dataProvider = new PayeesProvider();
		table = new DataTable<ResponsePayeeDetails>("payees", columns,
dataProvider, rowsPerPage);
		table.setOutputMarkupId(true);
		table.addTopToolbar(new AjaxFallbackHeadersToolbar(table, dataProvider) {
			
			private static final long serialVersionUID = -3509487788284410429L;

			@Override
			protected WebMarkupContainer newSortableHeader(final String borderId,
final String property, final ISortStateLocator locator) {
				return new AjaxFallbackOrderByBorder(borderId, property, locator,
getAjaxCallDecorator()) {
					
					@Override
					protected void onRender() {
						System.out.printf("Path: %s\n", this.getPageRelativePath());
						super.onRender();
					}

					private static final long serialVersionUID = -6399737639959498915L;

					@Override
					protected void onAjaxClick(final AjaxRequestTarget target) {
						target.add(getTable(), navigator, navigatorInfoContainer);
					}

					@Override
					protected void onSortChanged() {
						super.onSortChanged();
						getTable().setCurrentPage(0);
					}
				};
			}
		});
		table.addBottomToolbar(new NoRecordsToolbar(table));
		add(table);

To be precise, when I run my tests, the above System.out.printf statement
prints:

(1st test)

    Path: payees:topToolbars:toolbars:0:headers:1:header
    Path: payees:topToolbars:toolbars:0:headers:2:header

(2nd test)

    Path: payees:topToolbars:toolbars:2:headers:1:header
    Path: payees:topToolbars:toolbars:2:headers:2:header

(3rd test)

    Path: payees:topToolbars:toolbars:4:headers:1:header
    Path: payees:topToolbars:toolbars:4:headers:2:header

(4th test)

    Path: payees:topToolbars:toolbars:6:headers:1:header
    Path: payees:topToolbars:toolbars:6:headers:2:header
    Path: payees:topToolbars:toolbars:6:headers:1:header
    Path: payees:topToolbars:toolbars:6:headers:2:header
    Path: payees:topToolbars:toolbars:6:headers:1:header
    Path: payees:topToolbars:toolbars:6:headers:2:header

(5th test)

    Path: payees:topToolbars:toolbars:8:headers:1:header
    Path: payees:topToolbars:toolbars:8:headers:2:header

Does anyone know how I can force the index generation to be more
deterministic / repeatable. Alternatively, is there a way of wild-carding or
otherwise generalising the path, so as to make them immune to these
increments?

Any help will be greatly appreciated chaps!


--
View this message in context: http://apache-wicket.1842946.n4.nabble.com/How-do-I-keep-component-paths-constant-across-unit-tests-when-using-Wicket-Tester-tp4577030p4577030.html
Sent from the Users forum mailing list archive at Nabble.com.

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org


Re: How do I keep component paths constant across unit tests when using Wicket Tester

Posted by Martin Makundi <ma...@koodaripalvelut.com>.
Test safely:

https://cwiki.apache.org/WICKET/type-safe-testing-in-wicket.html

2012/4/21 mmukada@gmail.com <mm...@gmail.com>:
> I have several wicket tests that target a sortable DataTable, specifically
> ajax-clicking the sortable column headers and asserting the contents of the
> rendered body rows. Now the component hierarchy of the table component's
> descendants is auto generated by the wicket framework, and results in paths
> to the sorting links (ajax) similar to:
>
>    table:topToolbars:toolbars:0:headers:1:header:orderByLink
>
> However, when the DataTable gets re-rendered across tests, the index of the
> toolbars component is incremented each time i.e similar to:
>
>    table:topToolbars:toolbars:1:headers:1:header:orderByLink
>
> which then breaks the hard-coded paths of the succeeding tests as they will
> no longer match.
>
> The code fragment for the datatable construction is as follows:
>
>                final PayeesProvider dataProvider = new PayeesProvider();
>                table = new DataTable<ResponsePayeeDetails>("payees", columns,
> dataProvider, rowsPerPage);
>                table.setOutputMarkupId(true);
>                table.addTopToolbar(new AjaxFallbackHeadersToolbar(table, dataProvider) {
>
>                        private static final long serialVersionUID = -3509487788284410429L;
>
>                        @Override
>                        protected WebMarkupContainer newSortableHeader(final String borderId,
> final String property, final ISortStateLocator locator) {
>                                return new AjaxFallbackOrderByBorder(borderId, property, locator,
> getAjaxCallDecorator()) {
>
>                                        @Override
>                                        protected void onRender() {
>                                                System.out.printf("Path: %s\n", this.getPageRelativePath());
>                                                super.onRender();
>                                        }
>
>                                        private static final long serialVersionUID = -6399737639959498915L;
>
>                                        @Override
>                                        protected void onAjaxClick(final AjaxRequestTarget target) {
>                                                target.add(getTable(), navigator, navigatorInfoContainer);
>                                        }
>
>                                        @Override
>                                        protected void onSortChanged() {
>                                                super.onSortChanged();
>                                                getTable().setCurrentPage(0);
>                                        }
>                                };
>                        }
>                });
>                table.addBottomToolbar(new NoRecordsToolbar(table));
>                add(table);
>
> To be precise, when I run my tests, the above System.out.printf statement
> prints:
>
> (1st test)
>
>    Path: payees:topToolbars:toolbars:0:headers:1:header
>    Path: payees:topToolbars:toolbars:0:headers:2:header
>
> (2nd test)
>
>    Path: payees:topToolbars:toolbars:2:headers:1:header
>    Path: payees:topToolbars:toolbars:2:headers:2:header
>
> (3rd test)
>
>    Path: payees:topToolbars:toolbars:4:headers:1:header
>    Path: payees:topToolbars:toolbars:4:headers:2:header
>
> (4th test)
>
>    Path: payees:topToolbars:toolbars:6:headers:1:header
>    Path: payees:topToolbars:toolbars:6:headers:2:header
>    Path: payees:topToolbars:toolbars:6:headers:1:header
>    Path: payees:topToolbars:toolbars:6:headers:2:header
>    Path: payees:topToolbars:toolbars:6:headers:1:header
>    Path: payees:topToolbars:toolbars:6:headers:2:header
>
> (5th test)
>
>    Path: payees:topToolbars:toolbars:8:headers:1:header
>    Path: payees:topToolbars:toolbars:8:headers:2:header
>
> Does anyone know how I can force the index generation to be more
> deterministic / repeatable. Alternatively, is there a way of wild-carding or
> otherwise generalising the path, so as to make them immune to these
> increments?
>
> Any help will be greatly appreciated chaps!
>
>
> --
> View this message in context: http://apache-wicket.1842946.n4.nabble.com/How-do-I-keep-component-paths-constant-across-unit-tests-when-using-Wicket-Tester-tp4577030p4577030.html
> Sent from the Users forum mailing list archive at Nabble.com.
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org