gopkg.in/rethinkdb/rethinkdb-go.v6@v6.2.2/internal/integration/reql_tests/template.go.tpl (about)

     1  package reql_tests
     2  
     3  import (
     4  	"testing"
     5  	"time"
     6  
     7  	"github.com/stretchr/testify/suite"
     8      r "gopkg.in/rethinkdb/rethinkdb-go.v6"
     9  	"gopkg.in/rethinkdb/rethinkdb-go.v6/internal/compare"
    10  )
    11  
    12  // ${description}
    13  func Test${module_name}Suite(t *testing.T) {
    14  	suite.Run(t, new(${module_name}Suite ))
    15  }
    16  
    17  type ${module_name}Suite struct {
    18  	suite.Suite
    19  
    20  	session *r.Session
    21  }
    22  
    23  func (suite *${module_name}Suite) SetupTest() {
    24  	suite.T().Log("Setting up ${module_name}Suite")
    25  	// Use imports to prevent errors
    26  	_ = time.Time{}
    27      _ = compare.AnythingIsFine
    28  
    29  	session, err := r.Connect(r.ConnectOpts{
    30  		Address: url,
    31  	})
    32  	suite.Require().NoError(err, "Error returned when connecting to server")
    33  	suite.session = session
    34  
    35  	r.DBDrop("test").Exec(suite.session)
    36  	err = r.DBCreate("test").Exec(suite.session)
    37  	suite.Require().NoError(err)
    38  	err = r.DB("test").Wait().Exec(suite.session)
    39  	suite.Require().NoError(err)
    40  
    41  	%for var_name in table_var_names:
    42  	r.DB("test").TableDrop("${var_name}").Exec(suite.session)
    43  	err = r.DB("test").TableCreate("${var_name}").Exec(suite.session)
    44  	suite.Require().NoError(err)
    45  	err = r.DB("test").Table("${var_name}").Wait().Exec(suite.session)
    46  	suite.Require().NoError(err)
    47  	%endfor
    48  }
    49  
    50  func (suite *${module_name}Suite) TearDownSuite() {
    51  	suite.T().Log("Tearing down ${module_name}Suite")
    52  
    53  	if suite.session != nil {
    54  		r.DB("rethinkdb").Table("_debug_scratch").Delete().Exec(suite.session)
    55  		%for var_name in table_var_names:
    56  		 r.DB("test").TableDrop("${var_name}").Exec(suite.session)
    57  		%endfor
    58  		r.DBDrop("test").Exec(suite.session)
    59  
    60  		suite.session.Close()
    61  	}
    62  }
    63  
    64  <%rendered_vars = set() %>\
    65  func (suite *${module_name}Suite) TestCases() {
    66  	suite.T().Log("Running ${module_name}Suite: ${description}")
    67  
    68  	%for var_name in table_var_names:
    69  	${var_name} := r.DB("test").Table("${var_name}")
    70  	_ = ${var_name} // Prevent any noused variable errors
    71  	%endfor
    72  
    73  <%rendered_something = False %>\
    74  	%for item in defs_and_test:
    75  	%if type(item) == GoDef:
    76  <%rendered_something = True %>
    77  	// ${item.testfile} line #${item.line_num}
    78  	// ${item.line.original.replace('\n', '')}
    79  	suite.T().Log("Possibly executing: ${item.line.go.replace('\\', '\\\\').replace('"', "'")}")
    80  
    81  	%if item.varname in rendered_vars:
    82  	%if item.run_if_query:
    83  	${item.varname} = maybeRun(${item.value}, suite.session, r.RunOpts{
    84  		%if item.runopts:
    85  		%for key, val in sorted(item.runopts.items()):
    86  		${key}: ${val},
    87  		%endfor
    88  		%endif
    89  	});
    90  	%else:
    91  	${item.varname} = ${item.value}
    92  	%endif
    93  	%elif item.run_if_query:
    94  	${item.varname} := maybeRun(${item.value}, suite.session, r.RunOpts{
    95  		%if item.runopts:
    96  		%for key, val in sorted(item.runopts.items()):
    97  		${key}: ${val},
    98  		%endfor
    99  		%endif
   100  	});
   101  	_ = ${item.varname} // Prevent any noused variable errors
   102  <%rendered_vars.add(item.varname)%>\
   103  	%else:
   104  	${item.varname} := ${item.value}
   105  	_ = ${item.varname} // Prevent any noused variable errors
   106  <%rendered_vars.add(item.varname)%>\
   107  	%endif
   108  
   109  	%elif type(item) == GoQuery:
   110  <%rendered_something = True %>
   111  	{
   112  		// ${item.testfile} line #${item.line_num}
   113  		/* ${item.expected_line.original} */
   114  		var expected_ ${item.expected_type} = ${item.expected_line.go}
   115  		/* ${item.line.original} */
   116  
   117  		suite.T().Log("About to run line #${item.line_num}: ${item.line.go.replace('"', "'").replace('\\', '\\\\').replace('\n', '\\n')}")
   118  
   119  		%if item.line.go.startswith('fetch(') and item.line.go.endswith(')'):
   120  		fetchAndAssert(suite.Suite, expected_, ${item.line.go[6:-1]})
   121  	   %elif item.is_value:
   122  		actual := ${item.line.go}
   123  
   124  		compare.Assert(suite.T(), expected_, actual)
   125  		%else:
   126  		runAndAssert(suite.Suite, expected_, ${item.line.go}, suite.session, r.RunOpts{
   127  			%if item.runopts:
   128  			%for key, val in sorted(item.runopts.items()):
   129  			${key}: ${val},
   130  			%endfor
   131  			%endif
   132  		})
   133  		%endif
   134  		suite.T().Log("Finished running line #${item.line_num}")
   135  	}
   136  	%endif
   137  	%endfor
   138  	%if not rendered_something:
   139  <% raise EmptyTemplate() %>\
   140  	%endif
   141  }