Tapestry
  1. Tapestry
  2. TAPESTRY-1612

Allow access to the PageTester registry

    Details

    • Type: Improvement Improvement
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 5.0.4
    • Fix Version/s: 5.0.11
    • Component/s: tapestry-core
    • Labels:
      None

      Description

      PageTester creates it's own registry but then you don't have any access to it on order to get services. I've got other tests set up which create a registry, load tapestry-hibernate and my app module, and then allows me to use @Inject to inject services directly into my test classes (it's really very cool). This is great because I can start up an hsqldb in-memory db and then test my dao services for real very quickly. Now I want to take it a step further and be able to use PageTester to test pages that make use of dao services. The problem is that I can't do this if I can't access the registry to retrieve services. I could create a separate registry just so that I could use my dao services in my test to load data but that doesn't seem very clean.

        Activity

        Hide
        Mark Shead added a comment -

        Here is a patch that will close this issue.

        Show
        Mark Shead added a comment - Here is a patch that will close this issue.
        Hide
        Mark Shead added a comment -

        I'd like to second this as something that would be very useful.

        From my initial look at it, I think it might be as easy as adding:

        public <T> T getService(Class<T> serviceInterface)

        { return _registry.getService(serviceInterface); }

        To the PageTester class.

        Another option would be just to return a reference directly to the registry itself:

        public Registry getRegistry()

        { return _registry; }

        I don't know enough about the internals of Tapestry to know if that would cause any other issues or not.

        Show
        Mark Shead added a comment - I'd like to second this as something that would be very useful. From my initial look at it, I think it might be as easy as adding: public <T> T getService(Class<T> serviceInterface) { return _registry.getService(serviceInterface); } To the PageTester class. Another option would be just to return a reference directly to the registry itself: public Registry getRegistry() { return _registry; } I don't know enough about the internals of Tapestry to know if that would cause any other issues or not.
        Hide
        Dan Adams added a comment -

        So I went ahead tried the weird setup where I'm running two registries; one for my test class and the one in PageTester. It worked like a charm. The startup is slightly slower but still very fast. This still might be a good feature to have but at least we know it's possible to do it the other way successfully.

        Show
        Dan Adams added a comment - So I went ahead tried the weird setup where I'm running two registries; one for my test class and the one in PageTester. It worked like a charm. The startup is slightly slower but still very fast. This still might be a good feature to have but at least we know it's possible to do it the other way successfully.

          People

          • Assignee:
            Dan Adams
            Reporter:
            Dan Adams
          • Votes:
            1 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development