diff --git a/qanban-domain-plugin/QanbanDomain-test.launch b/qanban-domain-plugin/QanbanDomain-test.launch new file mode 100644 index 0000000..ae8dbd3 --- /dev/null +++ b/qanban-domain-plugin/QanbanDomain-test.launch @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/qanban-domain-plugin/QanbanDomain.launch b/qanban-domain-plugin/QanbanDomain.launch new file mode 100644 index 0000000..80bc868 --- /dev/null +++ b/qanban-domain-plugin/QanbanDomain.launch @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/qanban-domain-plugin/QanbanDomain.tmproj b/qanban-domain-plugin/QanbanDomain.tmproj new file mode 100644 index 0000000..2d19a7e --- /dev/null +++ b/qanban-domain-plugin/QanbanDomain.tmproj @@ -0,0 +1,73 @@ + + + + + documents + + + filename + QanbanDomain.launch + + + filename + build.xml + + + name + grails-app + regexFolderFilter + !.*/(\.[^/]*|CVS|_darcs|_MTN|\{arch\}|blib|.*~\.nib|.*\.(framework|app|pbproj|pbxproj|xcode(proj)?|bundle))$ + sourceDirectory + grails-app + + + name + test + regexFolderFilter + !.*/(\.[^/]*|CVS|_darcs|_MTN|\{arch\}|blib|.*~\.nib|.*\.(framework|app|pbproj|pbxproj|xcode(proj)?|bundle))$ + sourceDirectory + test + + + name + lib + regexFolderFilter + !.*/(\.[^/]*|CVS|_darcs|_MTN|\{arch\}|blib|.*~\.nib|.*\.(framework|app|pbproj|pbxproj|xcode(proj)?|bundle))$ + sourceDirectory + lib + + + name + scripts + regexFolderFilter + !.*/(\.[^/]*|CVS|_darcs|_MTN|\{arch\}|blib|.*~\.nib|.*\.(framework|app|pbproj|pbxproj|xcode(proj)?|bundle))$ + sourceDirectory + scripts + + + name + src + regexFolderFilter + !.*/(\.[^/]*|CVS|_darcs|_MTN|\{arch\}|blib|.*~\.nib|.*\.(framework|app|pbproj|pbxproj|xcode(proj)?|bundle))$ + sourceDirectory + src + + + name + web-app + regexFolderFilter + !.*/(\.[^/]*|CVS|_darcs|_MTN|\{arch\}|blib|.*~\.nib|.*\.(framework|app|pbproj|pbxproj|xcode(proj)?|bundle))$ + sourceDirectory + web-app + + + fileHierarchyDrawerWidth + 200 + metaData + + showFileHierarchyDrawer + + windowFrame + {{237, 127}, {742, 553}} + + diff --git a/qanban-domain-plugin/QanbanDomainGrailsPlugin.groovy b/qanban-domain-plugin/QanbanDomainGrailsPlugin.groovy new file mode 100644 index 0000000..b09d7f7 --- /dev/null +++ b/qanban-domain-plugin/QanbanDomainGrailsPlugin.groovy @@ -0,0 +1,50 @@ +class QanbanDomainGrailsPlugin { + // the plugin version + def version = "0.1" + // the version or versions of Grails the plugin is designed for + def grailsVersion = "1.1.1 > *" + // the other plugins this plugin depends on + def dependsOn = [acegi:"* > 0.5.2", hibernate:"1.1.1"] + // resources that are excluded from plugin packaging + def pluginExcludes = [ + "grails-app/views/error.gsp" + ] + + // TODO Fill in these fields + def author = "Mattias Mirhagen" + def authorEmail = "mattias.mirhagen@qbranch.se" + def title = "Qanban Domain" + def description = '''\\ +This plugin hold the domain model for the Qanban application +''' + + // URL to the plugin's documentation + def documentation = "http://grails.org/QanbanDomain+Plugin" + + def doWithSpring = { + // TODO Implement runtime spring config (optional) + } + + def doWithApplicationContext = { applicationContext -> + // TODO Implement post initialization spring config (optional) + } + + def doWithWebDescriptor = { xml -> + // TODO Implement additions to web.xml (optional) + } + + def doWithDynamicMethods = { ctx -> + // TODO Implement registering dynamic methods to classes (optional) + } + + def onChange = { event -> + // TODO Implement code that is executed when any artefact that this plugin is + // watching is modified and reloaded. The event contains: event.source, + // event.application, event.manager, event.ctx, and event.plugin. + } + + def onConfigChange = { event -> + // TODO Implement code that is executed when the project configuration changes. + // The event is the same as for 'onChange'. + } +} diff --git a/qanban-domain-plugin/application.properties b/qanban-domain-plugin/application.properties new file mode 100644 index 0000000..31e2fd5 --- /dev/null +++ b/qanban-domain-plugin/application.properties @@ -0,0 +1,6 @@ +#utf-8 +#Fri Jan 15 10:59:54 CET 2010 +plugins.acegi=0.5.2 +app.grails.version=1.1.1 +plugins.hibernate=1.1.1 +app.name=QanbanDomain diff --git a/qanban-domain-plugin/build.xml b/qanban-domain-plugin/build.xml new file mode 100644 index 0000000..26d7437 --- /dev/null +++ b/qanban-domain-plugin/build.xml @@ -0,0 +1,142 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/qanban-domain-plugin/grails-app/conf/DataSource.groovy b/qanban-domain-plugin/grails-app/conf/DataSource.groovy new file mode 100644 index 0000000..daf1f11 --- /dev/null +++ b/qanban-domain-plugin/grails-app/conf/DataSource.groovy @@ -0,0 +1,32 @@ +dataSource { + pooled = true + driverClassName = "org.hsqldb.jdbcDriver" + username = "sa" + password = "" +} +hibernate { + cache.use_second_level_cache=true + cache.use_query_cache=true + cache.provider_class='com.opensymphony.oscache.hibernate.OSCacheProvider' +} +// environment specific settings +environments { + development { + dataSource { + dbCreate = "create-drop" // one of 'create', 'create-drop','update' + url = "jdbc:hsqldb:mem:devDB" + } + } + test { + dataSource { + dbCreate = "update" + url = "jdbc:hsqldb:mem:testDb" + } + } + production { + dataSource { + dbCreate = "update" + url = "jdbc:hsqldb:file:prodDb;shutdown=true" + } + } +} \ No newline at end of file diff --git a/qanban-domain-plugin/grails-app/conf/UrlMappings.groovy b/qanban-domain-plugin/grails-app/conf/UrlMappings.groovy new file mode 100644 index 0000000..41daf57 --- /dev/null +++ b/qanban-domain-plugin/grails-app/conf/UrlMappings.groovy @@ -0,0 +1,11 @@ +class UrlMappings { + static mappings = { + "/$controller/$action?/$id?"{ + constraints { + // apply constraints here + } + } + "/"(view:"/index") + "500"(view:'/error') + } +} diff --git a/qanban-domain-plugin/grails-app/domain/se/qbranch/qanban/Board.groovy b/qanban-domain-plugin/grails-app/domain/se/qbranch/qanban/Board.groovy new file mode 100644 index 0000000..d40c59b --- /dev/null +++ b/qanban-domain-plugin/grails-app/domain/se/qbranch/qanban/Board.groovy @@ -0,0 +1,35 @@ +/* + * Copyright 2009 Qbranch AB + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package se.qbranch.qanban + +class Board { + + static constraints = { + domainId( unique: true, blank: false ) + title( unique: true, blank: false ) + } + + static hasMany = [phases:Phase] + List phases = [] + + String domainId + String title + + Date dateCreated + Date lastUpdated + +} diff --git a/qanban-domain-plugin/grails-app/domain/se/qbranch/qanban/BoardEvent.groovy b/qanban-domain-plugin/grails-app/domain/se/qbranch/qanban/BoardEvent.groovy new file mode 100644 index 0000000..51f40e1 --- /dev/null +++ b/qanban-domain-plugin/grails-app/domain/se/qbranch/qanban/BoardEvent.groovy @@ -0,0 +1,43 @@ +/* + * Copyright 2009 Qbranch AB + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package se.qbranch.qanban + +class BoardEvent extends Event{ + + static constraints = { + } + + transient public String checkCurrentTitle() { + if( domainId ){ + def board = Board.findByDomainId(domainId) + if (board){ + return board.title + }else{ + return 'The board does not exist' + } + } + else return "This should not be a valid output" + } + + public boolean doesDomainExist(){ + return Board.findByDomainId(domainId) != null + } + + public List getItems() { + return [dateCreated, user, getBoard().title] + } + +} diff --git a/qanban-domain-plugin/grails-app/domain/se/qbranch/qanban/BoardEventCreate.groovy b/qanban-domain-plugin/grails-app/domain/se/qbranch/qanban/BoardEventCreate.groovy new file mode 100644 index 0000000..29f8042 --- /dev/null +++ b/qanban-domain-plugin/grails-app/domain/se/qbranch/qanban/BoardEventCreate.groovy @@ -0,0 +1,49 @@ +/* + * Copyright 2009 Qbranch AB + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package se.qbranch.qanban + +class BoardEventCreate extends BoardEvent{ + + static constraints = { + title ( nullable: false, blank: false ) + } + + static transients = ['board','items'] + + Board board + String title + + public Board getBoard(){ + if( !board && domainId ) + board = Board.findByDomainId(domainId) + return board + } + + def beforeInsert = { + generateDomainId('board','create') + setEventCreator(user) + } + + def process(){ + board = new Board() + board.domainId = domainId + board.title = title + board.save() + } + + +} diff --git a/qanban-domain-plugin/grails-app/domain/se/qbranch/qanban/Card.groovy b/qanban-domain-plugin/grails-app/domain/se/qbranch/qanban/Card.groovy new file mode 100644 index 0000000..eeac91e --- /dev/null +++ b/qanban-domain-plugin/grails-app/domain/se/qbranch/qanban/Card.groovy @@ -0,0 +1,53 @@ +/* + * Copyright 2009 Qbranch AB + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package se.qbranch.qanban + +class Card { + + static constraints = { + title(blank:false, length:1..50) + description( blank: true, nullable: true) + caseNumber( blank: false ) + assignee(nullable: true) + phase() + domainId( unique: true, blank: false ) + } + + + static mapping = { + columns { + description type:'text' + } + } + + + String domainId + String title + String description + String caseNumber + + Date dateCreated + Date lastUpdated + + User assignee + Phase phase + + public String toString() { + return "$title" + } + +} diff --git a/qanban-domain-plugin/grails-app/domain/se/qbranch/qanban/CardEvent.groovy b/qanban-domain-plugin/grails-app/domain/se/qbranch/qanban/CardEvent.groovy new file mode 100644 index 0000000..f0edba1 --- /dev/null +++ b/qanban-domain-plugin/grails-app/domain/se/qbranch/qanban/CardEvent.groovy @@ -0,0 +1,41 @@ +/* + * Copyright 2009 Qbranch AB + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package se.qbranch.qanban + +class CardEvent extends Event { + + static constraints = { + // TODO: Check if there is a way to let this override the inherited contraint? + // user(nullable: false) + } + + transient public String checkCurrentTitle() { + if( domainId ){ + def card = Card.findByDomainId(domainId) + if (card){ + return card.title + }else{ + return CardEventDelete.findByDomainId(domainId).title + } + } + else return "This should not be a valid output" + } + + transient boolean doesDomainExist(){ + return Card.findByDomainId(domainId) != null + } +} diff --git a/qanban-domain-plugin/grails-app/domain/se/qbranch/qanban/CardEventCreate.groovy b/qanban-domain-plugin/grails-app/domain/se/qbranch/qanban/CardEventCreate.groovy new file mode 100644 index 0000000..e72554d --- /dev/null +++ b/qanban-domain-plugin/grails-app/domain/se/qbranch/qanban/CardEventCreate.groovy @@ -0,0 +1,98 @@ +/* + * Copyright 2009 Qbranch AB + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package se.qbranch.qanban + + +class CardEventCreate extends CardEvent { + + static constraints = { + assignee ( nullable : true ) + title( blank: false, length: 1..50 ) + description(blank: true, nullable: true) + phaseDomainId( nullable: false, blank: false ) + caseNumber( blank: false ) + } + + static mapping = { + columns { + description type:'text' + } + } + + static transients = ['card','phase','board','items'] + + Card card + + String title + String description + String caseNumber + String phaseDomainId + + //TODO: Change to checksum connections? + User assignee + + public List getItems() { + return [dateCreated, user, getCard().title] + } + + public Phase getPhase() { + def phase + + if( phaseDomainId ){ + phase = Phase.findByDomainId(phaseDomainId) + } + return phase + } + + public Card getCard(){ + if( !card && domainId ){ + card = Card.findByDomainId(domainId) + if(!card) { + card = CardEventDelete.findByDomainId(domainId).card + } + } + return card + } + + //TODO: Cleanup, check lazy settings. + public Board getBoard(){ + Phase.findByDomainId(phaseDomainId).board + } + + def beforeInsert = { + generateDomainId(title, caseNumber) + setEventCreator(user) + } + + def process(){ + def phase = getPhase() + card = new Card() + card.domainId = domainId + card.title = title + card.phase = phase + card.description = description + card.caseNumber = caseNumber + card.assignee = assignee + phase.addToCards(card) + card.save() + } + + + String toString() { + return "$dateCreated: $user created the card" + } +} diff --git a/qanban-domain-plugin/grails-app/domain/se/qbranch/qanban/CardEventDelete.groovy b/qanban-domain-plugin/grails-app/domain/se/qbranch/qanban/CardEventDelete.groovy new file mode 100644 index 0000000..7dbf061 --- /dev/null +++ b/qanban-domain-plugin/grails-app/domain/se/qbranch/qanban/CardEventDelete.groovy @@ -0,0 +1,73 @@ +/* + * Copyright 2009 Qbranch AB + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package se.qbranch.qanban + +class CardEventDelete extends CardEvent { + + static constraints = { + assignee ( nullable : true ) + title( nullable: true ) + description( nullable: true) + phaseDomainId( nullable: true ) + phasePos ( nullable: true ) + caseNumber( nullable: true ) + } + + static mapping = { + columns { + description type:'text' + } + } + + static transients = ['card','items'] + + Card card + + String title + String description + String caseNumber + String phaseDomainId + Integer phasePos + User assignee + + public List getItems() { + return [getCard().title] + } + + public Card getCard(){ + if(!card && domainId) { + card = new Card(title: title, description: description, caseNumber: caseNumber, phase: Phase.findByDomainId(phaseDomainId)) + } + return card + } + + transient beforeInsert = { + domainId = card.domainId + title = card.title + description = card.description + caseNumber = card.caseNumber + phaseDomainId = card.phase.domainId + phasePos = card.phase.board.phases.indexOf(card) + assignee = card.assignee + setEventCreator(user) + } + + transient process(){ + card.phase.cards.remove(card) + card.delete(flush:true) + } +} diff --git a/qanban-domain-plugin/grails-app/domain/se/qbranch/qanban/CardEventMove.groovy b/qanban-domain-plugin/grails-app/domain/se/qbranch/qanban/CardEventMove.groovy new file mode 100644 index 0000000..9598210 --- /dev/null +++ b/qanban-domain-plugin/grails-app/domain/se/qbranch/qanban/CardEventMove.groovy @@ -0,0 +1,81 @@ +/* + * Copyright 2009 Qbranch AB + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package se.qbranch.qanban + +class CardEventMove extends CardEvent { + + static constraints = { + phaseDomainId ( nullable: true, blank: false ) + newCardIndex ( nullable: false, min: 0) + } + + static transients = ['card','newPhase','items'] + Card card + Phase newPhase + + String phaseDomainId + Integer newCardIndex + + public List getItems() { + return [dateCreated, user, getCard().title, getNewPhase().title] + } + + public Card getCard(){ + if( !card && domainId ){ + card = Card.findByDomainId(domainId) + if(!card) { + card = CardEventDelete.findByDomainId(domainId).card + } + } + return card + } + + public Phase getNewPhase(){ + if( !newPhase && phaseDomainId ){ + newPhase = Phase.findByDomainId(phaseDomainId) + if(!newPhase) { + newPhase = PhaseEventDelete.findByDomainId(phaseDomainId).phase + } + } + return newPhase + } + + + transient beforeInsert = { + domainId = card.domainId + phaseDomainId = newPhase.domainId + setEventCreator(user) + } + + transient process = { + + card.phase.cards.remove(card) + newPhase.cards.add(newCardIndex, card) + card.phase = newPhase + card.lastUpdated = new Date() + card.save(flush:true) + + } + + String toString(){ + def phase = Phase.findByDomainId(phaseDomainId) + if (phase) + return "$dateCreated: $user moved the card to $phase.title" + else + return "$dateCreated: $user moved the card to a deleted phase" + } +} \ No newline at end of file diff --git a/qanban-domain-plugin/grails-app/domain/se/qbranch/qanban/CardEventSetAssignee.groovy b/qanban-domain-plugin/grails-app/domain/se/qbranch/qanban/CardEventSetAssignee.groovy new file mode 100644 index 0000000..ce58620 --- /dev/null +++ b/qanban-domain-plugin/grails-app/domain/se/qbranch/qanban/CardEventSetAssignee.groovy @@ -0,0 +1,57 @@ +/* + * Copyright 2009 Qbranch AB + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package se.qbranch.qanban + +class CardEventSetAssignee extends CardEvent { + + static constraints = { + newAssignee ( nullable: true ) + } + + static transients = ['card','items'] + Card card + + User newAssignee + + public List getItems() { + return [dateCreated, user, newAssignee] + } + + public Card getCard(){ + if( !card && domainId ){ + card = Card.findByDomainId(domainId) + if(!card) { + card = CardEventDelete.findByDomainId(domainId).card + } + } + return card + } + + transient beforeInsert = { + domainId = card.domainId + setEventCreator(user) + } + + transient process(){ + card.assignee = newAssignee + card.save() + } + + String toString(){ + return "$dateCreated: $user set the assignee to $newAssignee" + } +} diff --git a/qanban-domain-plugin/grails-app/domain/se/qbranch/qanban/CardEventUpdate.groovy b/qanban-domain-plugin/grails-app/domain/se/qbranch/qanban/CardEventUpdate.groovy new file mode 100644 index 0000000..7089245 --- /dev/null +++ b/qanban-domain-plugin/grails-app/domain/se/qbranch/qanban/CardEventUpdate.groovy @@ -0,0 +1,80 @@ +/* + * Copyright 2009 Qbranch AB + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package se.qbranch.qanban + +class CardEventUpdate extends CardEvent { + + // TODO: Validera så att eventen inte sparas om inget värde har ändrats + + static constraints = { + title( blank: false, length: 1..50) + description( blank: true, nullable: true ) + caseNumber( blank: false) + } + + + static mapping = { + columns { + description type:'text' + } + } + + static transients = ['card','items'] + Card card + + String title + String description + String caseNumber + + public List getItems() { + return [dateCreated, user, getCard().title] + } + + public Card getCard(){ + if( !card && domainId ){ + card = Card.findByDomainId(domainId) + if(!card) { + card = CardEventDelete.findByDomainId(domainId).card + } + } + return card + } + + public void setCard(card){ + this.card = card + title = card.title + description = card.description + caseNumber = card.caseNumber + } + + transient beforeInsert = { + domainId = card.domainId + setEventCreator(user) + } + + transient process(){ + + card.title = title + card.description = description + card.caseNumber = caseNumber + card.save() + } + + String toString(){ + return "$dateCreated: $user updated the card info" + } +} diff --git a/qanban-domain-plugin/grails-app/domain/se/qbranch/qanban/Event.groovy b/qanban-domain-plugin/grails-app/domain/se/qbranch/qanban/Event.groovy new file mode 100644 index 0000000..b6ea0d5 --- /dev/null +++ b/qanban-domain-plugin/grails-app/domain/se/qbranch/qanban/Event.groovy @@ -0,0 +1,80 @@ +/* + * Copyright 2009 Qbranch AB + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package se.qbranch.qanban + +import org.codehaus.groovy.grails.plugins.codecs.MD5Codec as Codec + +class Event implements Comparable { + + static constraints = { + domainId( nullable:true, blank: false ) + userDomainId(nullable: true) + user(nullable: true) + } + + static transients = ['items','user','eventCreator'] + User user + + Date dateCreated + String domainId + String userDomainId + + public List getItems() { + return [] + } + + public void setEventCreator(user){ + userDomainId = user.domainId + } + + public User getUser(){ + if( !user && userDomainId ){ + return user = User.findByDomainId(userDomainId) + } + return user + } + + def generateDomainId( Object[] notNullableProperties ){ + domainId = Codec.encode( new Date().time + notNullableProperties.toString() ) + } + + int compareTo(Object o) { + if (o instanceof Event) { + Event event = (Event) o + final int BEFORE = -1; + final int EQUAL = 0; + final int AFTER = 1; + + if(this.dateCreated < event.dateCreated) return AFTER + if(this.dateCreated > event.dateCreated) return BEFORE + + return EQUAL + } + + } + + boolean equals(Object o) { + if(o instanceof Event) { + Event event = (Event) o + if(this.id == event.id) + return true + } + return false + } + + +} diff --git a/qanban-domain-plugin/grails-app/domain/se/qbranch/qanban/Phase.groovy b/qanban-domain-plugin/grails-app/domain/se/qbranch/qanban/Phase.groovy new file mode 100644 index 0000000..b6c2b5c --- /dev/null +++ b/qanban-domain-plugin/grails-app/domain/se/qbranch/qanban/Phase.groovy @@ -0,0 +1,53 @@ +/* + * Copyright 2009 Qbranch AB + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package se.qbranch.qanban + +class Phase { + + static constraints = { + title(nullable: false, blank: false) + cardLimit(nullable: false, min: 0, validator:{ limit, phaseInstance -> + if( limit != 0 && limit < phaseInstance.cards.size() ) + return ['phase.cardLimit.lessThanCardsSize', limit] + }) + domainId( nullable: false, unique: true, blank: false) + } + + static hasMany = [cards:Card] + + String title + Board board + List cards = [] + Integer cardLimit + String domainId + + Date dateCreated + Date lastUpdated + + boolean equals(Object o) { + if(o instanceof Phase) { + Phase p = (Phase) o + if(this.id == p.id) + return true + } + return false + } + + public String toString() { + return "$title" + } +} \ No newline at end of file diff --git a/qanban-domain-plugin/grails-app/domain/se/qbranch/qanban/PhaseEvent.groovy b/qanban-domain-plugin/grails-app/domain/se/qbranch/qanban/PhaseEvent.groovy new file mode 100644 index 0000000..8e6bf99 --- /dev/null +++ b/qanban-domain-plugin/grails-app/domain/se/qbranch/qanban/PhaseEvent.groovy @@ -0,0 +1,39 @@ +/* + * Copyright 2009 Qbranch AB + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package se.qbranch.qanban + +class PhaseEvent extends Event { + + static constraints = { + } + + transient public String checkCurrentTitle() { + if( domainId ){ + def phase = Phase.findByDomainId(domainId) + if (phase){ + return phase.title + }else{ + return PhaseEventDelete.findByDomainId(domainId).title + } + } + else return "This should not be a valid output" + } + + public boolean doesDomainExist(){ + return Phase.findByDomainId(domainId) != null + } +} diff --git a/qanban-domain-plugin/grails-app/domain/se/qbranch/qanban/PhaseEventCreate.groovy b/qanban-domain-plugin/grails-app/domain/se/qbranch/qanban/PhaseEventCreate.groovy new file mode 100644 index 0000000..fad06cf --- /dev/null +++ b/qanban-domain-plugin/grails-app/domain/se/qbranch/qanban/PhaseEventCreate.groovy @@ -0,0 +1,82 @@ +/* + * Copyright 2009 Qbranch AB + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package se.qbranch.qanban + +import org.codehaus.groovy.grails.plugins.codecs.MD5Codec + +class PhaseEventCreate extends PhaseEvent { + + static constraints = { + cardLimit ( nullable: false, min : 0 ) + phasePos ( nullable: false ) + title(nullable: false, blank: false) + boardDomainId ( nullable: true ) + } + + static transients = ['board','phase','items'] + Phase phase + Board board + + String title + Integer cardLimit + Integer phasePos + String boardDomainId + + public List getItems() { + return [getPhase().title] + } + + public Phase getPhase(){ + if( !phase && domainId ){ + phase = Phase.findByDomainId(domainId) + if(!phase) { + phase = PhaseEventDelete.findByDomainId(domainId).phase + } + } + return phase + } + + public Board getBoard(){ + if( !board && boardDomainId){ + board = Board.findByDomainId(boardDomainId) + }else if( board )( + board = Board.get(board.id) + ) + return board + } + + transient beforeInsert = { + generateDomainId(title, board ) + boardDomainId = board.domainId + setEventCreator(user) + } + + transient process = { + + phase = new Phase( + title: title, + board: board, + cardLimit: cardLimit, + domainId: domainId + ) + // Board.get() because GORM doesn't let us persist transient values + Board.get(board.id).phases.add(phasePos, phase) + + phase.save() + + } +} diff --git a/qanban-domain-plugin/grails-app/domain/se/qbranch/qanban/PhaseEventDelete.groovy b/qanban-domain-plugin/grails-app/domain/se/qbranch/qanban/PhaseEventDelete.groovy new file mode 100644 index 0000000..c790c60 --- /dev/null +++ b/qanban-domain-plugin/grails-app/domain/se/qbranch/qanban/PhaseEventDelete.groovy @@ -0,0 +1,77 @@ +/* + * Copyright 2009 Qbranch AB + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package se.qbranch.qanban + +class PhaseEventDelete extends PhaseEvent { + + static constraints = { + cardLimit ( nullable: true ) + title ( nullable: true ) + boardDomainId ( nullable: true ) + phasePos ( nullable: true ) + } + + static transients = ['phase','items','board'] + + Phase phase + Board board + + String title + Integer cardLimit + Integer phasePos + String boardDomainId + + public List getItems() { + return [getPhase().title] + } + + public Phase getPhase(){ + if( !phase && domainId ){ + phase = new Phase(title: title, board: board, cardLimit: cardLimit); + } + return phase + } + + public void setPhase(phase){ + this.phase = phase + this.board = phase.board + } + + public Board getBoard(){ + if( !board && boardDomainId ){ + board = Board.findByDomainId(boardDomainId) + } + return board + } + + transient beforeInsert = { + domainId = phase.domainId + title = phase.title + boardDomainId = phase.board.domainId + cardLimit = phase.cardLimit + phasePos = Board.get(board.id).phases.indexOf(phase) + setEventCreator(user) + } + + transient process(){ + //board.phases.remove(phase) + board.removeFromPhases(phase) + phase.delete() + + + } +} diff --git a/qanban-domain-plugin/grails-app/domain/se/qbranch/qanban/PhaseEventMove.groovy b/qanban-domain-plugin/grails-app/domain/se/qbranch/qanban/PhaseEventMove.groovy new file mode 100644 index 0000000..41c63d8 --- /dev/null +++ b/qanban-domain-plugin/grails-app/domain/se/qbranch/qanban/PhaseEventMove.groovy @@ -0,0 +1,54 @@ +/* + * Copyright 2009 Qbranch AB + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package se.qbranch.qanban + +class PhaseEventMove extends PhaseEvent { + + static constraints = { + phasePos (min: 0, nullable: false, validator:{ val, obj -> + + return ( val < obj.phase.board.phases.size() ) + + }) + } + + static transients = ['phase'] + Phase phase + + Integer phasePos + + public Phase getPhase(){ + if( !phase && domainId ){ + phase = Phase.findByDomainId(domainId) + if(!phase) { + phase = PhaseEventDelete.findByDomainId(domainId).phase + } + } + return phase + } + + transient beforeInsert = { + domainId = phase.domainId + setEventCreator(user) + } + + transient process(){ + phase.board.phases.remove(phase) + phase.board.phases.add(phasePos, phase) + phase.board.save() + } +} diff --git a/qanban-domain-plugin/grails-app/domain/se/qbranch/qanban/PhaseEventUpdate.groovy b/qanban-domain-plugin/grails-app/domain/se/qbranch/qanban/PhaseEventUpdate.groovy new file mode 100644 index 0000000..0c76b6c --- /dev/null +++ b/qanban-domain-plugin/grails-app/domain/se/qbranch/qanban/PhaseEventUpdate.groovy @@ -0,0 +1,76 @@ +/* + * Copyright 2009 Qbranch AB + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package se.qbranch.qanban + +class PhaseEventUpdate extends PhaseEvent { + + // TODO: Validera så att eventen inte sparas om inget värde har ändrats + + static constraints = { + title ( nullable: false, blank: false ) + cardLimit ( nullable: false, min : 0 ) + } + + static transients = ['phase','board','items'] + + Phase phase + + String title + Integer cardLimit + + public List getItems() { + return [getPhase().title] + } + + public Phase getPhase(){ + if( !phase && domainId ){ + phase = Phase.findByDomainId(domainId) + if(!phase) { + phase = PhaseEventDelete.findByDomainId(domainId).phase + } + } + return phase + } + + public void setPhase(phase){ + this.phase = phase + } + + //TODO: Cleanup, check lazy settings. + public Board getBoard(){ + Phase.get(phase.id).board + } + + transient beforeInsert = { + domainId = Phase.get(phase.id).domainId + setEventCreator(user) + } + + transient void populateFromPhase(){ + if( phase ){ + title = phase.title + cardLimit = phase.cardLimit + } + } + transient process( ) { + + phase.title = title + phase.cardLimit = cardLimit + phase.save() + + } +} diff --git a/qanban-domain-plugin/grails-app/domain/se/qbranch/qanban/Role.groovy b/qanban-domain-plugin/grails-app/domain/se/qbranch/qanban/Role.groovy new file mode 100644 index 0000000..e617978 --- /dev/null +++ b/qanban-domain-plugin/grails-app/domain/se/qbranch/qanban/Role.groovy @@ -0,0 +1,41 @@ +/* + * Copyright 2009 Qbranch AB + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package se.qbranch.qanban + +import se.qbranch.qanban.User + +/** + * Authority domain class. + */ +class Role { + + static constraints = { + authority(blank: false, unique: true) + description() + } + + static hasMany = [people: User] + + String description + /** ROLE String */ + String authority + + public boolean equals(obj){ + return ( obj instanceof Role && obj.id == this.id ) + } + +} diff --git a/qanban-domain-plugin/grails-app/domain/se/qbranch/qanban/User.groovy b/qanban-domain-plugin/grails-app/domain/se/qbranch/qanban/User.groovy new file mode 100644 index 0000000..71eb486 --- /dev/null +++ b/qanban-domain-plugin/grails-app/domain/se/qbranch/qanban/User.groovy @@ -0,0 +1,62 @@ +/* + * Copyright 2009 Qbranch AB + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package se.qbranch.qanban + +import se.qbranch.qanban.Role + +/** + * User domain class. + */ +class User { + + static constraints = { + username(blank: false, unique: true) + userRealName(blank: false) + passwd( nullable: false, blank: false, validator:{ val, obj -> + if( val != obj.passwdRepeat ){ + return ['userEventCreate.passwd.notEqualRepeat'] + } + }) + enabled() + domainId( nullable: false, blank: false, unique: true) + } + + static transients = ['pass','passwdRepeat'] + static hasMany = [authorities: Role] + static belongsTo = Role + + String domainId + String username + String userRealName + /** MD5 Password */ + String passwd + boolean enabled + + String email + boolean emailShow + + String description = '' + + /** plain password to create a MD5 password */ + String pass = '[secret]' + String passwdRepeat + + + String toString(){ + return userRealName + } +} diff --git a/qanban-domain-plugin/grails-app/domain/se/qbranch/qanban/UserEvent.groovy b/qanban-domain-plugin/grails-app/domain/se/qbranch/qanban/UserEvent.groovy new file mode 100644 index 0000000..d7dc67a --- /dev/null +++ b/qanban-domain-plugin/grails-app/domain/se/qbranch/qanban/UserEvent.groovy @@ -0,0 +1,38 @@ +/* + * Copyright 2009 Qbranch AB + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package se.qbranch.qanban + +class UserEvent extends Event{ + + static constraints = { + } + + transient public String checkCurrentTitle() { + if( domainId ){ + def user = User.findByDomainId(domainId) + if (user){ + return user.userRealName + }else{ + return 'The user does not exist' + } + } + else return "This should not be a valid output" + } + + public boolean doesDomainExist(){ + return User.findByDomainId(domainId) != null + } +} diff --git a/qanban-domain-plugin/grails-app/domain/se/qbranch/qanban/UserEventCreate.groovy b/qanban-domain-plugin/grails-app/domain/se/qbranch/qanban/UserEventCreate.groovy new file mode 100644 index 0000000..f55fa8f --- /dev/null +++ b/qanban-domain-plugin/grails-app/domain/se/qbranch/qanban/UserEventCreate.groovy @@ -0,0 +1,80 @@ +/* + * Copyright 2009 Qbranch AB + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package se.qbranch.qanban + +class UserEventCreate extends UserEvent { + + def authenticateService + + static constraints = { + username(blank: false, unique: true) + userRealName(blank: false) + email(nullable: false, blank: false, email:true) + enabled( nullable: true) + emailShow( nullable: true) + passwd( nullable: false, blank: false, validator:{ val, obj -> + if( val != obj.passwdRepeat ){ + return ['userEventCreate.passwd.notEqualRepeat'] + } + }) + } + + static transients = ['list','passwdRepeat'] + + static mapping = { + columns { + description type:'text' + } + } + + String username + String userRealName + String email + boolean enabled = true + boolean emailShow = true + String description = '' + String passwd + String passwdRepeat + + public List getItems() { + return [dateCreated, user] + } + + def beforeInsert = { + generateDomainId(username,userRealName,email) + passwd = authenticateService.encodePassword(passwd) + passwdRepeat = authenticateService.encodePassword(passwdRepeat) + userDomainId = domainId // You create yourself + } + + def populateFromUser(){ + this.properties = user.properties['username','userRealName','email','enabled','emailShow','description','passwd','passwdRepeat'] + } + + def process(){ + user = new User() + user.properties = this.properties['username','userRealName','email','enabled','emailShow','description','passwd','passwdRepeat','domainId'] + + // Gives every user the admin role, this is a temporary fix until a user manager is implemented + Role.list().each{ role -> + role.addToPeople(user) + } + + + user.save() + } + +} diff --git a/qanban-domain-plugin/grails-app/migrations/changelog.xml b/qanban-domain-plugin/grails-app/migrations/changelog.xml new file mode 100644 index 0000000..9f33eaf --- /dev/null +++ b/qanban-domain-plugin/grails-app/migrations/changelog.xml @@ -0,0 +1,4 @@ + + diff --git a/qanban-domain-plugin/grails-app/services/se/qbranch/qanban/EventService.groovy b/qanban-domain-plugin/grails-app/services/se/qbranch/qanban/EventService.groovy new file mode 100644 index 0000000..817d528 --- /dev/null +++ b/qanban-domain-plugin/grails-app/services/se/qbranch/qanban/EventService.groovy @@ -0,0 +1,29 @@ +/* + * Copyright 2009 Qbranch AB + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package se.qbranch.qanban + +class EventService { + + boolean transactional = true + + def persist(event) { + if( event && event.save() ){ + event.process() + } + + } +} \ No newline at end of file diff --git a/qanban-domain-plugin/grails-app/views/error.gsp b/qanban-domain-plugin/grails-app/views/error.gsp new file mode 100644 index 0000000..cfc512a --- /dev/null +++ b/qanban-domain-plugin/grails-app/views/error.gsp @@ -0,0 +1,54 @@ + + + Grails Runtime Exception + + + + +

Grails Runtime Exception

+

Error Details

+ +
+ Error ${request.'javax.servlet.error.status_code'}: ${request.'javax.servlet.error.message'.encodeAsHTML()}
+ Servlet: ${request.'javax.servlet.error.servlet_name'}
+ URI: ${request.'javax.servlet.error.request_uri'}
+ + Exception Message: ${exception.message?.encodeAsHTML()}
+ Caused by: ${exception.cause?.message?.encodeAsHTML()}
+ Class: ${exception.className}
+ At Line: [${exception.lineNumber}]
+ Code Snippet:
+
+ + ${cs?.encodeAsHTML()}
+
+
+
+
+ +

Stack Trace

+
+
${it.encodeAsHTML()}
+
+
+ + \ No newline at end of file diff --git a/qanban-domain-plugin/ivy.xml b/qanban-domain-plugin/ivy.xml new file mode 100644 index 0000000..aad7dbd --- /dev/null +++ b/qanban-domain-plugin/ivy.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/qanban-domain-plugin/ivysettings.xml b/qanban-domain-plugin/ivysettings.xml new file mode 100644 index 0000000..5972c9a --- /dev/null +++ b/qanban-domain-plugin/ivysettings.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/qanban-domain-plugin/plugin.xml b/qanban-domain-plugin/plugin.xml new file mode 100644 index 0000000..24f330f --- /dev/null +++ b/qanban-domain-plugin/plugin.xml @@ -0,0 +1,36 @@ + + Mattias Mirhagen + mattias.mirhagen@qbranch.se + Qanban Domain + \ +This plugin hold the domain model for the Qanban application + + http://grails.org/QanbanDomain+Plugin + + se.qbranch.qanban.PhaseEventCreate + se.qbranch.qanban.Card + se.qbranch.qanban.PhaseEvent + se.qbranch.qanban.CardEventUpdate + se.qbranch.qanban.CardEventDelete + se.qbranch.qanban.CardEventMove + se.qbranch.qanban.Event + se.qbranch.qanban.Phase + se.qbranch.qanban.PhaseEventUpdate + se.qbranch.qanban.Board + se.qbranch.qanban.UserEvent + se.qbranch.qanban.BoardEvent + se.qbranch.qanban.BoardEventCreate + se.qbranch.qanban.Role + se.qbranch.qanban.CardEventCreate + se.qbranch.qanban.CardEvent + se.qbranch.qanban.UserEventCreate + se.qbranch.qanban.PhaseEventMove + se.qbranch.qanban.PhaseEventDelete + se.qbranch.qanban.User + se.qbranch.qanban.CardEventSetAssignee + se.qbranch.qanban.EventService + UrlMappings + DataSource + + + \ No newline at end of file diff --git a/qanban-domain-plugin/scripts/DbDiffIncremental.groovy b/qanban-domain-plugin/scripts/DbDiffIncremental.groovy new file mode 100644 index 0000000..5a923d0 --- /dev/null +++ b/qanban-domain-plugin/scripts/DbDiffIncremental.groovy @@ -0,0 +1,101 @@ +import liquibase.diff.Diff +import liquibase.diff.DiffResult +import java.sql.Driver +import liquibase.database.DatabaseFactory +import java.sql.Connection +import liquibase.database.Database +import liquibase.Liquibase +import liquibase.database.DatabaseFactory + +includeTargets << new File("${liquibasePluginDir}/scripts/LiquibaseSetup.groovy") +includeTargets << new File("${liquibasePluginDir}/scripts/Migrate.groovy") + +target('dbDiffIncremental': '''Generates change log required to make Test DB match Development''') { + depends(setup) + + try { + def baseDatabase = getDatabase(config) + ConfigObject testConfig = loadTestConfig(classLoader, servletVersion, basedir, userHome, grailsAppVersion, grailsAppName, grailsHome) + + def targetLiquibase = getDiffDbLiquibase(testConfig) + + targetLiquibase.update(null) + + def targetDatabase = getDatabase(testConfig) + Diff diff = new Diff(baseDatabase, targetDatabase); + DiffResult diffResult = diff.compare(); + diffResult.printChangeLog(System.out, targetDatabase); + } + catch (Exception e) { + e.printStackTrace() + event("StatusFinal", ["Failed to diff database ${grailsEnv} with test"]) + exit(1) + } finally { + liquibase.getDatabase().getConnection().close(); + } +} + +private ConfigObject loadTestConfig(classLoader, servletVersion, basedir, userHome, grailsAppVersion, grailsAppName, grailsHome) { + def testConfigSlurper = new ConfigSlurper('dbdiff') + testConfigSlurper.setBinding(grailsHome: grailsHome, appName: grailsAppName, appVersion: grailsAppVersion, userHome: userHome, basedir: basedir, servletVersion: servletVersion) + def testConfig = testConfigSlurper.parse(classLoader.loadClass("DataSource")) + return testConfig +} + +private Database getDatabase(config) { + Properties p = config.toProperties() + + def driverClassName = config.dataSource.driverClassName + def username = config.dataSource.username + def password = config.dataSource.password + def url = config.dataSource.url + + Driver driver = getDriver(p, classLoader, driverClassName, url) + Connection connection = getConnection(url, driver, password, username, driverClassName) + + return DatabaseFactory.getInstance().findCorrectDatabaseImplementation(connection) +} + +private Liquibase getDiffDbLiquibase(def config) { + Properties p = config.toProperties() + + def driverClassName = config.dataSource.driverClassName + def username = config.dataSource.username + def password = config.dataSource.password + def url = config.dataSource.url + + Driver driver = getDriver(p, classLoader, driverClassName, url) + + def connection = getConnection(url, driver, password, username, driverClassName) + def fileOpener = classLoader.loadClass("org.liquibase.grails.GrailsFileOpener").getConstructor().newInstance() + return new Liquibase("changelog.xml", fileOpener, DatabaseFactory.getInstance().findCorrectDatabaseImplementation(connection)); +} + +private Connection getConnection(url, Driver driver, password, username, driverClassName) { + Properties info = new Properties() + info.put("user", username) + if (password != null) { + info.put("password", password); + } + + println "Base database is URL: ${url}" + connection = driver.connect(url, info); + if (connection == null) { + throw new RuntimeException("Connection could not be created to ${url} with driver ${driverClassName}. Possibly the wrong driver for the given database URL"); + } + return connection +} + +private Driver getDriver(Properties p, classLoader, driverClassName, url) { + Driver driver + if (p.driver == null) { + p.driver = DatabaseFactory.getInstance().findDefaultDriver(url) + } + if (p.driver == null) { + throw new RuntimeException("Driver class was not specified and could not be determined from the url") + } + driver = (Driver) Class.forName(driverClassName, true, classLoader).newInstance() + return driver +} + +setDefaultTarget("dbDiffIncremental") \ No newline at end of file diff --git a/qanban-domain-plugin/scripts/_Install.groovy b/qanban-domain-plugin/scripts/_Install.groovy new file mode 100644 index 0000000..a212160 --- /dev/null +++ b/qanban-domain-plugin/scripts/_Install.groovy @@ -0,0 +1,10 @@ +// +// This script is executed by Grails after plugin was installed to project. +// This script is a Gant script so you can use all special variables provided +// by Gant (such as 'baseDir' which points on project base dir). You can +// use 'ant' to access a global instance of AntBuilder +// +// For example you can create directory under project tree: +// +// ant.mkdir(dir:"${basedir}/grails-app/jobs") +// diff --git a/qanban-domain-plugin/scripts/_Uninstall.groovy b/qanban-domain-plugin/scripts/_Uninstall.groovy new file mode 100644 index 0000000..7c53169 --- /dev/null +++ b/qanban-domain-plugin/scripts/_Uninstall.groovy @@ -0,0 +1,5 @@ +// +// This script is executed by Grails when the plugin is uninstalled from project. +// Use this script if you intend to do any additional clean-up on uninstall, but +// beware of messing up SVN directories! +// diff --git a/qanban-domain-plugin/scripts/_Upgrade.groovy b/qanban-domain-plugin/scripts/_Upgrade.groovy new file mode 100644 index 0000000..6a1a4c9 --- /dev/null +++ b/qanban-domain-plugin/scripts/_Upgrade.groovy @@ -0,0 +1,10 @@ +// +// This script is executed by Grails during application upgrade ('grails upgrade' +// command). This script is a Gant script so you can use all special variables +// provided by Gant (such as 'baseDir' which points on project base dir). You can +// use 'ant' to access a global instance of AntBuilder +// +// For example you can create directory under project tree: +// +// ant.mkdir(dir:"${basedir}/grails-app/jobs") +// diff --git a/qanban-domain-plugin/test/reports/TEST-se.qbranch.qanban.BoardEventCreateTests.xml b/qanban-domain-plugin/test/reports/TEST-se.qbranch.qanban.BoardEventCreateTests.xml new file mode 100644 index 0000000..84d18f5 --- /dev/null +++ b/qanban-domain-plugin/test/reports/TEST-se.qbranch.qanban.BoardEventCreateTests.xml @@ -0,0 +1,10 @@ + + + + + + + diff --git a/qanban-domain-plugin/test/reports/TEST-se.qbranch.qanban.BoardTests.xml b/qanban-domain-plugin/test/reports/TEST-se.qbranch.qanban.BoardTests.xml new file mode 100644 index 0000000..ce7302e --- /dev/null +++ b/qanban-domain-plugin/test/reports/TEST-se.qbranch.qanban.BoardTests.xml @@ -0,0 +1,9 @@ + + + + + + + diff --git a/qanban-domain-plugin/test/reports/TEST-se.qbranch.qanban.CardEventCreateTests.xml b/qanban-domain-plugin/test/reports/TEST-se.qbranch.qanban.CardEventCreateTests.xml new file mode 100644 index 0000000..44d14b9 --- /dev/null +++ b/qanban-domain-plugin/test/reports/TEST-se.qbranch.qanban.CardEventCreateTests.xml @@ -0,0 +1,27 @@ + + + + + + + + diff --git a/qanban-domain-plugin/test/reports/TEST-se.qbranch.qanban.CardEventDeleteTests.xml b/qanban-domain-plugin/test/reports/TEST-se.qbranch.qanban.CardEventDeleteTests.xml new file mode 100644 index 0000000..0242a8b --- /dev/null +++ b/qanban-domain-plugin/test/reports/TEST-se.qbranch.qanban.CardEventDeleteTests.xml @@ -0,0 +1,15 @@ + + + + + + + diff --git a/qanban-domain-plugin/test/reports/TEST-se.qbranch.qanban.CardEventMoveTests.xml b/qanban-domain-plugin/test/reports/TEST-se.qbranch.qanban.CardEventMoveTests.xml new file mode 100644 index 0000000..ece91f1 --- /dev/null +++ b/qanban-domain-plugin/test/reports/TEST-se.qbranch.qanban.CardEventMoveTests.xml @@ -0,0 +1,44 @@ + + + + + + + + + + diff --git a/qanban-domain-plugin/test/reports/TEST-se.qbranch.qanban.CardEventSetAssigneeTests.xml b/qanban-domain-plugin/test/reports/TEST-se.qbranch.qanban.CardEventSetAssigneeTests.xml new file mode 100644 index 0000000..028f533 --- /dev/null +++ b/qanban-domain-plugin/test/reports/TEST-se.qbranch.qanban.CardEventSetAssigneeTests.xml @@ -0,0 +1,15 @@ + + + + + + + diff --git a/qanban-domain-plugin/test/reports/TEST-se.qbranch.qanban.CardEventTests.xml b/qanban-domain-plugin/test/reports/TEST-se.qbranch.qanban.CardEventTests.xml new file mode 100644 index 0000000..d093173 --- /dev/null +++ b/qanban-domain-plugin/test/reports/TEST-se.qbranch.qanban.CardEventTests.xml @@ -0,0 +1,9 @@ + + + + + + + diff --git a/qanban-domain-plugin/test/reports/TEST-se.qbranch.qanban.CardEventUpdateTests.xml b/qanban-domain-plugin/test/reports/TEST-se.qbranch.qanban.CardEventUpdateTests.xml new file mode 100644 index 0000000..ee66277 --- /dev/null +++ b/qanban-domain-plugin/test/reports/TEST-se.qbranch.qanban.CardEventUpdateTests.xml @@ -0,0 +1,25 @@ + + + + + + + + diff --git a/qanban-domain-plugin/test/reports/TEST-se.qbranch.qanban.CardTests.xml b/qanban-domain-plugin/test/reports/TEST-se.qbranch.qanban.CardTests.xml new file mode 100644 index 0000000..30f4092 --- /dev/null +++ b/qanban-domain-plugin/test/reports/TEST-se.qbranch.qanban.CardTests.xml @@ -0,0 +1,9 @@ + + + + + + + diff --git a/qanban-domain-plugin/test/reports/TEST-se.qbranch.qanban.EventServiceTests.xml b/qanban-domain-plugin/test/reports/TEST-se.qbranch.qanban.EventServiceTests.xml new file mode 100644 index 0000000..4c1b24f --- /dev/null +++ b/qanban-domain-plugin/test/reports/TEST-se.qbranch.qanban.EventServiceTests.xml @@ -0,0 +1,9 @@ + + + + + + + diff --git a/qanban-domain-plugin/test/reports/TEST-se.qbranch.qanban.EventTests.xml b/qanban-domain-plugin/test/reports/TEST-se.qbranch.qanban.EventTests.xml new file mode 100644 index 0000000..cb9f804 --- /dev/null +++ b/qanban-domain-plugin/test/reports/TEST-se.qbranch.qanban.EventTests.xml @@ -0,0 +1,11 @@ + + + + + + + diff --git a/qanban-domain-plugin/test/reports/TEST-se.qbranch.qanban.PhaseEventCreateTests.xml b/qanban-domain-plugin/test/reports/TEST-se.qbranch.qanban.PhaseEventCreateTests.xml new file mode 100644 index 0000000..fbb12f7 --- /dev/null +++ b/qanban-domain-plugin/test/reports/TEST-se.qbranch.qanban.PhaseEventCreateTests.xml @@ -0,0 +1,16 @@ + + + + + + + + + diff --git a/qanban-domain-plugin/test/reports/TEST-se.qbranch.qanban.PhaseEventDeleteTests.xml b/qanban-domain-plugin/test/reports/TEST-se.qbranch.qanban.PhaseEventDeleteTests.xml new file mode 100644 index 0000000..6064f94 --- /dev/null +++ b/qanban-domain-plugin/test/reports/TEST-se.qbranch.qanban.PhaseEventDeleteTests.xml @@ -0,0 +1,15 @@ + + + + + + + diff --git a/qanban-domain-plugin/test/reports/TEST-se.qbranch.qanban.PhaseEventMoveTests.xml b/qanban-domain-plugin/test/reports/TEST-se.qbranch.qanban.PhaseEventMoveTests.xml new file mode 100644 index 0000000..4954d82 --- /dev/null +++ b/qanban-domain-plugin/test/reports/TEST-se.qbranch.qanban.PhaseEventMoveTests.xml @@ -0,0 +1,15 @@ + + + + + + + diff --git a/qanban-domain-plugin/test/reports/TEST-se.qbranch.qanban.PhaseEventTests.xml b/qanban-domain-plugin/test/reports/TEST-se.qbranch.qanban.PhaseEventTests.xml new file mode 100644 index 0000000..9a42f41 --- /dev/null +++ b/qanban-domain-plugin/test/reports/TEST-se.qbranch.qanban.PhaseEventTests.xml @@ -0,0 +1,9 @@ + + + + + + + diff --git a/qanban-domain-plugin/test/reports/TEST-se.qbranch.qanban.PhaseEventUpdateTests.xml b/qanban-domain-plugin/test/reports/TEST-se.qbranch.qanban.PhaseEventUpdateTests.xml new file mode 100644 index 0000000..1d48731 --- /dev/null +++ b/qanban-domain-plugin/test/reports/TEST-se.qbranch.qanban.PhaseEventUpdateTests.xml @@ -0,0 +1,15 @@ + + + + + + + diff --git a/qanban-domain-plugin/test/reports/TEST-se.qbranch.qanban.PhaseTests.xml b/qanban-domain-plugin/test/reports/TEST-se.qbranch.qanban.PhaseTests.xml new file mode 100644 index 0000000..00ec3de --- /dev/null +++ b/qanban-domain-plugin/test/reports/TEST-se.qbranch.qanban.PhaseTests.xml @@ -0,0 +1,16 @@ + + + + + + + + + diff --git a/qanban-domain-plugin/test/reports/TEST-se.qbranch.qanban.UserEventCreateTests.xml b/qanban-domain-plugin/test/reports/TEST-se.qbranch.qanban.UserEventCreateTests.xml new file mode 100644 index 0000000..f75e4d1 --- /dev/null +++ b/qanban-domain-plugin/test/reports/TEST-se.qbranch.qanban.UserEventCreateTests.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + diff --git a/qanban-domain-plugin/test/reports/TESTS-TestSuites.xml b/qanban-domain-plugin/test/reports/TESTS-TestSuites.xml new file mode 100644 index 0000000..8cf18e0 --- /dev/null +++ b/qanban-domain-plugin/test/reports/TESTS-TestSuites.xml @@ -0,0 +1,360 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/qanban-domain-plugin/test/reports/html/all-tests.html b/qanban-domain-plugin/test/reports/html/all-tests.html new file mode 100644 index 0000000..b6fc559 --- /dev/null +++ b/qanban-domain-plugin/test/reports/html/all-tests.html @@ -0,0 +1,115 @@ + + + +Unit Test Results: All Tests + + + +

Unit Test Results

+ + + + +
Designed for use with JUnit and Ant.
+
+

All Tests

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ClassNameStatusTypeTime(s)
BoardEventCreateTeststestCreatingABoardSuccess0.121
BoardTeststestHasPhasesSuccess0.014
CardEventCreateTeststestCreateingValidEventSuccess0.222
CardEventCreateTeststestCreateingInvalidEventWithoutCaseNoSuccess0.209
CardEventDeleteTeststestDeletCardSuccess0.251
CardEventMoveTeststestValidMoveCardEventWithinAPhaseSuccess0.255
CardEventMoveTeststestValidMoveCardEventBetweenPhasesSuccess0.222
CardEventMoveTeststestInvalidMoveCardEventSuccess0.188
CardEventMoveTeststestCompareOfCardEventMoveSuccess0.186
CardEventSetAssigneeTeststestSetAndUnsetAssigneeSuccess0.230
CardEventTeststestSomethingSuccess0.004
CardEventUpdateTeststestSuccessfulUpdatingSuccess0.261
CardEventUpdateTeststestUnsuccessfulUpdateWidhoutCaseNumberSuccess0.316
CardTeststestCreateCardSuccess0.005
EventServiceTeststestSomethingSuccess0.005
EventTeststestEqualsSuccess0.024
PhaseEventCreateTeststestCreatingAValidPhaseSuccess0.279
PhaseEventCreateTeststestCreatingPhaseWithoudPositionSuccess0.491
PhaseEventCreateTeststestCreatingAPhaseWithLiteralsAsLimitSuccess0.324
PhaseEventDeleteTeststestDeletePhaseSuccess0.339
PhaseEventMoveTeststestLegalMoveOfFirstPhaseToNextIndexSuccess2.400
PhaseEventTeststestSomethingSuccess0.004
PhaseEventUpdateTeststestSomethingSuccess0.199
PhaseTeststestCreatePhaseSuccess0.036
PhaseTeststestPhaseWithCardSuccess0.094
PhaseTeststestCreatingAPhaseWithLiteralCardLimitSuccess0.032
UserEventCreateTeststestCreatingAUserSuccess0.235
UserEventCreateTeststestCreatingAUserFromAUserObjSuccess0.092
UserEventCreateTeststestCreatingAUserWithPassSuccess0.053
UserEventCreateTeststestCreateWithInconsistentPasswordsSuccess0.057
UserEventCreateTeststestCreateWithoutPasswordsSuccess0.057
+ + diff --git a/qanban-domain-plugin/test/reports/html/allclasses-frame.html b/qanban-domain-plugin/test/reports/html/allclasses-frame.html new file mode 100644 index 0000000..d601a43 --- /dev/null +++ b/qanban-domain-plugin/test/reports/html/allclasses-frame.html @@ -0,0 +1,66 @@ + + + +All Unit Test Classes + + + +

Classes

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
BoardEventCreateTests
BoardTests
CardEventCreateTests
CardEventDeleteTests
CardEventMoveTests
CardEventSetAssigneeTests
CardEventTests
CardEventUpdateTests
CardTests
EventServiceTests
EventTests
PhaseEventCreateTests
PhaseEventDeleteTests
PhaseEventMoveTests
PhaseEventTests
PhaseEventUpdateTests
PhaseTests
UserEventCreateTests
+ + diff --git a/qanban-domain-plugin/test/reports/html/alltests-errors.html b/qanban-domain-plugin/test/reports/html/alltests-errors.html new file mode 100644 index 0000000..65fe6f5 --- /dev/null +++ b/qanban-domain-plugin/test/reports/html/alltests-errors.html @@ -0,0 +1,22 @@ + + + +Unit Test Results: All Errors + + + +

Unit Test Results

+ + + + +
Designed for use with JUnit and Ant.
+
+

All Errors

+ + + + +
ClassNameStatusTypeTime(s)
+ + diff --git a/qanban-domain-plugin/test/reports/html/alltests-fails.html b/qanban-domain-plugin/test/reports/html/alltests-fails.html new file mode 100644 index 0000000..e95478e --- /dev/null +++ b/qanban-domain-plugin/test/reports/html/alltests-fails.html @@ -0,0 +1,22 @@ + + + +Unit Test Results: All Failures + + + +

Unit Test Results

+ + + + +
Designed for use with JUnit and Ant.
+
+

All Failures

+ + + + +
ClassNameStatusTypeTime(s)
+ + diff --git a/qanban-domain-plugin/test/reports/html/index.html b/qanban-domain-plugin/test/reports/html/index.html new file mode 100644 index 0000000..a8ede17 --- /dev/null +++ b/qanban-domain-plugin/test/reports/html/index.html @@ -0,0 +1,19 @@ + + + +Unit Test Results. + + + + + + + + +<h2>Frame Alert</h2> +<p> + This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client. + </p> + + + diff --git a/qanban-domain-plugin/test/reports/html/overview-frame.html b/qanban-domain-plugin/test/reports/html/overview-frame.html new file mode 100644 index 0000000..57bf0ca --- /dev/null +++ b/qanban-domain-plugin/test/reports/html/overview-frame.html @@ -0,0 +1,18 @@ + + + +All Unit Test Packages + + + +

+Home +

+

Packages

+ + + + +
se.qbranch.qanban
+ + diff --git a/qanban-domain-plugin/test/reports/html/overview-summary.html b/qanban-domain-plugin/test/reports/html/overview-summary.html new file mode 100644 index 0000000..55d5e10 --- /dev/null +++ b/qanban-domain-plugin/test/reports/html/overview-summary.html @@ -0,0 +1,41 @@ + + + +Unit Test Results: Summary + + + +

Unit Test Results

+ + + + +
Designed for use with JUnit and Ant.
+
+

Summary

+ + + + + + + +
TestsFailuresErrorsSuccess rateTime
3100100.00%7.211
+ + + + +
+ Note: failures are anticipated and checked for with assertions while errors are unanticipated. +
+

Packages

+ + + + + + + +
NameTestsErrorsFailuresTime(s)Time StampHost
se.qbranch.qanban31007.2112010-01-15T10:00:07qb-trollgrottan
+ + diff --git a/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/0_BoardEventCreateTests-err.txt b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/0_BoardEventCreateTests-err.txt new file mode 100644 index 0000000..768e5fe --- /dev/null +++ b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/0_BoardEventCreateTests-err.txt @@ -0,0 +1,2 @@ +--Output from testCreatingABoard-- + diff --git a/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/0_BoardEventCreateTests-out.txt b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/0_BoardEventCreateTests-out.txt new file mode 100644 index 0000000..81b4bad --- /dev/null +++ b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/0_BoardEventCreateTests-out.txt @@ -0,0 +1,3 @@ +--Output from testCreatingABoard-- +fa54523ba686f6142a51ca4c9d2ea392 + diff --git a/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/0_BoardEventCreateTests.html b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/0_BoardEventCreateTests.html new file mode 100644 index 0000000..488658a --- /dev/null +++ b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/0_BoardEventCreateTests.html @@ -0,0 +1,83 @@ + + + +Unit Test Results: se.qbranch.qanban.BoardEventCreateTests + + + + +

Unit Test Results

+ + + + +
Designed for use with JUnit and Ant.
+
+

Class se.qbranch.qanban.BoardEventCreateTests

+ + + + + + + +
NameTestsErrorsFailuresTime(s)Time StampHost
BoardEventCreateTests1000.1212010-01-15T10:00:07qb-trollgrottan
+

Tests

+ + + + + + + +
NameStatusTypeTime(s)
testCreatingABoardSuccess0.121
+
+ + Properties » + +
+
+ + System.out » + +
+
+ + System.err » + +
+ + diff --git a/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/10_EventTests-err.txt b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/10_EventTests-err.txt new file mode 100644 index 0000000..7a35efc --- /dev/null +++ b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/10_EventTests-err.txt @@ -0,0 +1,2 @@ +--Output from testEquals-- + diff --git a/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/10_EventTests-out.txt b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/10_EventTests-out.txt new file mode 100644 index 0000000..0f6767a --- /dev/null +++ b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/10_EventTests-out.txt @@ -0,0 +1,4 @@ +--Output from testEquals-- +1 +2 + diff --git a/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/10_EventTests.html b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/10_EventTests.html new file mode 100644 index 0000000..18f9198 --- /dev/null +++ b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/10_EventTests.html @@ -0,0 +1,83 @@ + + + +Unit Test Results: se.qbranch.qanban.EventTests + + + + +

Unit Test Results

+ + + + +
Designed for use with JUnit and Ant.
+
+

Class se.qbranch.qanban.EventTests

+ + + + + + + +
NameTestsErrorsFailuresTime(s)Time StampHost
EventTests1000.0242010-01-15T10:00:07qb-trollgrottan
+

Tests

+ + + + + + + +
NameStatusTypeTime(s)
testEqualsSuccess0.024
+
+ + Properties » + +
+
+ + System.out » + +
+
+ + System.err » + +
+ + diff --git a/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/11_PhaseEventCreateTests-err.txt b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/11_PhaseEventCreateTests-err.txt new file mode 100644 index 0000000..779a338 --- /dev/null +++ b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/11_PhaseEventCreateTests-err.txt @@ -0,0 +1,4 @@ +--Output from testCreatingAValidPhase-- +--Output from testCreatingPhaseWithoudPosition-- +--Output from testCreatingAPhaseWithLiteralsAsLimit-- + diff --git a/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/11_PhaseEventCreateTests-out.txt b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/11_PhaseEventCreateTests-out.txt new file mode 100644 index 0000000..e01d5a7 --- /dev/null +++ b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/11_PhaseEventCreateTests-out.txt @@ -0,0 +1,5 @@ +--Output from testCreatingAValidPhase-- +--Output from testCreatingPhaseWithoudPosition-- +--Output from testCreatingAPhaseWithLiteralsAsLimit-- +limit with literals - null + diff --git a/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/11_PhaseEventCreateTests.html b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/11_PhaseEventCreateTests.html new file mode 100644 index 0000000..87df5d4 --- /dev/null +++ b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/11_PhaseEventCreateTests.html @@ -0,0 +1,89 @@ + + + +Unit Test Results: se.qbranch.qanban.PhaseEventCreateTests + + + + +

Unit Test Results

+ + + + +
Designed for use with JUnit and Ant.
+
+

Class se.qbranch.qanban.PhaseEventCreateTests

+ + + + + + + +
NameTestsErrorsFailuresTime(s)Time StampHost
PhaseEventCreateTests3001.0942010-01-15T10:00:05qb-trollgrottan
+

Tests

+ + + + + + + + + + + + + +
NameStatusTypeTime(s)
testCreatingAValidPhaseSuccess0.279
testCreatingPhaseWithoudPositionSuccess0.491
testCreatingAPhaseWithLiteralsAsLimitSuccess0.324
+
+ + Properties » + +
+
+ + System.out » + +
+
+ + System.err » + +
+ + diff --git a/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/12_PhaseEventDeleteTests-err.txt b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/12_PhaseEventDeleteTests-err.txt new file mode 100644 index 0000000..1bc2c99 --- /dev/null +++ b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/12_PhaseEventDeleteTests-err.txt @@ -0,0 +1,2 @@ +--Output from testDeletePhase-- + diff --git a/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/12_PhaseEventDeleteTests-out.txt b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/12_PhaseEventDeleteTests-out.txt new file mode 100644 index 0000000..79745ae --- /dev/null +++ b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/12_PhaseEventDeleteTests-out.txt @@ -0,0 +1,8 @@ +--Output from testDeletePhase-- +First phase + Card #1 + Card #2 +Second phase + Card #3 +Third phase + diff --git a/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/12_PhaseEventDeleteTests.html b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/12_PhaseEventDeleteTests.html new file mode 100644 index 0000000..9adacfe --- /dev/null +++ b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/12_PhaseEventDeleteTests.html @@ -0,0 +1,83 @@ + + + +Unit Test Results: se.qbranch.qanban.PhaseEventDeleteTests + + + + +

Unit Test Results

+ + + + +
Designed for use with JUnit and Ant.
+
+

Class se.qbranch.qanban.PhaseEventDeleteTests

+ + + + + + + +
NameTestsErrorsFailuresTime(s)Time StampHost
PhaseEventDeleteTests1000.3392010-01-15T10:00:08qb-trollgrottan
+

Tests

+ + + + + + + +
NameStatusTypeTime(s)
testDeletePhaseSuccess0.339
+
+ + Properties » + +
+
+ + System.out » + +
+
+ + System.err » + +
+ + diff --git a/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/13_PhaseEventMoveTests-err.txt b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/13_PhaseEventMoveTests-err.txt new file mode 100644 index 0000000..db367ad --- /dev/null +++ b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/13_PhaseEventMoveTests-err.txt @@ -0,0 +1,2 @@ +--Output from testLegalMoveOfFirstPhaseToNextIndex-- + diff --git a/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/13_PhaseEventMoveTests-out.txt b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/13_PhaseEventMoveTests-out.txt new file mode 100644 index 0000000..69b9135 --- /dev/null +++ b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/13_PhaseEventMoveTests-out.txt @@ -0,0 +1,8 @@ +--Output from testLegalMoveOfFirstPhaseToNextIndex-- +First phase + Card #1 + Card #2 +Second phase + Card #3 +Third phase + diff --git a/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/13_PhaseEventMoveTests.html b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/13_PhaseEventMoveTests.html new file mode 100644 index 0000000..33a9852 --- /dev/null +++ b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/13_PhaseEventMoveTests.html @@ -0,0 +1,83 @@ + + + +Unit Test Results: se.qbranch.qanban.PhaseEventMoveTests + + + + +

Unit Test Results

+ + + + +
Designed for use with JUnit and Ant.
+
+

Class se.qbranch.qanban.PhaseEventMoveTests

+ + + + + + + +
NameTestsErrorsFailuresTime(s)Time StampHost
PhaseEventMoveTests1002.4012010-01-15T10:00:03qb-trollgrottan
+

Tests

+ + + + + + + +
NameStatusTypeTime(s)
testLegalMoveOfFirstPhaseToNextIndexSuccess2.400
+
+ + Properties » + +
+
+ + System.out » + +
+
+ + System.err » + +
+ + diff --git a/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/14_PhaseEventTests-err.txt b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/14_PhaseEventTests-err.txt new file mode 100644 index 0000000..4d5aeed --- /dev/null +++ b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/14_PhaseEventTests-err.txt @@ -0,0 +1,2 @@ +--Output from testSomething-- + diff --git a/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/14_PhaseEventTests-out.txt b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/14_PhaseEventTests-out.txt new file mode 100644 index 0000000..4d5aeed --- /dev/null +++ b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/14_PhaseEventTests-out.txt @@ -0,0 +1,2 @@ +--Output from testSomething-- + diff --git a/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/14_PhaseEventTests.html b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/14_PhaseEventTests.html new file mode 100644 index 0000000..8bef82d --- /dev/null +++ b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/14_PhaseEventTests.html @@ -0,0 +1,83 @@ + + + +Unit Test Results: se.qbranch.qanban.PhaseEventTests + + + + +

Unit Test Results

+ + + + +
Designed for use with JUnit and Ant.
+
+

Class se.qbranch.qanban.PhaseEventTests

+ + + + + + + +
NameTestsErrorsFailuresTime(s)Time StampHost
PhaseEventTests1000.0052010-01-15T10:00:07qb-trollgrottan
+

Tests

+ + + + + + + +
NameStatusTypeTime(s)
testSomethingSuccess0.004
+
+ + Properties » + +
+
+ + System.out » + +
+
+ + System.err » + +
+ + diff --git a/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/15_PhaseEventUpdateTests-err.txt b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/15_PhaseEventUpdateTests-err.txt new file mode 100644 index 0000000..4d5aeed --- /dev/null +++ b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/15_PhaseEventUpdateTests-err.txt @@ -0,0 +1,2 @@ +--Output from testSomething-- + diff --git a/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/15_PhaseEventUpdateTests-out.txt b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/15_PhaseEventUpdateTests-out.txt new file mode 100644 index 0000000..bad97e0 --- /dev/null +++ b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/15_PhaseEventUpdateTests-out.txt @@ -0,0 +1,8 @@ +--Output from testSomething-- +First phase + Card #1 + Card #2 +Second phase + Card #3 +Third phase + diff --git a/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/15_PhaseEventUpdateTests.html b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/15_PhaseEventUpdateTests.html new file mode 100644 index 0000000..850d8ca --- /dev/null +++ b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/15_PhaseEventUpdateTests.html @@ -0,0 +1,83 @@ + + + +Unit Test Results: se.qbranch.qanban.PhaseEventUpdateTests + + + + +

Unit Test Results

+ + + + +
Designed for use with JUnit and Ant.
+
+

Class se.qbranch.qanban.PhaseEventUpdateTests

+ + + + + + + +
NameTestsErrorsFailuresTime(s)Time StampHost
PhaseEventUpdateTests1000.1992010-01-15T10:00:07qb-trollgrottan
+

Tests

+ + + + + + + +
NameStatusTypeTime(s)
testSomethingSuccess0.199
+
+ + Properties » + +
+
+ + System.out » + +
+
+ + System.err » + +
+ + diff --git a/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/16_PhaseTests-err.txt b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/16_PhaseTests-err.txt new file mode 100644 index 0000000..6f23be4 --- /dev/null +++ b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/16_PhaseTests-err.txt @@ -0,0 +1,4 @@ +--Output from testCreatePhase-- +--Output from testPhaseWithCard-- +--Output from testCreatingAPhaseWithLiteralCardLimit-- + diff --git a/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/16_PhaseTests-out.txt b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/16_PhaseTests-out.txt new file mode 100644 index 0000000..baf823b --- /dev/null +++ b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/16_PhaseTests-out.txt @@ -0,0 +1,5 @@ +--Output from testCreatePhase-- +--Output from testPhaseWithCard-- +--Output from testCreatingAPhaseWithLiteralCardLimit-- +Field error in object 'se.qbranch.qanban.Phase' on field 'cardLimit': rejected value [null]; codes [se.qbranch.qanban.Phase.cardLimit.nullable.error.se.qbranch.qanban.Phase.cardLimit,se.qbranch.qanban.Phase.cardLimit.nullable.error.cardLimit,se.qbranch.qanban.Phase.cardLimit.nullable.error.java.lang.Integer,se.qbranch.qanban.Phase.cardLimit.nullable.error,phase.cardLimit.nullable.error.se.qbranch.qanban.Phase.cardLimit,phase.cardLimit.nullable.error.cardLimit,phase.cardLimit.nullable.error.java.lang.Integer,phase.cardLimit.nullable.error,se.qbranch.qanban.Phase.cardLimit.nullable.se.qbranch.qanban.Phase.cardLimit,se.qbranch.qanban.Phase.cardLimit.nullable.cardLimit,se.qbranch.qanban.Phase.cardLimit.nullable.java.lang.Integer,se.qbranch.qanban.Phase.cardLimit.nullable,phase.cardLimit.nullable.se.qbranch.qanban.Phase.cardLimit,phase.cardLimit.nullable.cardLimit,phase.cardLimit.nullable.java.lang.Integer,phase.cardLimit.nullable,nullable.se.qbranch.qanban.Phase.cardLimit,nullable.cardLimit,nullable.java.lang.Integer,nullable]; arguments [cardLimit,class se.qbranch.qanban.Phase]; default message [Property [{0}] of class [{1}] cannot be null] + diff --git a/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/16_PhaseTests.html b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/16_PhaseTests.html new file mode 100644 index 0000000..4f2bf98 --- /dev/null +++ b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/16_PhaseTests.html @@ -0,0 +1,89 @@ + + + +Unit Test Results: se.qbranch.qanban.PhaseTests + + + + +

Unit Test Results

+ + + + +
Designed for use with JUnit and Ant.
+
+

Class se.qbranch.qanban.PhaseTests

+ + + + + + + +
NameTestsErrorsFailuresTime(s)Time StampHost
PhaseTests3000.1622010-01-15T10:00:09qb-trollgrottan
+

Tests

+ + + + + + + + + + + + + +
NameStatusTypeTime(s)
testCreatePhaseSuccess0.036
testPhaseWithCardSuccess0.094
testCreatingAPhaseWithLiteralCardLimitSuccess0.032
+
+ + Properties » + +
+
+ + System.out » + +
+
+ + System.err » + +
+ + diff --git a/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/17_UserEventCreateTests-err.txt b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/17_UserEventCreateTests-err.txt new file mode 100644 index 0000000..f068128 --- /dev/null +++ b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/17_UserEventCreateTests-err.txt @@ -0,0 +1,6 @@ +--Output from testCreatingAUser-- +--Output from testCreatingAUserFromAUserObj-- +--Output from testCreatingAUserWithPass-- +--Output from testCreateWithInconsistentPasswords-- +--Output from testCreateWithoutPasswords-- + diff --git a/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/17_UserEventCreateTests-out.txt b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/17_UserEventCreateTests-out.txt new file mode 100644 index 0000000..f068128 --- /dev/null +++ b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/17_UserEventCreateTests-out.txt @@ -0,0 +1,6 @@ +--Output from testCreatingAUser-- +--Output from testCreatingAUserFromAUserObj-- +--Output from testCreatingAUserWithPass-- +--Output from testCreateWithInconsistentPasswords-- +--Output from testCreateWithoutPasswords-- + diff --git a/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/17_UserEventCreateTests.html b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/17_UserEventCreateTests.html new file mode 100644 index 0000000..c455cdb --- /dev/null +++ b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/17_UserEventCreateTests.html @@ -0,0 +1,95 @@ + + + +Unit Test Results: se.qbranch.qanban.UserEventCreateTests + + + + +

Unit Test Results

+ + + + +
Designed for use with JUnit and Ant.
+
+

Class se.qbranch.qanban.UserEventCreateTests

+ + + + + + + +
NameTestsErrorsFailuresTime(s)Time StampHost
UserEventCreateTests5000.4962010-01-15T10:00:09qb-trollgrottan
+

Tests

+ + + + + + + + + + + + + + + + + + + +
NameStatusTypeTime(s)
testCreatingAUserSuccess0.235
testCreatingAUserFromAUserObjSuccess0.092
testCreatingAUserWithPassSuccess0.053
testCreateWithInconsistentPasswordsSuccess0.057
testCreateWithoutPasswordsSuccess0.057
+
+ + Properties » + +
+
+ + System.out » + +
+
+ + System.err » + +
+ + diff --git a/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/1_BoardTests-err.txt b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/1_BoardTests-err.txt new file mode 100644 index 0000000..b2024cb --- /dev/null +++ b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/1_BoardTests-err.txt @@ -0,0 +1,2 @@ +--Output from testHasPhases-- + diff --git a/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/1_BoardTests-out.txt b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/1_BoardTests-out.txt new file mode 100644 index 0000000..b2024cb --- /dev/null +++ b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/1_BoardTests-out.txt @@ -0,0 +1,2 @@ +--Output from testHasPhases-- + diff --git a/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/1_BoardTests.html b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/1_BoardTests.html new file mode 100644 index 0000000..e59418d --- /dev/null +++ b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/1_BoardTests.html @@ -0,0 +1,83 @@ + + + +Unit Test Results: se.qbranch.qanban.BoardTests + + + + +

Unit Test Results

+ + + + +
Designed for use with JUnit and Ant.
+
+

Class se.qbranch.qanban.BoardTests

+ + + + + + + +
NameTestsErrorsFailuresTime(s)Time StampHost
BoardTests1000.0142010-01-15T10:00:07qb-trollgrottan
+

Tests

+ + + + + + + +
NameStatusTypeTime(s)
testHasPhasesSuccess0.014
+
+ + Properties » + +
+
+ + System.out » + +
+
+ + System.err » + +
+ + diff --git a/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/2_CardEventCreateTests-err.txt b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/2_CardEventCreateTests-err.txt new file mode 100644 index 0000000..d88975a --- /dev/null +++ b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/2_CardEventCreateTests-err.txt @@ -0,0 +1,3 @@ +--Output from testCreateingValidEvent-- +--Output from testCreateingInvalidEventWithoutCaseNo-- + diff --git a/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/2_CardEventCreateTests-out.txt b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/2_CardEventCreateTests-out.txt new file mode 100644 index 0000000..0925589 --- /dev/null +++ b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/2_CardEventCreateTests-out.txt @@ -0,0 +1,18 @@ +--Output from testCreateingValidEvent-- +First phase + Card #1 + Card #2 +Second phase + Card #3 +Third phase +c90fd479c1f29370da16848db2eb7cbf +--Output from testCreateingInvalidEventWithoutCaseNo-- +First phase + Card #1 + Card #2 +Second phase + Card #3 +Third phase +Field error in object 'se.qbranch.qanban.CardEventCreate' on field 'caseNumber': rejected value [null]; codes [se.qbranch.qanban.CardEventCreate.caseNumber.nullable.error.se.qbranch.qanban.CardEventCreate.caseNumber,se.qbranch.qanban.CardEventCreate.caseNumber.nullable.error.caseNumber,se.qbranch.qanban.CardEventCreate.caseNumber.nullable.error.java.lang.String,se.qbranch.qanban.CardEventCreate.caseNumber.nullable.error,cardEventCreate.caseNumber.nullable.error.se.qbranch.qanban.CardEventCreate.caseNumber,cardEventCreate.caseNumber.nullable.error.caseNumber,cardEventCreate.caseNumber.nullable.error.java.lang.String,cardEventCreate.caseNumber.nullable.error,se.qbranch.qanban.CardEventCreate.caseNumber.nullable.se.qbranch.qanban.CardEventCreate.caseNumber,se.qbranch.qanban.CardEventCreate.caseNumber.nullable.caseNumber,se.qbranch.qanban.CardEventCreate.caseNumber.nullable.java.lang.String,se.qbranch.qanban.CardEventCreate.caseNumber.nullable,cardEventCreate.caseNumber.nullable.se.qbranch.qanban.CardEventCreate.caseNumber,cardEventCreate.caseNumber.nullable.caseNumber,cardEventCreate.caseNumber.nullable.java.lang.String,cardEventCreate.caseNumber.nullable,nullable.se.qbranch.qanban.CardEventCreate.caseNumber,nullable.caseNumber,nullable.java.lang.String,nullable]; arguments [caseNumber,class se.qbranch.qanban.CardEventCreate]; default message [Property [{0}] of class [{1}] cannot be null] +4e0ab1fd11f8b0bf50dcd9e276fb970d + diff --git a/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/2_CardEventCreateTests.html b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/2_CardEventCreateTests.html new file mode 100644 index 0000000..3db90aa --- /dev/null +++ b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/2_CardEventCreateTests.html @@ -0,0 +1,86 @@ + + + +Unit Test Results: se.qbranch.qanban.CardEventCreateTests + + + + +

Unit Test Results

+ + + + +
Designed for use with JUnit and Ant.
+
+

Class se.qbranch.qanban.CardEventCreateTests

+ + + + + + + +
NameTestsErrorsFailuresTime(s)Time StampHost
CardEventCreateTests2000.4312010-01-15T10:00:06qb-trollgrottan
+

Tests

+ + + + + + + + + + +
NameStatusTypeTime(s)
testCreateingValidEventSuccess0.222
testCreateingInvalidEventWithoutCaseNoSuccess0.209
+
+ + Properties » + +
+
+ + System.out » + +
+
+ + System.err » + +
+ + diff --git a/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/3_CardEventDeleteTests-err.txt b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/3_CardEventDeleteTests-err.txt new file mode 100644 index 0000000..2732ed5 --- /dev/null +++ b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/3_CardEventDeleteTests-err.txt @@ -0,0 +1,2 @@ +--Output from testDeletCard-- + diff --git a/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/3_CardEventDeleteTests-out.txt b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/3_CardEventDeleteTests-out.txt new file mode 100644 index 0000000..0b39bca --- /dev/null +++ b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/3_CardEventDeleteTests-out.txt @@ -0,0 +1,8 @@ +--Output from testDeletCard-- +First phase + Card #1 + Card #2 +Second phase + Card #3 +Third phase + diff --git a/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/3_CardEventDeleteTests.html b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/3_CardEventDeleteTests.html new file mode 100644 index 0000000..9896c25 --- /dev/null +++ b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/3_CardEventDeleteTests.html @@ -0,0 +1,83 @@ + + + +Unit Test Results: se.qbranch.qanban.CardEventDeleteTests + + + + +

Unit Test Results

+ + + + +
Designed for use with JUnit and Ant.
+
+

Class se.qbranch.qanban.CardEventDeleteTests

+ + + + + + + +
NameTestsErrorsFailuresTime(s)Time StampHost
CardEventDeleteTests1000.2512010-01-15T10:00:07qb-trollgrottan
+

Tests

+ + + + + + + +
NameStatusTypeTime(s)
testDeletCardSuccess0.251
+
+ + Properties » + +
+
+ + System.out » + +
+
+ + System.err » + +
+ + diff --git a/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/4_CardEventMoveTests-err.txt b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/4_CardEventMoveTests-err.txt new file mode 100644 index 0000000..f67eb1e --- /dev/null +++ b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/4_CardEventMoveTests-err.txt @@ -0,0 +1,5 @@ +--Output from testValidMoveCardEventWithinAPhase-- +--Output from testValidMoveCardEventBetweenPhases-- +--Output from testInvalidMoveCardEvent-- +--Output from testCompareOfCardEventMove-- + diff --git a/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/4_CardEventMoveTests-out.txt b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/4_CardEventMoveTests-out.txt new file mode 100644 index 0000000..4ea0d42 --- /dev/null +++ b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/4_CardEventMoveTests-out.txt @@ -0,0 +1,31 @@ +--Output from testValidMoveCardEventWithinAPhase-- +First phase + Card #1 + Card #2 +Second phase + Card #3 +Third phase +--Output from testValidMoveCardEventBetweenPhases-- +First phase + Card #1 + Card #2 +Second phase + Card #3 +Third phase +--Output from testInvalidMoveCardEvent-- +First phase + Card #1 + Card #2 +Second phase + Card #3 +Third phase +org.codehaus.groovy.grails.plugins.testing.GrailsMockErrors: 1 errors +Field error in object 'se.qbranch.qanban.CardEventMove' on field 'newCardIndex': rejected value [-1]; codes [se.qbranch.qanban.CardEventMove.newCardIndex.min.error.se.qbranch.qanban.CardEventMove.newCardIndex,se.qbranch.qanban.CardEventMove.newCardIndex.min.error.newCardIndex,se.qbranch.qanban.CardEventMove.newCardIndex.min.error.java.lang.Integer,se.qbranch.qanban.CardEventMove.newCardIndex.min.error,cardEventMove.newCardIndex.min.error.se.qbranch.qanban.CardEventMove.newCardIndex,cardEventMove.newCardIndex.min.error.newCardIndex,cardEventMove.newCardIndex.min.error.java.lang.Integer,cardEventMove.newCardIndex.min.error,se.qbranch.qanban.CardEventMove.newCardIndex.min.notmet.se.qbranch.qanban.CardEventMove.newCardIndex,se.qbranch.qanban.CardEventMove.newCardIndex.min.notmet.newCardIndex,se.qbranch.qanban.CardEventMove.newCardIndex.min.notmet.java.lang.Integer,se.qbranch.qanban.CardEventMove.newCardIndex.min.notmet,cardEventMove.newCardIndex.min.notmet.se.qbranch.qanban.CardEventMove.newCardIndex,cardEventMove.newCardIndex.min.notmet.newCardIndex,cardEventMove.newCardIndex.min.notmet.java.lang.Integer,cardEventMove.newCardIndex.min.notmet,min.notmet.se.qbranch.qanban.CardEventMove.newCardIndex,min.notmet.newCardIndex,min.notmet.java.lang.Integer,min.notmet]; arguments [newCardIndex,class se.qbranch.qanban.CardEventMove,-1,0]; default message [Property [{0}] of class [{1}] with value [{2}] is less than minimum value [{3}]] +--Output from testCompareOfCardEventMove-- +First phase + Card #1 + Card #2 +Second phase + Card #3 +Third phase + diff --git a/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/4_CardEventMoveTests.html b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/4_CardEventMoveTests.html new file mode 100644 index 0000000..da17689 --- /dev/null +++ b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/4_CardEventMoveTests.html @@ -0,0 +1,92 @@ + + + +Unit Test Results: se.qbranch.qanban.CardEventMoveTests + + + + +

Unit Test Results

+ + + + +
Designed for use with JUnit and Ant.
+
+

Class se.qbranch.qanban.CardEventMoveTests

+ + + + + + + +
NameTestsErrorsFailuresTime(s)Time StampHost
CardEventMoveTests4000.8522010-01-15T10:00:07qb-trollgrottan
+

Tests

+ + + + + + + + + + + + + + + + +
NameStatusTypeTime(s)
testValidMoveCardEventWithinAPhaseSuccess0.255
testValidMoveCardEventBetweenPhasesSuccess0.222
testInvalidMoveCardEventSuccess0.188
testCompareOfCardEventMoveSuccess0.186
+
+ + Properties » + +
+
+ + System.out » + +
+
+ + System.err » + +
+ + diff --git a/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/5_CardEventSetAssigneeTests-err.txt b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/5_CardEventSetAssigneeTests-err.txt new file mode 100644 index 0000000..0967f36 --- /dev/null +++ b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/5_CardEventSetAssigneeTests-err.txt @@ -0,0 +1,2 @@ +--Output from testSetAndUnsetAssignee-- + diff --git a/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/5_CardEventSetAssigneeTests-out.txt b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/5_CardEventSetAssigneeTests-out.txt new file mode 100644 index 0000000..d6dd346 --- /dev/null +++ b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/5_CardEventSetAssigneeTests-out.txt @@ -0,0 +1,8 @@ +--Output from testSetAndUnsetAssignee-- +First phase + Card #1 + Card #2 +Second phase + Card #3 +Third phase + diff --git a/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/5_CardEventSetAssigneeTests.html b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/5_CardEventSetAssigneeTests.html new file mode 100644 index 0000000..12b1451 --- /dev/null +++ b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/5_CardEventSetAssigneeTests.html @@ -0,0 +1,83 @@ + + + +Unit Test Results: se.qbranch.qanban.CardEventSetAssigneeTests + + + + +

Unit Test Results

+ + + + +
Designed for use with JUnit and Ant.
+
+

Class se.qbranch.qanban.CardEventSetAssigneeTests

+ + + + + + + +
NameTestsErrorsFailuresTime(s)Time StampHost
CardEventSetAssigneeTests1000.2302010-01-15T10:00:07qb-trollgrottan
+

Tests

+ + + + + + + +
NameStatusTypeTime(s)
testSetAndUnsetAssigneeSuccess0.230
+
+ + Properties » + +
+
+ + System.out » + +
+
+ + System.err » + +
+ + diff --git a/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/6_CardEventTests-err.txt b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/6_CardEventTests-err.txt new file mode 100644 index 0000000..4d5aeed --- /dev/null +++ b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/6_CardEventTests-err.txt @@ -0,0 +1,2 @@ +--Output from testSomething-- + diff --git a/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/6_CardEventTests-out.txt b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/6_CardEventTests-out.txt new file mode 100644 index 0000000..4d5aeed --- /dev/null +++ b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/6_CardEventTests-out.txt @@ -0,0 +1,2 @@ +--Output from testSomething-- + diff --git a/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/6_CardEventTests.html b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/6_CardEventTests.html new file mode 100644 index 0000000..15145ac --- /dev/null +++ b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/6_CardEventTests.html @@ -0,0 +1,83 @@ + + + +Unit Test Results: se.qbranch.qanban.CardEventTests + + + + +

Unit Test Results

+ + + + +
Designed for use with JUnit and Ant.
+
+

Class se.qbranch.qanban.CardEventTests

+ + + + + + + +
NameTestsErrorsFailuresTime(s)Time StampHost
CardEventTests1000.0042010-01-15T10:00:07qb-trollgrottan
+

Tests

+ + + + + + + +
NameStatusTypeTime(s)
testSomethingSuccess0.004
+
+ + Properties » + +
+
+ + System.out » + +
+
+ + System.err » + +
+ + diff --git a/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/7_CardEventUpdateTests-err.txt b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/7_CardEventUpdateTests-err.txt new file mode 100644 index 0000000..46f26e3 --- /dev/null +++ b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/7_CardEventUpdateTests-err.txt @@ -0,0 +1,3 @@ +--Output from testSuccessfulUpdating-- +--Output from testUnsuccessfulUpdateWidhoutCaseNumber-- + diff --git a/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/7_CardEventUpdateTests-out.txt b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/7_CardEventUpdateTests-out.txt new file mode 100644 index 0000000..7b248ea --- /dev/null +++ b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/7_CardEventUpdateTests-out.txt @@ -0,0 +1,16 @@ +--Output from testSuccessfulUpdating-- +First phase + Card #1 + Card #2 +Second phase + Card #3 +Third phase +--Output from testUnsuccessfulUpdateWidhoutCaseNumber-- +First phase + Card #1 + Card #2 +Second phase + Card #3 +Third phase +Field error in object 'se.qbranch.qanban.CardEventUpdate' on field 'caseNumber': rejected value [null]; codes [se.qbranch.qanban.CardEventUpdate.caseNumber.nullable.error.se.qbranch.qanban.CardEventUpdate.caseNumber,se.qbranch.qanban.CardEventUpdate.caseNumber.nullable.error.caseNumber,se.qbranch.qanban.CardEventUpdate.caseNumber.nullable.error.java.lang.String,se.qbranch.qanban.CardEventUpdate.caseNumber.nullable.error,cardEventUpdate.caseNumber.nullable.error.se.qbranch.qanban.CardEventUpdate.caseNumber,cardEventUpdate.caseNumber.nullable.error.caseNumber,cardEventUpdate.caseNumber.nullable.error.java.lang.String,cardEventUpdate.caseNumber.nullable.error,se.qbranch.qanban.CardEventUpdate.caseNumber.nullable.se.qbranch.qanban.CardEventUpdate.caseNumber,se.qbranch.qanban.CardEventUpdate.caseNumber.nullable.caseNumber,se.qbranch.qanban.CardEventUpdate.caseNumber.nullable.java.lang.String,se.qbranch.qanban.CardEventUpdate.caseNumber.nullable,cardEventUpdate.caseNumber.nullable.se.qbranch.qanban.CardEventUpdate.caseNumber,cardEventUpdate.caseNumber.nullable.caseNumber,cardEventUpdate.caseNumber.nullable.java.lang.String,cardEventUpdate.caseNumber.nullable,nullable.se.qbranch.qanban.CardEventUpdate.caseNumber,nullable.caseNumber,nullable.java.lang.String,nullable]; arguments [caseNumber,class se.qbranch.qanban.CardEventUpdate]; default message [Property [{0}] of class [{1}] cannot be null] + diff --git a/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/7_CardEventUpdateTests.html b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/7_CardEventUpdateTests.html new file mode 100644 index 0000000..3bb337c --- /dev/null +++ b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/7_CardEventUpdateTests.html @@ -0,0 +1,86 @@ + + + +Unit Test Results: se.qbranch.qanban.CardEventUpdateTests + + + + +

Unit Test Results

+ + + + +
Designed for use with JUnit and Ant.
+
+

Class se.qbranch.qanban.CardEventUpdateTests

+ + + + + + + +
NameTestsErrorsFailuresTime(s)Time StampHost
CardEventUpdateTests2000.5782010-01-15T10:00:09qb-trollgrottan
+

Tests

+ + + + + + + + + + +
NameStatusTypeTime(s)
testSuccessfulUpdatingSuccess0.261
testUnsuccessfulUpdateWidhoutCaseNumberSuccess0.316
+
+ + Properties » + +
+
+ + System.out » + +
+
+ + System.err » + +
+ + diff --git a/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/8_CardTests-err.txt b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/8_CardTests-err.txt new file mode 100644 index 0000000..0c9ff5c --- /dev/null +++ b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/8_CardTests-err.txt @@ -0,0 +1,2 @@ +--Output from testCreateCard-- + diff --git a/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/8_CardTests-out.txt b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/8_CardTests-out.txt new file mode 100644 index 0000000..0c9ff5c --- /dev/null +++ b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/8_CardTests-out.txt @@ -0,0 +1,2 @@ +--Output from testCreateCard-- + diff --git a/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/8_CardTests.html b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/8_CardTests.html new file mode 100644 index 0000000..c5c84e0 --- /dev/null +++ b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/8_CardTests.html @@ -0,0 +1,83 @@ + + + +Unit Test Results: se.qbranch.qanban.CardTests + + + + +

Unit Test Results

+ + + + +
Designed for use with JUnit and Ant.
+
+

Class se.qbranch.qanban.CardTests

+ + + + + + + +
NameTestsErrorsFailuresTime(s)Time StampHost
CardTests1000.0052010-01-15T10:00:07qb-trollgrottan
+

Tests

+ + + + + + + +
NameStatusTypeTime(s)
testCreateCardSuccess0.005
+
+ + Properties » + +
+
+ + System.out » + +
+
+ + System.err » + +
+ + diff --git a/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/9_EventServiceTests-err.txt b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/9_EventServiceTests-err.txt new file mode 100644 index 0000000..4d5aeed --- /dev/null +++ b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/9_EventServiceTests-err.txt @@ -0,0 +1,2 @@ +--Output from testSomething-- + diff --git a/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/9_EventServiceTests-out.txt b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/9_EventServiceTests-out.txt new file mode 100644 index 0000000..4d5aeed --- /dev/null +++ b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/9_EventServiceTests-out.txt @@ -0,0 +1,2 @@ +--Output from testSomething-- + diff --git a/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/9_EventServiceTests.html b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/9_EventServiceTests.html new file mode 100644 index 0000000..61d99e3 --- /dev/null +++ b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/9_EventServiceTests.html @@ -0,0 +1,83 @@ + + + +Unit Test Results: se.qbranch.qanban.EventServiceTests + + + + +

Unit Test Results

+ + + + +
Designed for use with JUnit and Ant.
+
+

Class se.qbranch.qanban.EventServiceTests

+ + + + + + + +
NameTestsErrorsFailuresTime(s)Time StampHost
EventServiceTests1000.0052010-01-15T10:00:08qb-trollgrottan
+

Tests

+ + + + + + + +
NameStatusTypeTime(s)
testSomethingSuccess0.005
+
+ + Properties » + +
+
+ + System.out » + +
+
+ + System.err » + +
+ + diff --git a/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/package-frame.html b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/package-frame.html new file mode 100644 index 0000000..fccd6e5 --- /dev/null +++ b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/package-frame.html @@ -0,0 +1,75 @@ + + + +Unit Test Classes: se.qbranch.qanban + + + + + + + +
+

+se.qbranch.qanban +

+
+

Classes

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
BoardEventCreateTests
BoardTests
CardEventCreateTests
CardEventDeleteTests
CardEventMoveTests
CardEventSetAssigneeTests
CardEventTests
CardEventUpdateTests
CardTests
EventServiceTests
EventTests
PhaseEventCreateTests
PhaseEventDeleteTests
PhaseEventMoveTests
PhaseEventTests
PhaseEventUpdateTests
PhaseTests
UserEventCreateTests
+ + diff --git a/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/package-summary.html b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/package-summary.html new file mode 100644 index 0000000..6069871 --- /dev/null +++ b/qanban-domain-plugin/test/reports/html/se/qbranch/qanban/package-summary.html @@ -0,0 +1,78 @@ + + + + + + +

Unit Test Results

+ + + + +
Designed for use with JUnit and Ant.
+
+

Package se.qbranch.qanban

+

Classes

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTestsErrorsFailuresTime(s)Time StampHost
BoardEventCreateTests1000.1212010-01-15T10:00:07qb-trollgrottan
BoardTests1000.0142010-01-15T10:00:07qb-trollgrottan
CardEventCreateTests2000.4312010-01-15T10:00:06qb-trollgrottan
CardEventDeleteTests1000.2512010-01-15T10:00:07qb-trollgrottan
CardEventMoveTests4000.8522010-01-15T10:00:07qb-trollgrottan
CardEventSetAssigneeTests1000.2302010-01-15T10:00:07qb-trollgrottan
CardEventTests1000.0042010-01-15T10:00:07qb-trollgrottan
CardEventUpdateTests2000.5782010-01-15T10:00:09qb-trollgrottan
CardTests1000.0052010-01-15T10:00:07qb-trollgrottan
EventServiceTests1000.0052010-01-15T10:00:08qb-trollgrottan
EventTests1000.0242010-01-15T10:00:07qb-trollgrottan
PhaseEventCreateTests3001.0942010-01-15T10:00:05qb-trollgrottan
PhaseEventDeleteTests1000.3392010-01-15T10:00:08qb-trollgrottan
PhaseEventMoveTests1002.4012010-01-15T10:00:03qb-trollgrottan
PhaseEventTests1000.0052010-01-15T10:00:07qb-trollgrottan
PhaseEventUpdateTests1000.1992010-01-15T10:00:07qb-trollgrottan
PhaseTests3000.1622010-01-15T10:00:09qb-trollgrottan
UserEventCreateTests5000.4962010-01-15T10:00:09qb-trollgrottan
+

+ + diff --git a/qanban-domain-plugin/test/reports/html/stylesheet.css b/qanban-domain-plugin/test/reports/html/stylesheet.css new file mode 100644 index 0000000..c371da6 --- /dev/null +++ b/qanban-domain-plugin/test/reports/html/stylesheet.css @@ -0,0 +1,48 @@ + +body { + font:normal 68% verdana,arial,helvetica; + color:#000000; +} +table tr td, table tr th { + font-size: 68%; +} +table.details tr th{ + font-weight: bold; + text-align:left; + background:#a6caf0; +} +table.details tr td{ + background:#eeeee0; +} + +p { + line-height:1.5em; + margin-top:0.5em; margin-bottom:1.0em; +} +h1 { + margin: 0px 0px 5px; font: 165% verdana,arial,helvetica +} +h2 { + margin-top: 1em; margin-bottom: 0.5em; font: bold 125% verdana,arial,helvetica +} +h3 { + margin-bottom: 0.5em; font: bold 115% verdana,arial,helvetica +} +h4 { + margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica +} +h5 { + margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica +} +h6 { + margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica +} +.Error { + font-weight:bold; color:red; +} +.Failure { + font-weight:bold; color:purple; +} +.Properties { + text-align:right; +} diff --git a/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.BoardEventCreateTests-err.txt b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.BoardEventCreateTests-err.txt new file mode 100644 index 0000000..c3596ea --- /dev/null +++ b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.BoardEventCreateTests-err.txt @@ -0,0 +1 @@ +--Output from testCreatingABoard-- diff --git a/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.BoardEventCreateTests-out.txt b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.BoardEventCreateTests-out.txt new file mode 100644 index 0000000..179bbdf --- /dev/null +++ b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.BoardEventCreateTests-out.txt @@ -0,0 +1,2 @@ +--Output from testCreatingABoard-- +fa54523ba686f6142a51ca4c9d2ea392 diff --git a/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.BoardEventCreateTests.txt b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.BoardEventCreateTests.txt new file mode 100644 index 0000000..15bc4f2 --- /dev/null +++ b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.BoardEventCreateTests.txt @@ -0,0 +1,11 @@ +Testsuite: se.qbranch.qanban.BoardEventCreateTests +Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 0.121 sec +------------- Standard Output --------------- +--Output from testCreatingABoard-- +fa54523ba686f6142a51ca4c9d2ea392 +------------- ---------------- --------------- +------------- Standard Error ----------------- +--Output from testCreatingABoard-- +------------- ---------------- --------------- + +Testcase: testCreatingABoard took 0.121 sec diff --git a/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.BoardTests-err.txt b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.BoardTests-err.txt new file mode 100644 index 0000000..3bcb002 --- /dev/null +++ b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.BoardTests-err.txt @@ -0,0 +1 @@ +--Output from testHasPhases-- diff --git a/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.BoardTests-out.txt b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.BoardTests-out.txt new file mode 100644 index 0000000..3bcb002 --- /dev/null +++ b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.BoardTests-out.txt @@ -0,0 +1 @@ +--Output from testHasPhases-- diff --git a/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.BoardTests.txt b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.BoardTests.txt new file mode 100644 index 0000000..050025b --- /dev/null +++ b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.BoardTests.txt @@ -0,0 +1,10 @@ +Testsuite: se.qbranch.qanban.BoardTests +Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 0.014 sec +------------- Standard Output --------------- +--Output from testHasPhases-- +------------- ---------------- --------------- +------------- Standard Error ----------------- +--Output from testHasPhases-- +------------- ---------------- --------------- + +Testcase: testHasPhases took 0.014 sec diff --git a/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.CardEventCreateTests-err.txt b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.CardEventCreateTests-err.txt new file mode 100644 index 0000000..a61d762 --- /dev/null +++ b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.CardEventCreateTests-err.txt @@ -0,0 +1,2 @@ +--Output from testCreateingValidEvent-- +--Output from testCreateingInvalidEventWithoutCaseNo-- diff --git a/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.CardEventCreateTests-out.txt b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.CardEventCreateTests-out.txt new file mode 100644 index 0000000..39b39ce --- /dev/null +++ b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.CardEventCreateTests-out.txt @@ -0,0 +1,17 @@ +--Output from testCreateingValidEvent-- +First phase + Card #1 + Card #2 +Second phase + Card #3 +Third phase +c90fd479c1f29370da16848db2eb7cbf +--Output from testCreateingInvalidEventWithoutCaseNo-- +First phase + Card #1 + Card #2 +Second phase + Card #3 +Third phase +Field error in object 'se.qbranch.qanban.CardEventCreate' on field 'caseNumber': rejected value [null]; codes [se.qbranch.qanban.CardEventCreate.caseNumber.nullable.error.se.qbranch.qanban.CardEventCreate.caseNumber,se.qbranch.qanban.CardEventCreate.caseNumber.nullable.error.caseNumber,se.qbranch.qanban.CardEventCreate.caseNumber.nullable.error.java.lang.String,se.qbranch.qanban.CardEventCreate.caseNumber.nullable.error,cardEventCreate.caseNumber.nullable.error.se.qbranch.qanban.CardEventCreate.caseNumber,cardEventCreate.caseNumber.nullable.error.caseNumber,cardEventCreate.caseNumber.nullable.error.java.lang.String,cardEventCreate.caseNumber.nullable.error,se.qbranch.qanban.CardEventCreate.caseNumber.nullable.se.qbranch.qanban.CardEventCreate.caseNumber,se.qbranch.qanban.CardEventCreate.caseNumber.nullable.caseNumber,se.qbranch.qanban.CardEventCreate.caseNumber.nullable.java.lang.String,se.qbranch.qanban.CardEventCreate.caseNumber.nullable,cardEventCreate.caseNumber.nullable.se.qbranch.qanban.CardEventCreate.caseNumber,cardEventCreate.caseNumber.nullable.caseNumber,cardEventCreate.caseNumber.nullable.java.lang.String,cardEventCreate.caseNumber.nullable,nullable.se.qbranch.qanban.CardEventCreate.caseNumber,nullable.caseNumber,nullable.java.lang.String,nullable]; arguments [caseNumber,class se.qbranch.qanban.CardEventCreate]; default message [Property [{0}] of class [{1}] cannot be null] +4e0ab1fd11f8b0bf50dcd9e276fb970d diff --git a/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.CardEventCreateTests.txt b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.CardEventCreateTests.txt new file mode 100644 index 0000000..8ed6b15 --- /dev/null +++ b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.CardEventCreateTests.txt @@ -0,0 +1,28 @@ +Testsuite: se.qbranch.qanban.CardEventCreateTests +Tests run: 2, Failures: 0, Errors: 0, Time elapsed: 0.431 sec +------------- Standard Output --------------- +--Output from testCreateingValidEvent-- +First phase + Card #1 + Card #2 +Second phase + Card #3 +Third phase +c90fd479c1f29370da16848db2eb7cbf +--Output from testCreateingInvalidEventWithoutCaseNo-- +First phase + Card #1 + Card #2 +Second phase + Card #3 +Third phase +Field error in object 'se.qbranch.qanban.CardEventCreate' on field 'caseNumber': rejected value [null]; codes [se.qbranch.qanban.CardEventCreate.caseNumber.nullable.error.se.qbranch.qanban.CardEventCreate.caseNumber,se.qbranch.qanban.CardEventCreate.caseNumber.nullable.error.caseNumber,se.qbranch.qanban.CardEventCreate.caseNumber.nullable.error.java.lang.String,se.qbranch.qanban.CardEventCreate.caseNumber.nullable.error,cardEventCreate.caseNumber.nullable.error.se.qbranch.qanban.CardEventCreate.caseNumber,cardEventCreate.caseNumber.nullable.error.caseNumber,cardEventCreate.caseNumber.nullable.error.java.lang.String,cardEventCreate.caseNumber.nullable.error,se.qbranch.qanban.CardEventCreate.caseNumber.nullable.se.qbranch.qanban.CardEventCreate.caseNumber,se.qbranch.qanban.CardEventCreate.caseNumber.nullable.caseNumber,se.qbranch.qanban.CardEventCreate.caseNumber.nullable.java.lang.String,se.qbranch.qanban.CardEventCreate.caseNumber.nullable,cardEventCreate.caseNumber.nullable.se.qbranch.qanban.CardEventCreate.caseNumber,cardEventCreate.caseNumber.nullable.caseNumber,cardEventCreate.caseNumber.nullable.java.lang.String,cardEventCreate.caseNumber.nullable,nullable.se.qbranch.qanban.CardEventCreate.caseNumber,nullable.caseNumber,nullable.java.lang.String,nullable]; arguments [caseNumber,class se.qbranch.qanban.CardEventCreate]; default message [Property [{0}] of class [{1}] cannot be null] +4e0ab1fd11f8b0bf50dcd9e276fb970d +------------- ---------------- --------------- +------------- Standard Error ----------------- +--Output from testCreateingValidEvent-- +--Output from testCreateingInvalidEventWithoutCaseNo-- +------------- ---------------- --------------- + +Testcase: testCreateingValidEvent took 0.222 sec +Testcase: testCreateingInvalidEventWithoutCaseNo took 0.209 sec diff --git a/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.CardEventDeleteTests-err.txt b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.CardEventDeleteTests-err.txt new file mode 100644 index 0000000..72bc93d --- /dev/null +++ b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.CardEventDeleteTests-err.txt @@ -0,0 +1 @@ +--Output from testDeletCard-- diff --git a/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.CardEventDeleteTests-out.txt b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.CardEventDeleteTests-out.txt new file mode 100644 index 0000000..f2e6655 --- /dev/null +++ b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.CardEventDeleteTests-out.txt @@ -0,0 +1,7 @@ +--Output from testDeletCard-- +First phase + Card #1 + Card #2 +Second phase + Card #3 +Third phase diff --git a/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.CardEventDeleteTests.txt b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.CardEventDeleteTests.txt new file mode 100644 index 0000000..64b4b96 --- /dev/null +++ b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.CardEventDeleteTests.txt @@ -0,0 +1,16 @@ +Testsuite: se.qbranch.qanban.CardEventDeleteTests +Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 0.251 sec +------------- Standard Output --------------- +--Output from testDeletCard-- +First phase + Card #1 + Card #2 +Second phase + Card #3 +Third phase +------------- ---------------- --------------- +------------- Standard Error ----------------- +--Output from testDeletCard-- +------------- ---------------- --------------- + +Testcase: testDeletCard took 0.251 sec diff --git a/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.CardEventMoveTests-err.txt b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.CardEventMoveTests-err.txt new file mode 100644 index 0000000..79fe768 --- /dev/null +++ b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.CardEventMoveTests-err.txt @@ -0,0 +1,4 @@ +--Output from testValidMoveCardEventWithinAPhase-- +--Output from testValidMoveCardEventBetweenPhases-- +--Output from testInvalidMoveCardEvent-- +--Output from testCompareOfCardEventMove-- diff --git a/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.CardEventMoveTests-out.txt b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.CardEventMoveTests-out.txt new file mode 100644 index 0000000..c7f8dc5 --- /dev/null +++ b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.CardEventMoveTests-out.txt @@ -0,0 +1,30 @@ +--Output from testValidMoveCardEventWithinAPhase-- +First phase + Card #1 + Card #2 +Second phase + Card #3 +Third phase +--Output from testValidMoveCardEventBetweenPhases-- +First phase + Card #1 + Card #2 +Second phase + Card #3 +Third phase +--Output from testInvalidMoveCardEvent-- +First phase + Card #1 + Card #2 +Second phase + Card #3 +Third phase +org.codehaus.groovy.grails.plugins.testing.GrailsMockErrors: 1 errors +Field error in object 'se.qbranch.qanban.CardEventMove' on field 'newCardIndex': rejected value [-1]; codes [se.qbranch.qanban.CardEventMove.newCardIndex.min.error.se.qbranch.qanban.CardEventMove.newCardIndex,se.qbranch.qanban.CardEventMove.newCardIndex.min.error.newCardIndex,se.qbranch.qanban.CardEventMove.newCardIndex.min.error.java.lang.Integer,se.qbranch.qanban.CardEventMove.newCardIndex.min.error,cardEventMove.newCardIndex.min.error.se.qbranch.qanban.CardEventMove.newCardIndex,cardEventMove.newCardIndex.min.error.newCardIndex,cardEventMove.newCardIndex.min.error.java.lang.Integer,cardEventMove.newCardIndex.min.error,se.qbranch.qanban.CardEventMove.newCardIndex.min.notmet.se.qbranch.qanban.CardEventMove.newCardIndex,se.qbranch.qanban.CardEventMove.newCardIndex.min.notmet.newCardIndex,se.qbranch.qanban.CardEventMove.newCardIndex.min.notmet.java.lang.Integer,se.qbranch.qanban.CardEventMove.newCardIndex.min.notmet,cardEventMove.newCardIndex.min.notmet.se.qbranch.qanban.CardEventMove.newCardIndex,cardEventMove.newCardIndex.min.notmet.newCardIndex,cardEventMove.newCardIndex.min.notmet.java.lang.Integer,cardEventMove.newCardIndex.min.notmet,min.notmet.se.qbranch.qanban.CardEventMove.newCardIndex,min.notmet.newCardIndex,min.notmet.java.lang.Integer,min.notmet]; arguments [newCardIndex,class se.qbranch.qanban.CardEventMove,-1,0]; default message [Property [{0}] of class [{1}] with value [{2}] is less than minimum value [{3}]] +--Output from testCompareOfCardEventMove-- +First phase + Card #1 + Card #2 +Second phase + Card #3 +Third phase diff --git a/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.CardEventMoveTests.txt b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.CardEventMoveTests.txt new file mode 100644 index 0000000..42cbd32 --- /dev/null +++ b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.CardEventMoveTests.txt @@ -0,0 +1,45 @@ +Testsuite: se.qbranch.qanban.CardEventMoveTests +Tests run: 4, Failures: 0, Errors: 0, Time elapsed: 0.852 sec +------------- Standard Output --------------- +--Output from testValidMoveCardEventWithinAPhase-- +First phase + Card #1 + Card #2 +Second phase + Card #3 +Third phase +--Output from testValidMoveCardEventBetweenPhases-- +First phase + Card #1 + Card #2 +Second phase + Card #3 +Third phase +--Output from testInvalidMoveCardEvent-- +First phase + Card #1 + Card #2 +Second phase + Card #3 +Third phase +org.codehaus.groovy.grails.plugins.testing.GrailsMockErrors: 1 errors +Field error in object 'se.qbranch.qanban.CardEventMove' on field 'newCardIndex': rejected value [-1]; codes [se.qbranch.qanban.CardEventMove.newCardIndex.min.error.se.qbranch.qanban.CardEventMove.newCardIndex,se.qbranch.qanban.CardEventMove.newCardIndex.min.error.newCardIndex,se.qbranch.qanban.CardEventMove.newCardIndex.min.error.java.lang.Integer,se.qbranch.qanban.CardEventMove.newCardIndex.min.error,cardEventMove.newCardIndex.min.error.se.qbranch.qanban.CardEventMove.newCardIndex,cardEventMove.newCardIndex.min.error.newCardIndex,cardEventMove.newCardIndex.min.error.java.lang.Integer,cardEventMove.newCardIndex.min.error,se.qbranch.qanban.CardEventMove.newCardIndex.min.notmet.se.qbranch.qanban.CardEventMove.newCardIndex,se.qbranch.qanban.CardEventMove.newCardIndex.min.notmet.newCardIndex,se.qbranch.qanban.CardEventMove.newCardIndex.min.notmet.java.lang.Integer,se.qbranch.qanban.CardEventMove.newCardIndex.min.notmet,cardEventMove.newCardIndex.min.notmet.se.qbranch.qanban.CardEventMove.newCardIndex,cardEventMove.newCardIndex.min.notmet.newCardIndex,cardEventMove.newCardIndex.min.notmet.java.lang.Integer,cardEventMove.newCardIndex.min.notmet,min.notmet.se.qbranch.qanban.CardEventMove.newCardIndex,min.notmet.newCardIndex,min.notmet.java.lang.Integer,min.notmet]; arguments [newCardIndex,class se.qbranch.qanban.CardEventMove,-1,0]; default message [Property [{0}] of class [{1}] with value [{2}] is less than minimum value [{3}]] +--Output from testCompareOfCardEventMove-- +First phase + Card #1 + Card #2 +Second phase + Card #3 +Third phase +------------- ---------------- --------------- +------------- Standard Error ----------------- +--Output from testValidMoveCardEventWithinAPhase-- +--Output from testValidMoveCardEventBetweenPhases-- +--Output from testInvalidMoveCardEvent-- +--Output from testCompareOfCardEventMove-- +------------- ---------------- --------------- + +Testcase: testValidMoveCardEventWithinAPhase took 0.255 sec +Testcase: testValidMoveCardEventBetweenPhases took 0.222 sec +Testcase: testInvalidMoveCardEvent took 0.188 sec +Testcase: testCompareOfCardEventMove took 0.186 sec diff --git a/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.CardEventSetAssigneeTests-err.txt b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.CardEventSetAssigneeTests-err.txt new file mode 100644 index 0000000..6a935c9 --- /dev/null +++ b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.CardEventSetAssigneeTests-err.txt @@ -0,0 +1 @@ +--Output from testSetAndUnsetAssignee-- diff --git a/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.CardEventSetAssigneeTests-out.txt b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.CardEventSetAssigneeTests-out.txt new file mode 100644 index 0000000..e263a12 --- /dev/null +++ b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.CardEventSetAssigneeTests-out.txt @@ -0,0 +1,7 @@ +--Output from testSetAndUnsetAssignee-- +First phase + Card #1 + Card #2 +Second phase + Card #3 +Third phase diff --git a/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.CardEventSetAssigneeTests.txt b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.CardEventSetAssigneeTests.txt new file mode 100644 index 0000000..2adf53d --- /dev/null +++ b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.CardEventSetAssigneeTests.txt @@ -0,0 +1,16 @@ +Testsuite: se.qbranch.qanban.CardEventSetAssigneeTests +Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 0.23 sec +------------- Standard Output --------------- +--Output from testSetAndUnsetAssignee-- +First phase + Card #1 + Card #2 +Second phase + Card #3 +Third phase +------------- ---------------- --------------- +------------- Standard Error ----------------- +--Output from testSetAndUnsetAssignee-- +------------- ---------------- --------------- + +Testcase: testSetAndUnsetAssignee took 0.23 sec diff --git a/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.CardEventTests-err.txt b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.CardEventTests-err.txt new file mode 100644 index 0000000..0e83766 --- /dev/null +++ b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.CardEventTests-err.txt @@ -0,0 +1 @@ +--Output from testSomething-- diff --git a/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.CardEventTests-out.txt b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.CardEventTests-out.txt new file mode 100644 index 0000000..0e83766 --- /dev/null +++ b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.CardEventTests-out.txt @@ -0,0 +1 @@ +--Output from testSomething-- diff --git a/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.CardEventTests.txt b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.CardEventTests.txt new file mode 100644 index 0000000..0aacce0 --- /dev/null +++ b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.CardEventTests.txt @@ -0,0 +1,10 @@ +Testsuite: se.qbranch.qanban.CardEventTests +Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 0.004 sec +------------- Standard Output --------------- +--Output from testSomething-- +------------- ---------------- --------------- +------------- Standard Error ----------------- +--Output from testSomething-- +------------- ---------------- --------------- + +Testcase: testSomething took 0.004 sec diff --git a/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.CardEventUpdateTests-err.txt b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.CardEventUpdateTests-err.txt new file mode 100644 index 0000000..8829d0a --- /dev/null +++ b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.CardEventUpdateTests-err.txt @@ -0,0 +1,2 @@ +--Output from testSuccessfulUpdating-- +--Output from testUnsuccessfulUpdateWidhoutCaseNumber-- diff --git a/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.CardEventUpdateTests-out.txt b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.CardEventUpdateTests-out.txt new file mode 100644 index 0000000..df3c562 --- /dev/null +++ b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.CardEventUpdateTests-out.txt @@ -0,0 +1,15 @@ +--Output from testSuccessfulUpdating-- +First phase + Card #1 + Card #2 +Second phase + Card #3 +Third phase +--Output from testUnsuccessfulUpdateWidhoutCaseNumber-- +First phase + Card #1 + Card #2 +Second phase + Card #3 +Third phase +Field error in object 'se.qbranch.qanban.CardEventUpdate' on field 'caseNumber': rejected value [null]; codes [se.qbranch.qanban.CardEventUpdate.caseNumber.nullable.error.se.qbranch.qanban.CardEventUpdate.caseNumber,se.qbranch.qanban.CardEventUpdate.caseNumber.nullable.error.caseNumber,se.qbranch.qanban.CardEventUpdate.caseNumber.nullable.error.java.lang.String,se.qbranch.qanban.CardEventUpdate.caseNumber.nullable.error,cardEventUpdate.caseNumber.nullable.error.se.qbranch.qanban.CardEventUpdate.caseNumber,cardEventUpdate.caseNumber.nullable.error.caseNumber,cardEventUpdate.caseNumber.nullable.error.java.lang.String,cardEventUpdate.caseNumber.nullable.error,se.qbranch.qanban.CardEventUpdate.caseNumber.nullable.se.qbranch.qanban.CardEventUpdate.caseNumber,se.qbranch.qanban.CardEventUpdate.caseNumber.nullable.caseNumber,se.qbranch.qanban.CardEventUpdate.caseNumber.nullable.java.lang.String,se.qbranch.qanban.CardEventUpdate.caseNumber.nullable,cardEventUpdate.caseNumber.nullable.se.qbranch.qanban.CardEventUpdate.caseNumber,cardEventUpdate.caseNumber.nullable.caseNumber,cardEventUpdate.caseNumber.nullable.java.lang.String,cardEventUpdate.caseNumber.nullable,nullable.se.qbranch.qanban.CardEventUpdate.caseNumber,nullable.caseNumber,nullable.java.lang.String,nullable]; arguments [caseNumber,class se.qbranch.qanban.CardEventUpdate]; default message [Property [{0}] of class [{1}] cannot be null] diff --git a/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.CardEventUpdateTests.txt b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.CardEventUpdateTests.txt new file mode 100644 index 0000000..6b6c557 --- /dev/null +++ b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.CardEventUpdateTests.txt @@ -0,0 +1,26 @@ +Testsuite: se.qbranch.qanban.CardEventUpdateTests +Tests run: 2, Failures: 0, Errors: 0, Time elapsed: 0.578 sec +------------- Standard Output --------------- +--Output from testSuccessfulUpdating-- +First phase + Card #1 + Card #2 +Second phase + Card #3 +Third phase +--Output from testUnsuccessfulUpdateWidhoutCaseNumber-- +First phase + Card #1 + Card #2 +Second phase + Card #3 +Third phase +Field error in object 'se.qbranch.qanban.CardEventUpdate' on field 'caseNumber': rejected value [null]; codes [se.qbranch.qanban.CardEventUpdate.caseNumber.nullable.error.se.qbranch.qanban.CardEventUpdate.caseNumber,se.qbranch.qanban.CardEventUpdate.caseNumber.nullable.error.caseNumber,se.qbranch.qanban.CardEventUpdate.caseNumber.nullable.error.java.lang.String,se.qbranch.qanban.CardEventUpdate.caseNumber.nullable.error,cardEventUpdate.caseNumber.nullable.error.se.qbranch.qanban.CardEventUpdate.caseNumber,cardEventUpdate.caseNumber.nullable.error.caseNumber,cardEventUpdate.caseNumber.nullable.error.java.lang.String,cardEventUpdate.caseNumber.nullable.error,se.qbranch.qanban.CardEventUpdate.caseNumber.nullable.se.qbranch.qanban.CardEventUpdate.caseNumber,se.qbranch.qanban.CardEventUpdate.caseNumber.nullable.caseNumber,se.qbranch.qanban.CardEventUpdate.caseNumber.nullable.java.lang.String,se.qbranch.qanban.CardEventUpdate.caseNumber.nullable,cardEventUpdate.caseNumber.nullable.se.qbranch.qanban.CardEventUpdate.caseNumber,cardEventUpdate.caseNumber.nullable.caseNumber,cardEventUpdate.caseNumber.nullable.java.lang.String,cardEventUpdate.caseNumber.nullable,nullable.se.qbranch.qanban.CardEventUpdate.caseNumber,nullable.caseNumber,nullable.java.lang.String,nullable]; arguments [caseNumber,class se.qbranch.qanban.CardEventUpdate]; default message [Property [{0}] of class [{1}] cannot be null] +------------- ---------------- --------------- +------------- Standard Error ----------------- +--Output from testSuccessfulUpdating-- +--Output from testUnsuccessfulUpdateWidhoutCaseNumber-- +------------- ---------------- --------------- + +Testcase: testSuccessfulUpdating took 0.261 sec +Testcase: testUnsuccessfulUpdateWidhoutCaseNumber took 0.316 sec diff --git a/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.CardTests-err.txt b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.CardTests-err.txt new file mode 100644 index 0000000..b29126a --- /dev/null +++ b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.CardTests-err.txt @@ -0,0 +1 @@ +--Output from testCreateCard-- diff --git a/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.CardTests-out.txt b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.CardTests-out.txt new file mode 100644 index 0000000..b29126a --- /dev/null +++ b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.CardTests-out.txt @@ -0,0 +1 @@ +--Output from testCreateCard-- diff --git a/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.CardTests.txt b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.CardTests.txt new file mode 100644 index 0000000..fff1ac8 --- /dev/null +++ b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.CardTests.txt @@ -0,0 +1,10 @@ +Testsuite: se.qbranch.qanban.CardTests +Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 0.005 sec +------------- Standard Output --------------- +--Output from testCreateCard-- +------------- ---------------- --------------- +------------- Standard Error ----------------- +--Output from testCreateCard-- +------------- ---------------- --------------- + +Testcase: testCreateCard took 0.005 sec diff --git a/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.EventServiceTests-err.txt b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.EventServiceTests-err.txt new file mode 100644 index 0000000..0e83766 --- /dev/null +++ b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.EventServiceTests-err.txt @@ -0,0 +1 @@ +--Output from testSomething-- diff --git a/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.EventServiceTests-out.txt b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.EventServiceTests-out.txt new file mode 100644 index 0000000..0e83766 --- /dev/null +++ b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.EventServiceTests-out.txt @@ -0,0 +1 @@ +--Output from testSomething-- diff --git a/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.EventServiceTests.txt b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.EventServiceTests.txt new file mode 100644 index 0000000..745323f --- /dev/null +++ b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.EventServiceTests.txt @@ -0,0 +1,10 @@ +Testsuite: se.qbranch.qanban.EventServiceTests +Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 0.005 sec +------------- Standard Output --------------- +--Output from testSomething-- +------------- ---------------- --------------- +------------- Standard Error ----------------- +--Output from testSomething-- +------------- ---------------- --------------- + +Testcase: testSomething took 0.005 sec diff --git a/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.EventTests-err.txt b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.EventTests-err.txt new file mode 100644 index 0000000..371aceb --- /dev/null +++ b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.EventTests-err.txt @@ -0,0 +1 @@ +--Output from testEquals-- diff --git a/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.EventTests-out.txt b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.EventTests-out.txt new file mode 100644 index 0000000..5c5e2cc --- /dev/null +++ b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.EventTests-out.txt @@ -0,0 +1,3 @@ +--Output from testEquals-- +1 +2 diff --git a/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.EventTests.txt b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.EventTests.txt new file mode 100644 index 0000000..c699fb6 --- /dev/null +++ b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.EventTests.txt @@ -0,0 +1,12 @@ +Testsuite: se.qbranch.qanban.EventTests +Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 0.024 sec +------------- Standard Output --------------- +--Output from testEquals-- +1 +2 +------------- ---------------- --------------- +------------- Standard Error ----------------- +--Output from testEquals-- +------------- ---------------- --------------- + +Testcase: testEquals took 0.024 sec diff --git a/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.PhaseEventCreateTests-err.txt b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.PhaseEventCreateTests-err.txt new file mode 100644 index 0000000..d4743be --- /dev/null +++ b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.PhaseEventCreateTests-err.txt @@ -0,0 +1,3 @@ +--Output from testCreatingAValidPhase-- +--Output from testCreatingPhaseWithoudPosition-- +--Output from testCreatingAPhaseWithLiteralsAsLimit-- diff --git a/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.PhaseEventCreateTests-out.txt b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.PhaseEventCreateTests-out.txt new file mode 100644 index 0000000..6ce83af --- /dev/null +++ b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.PhaseEventCreateTests-out.txt @@ -0,0 +1,4 @@ +--Output from testCreatingAValidPhase-- +--Output from testCreatingPhaseWithoudPosition-- +--Output from testCreatingAPhaseWithLiteralsAsLimit-- +limit with literals - null diff --git a/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.PhaseEventCreateTests.txt b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.PhaseEventCreateTests.txt new file mode 100644 index 0000000..02113c5 --- /dev/null +++ b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.PhaseEventCreateTests.txt @@ -0,0 +1,17 @@ +Testsuite: se.qbranch.qanban.PhaseEventCreateTests +Tests run: 3, Failures: 0, Errors: 0, Time elapsed: 1.094 sec +------------- Standard Output --------------- +--Output from testCreatingAValidPhase-- +--Output from testCreatingPhaseWithoudPosition-- +--Output from testCreatingAPhaseWithLiteralsAsLimit-- +limit with literals - null +------------- ---------------- --------------- +------------- Standard Error ----------------- +--Output from testCreatingAValidPhase-- +--Output from testCreatingPhaseWithoudPosition-- +--Output from testCreatingAPhaseWithLiteralsAsLimit-- +------------- ---------------- --------------- + +Testcase: testCreatingAValidPhase took 0.279 sec +Testcase: testCreatingPhaseWithoudPosition took 0.491 sec +Testcase: testCreatingAPhaseWithLiteralsAsLimit took 0.324 sec diff --git a/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.PhaseEventDeleteTests-err.txt b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.PhaseEventDeleteTests-err.txt new file mode 100644 index 0000000..57ce471 --- /dev/null +++ b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.PhaseEventDeleteTests-err.txt @@ -0,0 +1 @@ +--Output from testDeletePhase-- diff --git a/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.PhaseEventDeleteTests-out.txt b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.PhaseEventDeleteTests-out.txt new file mode 100644 index 0000000..ae72d64 --- /dev/null +++ b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.PhaseEventDeleteTests-out.txt @@ -0,0 +1,7 @@ +--Output from testDeletePhase-- +First phase + Card #1 + Card #2 +Second phase + Card #3 +Third phase diff --git a/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.PhaseEventDeleteTests.txt b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.PhaseEventDeleteTests.txt new file mode 100644 index 0000000..029461b --- /dev/null +++ b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.PhaseEventDeleteTests.txt @@ -0,0 +1,16 @@ +Testsuite: se.qbranch.qanban.PhaseEventDeleteTests +Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 0.339 sec +------------- Standard Output --------------- +--Output from testDeletePhase-- +First phase + Card #1 + Card #2 +Second phase + Card #3 +Third phase +------------- ---------------- --------------- +------------- Standard Error ----------------- +--Output from testDeletePhase-- +------------- ---------------- --------------- + +Testcase: testDeletePhase took 0.339 sec diff --git a/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.PhaseEventMoveTests-err.txt b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.PhaseEventMoveTests-err.txt new file mode 100644 index 0000000..f779a03 --- /dev/null +++ b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.PhaseEventMoveTests-err.txt @@ -0,0 +1 @@ +--Output from testLegalMoveOfFirstPhaseToNextIndex-- diff --git a/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.PhaseEventMoveTests-out.txt b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.PhaseEventMoveTests-out.txt new file mode 100644 index 0000000..694b534 --- /dev/null +++ b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.PhaseEventMoveTests-out.txt @@ -0,0 +1,7 @@ +--Output from testLegalMoveOfFirstPhaseToNextIndex-- +First phase + Card #1 + Card #2 +Second phase + Card #3 +Third phase diff --git a/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.PhaseEventMoveTests.txt b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.PhaseEventMoveTests.txt new file mode 100644 index 0000000..1a87a48 --- /dev/null +++ b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.PhaseEventMoveTests.txt @@ -0,0 +1,16 @@ +Testsuite: se.qbranch.qanban.PhaseEventMoveTests +Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 2.401 sec +------------- Standard Output --------------- +--Output from testLegalMoveOfFirstPhaseToNextIndex-- +First phase + Card #1 + Card #2 +Second phase + Card #3 +Third phase +------------- ---------------- --------------- +------------- Standard Error ----------------- +--Output from testLegalMoveOfFirstPhaseToNextIndex-- +------------- ---------------- --------------- + +Testcase: testLegalMoveOfFirstPhaseToNextIndex took 2.4 sec diff --git a/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.PhaseEventTests-err.txt b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.PhaseEventTests-err.txt new file mode 100644 index 0000000..0e83766 --- /dev/null +++ b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.PhaseEventTests-err.txt @@ -0,0 +1 @@ +--Output from testSomething-- diff --git a/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.PhaseEventTests-out.txt b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.PhaseEventTests-out.txt new file mode 100644 index 0000000..0e83766 --- /dev/null +++ b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.PhaseEventTests-out.txt @@ -0,0 +1 @@ +--Output from testSomething-- diff --git a/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.PhaseEventTests.txt b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.PhaseEventTests.txt new file mode 100644 index 0000000..ff01152 --- /dev/null +++ b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.PhaseEventTests.txt @@ -0,0 +1,10 @@ +Testsuite: se.qbranch.qanban.PhaseEventTests +Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 0.005 sec +------------- Standard Output --------------- +--Output from testSomething-- +------------- ---------------- --------------- +------------- Standard Error ----------------- +--Output from testSomething-- +------------- ---------------- --------------- + +Testcase: testSomething took 0.004 sec diff --git a/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.PhaseEventUpdateTests-err.txt b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.PhaseEventUpdateTests-err.txt new file mode 100644 index 0000000..0e83766 --- /dev/null +++ b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.PhaseEventUpdateTests-err.txt @@ -0,0 +1 @@ +--Output from testSomething-- diff --git a/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.PhaseEventUpdateTests-out.txt b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.PhaseEventUpdateTests-out.txt new file mode 100644 index 0000000..43cd816 --- /dev/null +++ b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.PhaseEventUpdateTests-out.txt @@ -0,0 +1,7 @@ +--Output from testSomething-- +First phase + Card #1 + Card #2 +Second phase + Card #3 +Third phase diff --git a/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.PhaseEventUpdateTests.txt b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.PhaseEventUpdateTests.txt new file mode 100644 index 0000000..aa981d2 --- /dev/null +++ b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.PhaseEventUpdateTests.txt @@ -0,0 +1,16 @@ +Testsuite: se.qbranch.qanban.PhaseEventUpdateTests +Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 0.199 sec +------------- Standard Output --------------- +--Output from testSomething-- +First phase + Card #1 + Card #2 +Second phase + Card #3 +Third phase +------------- ---------------- --------------- +------------- Standard Error ----------------- +--Output from testSomething-- +------------- ---------------- --------------- + +Testcase: testSomething took 0.199 sec diff --git a/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.PhaseTests-err.txt b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.PhaseTests-err.txt new file mode 100644 index 0000000..17c80f0 --- /dev/null +++ b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.PhaseTests-err.txt @@ -0,0 +1,3 @@ +--Output from testCreatePhase-- +--Output from testPhaseWithCard-- +--Output from testCreatingAPhaseWithLiteralCardLimit-- diff --git a/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.PhaseTests-out.txt b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.PhaseTests-out.txt new file mode 100644 index 0000000..b975be2 --- /dev/null +++ b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.PhaseTests-out.txt @@ -0,0 +1,4 @@ +--Output from testCreatePhase-- +--Output from testPhaseWithCard-- +--Output from testCreatingAPhaseWithLiteralCardLimit-- +Field error in object 'se.qbranch.qanban.Phase' on field 'cardLimit': rejected value [null]; codes [se.qbranch.qanban.Phase.cardLimit.nullable.error.se.qbranch.qanban.Phase.cardLimit,se.qbranch.qanban.Phase.cardLimit.nullable.error.cardLimit,se.qbranch.qanban.Phase.cardLimit.nullable.error.java.lang.Integer,se.qbranch.qanban.Phase.cardLimit.nullable.error,phase.cardLimit.nullable.error.se.qbranch.qanban.Phase.cardLimit,phase.cardLimit.nullable.error.cardLimit,phase.cardLimit.nullable.error.java.lang.Integer,phase.cardLimit.nullable.error,se.qbranch.qanban.Phase.cardLimit.nullable.se.qbranch.qanban.Phase.cardLimit,se.qbranch.qanban.Phase.cardLimit.nullable.cardLimit,se.qbranch.qanban.Phase.cardLimit.nullable.java.lang.Integer,se.qbranch.qanban.Phase.cardLimit.nullable,phase.cardLimit.nullable.se.qbranch.qanban.Phase.cardLimit,phase.cardLimit.nullable.cardLimit,phase.cardLimit.nullable.java.lang.Integer,phase.cardLimit.nullable,nullable.se.qbranch.qanban.Phase.cardLimit,nullable.cardLimit,nullable.java.lang.Integer,nullable]; arguments [cardLimit,class se.qbranch.qanban.Phase]; default message [Property [{0}] of class [{1}] cannot be null] diff --git a/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.PhaseTests.txt b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.PhaseTests.txt new file mode 100644 index 0000000..9de46f2 --- /dev/null +++ b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.PhaseTests.txt @@ -0,0 +1,17 @@ +Testsuite: se.qbranch.qanban.PhaseTests +Tests run: 3, Failures: 0, Errors: 0, Time elapsed: 0.162 sec +------------- Standard Output --------------- +--Output from testCreatePhase-- +--Output from testPhaseWithCard-- +--Output from testCreatingAPhaseWithLiteralCardLimit-- +Field error in object 'se.qbranch.qanban.Phase' on field 'cardLimit': rejected value [null]; codes [se.qbranch.qanban.Phase.cardLimit.nullable.error.se.qbranch.qanban.Phase.cardLimit,se.qbranch.qanban.Phase.cardLimit.nullable.error.cardLimit,se.qbranch.qanban.Phase.cardLimit.nullable.error.java.lang.Integer,se.qbranch.qanban.Phase.cardLimit.nullable.error,phase.cardLimit.nullable.error.se.qbranch.qanban.Phase.cardLimit,phase.cardLimit.nullable.error.cardLimit,phase.cardLimit.nullable.error.java.lang.Integer,phase.cardLimit.nullable.error,se.qbranch.qanban.Phase.cardLimit.nullable.se.qbranch.qanban.Phase.cardLimit,se.qbranch.qanban.Phase.cardLimit.nullable.cardLimit,se.qbranch.qanban.Phase.cardLimit.nullable.java.lang.Integer,se.qbranch.qanban.Phase.cardLimit.nullable,phase.cardLimit.nullable.se.qbranch.qanban.Phase.cardLimit,phase.cardLimit.nullable.cardLimit,phase.cardLimit.nullable.java.lang.Integer,phase.cardLimit.nullable,nullable.se.qbranch.qanban.Phase.cardLimit,nullable.cardLimit,nullable.java.lang.Integer,nullable]; arguments [cardLimit,class se.qbranch.qanban.Phase]; default message [Property [{0}] of class [{1}] cannot be null] +------------- ---------------- --------------- +------------- Standard Error ----------------- +--Output from testCreatePhase-- +--Output from testPhaseWithCard-- +--Output from testCreatingAPhaseWithLiteralCardLimit-- +------------- ---------------- --------------- + +Testcase: testCreatePhase took 0.036 sec +Testcase: testPhaseWithCard took 0.094 sec +Testcase: testCreatingAPhaseWithLiteralCardLimit took 0.032 sec diff --git a/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.UserEventCreateTests-err.txt b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.UserEventCreateTests-err.txt new file mode 100644 index 0000000..e5dc333 --- /dev/null +++ b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.UserEventCreateTests-err.txt @@ -0,0 +1,5 @@ +--Output from testCreatingAUser-- +--Output from testCreatingAUserFromAUserObj-- +--Output from testCreatingAUserWithPass-- +--Output from testCreateWithInconsistentPasswords-- +--Output from testCreateWithoutPasswords-- diff --git a/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.UserEventCreateTests-out.txt b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.UserEventCreateTests-out.txt new file mode 100644 index 0000000..e5dc333 --- /dev/null +++ b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.UserEventCreateTests-out.txt @@ -0,0 +1,5 @@ +--Output from testCreatingAUser-- +--Output from testCreatingAUserFromAUserObj-- +--Output from testCreatingAUserWithPass-- +--Output from testCreateWithInconsistentPasswords-- +--Output from testCreateWithoutPasswords-- diff --git a/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.UserEventCreateTests.txt b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.UserEventCreateTests.txt new file mode 100644 index 0000000..1cab2b7 --- /dev/null +++ b/qanban-domain-plugin/test/reports/plain/TEST-se.qbranch.qanban.UserEventCreateTests.txt @@ -0,0 +1,22 @@ +Testsuite: se.qbranch.qanban.UserEventCreateTests +Tests run: 5, Failures: 0, Errors: 0, Time elapsed: 0.496 sec +------------- Standard Output --------------- +--Output from testCreatingAUser-- +--Output from testCreatingAUserFromAUserObj-- +--Output from testCreatingAUserWithPass-- +--Output from testCreateWithInconsistentPasswords-- +--Output from testCreateWithoutPasswords-- +------------- ---------------- --------------- +------------- Standard Error ----------------- +--Output from testCreatingAUser-- +--Output from testCreatingAUserFromAUserObj-- +--Output from testCreatingAUserWithPass-- +--Output from testCreateWithInconsistentPasswords-- +--Output from testCreateWithoutPasswords-- +------------- ---------------- --------------- + +Testcase: testCreatingAUser took 0.235 sec +Testcase: testCreatingAUserFromAUserObj took 0.092 sec +Testcase: testCreatingAUserWithPass took 0.053 sec +Testcase: testCreateWithInconsistentPasswords took 0.057 sec +Testcase: testCreateWithoutPasswords took 0.057 sec diff --git a/qanban-domain-plugin/test/unit/se/qbranch/qanban/BoardEventCreateTests.groovy b/qanban-domain-plugin/test/unit/se/qbranch/qanban/BoardEventCreateTests.groovy new file mode 100644 index 0000000..d020bec --- /dev/null +++ b/qanban-domain-plugin/test/unit/se/qbranch/qanban/BoardEventCreateTests.groovy @@ -0,0 +1,57 @@ +/* + * Copyright 2009 Qbranch AB + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package se.qbranch.qanban + +import grails.test.* + +class BoardEventCreateTests extends GrailsUnitTestCase { + + def user + + protected void setUp() { + super.setUp() + + // User mock + user = new User(username: "opsmrkr01", userRealName: "Mr. Krister") + mockDomain(User,[user]) + mockDomain(BoardEventCreate) + mockDomain(Board) + } + + protected void tearDown() { + super.tearDown() + } + + void testCreatingABoard() { + + def event = new BoardEventCreate(); + + + event.title = "The Board" + event.user = user + + event.beforeInsert() + event.save() + event.process() + + event.errors.getAllErrors().each { println it} + println event.domainId + + assertFalse 'The event should not have errors' ,event.hasErrors() + assertEquals 1, event.id + assertEquals event.title, Board.findByDomainId(event.domainId).title + } +} diff --git a/qanban-domain-plugin/test/unit/se/qbranch/qanban/BoardTests.groovy b/qanban-domain-plugin/test/unit/se/qbranch/qanban/BoardTests.groovy new file mode 100644 index 0000000..c7e22f7 --- /dev/null +++ b/qanban-domain-plugin/test/unit/se/qbranch/qanban/BoardTests.groovy @@ -0,0 +1,35 @@ +/* + * Copyright 2009 Qbranch AB + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package se.qbranch.qanban + +import grails.test.* + +class BoardTests extends GrailsUnitTestCase { + protected void setUp() { + super.setUp() + } + + protected void tearDown() { + super.tearDown() + } + + void testHasPhases() { + mockDomain(Board) + def b = new Board(domainId: 'domainId',title:'board').save() + assertEquals 0, b.phases.size() + } +} diff --git a/qanban-domain-plugin/test/unit/se/qbranch/qanban/CardEventCreateTests.groovy b/qanban-domain-plugin/test/unit/se/qbranch/qanban/CardEventCreateTests.groovy new file mode 100644 index 0000000..a08cf7b --- /dev/null +++ b/qanban-domain-plugin/test/unit/se/qbranch/qanban/CardEventCreateTests.groovy @@ -0,0 +1,174 @@ +/* + * Copyright 2009 Qbranch AB + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package se.qbranch.qanban + +import grails.test.* + +class CardEventCreateTests extends GrailsUnitTestCase { + + def user1 + def user2 + + def board + + def phase1 + def phase2 + def phase3 + + def card1onPhase1 + def card2onPhase1 + def card3onPhase2 + + + protected void setUp() { + super.setUp() + + // User mock + + user1 = new User(username: "opsmrkr01", userRealName: "Mr. Krister") + user2 = new User(username: "opsshba01", userRealName: "Shean Banan") + + mockDomain(User,[user1,user2]) + + + // Board mock + + board = new Board() + mockDomain(Board,[board]) + + + // Phase / PhaseEventCreate mock + + mockDomain(PhaseEventCreate) + mockDomain(Phase) + + def phaseEventCreate1 = new PhaseEventCreate(title: "First phase", cardLimit: 5, phasePos: 0, user: user1, board: board) + def phaseEventCreate2 = new PhaseEventCreate(title: "Second phase", cardLimit: 10, phasePos: 1, user: user1 , board: board) + def phaseEventCreate3 = new PhaseEventCreate(title: "Third phase", cardLimit: 0, user: user1, phasePos: 2, board: board) + + phaseEventCreate1.beforeInsert() + phaseEventCreate1.save() + phaseEventCreate1.process() + + phaseEventCreate2.beforeInsert() + phaseEventCreate2.save() + phaseEventCreate2.process() + + phaseEventCreate3.beforeInsert() + phaseEventCreate3.save() + phaseEventCreate3.process() + + phase1 = phaseEventCreate1.phase + phase2 = phaseEventCreate2.phase + phase3 = phaseEventCreate3.phase + + assertEquals phase1, Phase.findByDomainId(phase1.domainId) + + // Card / CardEventCreate mock + + mockDomain(CardEventCreate) + mockDomain(Card) + + def cardEventCreate1 = new CardEventCreate(title:"Card #1",caseNumber:1,description:"The first card originally from First phase on the first position",phaseDomainId:phase1.domainId,user:user1) + def cardEventCreate2 = new CardEventCreate(title:"Card #2",caseNumber:2,description:"The second card originally from First phase on the second position",phaseDomainId:phase1.domainId,user:user1) + def cardEventCreate3 = new CardEventCreate(title:"Card #3",caseNumber:3,description:"The third card originally from Second phase on the first position",phaseDomainId:phase2.domainId,user:user1) + + cardEventCreate1.beforeInsert() + cardEventCreate1.save() + cardEventCreate1.process() + + cardEventCreate2.beforeInsert() + cardEventCreate2.save() + cardEventCreate2.process() + + cardEventCreate3.beforeInsert() + cardEventCreate3.save() + cardEventCreate3.process() + + card1onPhase1 = cardEventCreate1.card + card2onPhase1 = cardEventCreate2.card + card3onPhase2 = cardEventCreate3.card + + // Assertions to validate the mock setup + + board.phases.each { + println it + it.cards.each { + println " $it" + } + } + + assertEquals 1, board.id + assertEquals 3, board.phases.size() + assertEquals 1, phase1.id + assertEquals 2, phase1.cards.size() + assertEquals 2, phase2.id + assertEquals 1, phase2.cards.size() + assertEquals 3, phase3.id + assertEquals 1, card1onPhase1.id + assertEquals 2, card2onPhase1.id + assertEquals 3, card3onPhase2.id + + } + + protected void tearDown() { + super.tearDown() + } + + + void testCreateingValidEvent() { + def event = new CardEventCreate(); + + event.title = "Card #4" + event.description = "Created By A Event" + event.caseNumber = 4 + event.phaseDomainId = Phase.get(1).domainId + event.user = user1 + + event.beforeInsert() + event.save() + event.process() + + event.errors.getAllErrors().each { println it} + println event.domainId + + assertFalse 'The event should not have errors' ,event.hasErrors() + assertEquals 4, event.id + assertEquals event.title, Card.findByDomainId(event.domainId).title + + } + + void testCreateingInvalidEventWithoutCaseNo() { + def event = new CardEventCreate(); + + event.title = "Card #4" + event.description = "Created By A Event" + event.phaseDomainId = Phase.get(1).domainId + event.user = user1 + + event.beforeInsert() + event.save() + event.process() + event.errors.getAllErrors().each { println it } + + assertTrue 'The event should have errors' ,event.hasErrors() + assertEquals null, event.id + println event.domainId + assertEquals null, Card.findByDomainId(event.domainId) + + } +} diff --git a/qanban-domain-plugin/test/unit/se/qbranch/qanban/CardEventDeleteTests.groovy b/qanban-domain-plugin/test/unit/se/qbranch/qanban/CardEventDeleteTests.groovy new file mode 100644 index 0000000..6aa6ad7 --- /dev/null +++ b/qanban-domain-plugin/test/unit/se/qbranch/qanban/CardEventDeleteTests.groovy @@ -0,0 +1,151 @@ +/* + * Copyright 2009 Qbranch AB + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package se.qbranch.qanban + +import grails.test.* + +class CardEventDeleteTests extends GrailsUnitTestCase { + + def user1 + def user2 + + def board + + def phase1 + def phase2 + def phase3 + + def card1onPhase1 + def card2onPhase1 + def card3onPhase2 + + + protected void setUp() { + super.setUp() + + // User mock + + user1 = new User(username: "opsmrkr01", userRealName: "Mr. Krister") + user2 = new User(username: "opsshba01", userRealName: "Shean Banan") + + mockDomain(User,[user1,user2]) + + + // Board mock + + board = new Board() + mockDomain(Board,[board]) + + + // Phase / PhaseEventCreate mock + + mockDomain(PhaseEventCreate) + mockDomain(Phase) + + def phaseEventCreate1 = new PhaseEventCreate(title: "First phase", cardLimit: 5, phasePos: 0, user: user1, board: board) + def phaseEventCreate2 = new PhaseEventCreate(title: "Second phase", cardLimit: 10, phasePos: 1, user: user1 , board: board) + def phaseEventCreate3 = new PhaseEventCreate(title: "Third phase", cardLimit: 0, user: user1, phasePos: 2, board: board) + + phaseEventCreate1.beforeInsert() + phaseEventCreate1.save() + phaseEventCreate1.process() + + phaseEventCreate2.beforeInsert() + phaseEventCreate2.save() + phaseEventCreate2.process() + + phaseEventCreate3.beforeInsert() + phaseEventCreate3.save() + phaseEventCreate3.process() + + phase1 = phaseEventCreate1.phase + phase2 = phaseEventCreate2.phase + phase3 = phaseEventCreate3.phase + + assertEquals phase1, Phase.findByDomainId(phase1.domainId) + + // Card / CardEventCreate mock + + mockDomain(CardEventCreate) + mockDomain(Card) + + def cardEventCreate1 = new CardEventCreate(title:"Card #1",caseNumber:1,description:"The first card originally from First phase on the first position",phaseDomainId:phase1.domainId,user:user1) + def cardEventCreate2 = new CardEventCreate(title:"Card #2",caseNumber:2,description:"The second card originally from First phase on the second position",phaseDomainId:phase1.domainId,user:user1) + def cardEventCreate3 = new CardEventCreate(title:"Card #3",caseNumber:3,description:"The third card originally from Second phase on the first position",phaseDomainId:phase2.domainId,user:user1) + + cardEventCreate1.beforeInsert() + cardEventCreate1.save() + cardEventCreate1.process() + + cardEventCreate2.beforeInsert() + cardEventCreate2.save() + cardEventCreate2.process() + + cardEventCreate3.beforeInsert() + cardEventCreate3.save() + cardEventCreate3.process() + + card1onPhase1 = cardEventCreate1.card + card2onPhase1 = cardEventCreate2.card + card3onPhase2 = cardEventCreate3.card + + // Assertions to validate the mock setup + + board.phases.each { + println it + it.cards.each { + println " $it" + } + } + + assertEquals 1, board.id + assertEquals 3, board.phases.size() + assertEquals 1, phase1.id + assertEquals 2, phase1.cards.size() + assertEquals 2, phase2.id + assertEquals 1, phase2.cards.size() + assertEquals 3, phase3.id + assertEquals 1, card1onPhase1.id + assertEquals 2, card2onPhase1.id + assertEquals 3, card3onPhase2.id + + mockDomain(CardEventDelete) + + } + + protected void tearDown() { + super.tearDown() + } + + void testDeletCard() { + + assertEquals 2, phase1.cards.size() + + def domainId = card2onPhase1.domainId + + def deleteEvent = new CardEventDelete(card: card2onPhase1,user: user1) + + deleteEvent.validate() + deleteEvent.beforeInsert() + deleteEvent.save() + deleteEvent.process() + + assertEquals domainId, deleteEvent.domainId + assertEquals 1, phase1.cards.size() + + } +} diff --git a/qanban-domain-plugin/test/unit/se/qbranch/qanban/CardEventMoveTests.groovy b/qanban-domain-plugin/test/unit/se/qbranch/qanban/CardEventMoveTests.groovy new file mode 100644 index 0000000..344e076 --- /dev/null +++ b/qanban-domain-plugin/test/unit/se/qbranch/qanban/CardEventMoveTests.groovy @@ -0,0 +1,201 @@ +package se.qbranch.qanban + +import grails.test.* + +class CardEventMoveTests extends GrailsUnitTestCase { + + + def user1 + def user2 + + def board + + def phase1 + def phase2 + def phase3 + + def card1onPhase1 + def card2onPhase1 + def card3onPhase2 + + + protected void setUp() { + super.setUp() + + // User mock + + user1 = new User(username: "opsmrkr01", userRealName: "Mr. Krister") + user2 = new User(username: "opsshba01", userRealName: "Shean Banan") + + mockDomain(User,[user1,user2]) + + + // Board mock + + board = new Board() + mockDomain(Board,[board]) + + + // Phase / PhaseEventCreate mock + + mockDomain(PhaseEventCreate) + mockDomain(Phase) + + def phaseEventCreate1 = new PhaseEventCreate(title: "First phase", cardLimit: 5, phasePos: 0, user: user1, board: board) + def phaseEventCreate2 = new PhaseEventCreate(title: "Second phase", cardLimit: 10, phasePos: 1, user: user1 , board: board) + def phaseEventCreate3 = new PhaseEventCreate(title: "Third phase", cardLimit: 0, user: user1, phasePos: 2, board: board) + + phaseEventCreate1.beforeInsert() + phaseEventCreate1.save() + phaseEventCreate1.process() + + phaseEventCreate2.beforeInsert() + phaseEventCreate2.save() + phaseEventCreate2.process() + + phaseEventCreate3.beforeInsert() + phaseEventCreate3.save() + phaseEventCreate3.process() + + phase1 = phaseEventCreate1.phase + phase2 = phaseEventCreate2.phase + phase3 = phaseEventCreate3.phase + + assertEquals phase1, Phase.findByDomainId(phase1.domainId) + + // Card / CardEventCreate mock + + mockDomain(CardEventCreate) + mockDomain(Card) + + def cardEventCreate1 = new CardEventCreate(title:"Card #1",caseNumber:1,description:"The first card originally from First phase on the first position",phaseDomainId:phase1.domainId,user:user1) + def cardEventCreate2 = new CardEventCreate(title:"Card #2",caseNumber:2,description:"The second card originally from First phase on the second position",phaseDomainId:phase1.domainId,user:user1) + def cardEventCreate3 = new CardEventCreate(title:"Card #3",caseNumber:3,description:"The third card originally from Second phase on the first position",phaseDomainId:phase2.domainId,user:user1) + + cardEventCreate1.beforeInsert() + cardEventCreate1.save() + cardEventCreate1.process() + + cardEventCreate2.beforeInsert() + cardEventCreate2.save() + cardEventCreate2.process() + + cardEventCreate3.beforeInsert() + cardEventCreate3.save() + cardEventCreate3.process() + + card1onPhase1 = cardEventCreate1.card + card2onPhase1 = cardEventCreate2.card + card3onPhase2 = cardEventCreate3.card + + // Assertions to validate the mock setup + + board.phases.each { + println it + it.cards.each { + println " $it" + } + } + + assertEquals 1, board.id + assertEquals 3, board.phases.size() + assertEquals 1, phase1.id + assertEquals 2, phase1.cards.size() + assertEquals 2, phase2.id + assertEquals 1, phase2.cards.size() + assertEquals 3, phase3.id + assertEquals 1, card1onPhase1.id + assertEquals 2, card2onPhase1.id + assertEquals 3, card3onPhase2.id + + + mockDomain(CardEventMove) + + } + + protected void tearDown() { + super.tearDown() + } + + + void testValidMoveCardEventWithinAPhase() { + + assertEquals 1, phase1.cards.indexOf(card2onPhase1) + assertEquals 0, board.phases.indexOf(card2onPhase1.phase) + + def cardEventMove = new CardEventMove( card: card2onPhase1, newPhase: phase1, newCardIndex: 0,user: user1) + + cardEventMove.beforeInsert() + cardEventMove.save() + cardEventMove.process() + + assertEquals 0, card2onPhase1.phase.cards.indexOf(card2onPhase1) + assertEquals 0, card2onPhase1.phase.board.phases.indexOf(card2onPhase1.phase) + assertEquals cardEventMove.domainId, card2onPhase1.domainId + } + + void testValidMoveCardEventBetweenPhases() { + + assertEquals 1, phase1.cards.indexOf(card2onPhase1) + assertEquals 0, board.phases.indexOf(card2onPhase1.phase) + + def cardEventMove = new CardEventMove( card: card2onPhase1, newPhase: phase2, newCardIndex: 0,user: user1) + + cardEventMove.beforeInsert() + cardEventMove.save() + cardEventMove.process() + + assertEquals 0, card2onPhase1.phase.cards.indexOf(card2onPhase1) + assertEquals 1, card2onPhase1.phase.board.phases.indexOf(card2onPhase1.phase) + assertEquals 2, phase2.cards.size() + assertEquals cardEventMove.domainId, card2onPhase1.domainId + + } + + + + void testInvalidMoveCardEvent() { + + def card = Card.get(1) + def newPhase = Phase.get(1) + def newCardIndex = -1 + + assertEquals 0, card.phase.cards.indexOf(card) + assertEquals 0, card.phase.board.phases.indexOf(card.phase) + + def cardEventMove = new CardEventMove() + cardEventMove.card = card; + cardEventMove.newPhase = newPhase + cardEventMove.newCardIndex = newCardIndex + + cardEventMove.save() + + assertEquals 0, card.phase.cards.indexOf(card) + assertEquals 0, card.phase.board.phases.indexOf(card.phase) + assertEquals null, cardEventMove.id + + for (error in cardEventMove.errors) { + println error + } + + } + + void testCompareOfCardEventMove() { + def cardOld = new CardEventMove(newCardIndex: 0, + card: Card.get(0), + user: null, + newPhase: null, + dateCreated: new Date().previous()) + def cardNewer = new CardEventMove(newCardIndex: 0, + card: Card.get(0), + user: null, + newPhase: null, + dateCreated: new Date()) + assert cardOld.compareTo(cardNewer) > 0 + assert cardNewer.compareTo(cardOld) < 0 + assert cardNewer.compareTo(cardNewer) == 0 + + } + + +} \ No newline at end of file diff --git a/qanban-domain-plugin/test/unit/se/qbranch/qanban/CardEventSetAssigneeTests.groovy b/qanban-domain-plugin/test/unit/se/qbranch/qanban/CardEventSetAssigneeTests.groovy new file mode 100644 index 0000000..63b3f36 --- /dev/null +++ b/qanban-domain-plugin/test/unit/se/qbranch/qanban/CardEventSetAssigneeTests.groovy @@ -0,0 +1,163 @@ +/* + * Copyright 2009 Qbranch AB + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package se.qbranch.qanban + +import grails.test.* + +class CardEventSetAssigneeTests extends GrailsUnitTestCase { + + def user1 + def user2 + + def board + + def phase1 + def phase2 + def phase3 + + def card1onPhase1 + def card2onPhase1 + def card3onPhase2 + + + protected void setUp() { + super.setUp() + + // User mock + + user1 = new User(username: "opsmrkr01", userRealName: "Mr. Krister") + user2 = new User(username: "opsshba01", userRealName: "Shean Banan") + + mockDomain(User,[user1,user2]) + + + // Board mock + + board = new Board() + mockDomain(Board,[board]) + + + // Phase / PhaseEventCreate mock + + mockDomain(PhaseEventCreate) + mockDomain(Phase) + + def phaseEventCreate1 = new PhaseEventCreate(title: "First phase", cardLimit: 5, phasePos: 0, user: user1, board: board) + def phaseEventCreate2 = new PhaseEventCreate(title: "Second phase", cardLimit: 10, phasePos: 1, user: user1 , board: board) + def phaseEventCreate3 = new PhaseEventCreate(title: "Third phase", cardLimit: 0 , user: user1, phasePos: 2, board: board) + + phaseEventCreate1.beforeInsert() + phaseEventCreate1.save() + phaseEventCreate1.process() + + phaseEventCreate2.beforeInsert() + phaseEventCreate2.save() + phaseEventCreate2.process() + + phaseEventCreate3.beforeInsert() + phaseEventCreate3.save() + phaseEventCreate3.process() + + phase1 = phaseEventCreate1.phase + phase2 = phaseEventCreate2.phase + phase3 = phaseEventCreate3.phase + + assertEquals phase1, Phase.findByDomainId(phase1.domainId) + + // Card / CardEventCreate mock + + mockDomain(CardEventCreate) + mockDomain(Card) + + def cardEventCreate1 = new CardEventCreate(title:"Card #1",caseNumber:1,description:"The first card originally from First phase on the first position",phaseDomainId:phase1.domainId,user:user1) + def cardEventCreate2 = new CardEventCreate(title:"Card #2",caseNumber:2,description:"The second card originally from First phase on the second position",phaseDomainId:phase1.domainId,user:user1) + def cardEventCreate3 = new CardEventCreate(title:"Card #3",caseNumber:3,description:"The third card originally from Second phase on the first position",phaseDomainId:phase2.domainId,user:user1) + + cardEventCreate1.beforeInsert() + cardEventCreate1.save() + cardEventCreate1.process() + + cardEventCreate2.beforeInsert() + cardEventCreate2.save() + cardEventCreate2.process() + + cardEventCreate3.beforeInsert() + cardEventCreate3.save() + cardEventCreate3.process() + + card1onPhase1 = cardEventCreate1.card + card2onPhase1 = cardEventCreate2.card + card3onPhase2 = cardEventCreate3.card + + // Assertions to validate the mock setup + + board.phases.each { + println it + it.cards.each { + println " $it" + } + } + + assertEquals 1, board.id + assertEquals 3, board.phases.size() + assertEquals 1, phase1.id + assertEquals 2, phase1.cards.size() + assertEquals 2, phase2.id + assertEquals 1, phase2.cards.size() + assertEquals 3, phase3.id + assertEquals 1, card1onPhase1.id + assertEquals 2, card2onPhase1.id + assertEquals 3, card3onPhase2.id + + + // Specific mockups + + mockDomain(CardEventSetAssignee) + + + } + + void testSetAndUnsetAssignee() { + + assertNull "There should be no assignee", card1onPhase1.assignee + + def setAssigneeEvent = new CardEventSetAssignee( + card: card1onPhase1, + newAssignee: user1, + user: user2 + ) + + setAssigneeEvent.beforeInsert() + setAssigneeEvent.save() + setAssigneeEvent.process() + + assertEquals setAssigneeEvent.domainId, card1onPhase1.domainId + assertEquals user1, card1onPhase1.assignee + + def unsetAssigneeEvent = new CardEventSetAssignee( + card: card1onPhase1,user: user2 + ) + + unsetAssigneeEvent.beforeInsert() + unsetAssigneeEvent.save() + unsetAssigneeEvent.process() + + assertEquals unsetAssigneeEvent.domainId, card1onPhase1.domainId + assertNull "There should not be a assignee", card1onPhase1.assignee + + } +} diff --git a/qanban-domain-plugin/test/unit/se/qbranch/qanban/CardEventTests.groovy b/qanban-domain-plugin/test/unit/se/qbranch/qanban/CardEventTests.groovy new file mode 100644 index 0000000..b48448c --- /dev/null +++ b/qanban-domain-plugin/test/unit/se/qbranch/qanban/CardEventTests.groovy @@ -0,0 +1,33 @@ +/* + * Copyright 2009 Qbranch AB + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package se.qbranch.qanban + +import grails.test.* + +class CardEventTests extends GrailsUnitTestCase { + protected void setUp() { + super.setUp() + } + + protected void tearDown() { + super.tearDown() + } + + void testSomething() { + + } +} diff --git a/qanban-domain-plugin/test/unit/se/qbranch/qanban/CardEventUpdateTests.groovy b/qanban-domain-plugin/test/unit/se/qbranch/qanban/CardEventUpdateTests.groovy new file mode 100644 index 0000000..3196740 --- /dev/null +++ b/qanban-domain-plugin/test/unit/se/qbranch/qanban/CardEventUpdateTests.groovy @@ -0,0 +1,176 @@ +/* + * Copyright 2009 Qbranch AB + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package se.qbranch.qanban + +import grails.test.* + +class CardEventUpdateTests extends GrailsUnitTestCase { + + def user1 + def user2 + + def board + + def phase1 + def phase2 + def phase3 + + def card1onPhase1 + def card2onPhase1 + def card3onPhase2 + + + protected void setUp() { + super.setUp() + + // User mock + + user1 = new User(username: "opsmrkr01", userRealName: "Mr. Krister") + user2 = new User(username: "opsshba01", userRealName: "Shean Banan") + + mockDomain(User,[user1,user2]) + + + // Board mock + + board = new Board() + mockDomain(Board,[board]) + + + // Phase / PhaseEventCreate mock + + mockDomain(PhaseEventCreate) + mockDomain(Phase) + + def phaseEventCreate1 = new PhaseEventCreate(title: "First phase", cardLimit: 5, phasePos: 0, user: user1, board: board) + def phaseEventCreate2 = new PhaseEventCreate(title: "Second phase", cardLimit: 10, phasePos: 1, user: user1 , board: board) + def phaseEventCreate3 = new PhaseEventCreate(title: "Third phase", cardLimit: 0, user: user1, phasePos: 2, board: board) + + phaseEventCreate1.beforeInsert() + phaseEventCreate1.save() + phaseEventCreate1.process() + + phaseEventCreate2.beforeInsert() + phaseEventCreate2.save() + phaseEventCreate2.process() + + phaseEventCreate3.beforeInsert() + phaseEventCreate3.save() + phaseEventCreate3.process() + + phase1 = phaseEventCreate1.phase + phase2 = phaseEventCreate2.phase + phase3 = phaseEventCreate3.phase + + assertEquals phase1, Phase.findByDomainId(phase1.domainId) + + // Card / CardEventCreate mock + + mockDomain(CardEventCreate) + mockDomain(Card) + + def cardEventCreate1 = new CardEventCreate(title:"Card #1",caseNumber:1,description:"The first card originally from First phase on the first position",phaseDomainId:phase1.domainId,user:user1) + def cardEventCreate2 = new CardEventCreate(title:"Card #2",caseNumber:2,description:"The second card originally from First phase on the second position",phaseDomainId:phase1.domainId,user:user1) + def cardEventCreate3 = new CardEventCreate(title:"Card #3",caseNumber:3,description:"The third card originally from Second phase on the first position",phaseDomainId:phase2.domainId,user:user1) + + cardEventCreate1.beforeInsert() + cardEventCreate1.save() + cardEventCreate1.process() + + cardEventCreate2.beforeInsert() + cardEventCreate2.save() + cardEventCreate2.process() + + cardEventCreate3.beforeInsert() + cardEventCreate3.save() + cardEventCreate3.process() + + card1onPhase1 = cardEventCreate1.card + card2onPhase1 = cardEventCreate2.card + card3onPhase2 = cardEventCreate3.card + + // Assertions to validate the mock setup + + board.phases.each { + println it + it.cards.each { + println " $it" + } + } + + assertEquals 1, board.id + assertEquals 3, board.phases.size() + assertEquals 1, phase1.id + assertEquals 2, phase1.cards.size() + assertEquals 2, phase2.id + assertEquals 1, phase2.cards.size() + assertEquals 3, phase3.id + assertEquals 1, card1onPhase1.id + assertEquals 2, card2onPhase1.id + assertEquals 3, card3onPhase2.id + + // Specific mockups + + mockDomain(CardEventUpdate) + + + } + + protected void tearDown() { + super.tearDown() + } + + void testSuccessfulUpdating() { + def newTitle = "Card #1 is updated" + def caseNo = 1337 + + def updateEvent = new CardEventUpdate() + updateEvent.card = card1onPhase1; + updateEvent.title = newTitle; + updateEvent.description = null; + updateEvent.caseNumber = caseNo; + updateEvent.user = user1; + + + updateEvent.validate() + updateEvent.beforeInsert() + updateEvent.save() + updateEvent.process() + + assertEquals card1onPhase1.domainId, updateEvent.domainId + assertEquals newTitle, card1onPhase1.title + assertNull "There should be no description", card1onPhase1.description + + } + + void testUnsuccessfulUpdateWidhoutCaseNumber(){ + def newTitle = "Card #1 is updated" + + def updateEvent = new CardEventUpdate( + card: card1onPhase1, + title: newTitle, + description: null, + user: user1 + ) + + updateEvent.validate() + + updateEvent.errors.getAllErrors().each { println it} + + assertEquals 1, updateEvent.errors.getAllErrors().size() + } +} \ No newline at end of file diff --git a/qanban-domain-plugin/test/unit/se/qbranch/qanban/CardTests.groovy b/qanban-domain-plugin/test/unit/se/qbranch/qanban/CardTests.groovy new file mode 100644 index 0000000..9cf1633 --- /dev/null +++ b/qanban-domain-plugin/test/unit/se/qbranch/qanban/CardTests.groovy @@ -0,0 +1,38 @@ +/* + * Copyright 2009 Qbranch AB + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package se.qbranch.qanban + +import grails.test.* + +class CardTests extends GrailsUnitTestCase { + + protected void setUp() { + super.setUp() + } + + protected void tearDown() { + super.tearDown() + } + + void testCreateCard() { + def card = new Card(description: "testcard") + + assertEquals "testcard", card.description + } + + +} diff --git a/qanban-domain-plugin/test/unit/se/qbranch/qanban/EventServiceTests.groovy b/qanban-domain-plugin/test/unit/se/qbranch/qanban/EventServiceTests.groovy new file mode 100644 index 0000000..f17087c --- /dev/null +++ b/qanban-domain-plugin/test/unit/se/qbranch/qanban/EventServiceTests.groovy @@ -0,0 +1,33 @@ +/* + * Copyright 2009 Qbranch AB + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package se.qbranch.qanban + +import grails.test.* + +class EventServiceTests extends GrailsUnitTestCase { + protected void setUp() { + super.setUp() + } + + protected void tearDown() { + super.tearDown() + } + + void testSomething() { + + } +} diff --git a/qanban-domain-plugin/test/unit/se/qbranch/qanban/EventTests.groovy b/qanban-domain-plugin/test/unit/se/qbranch/qanban/EventTests.groovy new file mode 100644 index 0000000..94effd8 --- /dev/null +++ b/qanban-domain-plugin/test/unit/se/qbranch/qanban/EventTests.groovy @@ -0,0 +1,45 @@ +/* + * Copyright 2009 Qbranch AB + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package se.qbranch.qanban + +import grails.test.* + +class EventTests extends GrailsUnitTestCase { + protected void setUp() { + super.setUp() + mockDomain(Event) + } + + protected void tearDown() { + super.tearDown() + } + + void testEquals() { + def event1 = new Event(domainId:'did') + event1.save() + + def event2 = Event.findByDomainId('did') + + def event3 = new Event(domainId:'dint') + event3.save() + println event1.id + println event3.id + assertTrue "Should be equal", event1.equals(event2) // == uses compareTo instead of equals when the class implements the comparable interface + assertFalse "Shouldn't be equal", event2.equals(event3) + + } +} diff --git a/qanban-domain-plugin/test/unit/se/qbranch/qanban/PhaseEventCreateTests.groovy b/qanban-domain-plugin/test/unit/se/qbranch/qanban/PhaseEventCreateTests.groovy new file mode 100644 index 0000000..1c7941d --- /dev/null +++ b/qanban-domain-plugin/test/unit/se/qbranch/qanban/PhaseEventCreateTests.groovy @@ -0,0 +1,192 @@ +/* + * Copyright 2009 Qbranch AB + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package se.qbranch.qanban + +import grails.test.* + +class PhaseEventCreateTests extends GrailsUnitTestCase { + + def user1 + def user2 + + def board + + def phase1 + def phase2 + def phase3 + + def card1onPhase1 + def card2onPhase1 + def card3onPhase2 + + + protected void setUp() { + super.setUp() + + // User mock + + user1 = new User(username: "opsmrkr01", userRealName: "Mr. Krister") + user2 = new User(username: "opsshba01", userRealName: "Shean Banan") + + mockDomain(User,[user1,user2]) + + + // Board mock + + board = new Board() + mockDomain(Board,[board]) + + + // Phase / PhaseEventCreate mock + + mockDomain(PhaseEventCreate) + mockDomain(Phase) + + def phaseEventCreate1 = new PhaseEventCreate(title: "First phase", cardLimit: 5, phasePos: 0, user: user1, board: board) + def phaseEventCreate2 = new PhaseEventCreate(title: "Second phase", cardLimit: 10, phasePos: 1, user: user1 , board: board) + def phaseEventCreate3 = new PhaseEventCreate(title: "Third phase", cardLimit: 0, user: user1, phasePos: 2, board: board) + + phaseEventCreate1.beforeInsert() + phaseEventCreate1.save() + phaseEventCreate1.process() + + phaseEventCreate2.beforeInsert() + phaseEventCreate2.save() + phaseEventCreate2.process() + + phaseEventCreate3.beforeInsert() + phaseEventCreate3.save() + phaseEventCreate3.process() + + phase1 = phaseEventCreate1.phase + phase2 = phaseEventCreate2.phase + phase3 = phaseEventCreate3.phase + + assertEquals phase1, Phase.findByDomainId(phase1.domainId) + + // Card / CardEventCreate mock + + mockDomain(CardEventCreate) + mockDomain(Card) + + def cardEventCreate1 = new CardEventCreate(title:"Card #1",caseNumber:1,description:"The first card originally from First phase on the first position",phaseDomainId:phase1.domainId,user:user1) + def cardEventCreate2 = new CardEventCreate(title:"Card #2",caseNumber:2,description:"The second card originally from First phase on the second position",phaseDomainId:phase1.domainId,user:user1) + def cardEventCreate3 = new CardEventCreate(title:"Card #3",caseNumber:3,description:"The third card originally from Second phase on the first position",phaseDomainId:phase2.domainId,user:user1) + + cardEventCreate1.beforeInsert() + cardEventCreate1.save() + cardEventCreate1.process() + + cardEventCreate2.beforeInsert() + cardEventCreate2.save() + cardEventCreate2.process() + + cardEventCreate3.beforeInsert() + cardEventCreate3.save() + cardEventCreate3.process() + + card1onPhase1 = cardEventCreate1.card + card2onPhase1 = cardEventCreate2.card + card3onPhase2 = cardEventCreate3.card + + // Assertions to validate the mock setup + + assertEquals 1, board.id + assertEquals 3, board.phases.size() + assertEquals 1, phase1.id + assertEquals 2, phase1.cards.size() + assertEquals 2, phase2.id + assertEquals 1, phase2.cards.size() + assertEquals 3, phase3.id + assertEquals 1, card1onPhase1.id + assertEquals 2, card2onPhase1.id + assertEquals 3, card3onPhase2.id + + mockDomain(PhaseEventCreate) + } + + protected void tearDown() { + super.tearDown() + } + + void testCreatingAValidPhase() { + String title = 'Fourth phase' + Integer position = 1 + Integer cardLimit = 100 + + def createEvent = new PhaseEventCreate( + title: title, + cardLimit: cardLimit, + phasePos: position, + board: board, + user: user1 + ) + + createEvent.beforeInsert() + createEvent.save() + createEvent.process() + + assertNotNull "There should be a phase", createEvent.phase + + def newPhase = createEvent.phase + + assertEquals newPhase.domainId, createEvent.domainId + assertEquals title, newPhase.title + assertEquals position, board.phases.indexOf(newPhase) + + } + + void testCreatingPhaseWithoudPosition() { + String title = 'Fourth phase' + Integer cardLimit = 100 + + def createEvent = new PhaseEventCreate( + title: title, + cardLimit: cardLimit, + board: board, + user: user1 + ) + + if( createEvent.validate() ){ + createEvent.beforeInsert() + createEvent.save() + createEvent.process() + } + + assertNull "There should not be a phase", createEvent.phase + + } + + void testCreatingAPhaseWithLiteralsAsLimit(){ + String cardLimit = "limit with literals" + String title = "Fourth phase" + def createEvent = new PhaseEventCreate( + title: title, + cardLimit: cardLimit, + board: board, + user: user1 , + phasePos: 1 + ) + + createEvent.validate(); + println "$cardLimit - $createEvent.cardLimit" + + assertTrue "Shiould have errors", createEvent.hasErrors() + + + } +} diff --git a/qanban-domain-plugin/test/unit/se/qbranch/qanban/PhaseEventDeleteTests.groovy b/qanban-domain-plugin/test/unit/se/qbranch/qanban/PhaseEventDeleteTests.groovy new file mode 100644 index 0000000..4dd1abc --- /dev/null +++ b/qanban-domain-plugin/test/unit/se/qbranch/qanban/PhaseEventDeleteTests.groovy @@ -0,0 +1,161 @@ +/* + * Copyright 2009 Qbranch AB + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package se.qbranch.qanban + +import grails.test.* + +class PhaseEventDeleteTests extends GrailsUnitTestCase { + + def user1 + def user2 + + def board + + def phase1 + def phase2 + def phase3 + + def card1onPhase1 + def card2onPhase1 + def card3onPhase2 + + + protected void setUp() { + super.setUp() + + // User mock + + user1 = new User(username: "opsmrkr01", userRealName: "Mr. Krister") + user2 = new User(username: "opsshba01", userRealName: "Shean Banan") + + mockDomain(User,[user1,user2]) + + + // Board mock + mockDomain(BoardEventCreate) + mockDomain(Board) + + def bec = new BoardEventCreate(title: 'Board',user: user1) + + bec.beforeInsert() + bec.save() + bec.process() + + board = bec.board + + + + + // Phase / PhaseEventCreate mock + + mockDomain(PhaseEventCreate) + mockDomain(Phase) + + def phaseEventCreate1 = new PhaseEventCreate(title: "First phase", cardLimit: 5, phasePos: 0, user: user1, board: board) + def phaseEventCreate2 = new PhaseEventCreate(title: "Second phase", cardLimit: 10, phasePos: 1, user: user1 , board: board) + def phaseEventCreate3 = new PhaseEventCreate(title: "Third phase", cardLimit: 0, user: user1, phasePos: 2, board: board) + + phaseEventCreate1.beforeInsert() + phaseEventCreate1.save() + phaseEventCreate1.process() + + phaseEventCreate2.beforeInsert() + phaseEventCreate2.save() + phaseEventCreate2.process() + + phaseEventCreate3.beforeInsert() + phaseEventCreate3.save() + phaseEventCreate3.process() + + phase1 = phaseEventCreate1.phase + phase2 = phaseEventCreate2.phase + phase3 = phaseEventCreate3.phase + + assertEquals phase1, Phase.findByDomainId(phase1.domainId) + + // Card / CardEventCreate mock + + mockDomain(CardEventCreate) + mockDomain(Card) + + def cardEventCreate1 = new CardEventCreate(title:"Card #1",caseNumber:1,description:"The first card originally from First phase on the first position",phaseDomainId:phase1.domainId,user:user1) + def cardEventCreate2 = new CardEventCreate(title:"Card #2",caseNumber:2,description:"The second card originally from First phase on the second position",phaseDomainId:phase1.domainId,user:user1) + def cardEventCreate3 = new CardEventCreate(title:"Card #3",caseNumber:3,description:"The third card originally from Second phase on the first position",phaseDomainId:phase2.domainId,user:user1) + + cardEventCreate1.beforeInsert() + cardEventCreate1.save() + cardEventCreate1.process() + + cardEventCreate2.beforeInsert() + cardEventCreate2.save() + cardEventCreate2.process() + + cardEventCreate3.beforeInsert() + cardEventCreate3.save() + cardEventCreate3.process() + + card1onPhase1 = cardEventCreate1.card + card2onPhase1 = cardEventCreate2.card + card3onPhase2 = cardEventCreate3.card + + // Assertions to validate the mock setup + + board.phases.each { + println it + it.cards.each { + println " $it" + } + } + + assertEquals 1, board.id + assertEquals 3, board.phases.size() + assertEquals 1, phase1.id + assertEquals 2, phase1.cards.size() + assertEquals 2, phase2.id + assertEquals 1, phase2.cards.size() + assertEquals 3, phase3.id + assertEquals 1, card1onPhase1.id + assertEquals 2, card2onPhase1.id + assertEquals 3, card3onPhase2.id + + mockDomain(PhaseEventDelete) + } + + protected void tearDown() { + super.tearDown() + } + + void testDeletePhase() { + + assertEquals 3, board.phases.size() + + def domainId = phase1.domainId + def deleteEvent = new PhaseEventDelete() + deleteEvent.phase = phase1 + deleteEvent.user = user1 + + + deleteEvent.validate() + deleteEvent.beforeInsert() + deleteEvent.save() + deleteEvent.process() + + assertEquals domainId, deleteEvent.domainId + assertEquals 2, board.phases.size() + + } +} diff --git a/qanban-domain-plugin/test/unit/se/qbranch/qanban/PhaseEventMoveTests.groovy b/qanban-domain-plugin/test/unit/se/qbranch/qanban/PhaseEventMoveTests.groovy new file mode 100644 index 0000000..69873aa --- /dev/null +++ b/qanban-domain-plugin/test/unit/se/qbranch/qanban/PhaseEventMoveTests.groovy @@ -0,0 +1,148 @@ +/* + * Copyright 2009 Qbranch AB + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package se.qbranch.qanban + +import grails.test.* + +class PhaseEventMoveTests extends GrailsUnitTestCase { + + + def user1 + def user2 + + def board + + def phase1 + def phase2 + def phase3 + + def card1onPhase1 + def card2onPhase1 + def card3onPhase2 + + + protected void setUp() { + super.setUp() + + // User mock + + user1 = new User(username: "opsmrkr01", userRealName: "Mr. Krister") + user2 = new User(username: "opsshba01", userRealName: "Shean Banan") + + mockDomain(User,[user1,user2]) + + + // Board mock + + board = new Board() + mockDomain(Board,[board]) + + + // Phase / PhaseEventCreate mock + + mockDomain(PhaseEventCreate) + mockDomain(Phase) + + def phaseEventCreate1 = new PhaseEventCreate(title: "First phase", cardLimit: 5, phasePos: 0, user: user1, board: board) + def phaseEventCreate2 = new PhaseEventCreate(title: "Second phase", cardLimit: 10, phasePos: 1, user: user1 , board: board) + def phaseEventCreate3 = new PhaseEventCreate(title: "Third phase", cardLimit: 0 , user: user1, phasePos: 2, board: board) + + phaseEventCreate1.beforeInsert() + phaseEventCreate1.save() + phaseEventCreate1.process() + + phaseEventCreate2.beforeInsert() + phaseEventCreate2.save() + phaseEventCreate2.process() + + phaseEventCreate3.beforeInsert() + phaseEventCreate3.save() + phaseEventCreate3.process() + + phase1 = phaseEventCreate1.phase + phase2 = phaseEventCreate2.phase + phase3 = phaseEventCreate3.phase + + assertEquals phase1, Phase.findByDomainId(phase1.domainId) + + // Card / CardEventCreate mock + + mockDomain(CardEventCreate) + mockDomain(Card) + + def cardEventCreate1 = new CardEventCreate(title:"Card #1",caseNumber:1,description:"The first card originally from First phase on the first position",phaseDomainId:phase1.domainId,user:user1) + def cardEventCreate2 = new CardEventCreate(title:"Card #2",caseNumber:2,description:"The second card originally from First phase on the second position",phaseDomainId:phase1.domainId,user:user1) + def cardEventCreate3 = new CardEventCreate(title:"Card #3",caseNumber:3,description:"The third card originally from Second phase on the first position",phaseDomainId:phase2.domainId,user:user1) + + cardEventCreate1.beforeInsert() + cardEventCreate1.save() + cardEventCreate1.process() + + cardEventCreate2.beforeInsert() + cardEventCreate2.save() + cardEventCreate2.process() + + cardEventCreate3.beforeInsert() + cardEventCreate3.save() + cardEventCreate3.process() + + card1onPhase1 = cardEventCreate1.card + card2onPhase1 = cardEventCreate2.card + card3onPhase2 = cardEventCreate3.card + + // Assertions to validate the mock setup + + board.phases.each { + println it + it.cards.each { + println " $it" + } + } + + assertEquals 1, board.id + assertEquals 3, board.phases.size() + assertEquals 1, phase1.id + assertEquals 2, phase1.cards.size() + assertEquals 2, phase2.id + assertEquals 1, phase2.cards.size() + assertEquals 3, phase3.id + assertEquals 1, card1onPhase1.id + assertEquals 2, card2onPhase1.id + assertEquals 3, card3onPhase2.id + + mockDomain(PhaseEventMove) + } + + protected void tearDown() { + super.tearDown() + } + + void testLegalMoveOfFirstPhaseToNextIndex() { + + assertEquals 0, phase1.board.phases.indexOf(phase1) + + def pem = new PhaseEventMove( phase: phase1, phasePos: 2 ,user: user2) + + pem.beforeInsert() + pem.save() + pem.process() + + assertEquals 2, phase1.board.phases.indexOf(phase1) + + + } +} \ No newline at end of file diff --git a/qanban-domain-plugin/test/unit/se/qbranch/qanban/PhaseEventTests.groovy b/qanban-domain-plugin/test/unit/se/qbranch/qanban/PhaseEventTests.groovy new file mode 100644 index 0000000..fbe0632 --- /dev/null +++ b/qanban-domain-plugin/test/unit/se/qbranch/qanban/PhaseEventTests.groovy @@ -0,0 +1,33 @@ +/* + * Copyright 2009 Qbranch AB + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package se.qbranch.qanban + +import grails.test.* + +class PhaseEventTests extends GrailsUnitTestCase { + protected void setUp() { + super.setUp() + } + + protected void tearDown() { + super.tearDown() + } + + void testSomething() { + + } +} diff --git a/qanban-domain-plugin/test/unit/se/qbranch/qanban/PhaseEventUpdateTests.groovy b/qanban-domain-plugin/test/unit/se/qbranch/qanban/PhaseEventUpdateTests.groovy new file mode 100644 index 0000000..711aa10 --- /dev/null +++ b/qanban-domain-plugin/test/unit/se/qbranch/qanban/PhaseEventUpdateTests.groovy @@ -0,0 +1,134 @@ +/* + * Copyright 2009 Qbranch AB + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package se.qbranch.qanban + +import grails.test.* + +class PhaseEventUpdateTests extends GrailsUnitTestCase { + + def user1 + def user2 + + def board + + def phase1 + def phase2 + def phase3 + + def card1onPhase1 + def card2onPhase1 + def card3onPhase2 + + + protected void setUp() { + super.setUp() + + // User mock + + user1 = new User(username: "opsmrkr01", userRealName: "Mr. Krister") + user2 = new User(username: "opsshba01", userRealName: "Shean Banan") + + mockDomain(User,[user1,user2]) + + + // Board mock + + board = new Board() + mockDomain(Board,[board]) + + + // Phase / PhaseEventCreate mock + + mockDomain(PhaseEventCreate) + mockDomain(Phase) + + def phaseEventCreate1 = new PhaseEventCreate(title: "First phase", cardLimit: 5, phasePos: 0, user: user1, board: board) + def phaseEventCreate2 = new PhaseEventCreate(title: "Second phase", cardLimit: 10, phasePos: 1, user: user1 , board: board) + def phaseEventCreate3 = new PhaseEventCreate(title: "Third phase", cardLimit: 0, user: user1, phasePos: 2, board: board) + + phaseEventCreate1.beforeInsert() + phaseEventCreate1.save() + phaseEventCreate1.process() + + phaseEventCreate2.beforeInsert() + phaseEventCreate2.save() + phaseEventCreate2.process() + + phaseEventCreate3.beforeInsert() + phaseEventCreate3.save() + phaseEventCreate3.process() + + phase1 = phaseEventCreate1.phase + phase2 = phaseEventCreate2.phase + phase3 = phaseEventCreate3.phase + + assertEquals phase1, Phase.findByDomainId(phase1.domainId) + + // Card / CardEventCreate mock + + mockDomain(CardEventCreate) + mockDomain(Card) + + def cardEventCreate1 = new CardEventCreate(title:"Card #1",caseNumber:1,description:"The first card originally from First phase on the first position",phaseDomainId:phase1.domainId,user:user1) + def cardEventCreate2 = new CardEventCreate(title:"Card #2",caseNumber:2,description:"The second card originally from First phase on the second position",phaseDomainId:phase1.domainId,user:user1) + def cardEventCreate3 = new CardEventCreate(title:"Card #3",caseNumber:3,description:"The third card originally from Second phase on the first position",phaseDomainId:phase2.domainId,user:user1) + + cardEventCreate1.beforeInsert() + cardEventCreate1.save() + cardEventCreate1.process() + + cardEventCreate2.beforeInsert() + cardEventCreate2.save() + cardEventCreate2.process() + + cardEventCreate3.beforeInsert() + cardEventCreate3.save() + cardEventCreate3.process() + + card1onPhase1 = cardEventCreate1.card + card2onPhase1 = cardEventCreate2.card + card3onPhase2 = cardEventCreate3.card + + // Assertions to validate the mock setup + + board.phases.each { + println it + it.cards.each { + println " $it" + } + } + + assertEquals 1, board.id + assertEquals 3, board.phases.size() + assertEquals 1, phase1.id + assertEquals 2, phase1.cards.size() + assertEquals 2, phase2.id + assertEquals 1, phase2.cards.size() + assertEquals 3, phase3.id + assertEquals 1, card1onPhase1.id + assertEquals 2, card2onPhase1.id + assertEquals 3, card3onPhase2.id + } + + protected void tearDown() { + super.tearDown() + } + + void testSomething() { + + } +} diff --git a/qanban-domain-plugin/test/unit/se/qbranch/qanban/PhaseTests.groovy b/qanban-domain-plugin/test/unit/se/qbranch/qanban/PhaseTests.groovy new file mode 100644 index 0000000..9e52e27 --- /dev/null +++ b/qanban-domain-plugin/test/unit/se/qbranch/qanban/PhaseTests.groovy @@ -0,0 +1,63 @@ +/* + * Copyright 2009 Qbranch AB + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package se.qbranch.qanban + +import grails.test.* + +class PhaseTests extends GrailsUnitTestCase { + protected void setUp() { + super.setUp() + mockDomain(Board, [ new Board(domainId: "bdid")]) + mockDomain(Phase) + } + + protected void tearDown() { + super.tearDown() + } + + void testCreatePhase() { + + def phase = new Phase(title: "testPhase") + assertEquals "testPhase", phase.title + + def notAllowedTitlePhase = new Phase(title: "") + assertFalse 'validate should have failed', notAllowedTitlePhase.validate() + + } + + void testPhaseWithCard() { + mockDomain(Card) + + Card card = new Card(description: "myCard") + Phase phase = new Phase(title: "myPhase") + + phase.addToCards(card) + + assertEquals 1, phase.cards.size() + + } + void testCreatingAPhaseWithLiteralCardLimit(){ + + Phase phase = new Phase(title: "Title", domainId: "did", cardLimit: "qwe", board: Board.get(1)) + phase.validate() + assertTrue "There should be errors", phase.hasErrors() + phase.errors.getAllErrors().each{ + println it + } + + } +} diff --git a/qanban-domain-plugin/test/unit/se/qbranch/qanban/UserEventCreateTests.groovy b/qanban-domain-plugin/test/unit/se/qbranch/qanban/UserEventCreateTests.groovy new file mode 100644 index 0000000..28311f2 --- /dev/null +++ b/qanban-domain-plugin/test/unit/se/qbranch/qanban/UserEventCreateTests.groovy @@ -0,0 +1,138 @@ +package se.qbranch.qanban + +import grails.test.* +import org.grails.plugins.springsecurity.service.AuthenticateService + +class UserEventCreateTests extends GrailsUnitTestCase { + + def authMock + + protected void setUp() { + super.setUp() + mockDomain(User) + mockDomain(Role) + mockDomain(UserEventCreate) + + authMock = mockFor(AuthenticateService) + authMock.demand.static.encodePassword(1..2) { pass -> pass } + + + } + + protected void tearDown() { + super.tearDown() + } + + void testCreatingAUser() { + assertEquals 0, User.list().size() + def username = "opsmrkr01" + def userRealname = "mr. Krister" + def email = "mr.krister@mail.com" + def passwd ="pass" + def event = new UserEventCreate(username: username, userRealName: userRealname, email: email, enabled: true, passwd: passwd, passwdRepeat: passwd) + event.authenticateService = authMock.createMock() + + event.beforeInsert() + if( event.save() ){ + event.process() + } + + def user = event.user + assertFalse "There should not be any errors", event.hasErrors() + assertEquals event.username, user.username + assertEquals event.domainId, user.domainId + assertNotNull "The user should have a id", user.id + assertEquals 1, User.list().size() + } + + void testCreatingAUserFromAUserObj(){ + assertEquals 0, User.list().size() + + def user = new User(username: "opsmrkr01",userRealName: "Mister Krister",email:"mr.kr@gmail.com",enabled: true,passwd: 'pass',passwdRepeat: 'pass') + def event = new UserEventCreate(user: user) + event.authenticateService = authMock.createMock() + + event.populateFromUser() + + assertEquals user.username, event.username + assertEquals user.userRealName, event.userRealName + assertEquals user.email, event.email + assertEquals user.enabled, event.enabled + + event.beforeInsert() + if( event.save() ) { + event.process() + } + + def userAfter = event.user + assertFalse "There should not be any errors", event.hasErrors() + assertEquals event.username, userAfter.username + assertEquals event.domainId, userAfter.domainId + assertNotNull "The user should have a id", userAfter.id + assertEquals 1, User.list().size() + } + + void testCreatingAUserWithPass(){ + def initNoOfUsers = User.list().size() + def user = new User(username: "opsmrkr01",userRealName: "Mister Krister",email:"mr.kr@gmail.com",enabled: true,passwd:"pass1") + def event = new UserEventCreate(user:user) + event.authenticateService = authMock.createMock() + + event.populateFromUser() + event.passwdRepeat = "pass1" + + event.beforeInsert() + + if(event.save()){ + event.process() + } + + def userAfter = event.user + assertFalse "There should not be any errors", event.hasErrors() + assertEquals event.username, userAfter.username + assertEquals event.domainId, userAfter.domainId + assertNotNull "The user should have a id", userAfter.id + assertEquals 1, User.list().size() + + } + + void testCreateWithInconsistentPasswords(){ + def initNoOfUsers = User.list().size() + def user = new User(username: "opsmrkr01",userRealName: "Mister Krister",email:"mr.kr@gmail.com",enabled: true,passwd:"pass1") + def event = new UserEventCreate(user:user) + event.authenticateService = authMock.createMock() + + event.populateFromUser() + event.passwdRepeat = "pass2" + + event.beforeInsert() + + if(event.save()){ + event.process() + } + + def userAfter = event.user + assertEquals 1 , event.errors.allErrors.size() + assertNull "The user should not have a id", userAfter.id + assertEquals initNoOfUsers, User.list().size() + } + + void testCreateWithoutPasswords(){ + def initNoOfUsers = User.list().size() + def user = new User(username: "opsmrkr01",userRealName: "Mister Krister",email:"mr.kr@gmail.com",enabled: true) + def event = new UserEventCreate(user:user) + event.authenticateService = authMock.createMock() + event.populateFromUser() + + event.beforeInsert() + + if(event.save()){ + event.process() + } + + def userAfter = event.user + assertEquals 1 , event.errors.allErrors.size() + assertNull "The user should not have a id", userAfter.id + assertEquals initNoOfUsers, User.list().size() + } +} diff --git a/qanban-domain-plugin/web-app/WEB-INF/applicationContext.xml b/qanban-domain-plugin/web-app/WEB-INF/applicationContext.xml new file mode 100644 index 0000000..038251b --- /dev/null +++ b/qanban-domain-plugin/web-app/WEB-INF/applicationContext.xml @@ -0,0 +1,47 @@ + + + + + Grails application factory bean + + + + + + A bean that manages Grails plugins + + + + + + + + + + + + + + + + + + + + + + + classpath*:**/grails-app/**/*.groovy + + + + + + utf-8 + + + \ No newline at end of file diff --git a/qanban-domain-plugin/web-app/WEB-INF/sitemesh.xml b/qanban-domain-plugin/web-app/WEB-INF/sitemesh.xml new file mode 100644 index 0000000..95943f1 --- /dev/null +++ b/qanban-domain-plugin/web-app/WEB-INF/sitemesh.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/qanban-domain-plugin/web-app/WEB-INF/tld/c.tld b/qanban-domain-plugin/web-app/WEB-INF/tld/c.tld new file mode 100644 index 0000000..22698c9 --- /dev/null +++ b/qanban-domain-plugin/web-app/WEB-INF/tld/c.tld @@ -0,0 +1,563 @@ + + + + + JSTL 1.1 core library + JSTL core + 1.1 + c + http://java.sun.com/jsp/jstl/core + + + + Provides core validation features for JSTL tags. + + + org.apache.taglibs.standard.tlv.JstlCoreTLV + + + + + + Catches any Throwable that occurs in its body and optionally + exposes it. + + catch + org.apache.taglibs.standard.tag.common.core.CatchTag + JSP + + +Name of the exported scoped variable for the +exception thrown from a nested action. The type of the +scoped variable is the type of the exception thrown. + + var + false + false + + + + + + Simple conditional tag that establishes a context for + mutually exclusive conditional operations, marked by + <when> and <otherwise> + + choose + org.apache.taglibs.standard.tag.common.core.ChooseTag + JSP + + + + + Simple conditional tag, which evalutes its body if the + supplied condition is true and optionally exposes a Boolean + scripting variable representing the evaluation of this condition + + if + org.apache.taglibs.standard.tag.rt.core.IfTag + JSP + + +The test condition that determines whether or +not the body content should be processed. + + test + true + true + boolean + + + +Name of the exported scoped variable for the +resulting value of the test condition. The type +of the scoped variable is Boolean. + + var + false + false + + + +Scope for var. + + scope + false + false + + + + + + Retrieves an absolute or relative URL and exposes its contents + to either the page, a String in 'var', or a Reader in 'varReader'. + + import + org.apache.taglibs.standard.tag.rt.core.ImportTag + org.apache.taglibs.standard.tei.ImportTEI + JSP + + +The URL of the resource to import. + + url + true + true + + + +Name of the exported scoped variable for the +resource's content. The type of the scoped +variable is String. + + var + false + false + + + +Scope for var. + + scope + false + false + + + +Name of the exported scoped variable for the +resource's content. The type of the scoped +variable is Reader. + + varReader + false + false + + + +Name of the context when accessing a relative +URL resource that belongs to a foreign +context. + + context + false + true + + + +Character encoding of the content at the input +resource. + + charEncoding + false + true + + + + + + The basic iteration tag, accepting many different + collection types and supporting subsetting and other + functionality + + forEach + org.apache.taglibs.standard.tag.rt.core.ForEachTag + org.apache.taglibs.standard.tei.ForEachTEI + JSP + + +Collection of items to iterate over. + + items + false + true + java.lang.Object + + + +If items specified: +Iteration begins at the item located at the +specified index. First item of the collection has +index 0. +If items not specified: +Iteration begins with index set at the value +specified. + + begin + false + true + int + + + +If items specified: +Iteration ends at the item located at the +specified index (inclusive). +If items not specified: +Iteration ends when index reaches the value +specified. + + end + false + true + int + + + +Iteration will only process every step items of +the collection, starting with the first one. + + step + false + true + int + + + +Name of the exported scoped variable for the +current item of the iteration. This scoped +variable has nested visibility. Its type depends +on the object of the underlying collection. + + var + false + false + + + +Name of the exported scoped variable for the +status of the iteration. Object exported is of type +javax.servlet.jsp.jstl.core.LoopTagStatus. This scoped variable has nested +visibility. + + varStatus + false + false + + + + + + Iterates over tokens, separated by the supplied delimeters + + forTokens + org.apache.taglibs.standard.tag.rt.core.ForTokensTag + JSP + + +String of tokens to iterate over. + + items + true + true + java.lang.String + + + +The set of delimiters (the characters that +separate the tokens in the string). + + delims + true + true + java.lang.String + + + +Iteration begins at the token located at the +specified index. First token has index 0. + + begin + false + true + int + + + +Iteration ends at the token located at the +specified index (inclusive). + + end + false + true + int + + + +Iteration will only process every step tokens +of the string, starting with the first one. + + step + false + true + int + + + +Name of the exported scoped variable for the +current item of the iteration. This scoped +variable has nested visibility. + + var + false + false + + + +Name of the exported scoped variable for the +status of the iteration. Object exported is of +type +javax.servlet.jsp.jstl.core.LoopTag +Status. This scoped variable has nested +visibility. + + varStatus + false + false + + + + + + Like <%= ... >, but for expressions. + + out + org.apache.taglibs.standard.tag.rt.core.OutTag + JSP + + +Expression to be evaluated. + + value + true + true + + + +Default value if the resulting value is null. + + default + false + true + + + +Determines whether characters <,>,&,'," in the +resulting string should be converted to their +corresponding character entity codes. Default value is +true. + + escapeXml + false + true + + + + + + + Subtag of <choose> that follows <when> tags + and runs only if all of the prior conditions evaluated to + 'false' + + otherwise + org.apache.taglibs.standard.tag.common.core.OtherwiseTag + JSP + + + + + Adds a parameter to a containing 'import' tag's URL. + + param + org.apache.taglibs.standard.tag.rt.core.ParamTag + JSP + + +Name of the query string parameter. + + name + true + true + + + +Value of the parameter. + + value + false + true + + + + + + Redirects to a new URL. + + redirect + org.apache.taglibs.standard.tag.rt.core.RedirectTag + JSP + + +The URL of the resource to redirect to. + + url + false + true + + + +Name of the context when redirecting to a relative URL +resource that belongs to a foreign context. + + context + false + true + + + + + + Removes a scoped variable (from a particular scope, if specified). + + remove + org.apache.taglibs.standard.tag.common.core.RemoveTag + empty + + +Name of the scoped variable to be removed. + + var + true + false + + + +Scope for var. + + scope + false + false + + + + + + Sets the result of an expression evaluation in a 'scope' + + set + org.apache.taglibs.standard.tag.rt.core.SetTag + JSP + + +Name of the exported scoped variable to hold the value +specified in the action. The type of the scoped variable is +whatever type the value expression evaluates to. + + var + false + false + + + +Expression to be evaluated. + + value + false + true + + + +Target object whose property will be set. Must evaluate to +a JavaBeans object with setter property property, or to a +java.util.Map object. + + target + false + true + + + +Name of the property to be set in the target object. + + property + false + true + + + +Scope for var. + + scope + false + false + + + + + + Creates a URL with optional query parameters. + + url + org.apache.taglibs.standard.tag.rt.core.UrlTag + JSP + + +Name of the exported scoped variable for the +processed url. The type of the scoped variable is +String. + + var + false + false + + + +Scope for var. + + scope + false + false + + + +URL to be processed. + + value + false + true + + + +Name of the context when specifying a relative URL +resource that belongs to a foreign context. + + context + false + true + + + + + + Subtag of <choose> that includes its body if its + condition evalutes to 'true' + + when + org.apache.taglibs.standard.tag.rt.core.WhenTag + JSP + + +The test condition that determines whether or not the +body content should be processed. + + test + true + true + boolean + + + + diff --git a/qanban-domain-plugin/web-app/WEB-INF/tld/fmt.tld b/qanban-domain-plugin/web-app/WEB-INF/tld/fmt.tld new file mode 100644 index 0000000..3b9a54a --- /dev/null +++ b/qanban-domain-plugin/web-app/WEB-INF/tld/fmt.tld @@ -0,0 +1,671 @@ + + + + + JSTL 1.1 i18n-capable formatting library + JSTL fmt + 1.1 + fmt + http://java.sun.com/jsp/jstl/fmt + + + + Provides core validation features for JSTL tags. + + + org.apache.taglibs.standard.tlv.JstlFmtTLV + + + + + + Sets the request character encoding + + requestEncoding + org.apache.taglibs.standard.tag.rt.fmt.RequestEncodingTag + empty + + +Name of character encoding to be applied when +decoding request parameters. + + value + false + true + + + + + + Stores the given locale in the locale configuration variable + + setLocale + org.apache.taglibs.standard.tag.rt.fmt.SetLocaleTag + empty + + +A String value is interpreted as the +printable representation of a locale, which +must contain a two-letter (lower-case) +language code (as defined by ISO-639), +and may contain a two-letter (upper-case) +country code (as defined by ISO-3166). +Language and country codes must be +separated by hyphen (-) or underscore +(_). + + value + true + true + + + +Vendor- or browser-specific variant. +See the java.util.Locale javadocs for +more information on variants. + + variant + false + true + + + +Scope of the locale configuration variable. + + scope + false + false + + + + + + Specifies the time zone for any time formatting or parsing actions + nested in its body + + timeZone + org.apache.taglibs.standard.tag.rt.fmt.TimeZoneTag + JSP + + +The time zone. A String value is interpreted as +a time zone ID. This may be one of the time zone +IDs supported by the Java platform (such as +"America/Los_Angeles") or a custom time zone +ID (such as "GMT-8"). See +java.util.TimeZone for more information on +supported time zone formats. + + value + true + true + + + + + + Stores the given time zone in the time zone configuration variable + + setTimeZone + org.apache.taglibs.standard.tag.rt.fmt.SetTimeZoneTag + empty + + +The time zone. A String value is interpreted as +a time zone ID. This may be one of the time zone +IDs supported by the Java platform (such as +"America/Los_Angeles") or a custom time zone +ID (such as "GMT-8"). See java.util.TimeZone for +more information on supported time zone +formats. + + value + true + true + + + +Name of the exported scoped variable which +stores the time zone of type +java.util.TimeZone. + + var + false + false + + + +Scope of var or the time zone configuration +variable. + + scope + false + false + + + + + + Loads a resource bundle to be used by its tag body + + bundle + org.apache.taglibs.standard.tag.rt.fmt.BundleTag + JSP + + +Resource bundle base name. This is the bundle's +fully-qualified resource name, which has the same +form as a fully-qualified class name, that is, it uses +"." as the package component separator and does not +have any file type (such as ".class" or ".properties") +suffix. + + basename + true + true + + + +Prefix to be prepended to the value of the message +key of any nested <fmt:message> action. + + prefix + false + true + + + + + + Loads a resource bundle and stores it in the named scoped variable or + the bundle configuration variable + + setBundle + org.apache.taglibs.standard.tag.rt.fmt.SetBundleTag + empty + + +Resource bundle base name. This is the bundle's +fully-qualified resource name, which has the same +form as a fully-qualified class name, that is, it uses +"." as the package component separator and does not +have any file type (such as ".class" or ".properties") +suffix. + + basename + true + true + + + +Name of the exported scoped variable which stores +the i18n localization context of type +javax.servlet.jsp.jstl.fmt.LocalizationC +ontext. + + var + false + false + + + +Scope of var or the localization context +configuration variable. + + scope + false + false + + + + + + Maps key to localized message and performs parametric replacement + + message + org.apache.taglibs.standard.tag.rt.fmt.MessageTag + JSP + + +Message key to be looked up. + + key + false + true + + + +Localization context in whose resource +bundle the message key is looked up. + + bundle + false + true + + + +Name of the exported scoped variable +which stores the localized message. + + var + false + false + + + +Scope of var. + + scope + false + false + + + + + + Supplies an argument for parametric replacement to a containing + <message> tag + + param + org.apache.taglibs.standard.tag.rt.fmt.ParamTag + JSP + + +Argument used for parametric replacement. + + value + false + true + + + + + + Formats a numeric value as a number, currency, or percentage + + formatNumber + org.apache.taglibs.standard.tag.rt.fmt.FormatNumberTag + JSP + + +Numeric value to be formatted. + + value + false + true + + + +Specifies whether the value is to be +formatted as number, currency, or +percentage. + + type + false + true + + + +Custom formatting pattern. + + pattern + false + true + + + +ISO 4217 currency code. Applied only +when formatting currencies (i.e. if type is +equal to "currency"); ignored otherwise. + + currencyCode + false + true + + + +Currency symbol. Applied only when +formatting currencies (i.e. if type is equal +to "currency"); ignored otherwise. + + currencySymbol + false + true + + + +Specifies whether the formatted output +will contain any grouping separators. + + groupingUsed + false + true + + + +Maximum number of digits in the integer +portion of the formatted output. + + maxIntegerDigits + false + true + + + +Minimum number of digits in the integer +portion of the formatted output. + + minIntegerDigits + false + true + + + +Maximum number of digits in the +fractional portion of the formatted output. + + maxFractionDigits + false + true + + + +Minimum number of digits in the +fractional portion of the formatted output. + + minFractionDigits + false + true + + + +Name of the exported scoped variable +which stores the formatted result as a +String. + + var + false + false + + + +Scope of var. + + scope + false + false + + + + + + Parses the string representation of a number, currency, or percentage + + parseNumber + org.apache.taglibs.standard.tag.rt.fmt.ParseNumberTag + JSP + + +String to be parsed. + + value + false + true + + + +Specifies whether the string in the value +attribute should be parsed as a number, +currency, or percentage. + + type + false + true + + + +Custom formatting pattern that determines +how the string in the value attribute is to be +parsed. + + pattern + false + true + + + +Locale whose default formatting pattern (for +numbers, currencies, or percentages, +respectively) is to be used during the parse +operation, or to which the pattern specified +via the pattern attribute (if present) is +applied. + + parseLocale + false + true + + + +Specifies whether just the integer portion of +the given value should be parsed. + + integerOnly + false + true + + + +Name of the exported scoped variable which +stores the parsed result (of type +java.lang.Number). + + var + false + false + + + +Scope of var. + + scope + false + false + + + + + + Formats a date and/or time using the supplied styles and pattern + + formatDate + org.apache.taglibs.standard.tag.rt.fmt.FormatDateTag + empty + + +Date and/or time to be formatted. + + value + true + true + + + +Specifies whether the time, the date, or both +the time and date components of the given +date are to be formatted. + + type + false + true + + + +Predefined formatting style for dates. Follows +the semantics defined in class +java.text.DateFormat. Applied only +when formatting a date or both a date and +time (i.e. if type is missing or is equal to +"date" or "both"); ignored otherwise. + + dateStyle + false + true + + + +Predefined formatting style for times. Follows +the semantics defined in class +java.text.DateFormat. Applied only +when formatting a time or both a date and +time (i.e. if type is equal to "time" or "both"); +ignored otherwise. + + timeStyle + false + true + + + +Custom formatting style for dates and times. + + pattern + false + true + + + +Time zone in which to represent the formatted +time. + + timeZone + false + true + + + +Name of the exported scoped variable which +stores the formatted result as a String. + + var + false + false + + + +Scope of var. + + scope + false + false + + + + + + Parses the string representation of a date and/or time + + parseDate + org.apache.taglibs.standard.tag.rt.fmt.ParseDateTag + JSP + + +Date string to be parsed. + + value + false + true + + + +Specifies whether the date string in the +value attribute is supposed to contain a +time, a date, or both. + + type + false + true + + + +Predefined formatting style for days +which determines how the date +component of the date string is to be +parsed. Applied only when formatting a +date or both a date and time (i.e. if type +is missing or is equal to "date" or "both"); +ignored otherwise. + + dateStyle + false + true + + + +Predefined formatting styles for times +which determines how the time +component in the date string is to be +parsed. Applied only when formatting a +time or both a date and time (i.e. if type +is equal to "time" or "both"); ignored +otherwise. + + timeStyle + false + true + + + +Custom formatting pattern which +determines how the date string is to be +parsed. + + pattern + false + true + + + +Time zone in which to interpret any time +information in the date string. + + timeZone + false + true + + + +Locale whose predefined formatting styles +for dates and times are to be used during +the parse operation, or to which the +pattern specified via the pattern +attribute (if present) is applied. + + parseLocale + false + true + + + +Name of the exported scoped variable in +which the parsing result (of type +java.util.Date) is stored. + + var + false + false + + + +Scope of var. + + scope + false + false + + + + diff --git a/qanban-domain-plugin/web-app/WEB-INF/tld/grails.tld b/qanban-domain-plugin/web-app/WEB-INF/tld/grails.tld new file mode 100644 index 0000000..d3acc1c --- /dev/null +++ b/qanban-domain-plugin/web-app/WEB-INF/tld/grails.tld @@ -0,0 +1,551 @@ + + + The Grails (Groovy on Rails) custom tag library + 0.2 + grails + http://grails.codehaus.org/tags + + + + link + org.codehaus.groovy.grails.web.taglib.jsp.JspLinkTag + JSP + + action + false + true + + + controller + false + true + + + id + false + true + + + url + false + true + + + params + false + true + + true + + + form + org.codehaus.groovy.grails.web.taglib.jsp.JspFormTag + JSP + + action + false + true + + + controller + false + true + + + id + false + true + + + url + false + true + + + method + true + true + + true + + + select + org.codehaus.groovy.grails.web.taglib.jsp.JspSelectTag + JSP + + name + true + true + + + value + false + true + + + optionKey + false + true + + + optionValue + false + true + + true + + + datePicker + org.codehaus.groovy.grails.web.taglib.jsp.JspDatePickerTag + empty + + name + true + true + + + value + false + true + + + precision + false + true + + false + + + currencySelect + org.codehaus.groovy.grails.web.taglib.jsp.JspCurrencySelectTag + empty + + name + true + true + + + value + false + true + + true + + + localeSelect + org.codehaus.groovy.grails.web.taglib.jsp.JspLocaleSelectTag + empty + + name + true + true + + + value + false + true + + true + + + timeZoneSelect + org.codehaus.groovy.grails.web.taglib.jsp.JspTimeZoneSelectTag + empty + + name + true + true + + + value + false + true + + true + + + checkBox + org.codehaus.groovy.grails.web.taglib.jsp.JspCheckboxTag + empty + + name + true + true + + + value + true + true + + true + + + hasErrors + org.codehaus.groovy.grails.web.taglib.jsp.JspHasErrorsTag + JSP + + model + false + true + + + bean + false + true + + + field + false + true + + false + + + eachError + org.codehaus.groovy.grails.web.taglib.jsp.JspEachErrorTag + JSP + + model + false + true + + + bean + false + true + + + field + false + true + + false + + + renderErrors + org.codehaus.groovy.grails.web.taglib.jsp.JspEachErrorTag + JSP + + model + false + true + + + bean + false + true + + + field + false + true + + + as + true + true + + false + + + message + org.codehaus.groovy.grails.web.taglib.jsp.JspMessageTag + JSP + + code + false + true + + + error + false + true + + + default + false + true + + false + + + remoteFunction + org.codehaus.groovy.grails.web.taglib.jsp.JspRemoteFunctionTag + empty + + before + false + true + + + after + false + true + + + action + false + true + + + controller + false + true + + + id + false + true + + + url + false + true + + + params + false + true + + + asynchronous + false + true + + + method + false + true + + + update + false + true + + + onSuccess + false + true + + + onFailure + false + true + + + onComplete + false + true + + + onLoading + false + true + + + onLoaded + false + true + + + onInteractive + false + true + + true + + + remoteLink + org.codehaus.groovy.grails.web.taglib.jsp.JspRemoteLinkTag + JSP + + before + false + true + + + after + false + true + + + action + false + true + + + controller + false + true + + + id + false + true + + + url + false + true + + + params + false + true + + + asynchronous + false + true + + + method + false + true + + + update + false + true + + + onSuccess + false + true + + + onFailure + false + true + + + onComplete + false + true + + + onLoading + false + true + + + onLoaded + false + true + + + onInteractive + false + true + + true + + + formRemote + org.codehaus.groovy.grails.web.taglib.jsp.JspFormRemoteTag + JSP + + before + false + true + + + after + false + true + + + action + false + true + + + controller + false + true + + + id + false + true + + + url + false + true + + + params + false + true + + + asynchronous + false + true + + + method + false + true + + + update + false + true + + + onSuccess + false + true + + + onFailure + false + true + + + onComplete + false + true + + + onLoading + false + true + + + onLoaded + false + true + + + onInteractive + false + true + + true + + + invokeTag + org.codehaus.groovy.grails.web.taglib.jsp.JspInvokeGrailsTagLibTag + JSP + + it + java.lang.Object + true + NESTED + + + name + true + true + + true + + + diff --git a/qanban-domain-plugin/web-app/WEB-INF/tld/spring.tld b/qanban-domain-plugin/web-app/WEB-INF/tld/spring.tld new file mode 100644 index 0000000..1bc7091 --- /dev/null +++ b/qanban-domain-plugin/web-app/WEB-INF/tld/spring.tld @@ -0,0 +1,311 @@ + + + + + + 1.1.1 + + 1.2 + + Spring + + http://www.springframework.org/tags + + Spring Framework JSP Tag Library. Authors: Rod Johnson, Juergen Hoeller + + + + + htmlEscape + org.springframework.web.servlet.tags.HtmlEscapeTag + JSP + + + Sets default HTML escape value for the current page. + Overrides a "defaultHtmlEscape" context-param in web.xml, if any. + + + + defaultHtmlEscape + true + true + + + + + + + + escapeBody + org.springframework.web.servlet.tags.EscapeBodyTag + JSP + + + Escapes its enclosed body content, applying HTML escaping and/or JavaScript escaping. + The HTML escaping flag participates in a page-wide or application-wide setting + (i.e. by HtmlEscapeTag or a "defaultHtmlEscape" context-param in web.xml). + + + + htmlEscape + false + true + + + + javaScriptEscape + false + true + + + + + + + + message + org.springframework.web.servlet.tags.MessageTag + JSP + + + Retrieves the message with the given code, or text if code isn't resolvable. + The HTML escaping flag participates in a page-wide or application-wide setting + (i.e. by HtmlEscapeTag or a "defaultHtmlEscape" context-param in web.xml). + + + + code + false + true + + + + arguments + false + true + + + + text + false + true + + + + var + false + true + + + + scope + false + true + + + + htmlEscape + false + true + + + + javaScriptEscape + false + true + + + + + + + + theme + org.springframework.web.servlet.tags.ThemeTag + JSP + + + Retrieves the theme message with the given code, or text if code isn't resolvable. + The HTML escaping flag participates in a page-wide or application-wide setting + (i.e. by HtmlEscapeTag or a "defaultHtmlEscape" context-param in web.xml). + + + + code + false + true + + + + arguments + false + true + + + + text + false + true + + + + var + false + true + + + + scope + false + true + + + + htmlEscape + false + true + + + + javaScriptEscape + false + true + + + + + + + + hasBindErrors + org.springframework.web.servlet.tags.BindErrorsTag + JSP + + + Provides Errors instance in case of bind errors. + The HTML escaping flag participates in a page-wide or application-wide setting + (i.e. by HtmlEscapeTag or a "defaultHtmlEscape" context-param in web.xml). + + + + errors + org.springframework.validation.Errors + + + + name + true + true + + + + htmlEscape + false + true + + + + + + + + nestedPath + org.springframework.web.servlet.tags.NestedPathTag + JSP + + + Sets a nested path to be used by the bind tag's path. + + + + nestedPath + java.lang.String + + + + path + true + true + + + + + + + + bind + org.springframework.web.servlet.tags.BindTag + JSP + + + Provides BindStatus object for the given bind path. + The HTML escaping flag participates in a page-wide or application-wide setting + (i.e. by HtmlEscapeTag or a "defaultHtmlEscape" context-param in web.xml). + + + + status + org.springframework.web.servlet.support.BindStatus + + + + path + true + true + + + + ignoreNestedPath + false + true + + + + htmlEscape + false + true + + + + + + + + transform + org.springframework.web.servlet.tags.TransformTag + JSP + + + Provides transformation of variables to Strings, using an appropriate + custom PropertyEditor from BindTag (can only be used inside BindTag). + The HTML escaping flag participates in a page-wide or application-wide setting + (i.e. by HtmlEscapeTag or a "defaultHtmlEscape" context-param in web.xml). + + + + value + true + true + + + + var + false + true + + + + scope + false + true + + + + htmlEscape + false + true + + + + +