forked from araddon/qlbridge
/
testdata.go
61 lines (49 loc) · 1.74 KB
/
testdata.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
// Package mockcsvtestdata is csv test data only used for tests.
package mockcsvtestdata
import (
"sync"
"github.com/araddon/qlbridge/datasource"
"github.com/araddon/qlbridge/datasource/mockcsv"
"github.com/araddon/qlbridge/expr/builtins"
"github.com/araddon/qlbridge/plan"
"github.com/araddon/qlbridge/schema"
)
var (
loadData sync.Once
MockSchema *schema.Schema
// TestContext is a function to create plan.Context for a given test context.
TestContext func(query string) *plan.Context
)
func SetContextToMockCsv() {
TestContext = func(query string) *plan.Context {
ctx := plan.NewContext(query)
ctx.DisableRecover = true
ctx.Schema = MockSchema
ctx.Session = datasource.NewMySqlSessionVars()
return ctx
}
}
func SchemaLoader(name string) (*schema.Schema, error) {
return MockSchema, nil
}
func LoadTestDataOnce() {
loadData.Do(func() {
// Load in a "csv file" into our mock data store
mockcsv.LoadTable(mockcsv.SchemaName, "users", `user_id,email,interests,reg_date,referral_count,json_data
9Ip1aKbeZe2njCDM,"aaron@email.com","fishing","2012-10-17T17:29:39.738Z",82,"{""name"":""aaron""}"
hT2impsOPUREcVPc,"bob@email.com","swimming","2009-12-11T19:53:31.547Z",12,"{""name"":""bob""}"
hT2impsabc345c,"not_an_email_2",,"2009-12-11T19:53:31.547Z",12,"{""name"":""notbob""}"`)
mockcsv.LoadTable(mockcsv.SchemaName, "orders", `order_id,user_id,item_id,price,order_date,item_count
1,9Ip1aKbeZe2njCDM,1,22.50,"2012-12-24T17:29:39.738Z",82
2,9Ip1aKbeZe2njCDM,2,37.50,"2013-10-24T17:29:39.738Z",82
3,abcabcabc,1,22.50,"2013-10-24T17:29:39.738Z",82
`)
MockSchema = mockcsv.Schema()
if MockSchema == nil {
panic("MockSchema Must Exist")
}
SetContextToMockCsv()
//reg.RefreshSchema(mockcsv.SchemaName)
builtins.LoadAllBuiltins()
})
}