Skip to content
vankeisb edited this page Mar 23, 2012 · 2 revisions

manual test plan for tests of the tooling feature

In the meantime we automate everything, the test plan goes like this.

$ woko init

Fill in the usual values... The output should look like :

vankeisb@irvkb:/tmp$ woko init
__       __     _  __
\ \  _  / /___ | |/ / ___
 \ \/ \/ // o \|   K /   \
  \__W__/ \___/|_|\_\\_o_/  2.0
             POJOs on the Web !

Initializing project
> Project name ? 
> Project name ? 
> Project name ? myapp
> Maven groupId ? com.myco.myapp
> Your project's version ? [1.0-SNAPSHOT] 
| Generating your project, please wait, it can take a while to download everything...
> Would you like to use Bootstrap for UI ? [y] :
> Would you like to use Groovy ? [y] :
> Specify your default package name [com.myco.myapp] :
|  - web.xml file created : src/main/webapp/WEB-INF/web.xml
|  - Layout facet created : com.myco.myapp.facets.MyLayout
|  - resource bundle created : src/main/resources/application.properties
|  
|  Your project has been generated in : myapp 
|  Run 'woko start' in order to launch your app in a local Jetty container

And you should be in folder myapp. Now start the server :

$ woko start

The server should start and all features for wdevel should work :

http://localhost:8080/myapp

Now list roles :

$ woko list roles

The output should look like :

vankeisb@irvkb:/tmp/myapp$ woko list roles
__       __     _  __
\ \  _  / /___ | |/ / ___
 \ \/ \/ // o \|   K /   \
  \__W__/ \___/|_|\_\\_o_/  2.0
             POJOs on the Web !

3 role(s) used in faced keys :
  all
  developer
  guest

List facets :

$ woko list facets
vankeisb@irvkb:/tmp/myapp$ woko list facets
__       __     _  __
\ \  _  / /___ | |/ / ___
 \ \/ \/ // o \|   K /   \
  \__W__/ \___/|_|\_\\_o_/  2.0
             POJOs on the Web !

55 facets found : 
  create, developer, java.lang.Object, woko.facets.builtin.developer.Create
  create, guest, java.lang.Object, woko.facets.builtin.auth.LoginRequiredFacet
  delete, developer, java.lang.Object, woko.facets.builtin.developer.DeleteImpl
  delete, guest, java.lang.Object, woko.facets.builtin.auth.LoginRequiredFacet
  edit, developer, java.lang.Object, woko.facets.builtin.developer.EditImpl
  edit, guest, java.lang.Object, woko.facets.builtin.auth.LoginRequiredFacet
  find, developer, java.lang.Object, woko.facets.builtin.developer.Find
  find, guest, java.lang.Object, woko.facets.builtin.auth.LoginRequiredFacet
  groovy, developer, java.lang.Object, woko.facets.builtin.developer.Groovy
  home, all, java.lang.Object, woko.facets.builtin.all.HomeImpl
  home, developer, java.lang.Object, woko.facets.builtin.developer.HomeImpl
  json, developer, java.lang.Object, woko.facets.builtin.developer.JsonImpl
  json, guest, java.lang.Object, woko.facets.builtin.auth.LoginRequiredFacet
  layout, all, java.lang.Object, com.myco.myapp.facets.MyLayout
  list, developer, java.lang.Object, woko.facets.builtin.developer.ListImpl
  list, guest, java.lang.Object, woko.facets.builtin.auth.LoginRequiredFacet
  logout, all, java.lang.Object, woko.facets.builtin.all.LogoutImpl
  navBar, all, java.lang.Object, woko.facets.builtin.all.NavBarAll
  navBar, developer, java.lang.Object, woko.facets.builtin.developer.NavBarDev
  push, developer, java.lang.Object, woko.facets.builtin.push.PushFacet
  renderLinks, all, java.lang.Object, woko.facets.builtin.all.RenderLinksImpl
  renderLinksEdit, all, java.lang.Object, woko.facets.builtin.all.RenderLinksEditImpl
  renderObject, all, java.lang.Object, woko.facets.builtin.all.RenderObjectImpl
  renderObjectEdit, all, java.lang.Object, woko.facets.builtin.all.RenderObjectEditImpl
  renderObjectJson, all, java.lang.Object, woko.facets.builtin.all.RenderObjectJsonImpl
  renderObjectJson, all, net.sourceforge.stripes.validation.ValidationErrors, woko.facets.builtin.all.RenderValidationErrorsJson
  renderProperties, all, java.lang.Object, woko.facets.builtin.all.RenderPropertiesImpl
  renderPropertiesEdit, all, java.lang.Object, woko.facets.builtin.all.RenderPropertiesEditImpl
  renderPropertyName, all, java.lang.Object, woko.facets.builtin.all.RenderPropertyNameImpl
  renderPropertyValue, all, java.lang.Object, woko.facets.builtin.all.RenderPropertyValueImpl
  renderPropertyValue, all, java.util.Date, woko.facets.builtin.all.RenderPropertyValueDate
  renderPropertyValue, all, java.util.Collection, woko.facets.builtin.all.RenderPropertyValueCollection
  renderPropertyValueEdit, all, java.lang.Number, woko.facets.builtin.all.RenderPropertyValueEditStripesText
  renderPropertyValueEdit, all, java.lang.String, woko.facets.builtin.all.RenderPropertyValueEditStripesText
  renderPropertyValueEdit, all, java.util.Date, woko.facets.builtin.all.RenderPropertyValueEditDate
  renderPropertyValueJson, all, java.lang.Boolean, woko.facets.builtin.all.RenderPropertyValueJsonBasicTypes
  renderPropertyValueJson, all, java.lang.Class, woko.facets.builtin.all.RenderPropertyValueJsonClass
  renderPropertyValueJson, all, java.lang.Number, woko.facets.builtin.all.RenderPropertyValueJsonBasicTypes
  renderPropertyValueJson, all, java.lang.Object, woko.facets.builtin.all.RenderPropertyValueJsonObject
  renderPropertyValueJson, all, java.lang.String, woko.facets.builtin.all.RenderPropertyValueJsonBasicTypes
  renderPropertyValueJson, all, java.util.Date, woko.facets.builtin.all.RenderPropertyValueJsonDate
  renderPropertyValueJson, all, java.util.Collection, woko.facets.builtin.all.RenderPropertyValueJsonCollection
  renderTitle, all, java.lang.Object, woko.facets.builtin.all.RenderTitleImpl
  save, developer, java.lang.Object, woko.facets.builtin.developer.SaveImpl
  save, guest, java.lang.Object, woko.facets.builtin.auth.LoginRequiredFacet
  search, all, java.lang.Object, woko.facets.builtin.auth.LoginRequiredFacet
  search, developer, java.lang.Object, woko.facets.builtin.developer.SearchImpl
  studio, developer, java.lang.Object, woko.facets.builtin.developer.WokoStudio
  studio, guest, java.lang.Object, woko.facets.builtin.auth.LoginRequiredFacet
  termCloud, developer, java.lang.Object, woko.facets.builtin.hbcompass.ViewTermCloud
  termCloudFragment, developer, woko.hbcompass.tagcloud.CompassCloud, woko.facets.builtin.hbcompass.TermCloudFragmentFacet
  toString, developer, java.lang.Object, woko.facets.builtin.developer.ToString
  validate, all, java.lang.Object, woko.facets.builtin.hibernate.HibernateValidateFacet
  view, developer, java.lang.Object, woko.facets.builtin.developer.ViewImpl
  view, guest, java.lang.Object, woko.facets.builtin.auth.LoginRequiredFacet

And facet override :

$ woko create facet
vankeisb@irvkb:/tmp/myapp$ woko create facet
__       __     _  __
\ \  _  / /___ | |/ / ___
 \ \/ \/ // o \|   K /   \
  \__W__/ \___/|_|\_\\_o_/  2.0
             POJOs on the Web !

> Facet name : renderTitle
|  Found 1 facet(s) with the same name :
|    - renderTitle, all, java.lang.Object, class woko.facets.builtin.all.RenderTitleImpl
|  You might be overriding a facet...
|   
> Role [all] :
|  Found 1 facet(s) with the same name and role :
|    - renderTitle, all, java.lang.Object, class woko.facets.builtin.all.RenderTitleImpl
|  You are overriding an existing facet by type...
|   
> Target type [java.lang.Object] :MyEntity
|  Resolved target type : com.myco.myapp.model.MyEntity
|  You are overriding facet(s) by type...
|   
|  Found interface and possible base class for your facet :
|    - interface  : woko.facets.builtin.RenderTitle
|    - base class : woko.facets.builtin.all.RenderTitleImpl
|   
> Do you want to use the base class ? [y] :
|  Your facet will extend woko.facets.builtin.all.RenderTitleImpl
|   
|  The facet is a Fragment Facet...
|   
> Do you want to generate JSP a fragment ? [y] :
> Enter the JSP fragment path [/WEB-INF/jsp/all/renderTitleMyEntityAll.jsp] :
> Specify the facet class name [com.myco.myapp.facets.all.RenderTitleMyEntityAll] :
|  Groovy seems to be available in your project...
|   
> Do you want to write the facet in Groovy ? [y] :
|   
|   --- Summary ---
|   
|   Facet key         : renderTitle, all, com.myco.myapp.model.MyEntity
|   Facet class       : com.myco.myapp.facets.all.RenderTitleMyEntityAll
|   Implements        : woko.facets.builtin.RenderTitle
|   Extends           : woko.facets.builtin.all.RenderTitleImpl
|   JSP fragment path : /WEB-INF/jsp/all/renderTitleMyEntityAll.jsp
|   Facet written in  : Groovy
|   Facet source dir  : /private/tmp/myapp/src/main/groovy
|   
> Is this OK ? Shall we generate all this (n to view gen sources only) ? [y] :
|  Generating file /private/tmp/myapp/src/main/groovy/com/myco/myapp/facets/all/RenderTitleMyEntityAll.groovy
|  Using JSP fragment from base class : 
|    - /WEB-INF/woko/jsp/all/renderTitle.jsp
|  JSP fragment written
2 file(s) generated
  - /private/tmp/myapp/src/main/groovy/com/myco/myapp/facets/all/RenderTitleMyEntityAll.groovy
  - /private/tmp/myapp/src/main/webapp//WEB-INF/jsp/all/renderTitleMyEntityAll.jsp

Edit the groovy facet src/main/groovy/com/myco/myapp/facets/all/RenderTitleMyEntityAll.groovy:

package com.myco.myapp.facets.all

import net.sourceforge.jfacets.annotations.FacetKey
import com.myco.myapp.model.MyEntity
import woko.facets.builtin.all.RenderTitleImpl
import woko.facets.builtin.RenderTitle

@FacetKey(name="renderTitle", profileId="all", targetObjectType=MyEntity.class)
class RenderTitleMyEntityAll extends RenderTitleImpl implements RenderTitle {

    @Override
    String getTitle() {
      "oooh yeah"
    }

    @Override
    String getPath() {
        "/WEB-INF/jsp/all/renderTitleMyEntityAll.jsp"
    }

}

Now push :

$ woko push quiet
vankeisb@irvkb:/tmp/myapp$ woko push quiet
__       __     _  __
\ \  _  / /___ | |/ / ___
 \ \/ \/ // o \|   K /   \
  \__W__/ \___/|_|\_\\_o_/  2.0
             POJOs on the Web !

|  quiet mode : pushing all !
|  The following facet source files will be pushed :
|    - /private/tmp/myapp/src/main/groovy/com/myco/myapp/facets/all/RenderTitleMyEntityAll.groovy
|    - /private/tmp/myapp/src/main/groovy/com/myco/myapp/facets/MyLayout.groovy
|  Authenticated wdevel on http://localhost:8080/myapp
|  2 source(s) pushed and compiled :
|    - com.myco.myapp.facets.all.RenderTitleMyEntityAll => (renderTitle,all,com.myco.myapp.model.MyEntity) 
|    - com.myco.myapp.facets.MyLayout => (layout,all,java.lang.Object) 
|  Copying from webapp with extensions [jsp, html, js, css, png, jpg, jpeg]
|    - 1 resource(s) copied

And check if it works in the browser.

Now try CRUD :

$ woko crud
__       __     _  __
\ \  _  / /___ | |/ / ___
 \ \/ \/ // o \|   K /   \
  \__W__/ \___/|_|\_\\_o_/  2.0
             POJOs on the Web !

> type of the target entity : MyEntity
|  Resolved target type : com.myco.myapp.model.MyEntity
> specify the role : guest
> generate edit facet ? [y] :
> generate delete facet ? [y] :
|  Groovy seems to be available in your project...
|   
> Do you want to write the facet in Groovy ? [y] :
|   
|   --- Summary ---
|   
|   The following facet(s) are going to be generated :
|    - view, guest, class com.myco.myapp.model.MyEntity 
|    - edit, guest, class com.myco.myapp.model.MyEntity 
|    - save, guest, class com.myco.myapp.model.MyEntity 
|    - delete, guest, class com.myco.myapp.model.MyEntity 
|   
|   Facet written in  : Groovy
|   Facet source dir  : /private/tmp/myapp/src/main/groovy
|   
> Is this OK ? Shall we generate all this (n to view gen sources only) ? [y] :
|  Generating file /private/tmp/myapp/src/main/groovy/com/myco/myapp/facets/guest/ViewMyEntityGuest.groovy
|  Generating file /private/tmp/myapp/src/main/groovy/com/myco/myapp/facets/guest/EditMyEntityGuest.groovy
|  Generating file /private/tmp/myapp/src/main/groovy/com/myco/myapp/facets/guest/SaveMyEntityGuest.groovy
|  Generating file /private/tmp/myapp/src/main/groovy/com/myco/myapp/facets/guest/DeleteMyEntityGuest.groovy
...

Push again

$ woko push quiet

Now log out :

http://localhost:8080/myapp/logout

And check it works :

http://localhost:8080/myapp/save/MyEntity

You're done.

Clone this wiki locally