Skip to content

Commit

Permalink
Add tests for aliased connections
Browse files Browse the repository at this point in the history
  • Loading branch information
bhirsz committed Nov 8, 2023
1 parent edbede8 commit fef64ae
Show file tree
Hide file tree
Showing 3 changed files with 134 additions and 57 deletions.
55 changes: 0 additions & 55 deletions test/Aliases_SQLite3_DB_Tests.robot

This file was deleted.

7 changes: 5 additions & 2 deletions test/resources/common.resource
Original file line number Diff line number Diff line change
Expand Up @@ -24,13 +24,14 @@ ${DB_DRIVER} ODBC Driver 18 for SQL Server
Connect To DB
[Documentation] Connects to the database based on the current DB module under test
... and connection params set in global variables
[Arguments] ${alias}=${None}
IF "${DB_MODULE_MODE}" == "custom"
IF "${DB_MODULE}" == "sqlite3"
Remove File ${DBName}.db
Connect To Database Using Custom Params sqlite3 database="./${DBName}.db", isolation_level=None
Connect To Database Using Custom Params sqlite3 database="./${DBName}.db", isolation_level=None alias=${alias}
ELSE
${Connection String}= Build Connection String
Connect To Database Using Custom Connection String ${DB_MODULE} ${Connection String}
Connect To Database Using Custom Connection String ${DB_MODULE} ${Connection String} alias=${alias}
END
ELSE IF "${DB_MODULE_MODE}" == "standard"
IF "${DB_MODULE}" == "pyodbc"
Expand All @@ -42,6 +43,7 @@ Connect To DB
... ${DB_HOST}
... ${DB_PORT}
... dbDriver=${DB_DRIVER}
... alias=${alias}
ELSE
Connect To Database
... ${DB_MODULE}
Expand All @@ -50,6 +52,7 @@ Connect To DB
... ${DB_PASS}
... ${DB_HOST}
... ${DB_PORT}
... alias=${alias}
END
ELSE
Fail Unexpected mode - ${DB_MODULE_MODE}
Expand Down
129 changes: 129 additions & 0 deletions test/tests/common_tests/aliased_connection.robot
Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
*** Settings ***
Resource ../../resources/common.resource
Suite Setup Run Keywords
... Connect To DB
... AND
... Create Person Table
Suite Teardown Run Keywords
... Connect To DB
... AND
... Drop Tables Person And Foobar
Test Teardown Disconnect From All Databases


*** Test Cases ***
Connections Can Be Aliased
Connect To DB # default alias
Connect To DB alias=second

Default Alias Can Be Empty
Connect To DB # default alias
Query SELECT * FROM person
Connect To DB alias=second
Query SELECT * FROM person
Query SELECT * FROM person alias=second

Switch From Default And Disconnect
Connect To DB # default alias
Connect To DB alias=second
Switch Database second
Query SELECT * FROM person # query with 'second' connection
Disconnect From Database alias=second
Query SELECT * FROM person # query with 'default' connection

Disconnect Not Existing Alias
Connect To DB # default alias
Disconnect From Database alias=idontexist # silent warning
Run Keyword And Expect Error No open database connection to close
... Disconnect From Database alias=idontexist error_if_no_connection=${True}
# default alias exist and can be closed
Disconnect From Database error_if_no_connection=${True}

Switch Not Existing Alias
Run Keyword And Expect Error Non-existing index or alias 'second'
... Switch Database second

Execute SQL Script - Insert Data In Person table
Connect To DB alias=aliased_conn
${output}= Execute SQL Script ${CURDIR}/insert_data_in_person_table.sql alias=aliased_conn
Should Be Equal As Strings ${output} None

Check If Exists In DB - Franz Allan
Connect To DB alias=aliased_conn
Check If Exists In Database SELECT id FROM person WHERE FIRST_NAME= 'Franz Allan' alias=aliased_conn

Check If Not Exists In DB - Joe
Connect To DB alias=aliased_conn
Check If Not Exists In Database SELECT id FROM person WHERE FIRST_NAME= 'Joe' alias=aliased_conn

Table Must Exist - person
Connect To DB alias=aliased_conn
Table Must Exist person alias=aliased_conn

Verify Row Count is 0
Connect To DB alias=aliased_conn
Row Count is 0 SELECT * FROM person WHERE FIRST_NAME= 'NotHere' alias=aliased_conn

Verify Row Count is Equal to X
Connect To DB alias=aliased_conn
Row Count is Equal to X SELECT id FROM person 2 alias=aliased_conn

Verify Row Count is Less Than X
Connect To DB alias=aliased_conn
Row Count is Less Than X SELECT id FROM person 3 alias=aliased_conn

Verify Row Count is Greater Than X
Connect To DB alias=aliased_conn
Row Count is Greater Than X SELECT * FROM person 1 alias=aliased_conn

Retrieve Row Count
Connect To DB alias=aliased_conn
${output}= Row Count SELECT id FROM person alias=aliased_conn
Log ${output}
Should Be Equal As Strings ${output} 2

Retrieve records from person table
Connect To DB alias=aliased_conn
${output}= Execute SQL String SELECT * FROM person
Log ${output}
Should Be Equal As Strings ${output} None

Verify Query - Row Count person table
${output}= Query SELECT COUNT(*) FROM person
Log ${output}
Should Be Equal As Integers ${output}[0][0] 2

Verify Query - Get results as a list of dictionaries
Connect To DB alias=aliased_conn
${output}= Query SELECT * FROM person returnAsDict=True alias=aliased_conn
Log ${output}
# some databases lower field names and you can't do anything about it
TRY
${value 1}= Get From Dictionary ${output}[0] FIRST_NAME
EXCEPT Dictionary does not contain key 'FIRST_NAME'.
${value 1}= Get From Dictionary ${output}[0] first_name
END
TRY
${value 2}= Get From Dictionary ${output}[1] FIRST_NAME
EXCEPT Dictionary does not contain key 'FIRST_NAME'.
${value 2}= Get From Dictionary ${output}[1] first_name
END
Should Be Equal As Strings ${value 1} Franz Allan
Should Be Equal As Strings ${value 2} Jerry

Verify Delete All Rows From Table
Connect To DB alias=aliased_conn
Delete All Rows From Table person alias=aliased_conn
Row Count Is 0 SELECT * FROM foobar alias=aliased_conn



*** Keywords ***
Aliases Suite Setup
Connect To DB
Create Person Table

Aliases Suite Teardown
Connect To DB
Drop Tables Person And Foobar
Disconnect From All Databases

0 comments on commit fef64ae

Please sign in to comment.