+ Start a Discussion
Patrick DixonPatrick Dixon 

Testing a Wrapper class - Save error: Invalid type; Wrapper

I have a wrapper class within an apex controller:

    public list<sidebarWrapper> getSidebars() {
        list<sidebarWrapper> sidebars = new list<sidebarWrapper>();
            for (Sidebar_Element__c sidebar :
                [Select id, Name, Order_On_Page__c, Page_Layout__c, Content_Item__c, Content_Type__c,
                Twitter_Feed__c, No_of_Tweets__c, Keyword__c, No_of_Items__c, Synopsis_Length__c,
                Content_Item__r.Heading__c, Content_Type__r.Title__c, Content_Type__r.View_All__c, Content_Type__r.View_All_Dest__c,
                Content_Type__r.List_Length__c, Content_Type__r.Synopsis_Length__c
                From Sidebar_Element__c where Page_Layout__c = :pgId order by Order_On_Page__c asc]) {
                sidebars.add(new sidebarWrapper(sidebar));
        return sidebars;

    // Wrapper Class for sidebar  
    public class sidebarWrapper {
        public Sidebar_Element__c sel {get; set;}
        public Content_Item__c sci;
        public list<Content_Item__c> scl;

        // constructor method
        public sidebarWrapper (Sidebar_Element__c thisSel) {
            sel = thisSel;
        public Content_Item__c getItem()
            if (null==sci)
                try {
                    sci =
                        [select Id, URL_Link__c, Image__c, Synopsis__c, Release_Date__c, Name, Heading__c,
                        Attachment__c, (Select Id From Attachments limit 1),
                        Content_Type__r.Image_Position__c, Content_Type__r.Image_Border__c, Content_Type__r.Show_Date__c,
                        Content_Type__r.Read_More__c, Content_Type__r.Read_More_Dest__c,
                        (select Name, Content_Item__c, Description_Text__c from Contents__r order by name)
                        From Content_Item__c
                        where Id in (Select Content_Item__c From Sidebar_Element__c where id = :sel.id)
                        order by Release_Date__c desc];
                catch(QueryException e) {
                    return null;
            return sci;
        public List<Content_Item__c> getList()
            if (null==scl && sel.no_of_items__c >= 1)
                try {
                    string sKey;
                    if (sel.keyword__c != null) sKey = '%' + sel.keyword__c + '%';
                    else sKey ='%';
                    scl =
                        [Select URL_Link__c, Image__c, Synopsis__c, Release_Date__c, Name, Heading__c, Content_Type__c,
                        Internal_Link_Prefix__c, Keywords__c,
                        Attachment__c, (Select Id From Attachments limit 1),
                        (Select Id From Contents__r limit 1),
                        Content_Type__r.Id, Content_Type__r.Title__c, Content_Type__r.Show_Date__c,
                        Content_Type__r.Image_Position__c, Content_Type__r.Image_Border__c,
                        Content_Type__r.Read_More__c, Content_Type__r.Read_More_Dest__c,
                        Content_Type__r.List_Style__c, Content_Type__r.Searchable__c,
                        (Select Page_Layout__c From Sidebar_Elements__r) From Content_Item__c
                        where Content_Type__c in (select Content_Type__c From Sidebar_Element__c where id = :sel.id)
                        and Keywords__c like :sKey
                        order by Release_Date__c desc limit :sel.no_of_items__c.IntValue()];
                catch(QueryException e) {
                    return null;
              return scl;
    // End Wrapper


and I'm trying to write a test:



        string pgl = 'testPage';
        string fl = 'testflash';
        ApexPages.currentPage().getParameters().put('pgl', pgl);
        ApexPages.currentPage().getParameters().put('mov', fl);

        // Instantiate a new controller  
        PageRenderer pr = new PageRenderer();
        list<sidebarWrapper> s = new list<sidebarWrapper>();

        string nl1 = pr.getNav_Level_1();
        string nl2 = pr.getNav_Level_2();
        boolean bb = pr.getBack_Button();
        Page_Layout__c ap = pr.getActivePage();
        list<Page_Element__c> el = pr.getElements();
        s = pr.getSidebars();
        list<Sidebar_Element__c> sel = s.sel();
        list<Content_Item__c> ci = pr.getContentItems();
        list<Content_Item__c> sci = s.getItem();
        list<Content_Item__c> cl = pr.getContentList();
        list<Content_Item__c> scl = s.getList();
        Content__c c = pr.getPageContent();
        string flash = pr.getFlash();

        ApexPages.StandardController sc = new ApexPages.standardController(pe[0]);

        PageElementExtension pee = new PageElementExtension(sc);
        ci = pee.getContentItems();
        cl = pee.getContentList();

        ApexPages.StandardController sc2 = new ApexPages.standardController(se[0]);

        SidebarElementExtension see = new SidebarElementExtension(sc2);
        ci = see.getsContentItems();
        cl = see.getsContentList();


But I just get:

Save error: Invalid type: sidebarWrapper    TestPageRender.cls    /fusionai.com/src/classes    line 59    Force.com save problem


So why can't it see the Wrapper Class??


Patrick DixonPatrick Dixon

It's OK - I think I've got it now!

Mats ErikssonMats Eriksson

What was the error?



Patrick DixonPatrick Dixon

It should have been something like:-


list<PageRenderer.sidebarWrapper> s = pr.getSidebars();


- since sidebarWrapper was within the PageRenderer class.