Skip to content

Commit

Permalink
Update README
Browse files Browse the repository at this point in the history
  • Loading branch information
jinzhu committed Oct 27, 2015
1 parent 80629a1 commit 95fc6c1
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 11 deletions.
4 changes: 3 additions & 1 deletion exchange/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,9 @@ QOR exchange provides conversion (import/export) functionality for any Qor.Resou

## Usage

```gno
```go
import "github.com/qor/qor/exchange/backends/csv"

// Define resource
product = exchange.NewResource(&Product{})
product.Meta(exchange.Meta{Name: "Code"})
Expand Down
35 changes: 25 additions & 10 deletions exchange/exchange_test.go
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
package exchange_test

import (
"encoding/csv"
"os"
"testing"

"github.com/jinzhu/gorm"
"github.com/qor/qor"
"github.com/qor/qor/exchange"
"github.com/qor/qor/exchange/backends/csv"
csv_adaptor "github.com/qor/qor/exchange/backends/csv"
"github.com/qor/qor/test/utils"
)

Expand All @@ -25,25 +27,38 @@ func init() {
product.Meta(exchange.Meta{Name: "Price"})
}

func checkProduct(t *testing.T, filename string) {
csvfile, _ := os.Open(filename)
defer csvfile.Close()
reader := csv.NewReader(csvfile)
reader.TrimLeadingSpace = true
params, _ := reader.ReadAll()

for index, param := range params {
if index == 0 {
continue
}
var count int
if db.Model(&Product{}).Where("code = ? AND name = ? AND price = ?", param[0], param[1], param[2]).Count(&count); count != 1 {
t.Errorf("Failed to find product", params)
}
}
}

func TestImportCSV(t *testing.T) {
context := &qor.Context{DB: db}
if err := product.Import(csv.New("fixtures/products.csv"), context); err != nil {
if err := product.Import(csv_adaptor.New("fixtures/products.csv"), context); err != nil {
t.Fatalf("Failed to import csv, get error %v", err)
}

params := [][]interface{}{{"P001", "Product P001", 100}, {"P002", "Product P002", 200}, {"P003", "Product P003", 300}}
for _, param := range params {
if db.Where("code = ? AND name = ? AND price = ?", param...).First(&Product{}).RecordNotFound() {
t.Errorf("Failed to find product", params)
}
}
checkProduct(t, "fixtures/products.csv")
}

func TestExportCSV(t *testing.T) {
context := &qor.Context{DB: db}
product.Import(csv.New("fixtures/products.csv"), context)
product.Import(csv_adaptor.New("fixtures/products.csv"), context)

if err := product.Export(csv.New("fixtures/products2.csv"), context); err != nil {
if err := product.Export(csv_adaptor.New("fixtures/products2.csv"), context); err != nil {
t.Fatalf("Failed to export csv, get error %v", err)
}
}

0 comments on commit 95fc6c1

Please sign in to comment.