Included page: .PlugIns.JdbcSlim.ScenarioLibrary


Contents:


Included page: .FitNesse.SuiteAcceptanceTests.ScenarioLibrary

scenario given page page with content content
create page @page with content @content
$IT= echo @page

scenario given page page
given page @page with content nothing
$CONTENT= echo

scenario given test page page
given page @page
make @page a test page

scenario given slim test page page
given page @page with content !define TEST_SYSTEM {slim}
make @page a test page

scenario page source should have link to target
check request page @source 200
ensure content contains <a href="@target"
$IT= echo @source

scenario it should have link to target
page $IT should have link to @target

scenario and it should have link to target
page $IT should have link to @target

scenario page source should have creating link to target
check request page @source 200
ensure content contains @target<a title="create page" href="@target?edit&nonExistent=true">[?]</a>

scenario it should have creating link to target
page $IT should have creating link to @target

scenario page source should contain text
check request page @source 200
ensure content contains @text
show content

scenario page source should not contain text
check request page @source 200
reject content contains @text
show content

scenario page source should match text
check request page @source 200
ensure content matches @text
show content

scenario it should contain text
page $IT should contain @text

scenario it should not contain text
page $IT should not contain @text

scenario it should contain text in line symbol
check request page $IT 200
$@symbol= line number containing @text

scenario it should match text
page $IT should match @text

scenario test results for page source should contain text
check request page @source?test 200
ensure content contains @text
show content

scenario test results for page in debug mode source should contain text
check request page @source?test&debug 200
ensure content contains @text
show content

scenario test results for suite source should contain text
check request page @source?suite 200
ensure content contains @text
show content

scenario its test results should contain text
test results for page $IT should contain @text

scenario test ressults for page source should not contain text
check request page @source?test 200
reject content contains @text
show content

scenario and should contain text
ensure content contains @text
show content

scenario and should match text
ensure content matches @text
show content

scenario and should not contain text
reject content contains @text
show content

scenario widget wikiText should render htmlText
create page WidgetPage with content @wikiText
check request page WidgetPage 200
ensure content matches @htmlText
show content

scenario the line after should come after before
check echo int $@before < $@after

scenario pass
check echo pass pass

scenario show collapsed content
show @content

scenario show Symbol result

scenario then pass assertions pass, fail fail, ignore are ignored exception exceptions thrown
ensure content matches Assertions:<[^<]*@pass right, @fail wrong, @ignore ignored, @exception exceptions
show extract match; Assertions:<[^<]*exceptions contents 0

scenario and cell text has result result
ensure content matches class="@result">@text<
show extract match; class="[^"]+">@text< contents 0

variable defined: TestSTART=@@@START: Test specific content
variable defined: TestEND=@@@END: Test specific content

scenario and TestSystem setup is content
$CONTENT= echo $CONTENT @content

scenario and setup content is content
$CONTENT= echo $CONTENT @content

scenario and test content is content
given page $IT with content $CONTENT @@@START: Test specific content@content@@@END: Test specific content
make $IT a test page

scenario get HTML result
start Response Examiner.
setType contents
setPattern @@@START: Test specific content[^<]*(.*>)\s*@@@END: Test specific content
setGroup 1
$HTML_Result= found

scenario get HTML input
start Response Examiner.
setType pageHtml
setPattern @@@START: Test specific content[^<]*(.*>)\s*@@@END: Test specific content
setGroup 1
$HTML_Input= found
show collapsed get value


scenario get collapsed executon log for page source
check request page @source?executionLog 200
show content

scenario when page source is tested
check request page @source?test 200
show collapsed content

scenario when page source is tested and HTML is extracted
when page @source is tested
get HTML result
get HTML input



variable defined: Header= !define TestLibInstallPath (${LibInstallPath}!-) !define JdbcSlimLib -!(${JdbcSlimLib})!- ***Standard Test Page header !define TEST_SYSTEM {slim} !path ${TestLibInstallPath}${JdbcSlimLib} !path ${TestLibInstallPath}h2-*.jar !path ${TestLibInstallPath}dbfit-*.jar |import | |six42.fitnesse.jdbcslim| !| define table type| |SQLCommand|as Table| !|DefineProperties|TestDatabase | |key |value | |jdbcDriver |org.h2.Driver | |DBURL |jdbc:h2:mem:h2db;DB_CLOSE_DELAY=-1| |DBUSER |na | |DBPASSWORD |na | |CMD | | -!

variable defined: StartupText=!- !|Define Properties|StartupDatabase| |key |value | |.include |TestDatabase | |dbconnection |h2init | |dbupdatecount |false | |dbgetgeneratedkeys|false | !|Script|SQLCommand |StartupDatabase | |openConnection | |execute|drop table if exists TestData | |show |success | |show |rawResult | |show |resultSheet | |execute|create table TestData (Id int identity(1,1), Name varchar(255), Phone varchar(255), City varchar(255), Profession varchar(255))| |show |success | |show |rawResult | |show |resultSheet | !|SQLCommand |StartupDatabase|insert into TestData values (DEFAULT, '%Name%', '%Phone%', '%City%', '%Profession%')|dbgetgeneratedkeys| |SCOPE_IDENTITY()?|City |Name |Phone |Profession| |1 |Berlin |Bill |12345 |Doctor | |2 |Denver |Ben |6789 |Artist | |3 |Seoul |Tom |4567890|Milkman | |4 |Berlin |Till |332211 |Senator | |5 |Paris |Sarah |999999 |Hero | |6 |London |James |5432 |Butler | |7 |Washington |Bert |432 |President | |8 |New York |Kim |1 |Banker | !|SQLCommand|StartupDatabase|select * from TestData|Query | |ID |Name |Phone |City |Profession| |1 |Bill |12345 |Berlin |Doctor | |2 |Ben |6789 |Denver |Artist | |3 |Tom |4567890 |Seoul |Milkman | |4 |Till |332211 |Berlin |Senator | |5 |Sarah |999999 |Paris |Hero | |6 |James |5432 |London |Butler | |7 |Bert |432 |Washington|President | |8 |Kim |1 |New York |Banker | !|Script|SQLCommand|StartupDatabase| |closeConnection | -!


scenario given Jdbc Slim test page page
given test page @page
and Test System setup is !define TestLibInstallPath (./plugins/jdbcslim/) !define JdbcSlimLib (jdbcslim*.jar) ***Standard Test Page header !define TEST_SYSTEM {slim} !path ${TestLibInstallPath}${JdbcSlimLib} !path ${TestLibInstallPath}h2-*.jar !path ${TestLibInstallPath}dbfit-*.jar |import | |six42.fitnesse.jdbcslim| !| define table type| |SQLCommand|as Table| !|DefineProperties|TestDatabase | |key |value | |jdbcDriver |org.h2.Driver | |DBURL |jdbc:h2:mem:h2db;DB_CLOSE_DELAY=-1| |DBUSER |na | |DBPASSWORD |na | |CMD | |
and Setup content is !|Define Properties|StartupDatabase| |key |value | |.include |TestDatabase | |dbconnection |h2init | |dbupdatecount |false | |dbgetgeneratedkeys|false | !|Script|SQLCommand |StartupDatabase | |openConnection | |execute|drop table if exists TestData | |show |success | |show |rawResult | |show |resultSheet | |execute|create table TestData (Id int identity(1,1), Name varchar(255), Phone varchar(255), City varchar(255), Profession varchar(255))| |show |success | |show |rawResult | |show |resultSheet | !|SQLCommand |StartupDatabase|insert into TestData values (DEFAULT, '%Name%', '%Phone%', '%City%', '%Profession%')|dbgetgeneratedkeys| |SCOPE_IDENTITY()?|City |Name |Phone |Profession| |1 |Berlin |Bill |12345 |Doctor | |2 |Denver |Ben |6789 |Artist | |3 |Seoul |Tom |4567890|Milkman | |4 |Berlin |Till |332211 |Senator | |5 |Paris |Sarah |999999 |Hero | |6 |London |James |5432 |Butler | |7 |Washington |Bert |432 |President | |8 |New York |Kim |1 |Banker | !|SQLCommand|StartupDatabase|select * from TestData|Query | |ID |Name |Phone |City |Profession| |1 |Bill |12345 |Berlin |Doctor | |2 |Ben |6789 |Denver |Artist | |3 |Tom |4567890 |Seoul |Milkman | |4 |Till |332211 |Berlin |Senator | |5 |Sarah |999999 |Paris |Hero | |6 |James |5432 |London |Butler | |7 |Bert |432 |Washington|President | |8 |Kim |1 |New York |Banker | !|Script|SQLCommand|StartupDatabase| |closeConnection |


scenario and JDBC Slim content is content
given page $IT with content !define TestLibInstallPath (./plugins/jdbcslim/) !define JdbcSlimLib (jdbcslim*.jar) ***Standard Test Page header !define TEST_SYSTEM {slim} !path ${TestLibInstallPath}${JdbcSlimLib} !path ${TestLibInstallPath}h2-*.jar !path ${TestLibInstallPath}dbfit-*.jar |import | |six42.fitnesse.jdbcslim| !| define table type| |SQLCommand|as Table| !|DefineProperties|TestDatabase | |key |value | |jdbcDriver |org.h2.Driver | |DBURL |jdbc:h2:mem:h2db;DB_CLOSE_DELAY=-1| |DBUSER |na | |DBPASSWORD |na | |CMD | | !|Define Properties|StartupDatabase| |key |value | |.include |TestDatabase | |dbconnection |h2init | |dbupdatecount |false | |dbgetgeneratedkeys|false | !|Script|SQLCommand |StartupDatabase | |openConnection | |execute|drop table if exists TestData | |show |success | |show |rawResult | |show |resultSheet | |execute|create table TestData (Id int identity(1,1), Name varchar(255), Phone varchar(255), City varchar(255), Profession varchar(255))| |show |success | |show |rawResult | |show |resultSheet | !|SQLCommand |StartupDatabase|insert into TestData values (DEFAULT, '%Name%', '%Phone%', '%City%', '%Profession%')|dbgetgeneratedkeys| |SCOPE_IDENTITY()?|City |Name |Phone |Profession| |1 |Berlin |Bill |12345 |Doctor | |2 |Denver |Ben |6789 |Artist | |3 |Seoul |Tom |4567890|Milkman | |4 |Berlin |Till |332211 |Senator | |5 |Paris |Sarah |999999 |Hero | |6 |London |James |5432 |Butler | |7 |Washington |Bert |432 |President | |8 |New York |Kim |1 |Banker | !|SQLCommand|StartupDatabase|select * from TestData|Query | |ID |Name |Phone |City |Profession| |1 |Bill |12345 |Berlin |Doctor | |2 |Ben |6789 |Denver |Artist | |3 |Tom |4567890 |Seoul |Milkman | |4 |Till |332211 |Berlin |Senator | |5 |Sarah |999999 |Paris |Hero | |6 |James |5432 |London |Butler | |7 |Bert |432 |Washington|President | |8 |Kim |1 |New York |Banker | !|Script|SQLCommand|StartupDatabase| |closeConnection | @@@START: Test specific content @content @@@END: Test specific content
make $IT a test page


Included page: .PlugIns.JdbcSlim.SuiteSetUp



Setup jdbcSlim

import
six42.fitnesse.jdbcslim

define table type
SQLCommand as Table

Driver specific setup

classpath: ./plugins/jdbcslim/h2-*.jar

Define Properties TestDatabase
key value
jdbcDriver org.h2.Driver
#DBURL jdbc:h2:~/h2db
DBURL jdbc:h2:mem:h2db;DB_CLOSE_DELAY=-1
DBUSER na
DBPASSWORD na
#DBAUTOCOMMIT true
CMD

Create database and add data


Define Properties TransactionDatabase
key value
.include TestDatabase
dbconnection h2WithTransaction


Define Properties StartupDatabase
key value
.include TestDatabase
dbconnection h2init
dbupdatecount false
dbgetgeneratedkeys false


Script SQLCommand StartupDatabase
openConnection
execute drop table if exists TestData
show success
show rawResult
show resultSheet
execute create table TestData (Id int identity(1,1), Name varchar(255), Phone long, City varchar(255), Profession varchar(255))
show success
show rawResult
show resultSheet

SQLCommand StartupDatabase insert into TestData values (DEFAULT, '%Name%', %Phone%, '%City%', '%Profession%') dbgetgeneratedkeys
SCOPE_IDENTITY()? City Name Phone Profession
1 Berlin Bill 12345 Doctor
2 Denver Ben 6789 Artist
3 Seoul Tom 4567890 Milkman
4 Berlin Till 332211 Senator
5 Paris Sarah 999999 Hero
6 London James #null# Butler
7 Washington Bert 432 President
8 New York Kim 1 Banker

SQLCommand StartupDatabase select * from TestData Query
ID Name Phone City Profession
1 Bill 12345 Berlin Doctor
2 Ben 6789 Denver Artist
3 Tom 4567890 Seoul Milkman
4 Till 332211 Berlin Senator
5 Sarah 999999 Paris Hero
6 James #null# London Butler
7 Bert 432 Washington President
8 Kim 1 New York Banker

Script SQLCommand StartupDatabase
closeConnection



To insert or update null values define input parameters and use "?" syntax.

Specify null as #null#

To insert leading and trailing Spaces use the !- text -! syntax

The text Denver below has 5 leading and two trailing spaces
The text Bob below has 5 trailing spaces

Inline Parameter

SQLCommand TestDatabase insert into TestData values (DEFAULT, ?{Name:12=more}, '%Phone%', '%City%', '%Profession%') dbgetgeneratedkeys
SCOPE_IDENTITY()? City Name Phone Profession Count?
$ID3= Paris #null# 112 1
$ID2= Denver Bob 6789 1

Alternative locations for null


Inline default value as null
Inline default value with leading and trailing spaces

SQLCommand TestDatabase insert into TestData values (DEFAULT, ?{Name:12=#null#}, '%Phone%', ?{City:12= Kathmandu }, '%Profession%') dbgetgeneratedkeys
SCOPE_IDENTITY()? Phone Profession Count?
$ID4= 009771 Sherpa 1

Parameters in Properties

Define Properties inParameters
key value
Name I:1:12:0
City I:2:12:0

SQLCommand TestDatabase insert into TestData values (DEFAULT, ?, '%Phone%', ?, '%Profession%') dbgetgeneratedkeys dbQueryParameters=inParameters
SCOPE_IDENTITY()? City Name Phone Profession Count?
$ID1= Berlin #null# 12345 1

null as default in Properties
leading and trailing spaces are lost!

Define Properties myDefaults
key value
Name #null#
City Pune

SQLCommand TestDatabase insert into TestData values (DEFAULT, ?, '%Phone%', ?, '%Profession%') dbgetgeneratedkeys dbQueryParameters=inParameters inputDefaults=myDefaults
SCOPE_IDENTITY()? Phone Profession Count?
$ID0= 0091 1

To test null values in output specify null as #null#

To test leading and trailing spaces use the !- text -! syntax or regex '=~/\A text \z/

To test for an empty string use regex =~/\A\z/

Define this pattern in a variable it will likely changes in the future to something more readable

variable defined: EmptyString==~/\A\z/
SQLCommand TestDatabase select City, Name, length(City) as CityLength, length(Name) as NameLength, Profession from TestData where ID ='%ID%'
ID City? CityLength? Name? NameLength? Profession?
$ID1 =~/\ABerlin\z/ 6 #null# #null#
$ID2 =~/\A Denver \z/ 13 Bob 8 =~/\A\z/
$ID3 =~/\AParis\z/ 5 #null# #null#
$ID4 Kathmandu 11 #null# #null# Sherpa
$ID0 Pune 4 #null# #null#

Configuration options

if you must insert the string #null# in the database you can define a different null pattern with the property inputNullString

Define Properties inParameters
key value
Name I:1:12:0
City I:2:12:0

SQLCommand TestDatabase update TestData set Name = ?{Name:12}, City = ? where ID ='%ID%' inputNullString=--null-- dbQueryParameters=inParameters
ID City Name Count?
$ID2 --null-- #null# 1

SQLCommand TestDatabase select City, Name, length(City) as CityLength, length(Name) as NameLength from TestData where ID ='%ID%'
ID City? CityLength? Name? NameLength?
$ID2 #null# #null# #null# 6

You can also change the output format for null values with the property outputNullString

SQLCommand TestDatabase select City, Name, length(City) as CityLength, length(Name) as NameLength from TestData where ID ='%ID%' outputNullString=++null++
ID City? CityLength? Name? NameLength?
$ID2 ++null++ ++null++ #null# 6

Contents: