Your achievements

Level 1

0% to

Level 2

Tip /
Sign in

Sign in to Community

to gain points, level up, and earn exciting badges like the new
Bedrock Mission!

Learn more

View all

Sign in to view all badges

SOLVED

Adapt resource to Page int unit test

jorarteag
Level 2
Level 2

Hi everyone, I am having problems to test Pages in my unit tests. I have the following code:

Resource resource = context.load().json(PAGE_PATH + JSON_EXT, PAGE_PATH);

Page page = resource.adaptTo(Page.class);

The answer of adapTo is always null.

I am working with SlingMocks, and this is my resource

public final SlingContext context = new SlingContext();

There is a option to do this? I know its possible with wcm.io​ but I don't want to include that just for this kind of tests.

Thanks in advance.

1 Accepted Solution
Peter_Puzanovs
Correct answer by
Community Advisor
Community Advisor

Dear Jora,

Sling does not know about AEM WCM Page Api, therefore, it won't handle it OOTB. Of course you can wring your custom logic to Sling Mock's it how to handle Page API, but then you are re-implementing wcm.io.


Regards,Peter

View solution in original post

0 Replies
Peter_Puzanovs
Community Advisor
Community Advisor

Dear Jora,

Have you looked at [1]

[1] Usage | AEM Mocks :

public class ExampleTest {

  @Rule

  public final AemContext context = new AemContext();

  @Test

  public void testSomething() {

  Resource resource = context.resourceResolver().getResource("/content/sample/en");

  Page page = resource.adaptTo(Page.class);

  // further testing

  }

}

shows basic dummy example [2]

[2] GitHub - xuanuy/mock-testing

Regards,

Peter

jorarteag
Level 2
Level 2

Thanks for the answer Peter.

Yes, I already saw that, but I'm wondering if this is possible without wcm.io (that's where it comes from AemContext), now I just use Apache Sling Mocks. I'm looking for solutions using just this dependency, and if is not possible I will jump to the other one.

Peter_Puzanovs
Correct answer by
Community Advisor
Community Advisor

Dear Jora,

Sling does not know about AEM WCM Page Api, therefore, it won't handle it OOTB. Of course you can wring your custom logic to Sling Mock's it how to handle Page API, but then you are re-implementing wcm.io.


Regards,Peter

Peter_Puzanovs
Community Advisor
Community Advisor

There should not be too much risk(check with your penetration security team before adding any dependency) adding wcm.io, if you declare it as <scope>test</scope> time dependency in maven. It's only initialised for testing then.

Regards,

Peter

jorarteag
Level 2
Level 2

Thanks Peter! I will look whats its the more convenient solution for us.