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 }