231 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			Go
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			231 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			Go
		
	
	
		
			Executable File
		
	
	
	
	
| package sqldb
 | |
| 
 | |
| import (
 | |
| 	"encoding/json"
 | |
| 	"fmt"
 | |
| 	"io/ioutil"
 | |
| 	"os"
 | |
| 	"testing"
 | |
| )
 | |
| 
 | |
| func TestCreateTable(t *testing.T) {
 | |
| 	db := Open("postgres", "host=127.0.0.1 port=5432 user=test password=test dbname=test sslmode=disable")
 | |
| 	defer db.Close()
 | |
| 
 | |
| 	jsonFile, err := os.Open("test_table.json")
 | |
| 	if err != nil {
 | |
| 		fmt.Println(err)
 | |
| 	}
 | |
| 	defer jsonFile.Close()
 | |
| 
 | |
| 	byteValue, _ := ioutil.ReadAll(jsonFile)
 | |
| 
 | |
| 	var jsonSource TableInfo
 | |
| 	json.Unmarshal([]byte(byteValue), &jsonSource)
 | |
| 
 | |
| 	err = db.CreateTable(jsonSource)
 | |
| 	if err != nil {
 | |
| 		fmt.Println(err.Error())
 | |
| 	}
 | |
| 
 | |
| 	sch, err := db.Table("test").GetSchema()
 | |
| 	if err != nil {
 | |
| 		fmt.Println(err.Error())
 | |
| 	}
 | |
| 	if len(sch.Columns) == 0 {
 | |
| 		t.Errorf("Create table failed")
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func TestAddColumn(t *testing.T) {
 | |
| 
 | |
| 	db := Open("postgres", "host=127.0.0.1 port=5432 user=test password=test dbname=test sslmode=disable")
 | |
| 	defer db.Close()
 | |
| 
 | |
| 	old, err := db.Table("test").GetSchema()
 | |
| 	if err != nil {
 | |
| 		fmt.Println(err.Error())
 | |
| 	}
 | |
| 	db.Table("test").AddColumn("addcolumn", "integer", "comment")
 | |
| 	new, err := db.Table("test").GetSchema()
 | |
| 	if err != nil {
 | |
| 		fmt.Println(err.Error())
 | |
| 	}
 | |
| 
 | |
| 	if len(old.Columns) == len(new.Columns) {
 | |
| 		t.Errorf("Column already exist")
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func TestInsert(t *testing.T) {
 | |
| 
 | |
| 	db := Open("postgres", "host=127.0.0.1 port=5432 user=test password=test dbname=test sslmode=disable")
 | |
| 	defer db.Close()
 | |
| 
 | |
| 	vl := make(AssRow)
 | |
| 	vl["name"] = "toto"
 | |
| 	vl["description"] = "tata"
 | |
| 
 | |
| 	old, err := db.Table("test").GetAssociativeArray([]string{"*"}, "", []string{}, "")
 | |
| 	if err != nil {
 | |
| 		fmt.Println(err.Error())
 | |
| 	}
 | |
| 	jsonStringOld, _ := json.Marshal(old)
 | |
| 	fmt.Println(string(jsonStringOld))
 | |
| 
 | |
| 	db.Table("test").UpdateOrInsert(vl)
 | |
| 
 | |
| 	new, err := db.Table("test").GetAssociativeArray([]string{"*"}, "", []string{}, "")
 | |
| 	if err != nil {
 | |
| 		fmt.Println(err.Error())
 | |
| 	}
 | |
| 	jsonStringNew, _ := json.Marshal(new)
 | |
| 	fmt.Println(string(jsonStringNew))
 | |
| 
 | |
| 	if len(jsonStringOld) == len(jsonStringNew) {
 | |
| 		t.Errorf("Error row not created")
 | |
| 	}
 | |
| 	jsonFile, err := os.Open("insert.json")
 | |
| 	defer jsonFile.Close()
 | |
| 	var result map[string]interface{}
 | |
| 	byteValue, _ := ioutil.ReadAll(jsonFile)
 | |
| 	json.Unmarshal(byteValue, &result)
 | |
| }
 | |
| 
 | |
| func TestUpdate(t *testing.T) {
 | |
| 
 | |
| 	db := Open("postgres", "host=127.0.0.1 port=5432 user=test password=test dbname=test sslmode=disable")
 | |
| 	defer db.Close()
 | |
| 
 | |
| 	vl := make(AssRow)
 | |
| 	vl["id"] = 1
 | |
| 	vl["name"] = "titi"
 | |
| 	vl["description"] = "toto"
 | |
| 
 | |
| 	old, err := db.Table("test").GetAssociativeArray([]string{"*"}, "", []string{}, "")
 | |
| 	if err != nil {
 | |
| 		fmt.Println(err.Error())
 | |
| 	}
 | |
| 	jsonStringOld, _ := json.Marshal(old)
 | |
| 	fmt.Println(string(jsonStringOld))
 | |
| 
 | |
| 	db.Table("test").UpdateOrInsert(vl)
 | |
| 
 | |
| 	new, err := db.Table("test").GetAssociativeArray([]string{"*"}, "", []string{}, "")
 | |
| 	if err != nil {
 | |
| 		fmt.Println(err.Error())
 | |
| 	}
 | |
| 	jsonStringNew, _ := json.Marshal(new)
 | |
| 	fmt.Println(string(jsonStringNew))
 | |
| 
 | |
| 	if string(jsonStringOld) == string(jsonStringNew) {
 | |
| 		t.Errorf("Error row not updated")
 | |
| 	}
 | |
| 
 | |
| }
 | |
| 
 | |
| func TestDelete(t *testing.T) {
 | |
| 
 | |
| 	db := Open("postgres", "host=127.0.0.1 port=5432 user=test password=test dbname=test sslmode=disable")
 | |
| 	defer db.Close()
 | |
| 
 | |
| 	vl := make(AssRow)
 | |
| 	vl["id"] = 1
 | |
| 
 | |
| 	old, err := db.Table("test").GetAssociativeArray([]string{"*"}, "", []string{}, "")
 | |
| 	if err != nil {
 | |
| 		fmt.Println(err.Error())
 | |
| 	}
 | |
| 	jsonStringOld, _ := json.Marshal(old)
 | |
| 	fmt.Println(string(jsonStringOld))
 | |
| 
 | |
| 	db.Table("test").Delete(vl)
 | |
| 
 | |
| 	new, err := db.Table("test").GetAssociativeArray([]string{"*"}, "", []string{}, "")
 | |
| 	if err != nil {
 | |
| 		fmt.Println(err.Error())
 | |
| 	}
 | |
| 	jsonStringNew, _ := json.Marshal(new)
 | |
| 	fmt.Println(string(jsonStringNew))
 | |
| 
 | |
| 	if len(jsonStringOld) == len(jsonStringNew) {
 | |
| 		t.Errorf("Error row not deleted")
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func TestDeleteColumn(t *testing.T) {
 | |
| 
 | |
| 	db := Open("postgres", "host=127.0.0.1 port=5432 user=test password=test dbname=test sslmode=disable")
 | |
| 	defer db.Close()
 | |
| 
 | |
| 	old, err := db.Table("test").GetSchema()
 | |
| 	if err != nil {
 | |
| 		fmt.Println(err.Error())
 | |
| 	}
 | |
| 	db.Table("test").DeleteColumn("addcolumn")
 | |
| 	new, err := db.Table("test").GetSchema()
 | |
| 	if err != nil {
 | |
| 		fmt.Println(err.Error())
 | |
| 	}
 | |
| 
 | |
| 	if len(old.Columns) == len(new.Columns) {
 | |
| 		t.Errorf("Error column not deleted")
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func TestDeleteTable(t *testing.T) {
 | |
| 	db := Open("postgres", "host=127.0.0.1 port=5432 user=test password=test dbname=test sslmode=disable")
 | |
| 	defer db.Close()
 | |
| 	db.Table("test").DeleteTable()
 | |
| 
 | |
| }
 | |
| 
 | |
| func TestImportSchema(t *testing.T) {
 | |
| 	db := Open("postgres", "host=127.0.0.1 port=5432 user=test password=test dbname=test sslmode=disable")
 | |
| 	defer db.Close()
 | |
| 	db.ImportSchema("pfn.json")
 | |
| }
 | |
| 
 | |
| func TestClearImportSchema(t *testing.T) {
 | |
| 	db := Open("postgres", "host=127.0.0.1 port=5432 user=test password=test dbname=test sslmode=disable")
 | |
| 	defer db.Close()
 | |
| 	db.ClearImportSchema("pfn.json")
 | |
| }
 | |
| 
 | |
| func TestGetSchema(t *testing.T) {
 | |
| 	db := Open("postgres", "host=127.0.0.1 port=5432 user=test password=test dbname=test sslmode=disable")
 | |
| 	defer db.Close()
 | |
| 	data, err := db.GetSchema()
 | |
| 	if err != nil {
 | |
| 		fmt.Println(err.Error())
 | |
| 	}
 | |
| 	val, _ := json.Marshal(data)
 | |
| 	fmt.Println(string(val))
 | |
| }
 | |
| 
 | |
| func TestSaveSchema(t *testing.T) {
 | |
| 	db := Open("postgres", "host=127.0.0.1 port=5432 user=test password=test dbname=test sslmode=disable")
 | |
| 	defer db.Close()
 | |
| 	err := db.SaveSchema("schema.json")
 | |
| 	if err != nil {
 | |
| 		fmt.Println(err.Error())
 | |
| 	}
 | |
| }
 | |
| func TestGenerateTemplate(t *testing.T) {
 | |
| 	db := Open("postgres", "host=127.0.0.1 port=5432 user=test password=test dbname=test sslmode=disable")
 | |
| 	defer db.Close()
 | |
| 	err := db.GenerateTemplate("plantuml.tmpl", "schema.puml")
 | |
| 	if err != nil {
 | |
| 		fmt.Println(err.Error())
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func TestGenerateTableTemplate(t *testing.T) {
 | |
| 	db := Open("postgres", "host=127.0.0.1 port=5432 user=test password=test dbname=test sslmode=disable")
 | |
| 	defer db.Close()
 | |
| 	err := db.GenerateTableTemplates("table.tmpl", "gen", "html")
 | |
| 	if err != nil {
 | |
| 		fmt.Println(err.Error())
 | |
| 	}
 | |
| }
 |