super-graph/internal/serv/utils_test.go

238 lines
3.9 KiB
Go
Raw Normal View History

2019-07-29 07:13:33 +02:00
package serv
import (
"strings"
"testing"
"github.com/brianvoe/gofakeit/v5"
2019-07-29 07:13:33 +02:00
)
func TestGQLHash1(t *testing.T) {
2019-09-05 06:09:56 +02:00
var v1 = `
2019-07-29 07:13:33 +02:00
products(
limit: 30,
where: { id: { AND: { greater_or_equals: 20, lt: 28 } } }) {
id
name
price
2019-09-05 06:09:56 +02:00
}`
2019-07-29 07:13:33 +02:00
2019-09-05 06:09:56 +02:00
var v2 = `
2019-07-29 07:13:33 +02:00
products
(limit: 30, where: { id: { AND: { greater_or_equals: 20, lt: 28 } } }) {
id
name
price
2019-09-05 06:09:56 +02:00
} `
2019-07-29 07:13:33 +02:00
h1 := gqlHash(v1, nil, "")
h2 := gqlHash(v2, nil, "")
2019-07-29 07:13:33 +02:00
if strings.Compare(h1, h2) != 0 {
t.Fatal("Hashes don't match they should")
}
2019-07-30 07:38:05 +02:00
}
func TestGQLHash2(t *testing.T) {
2019-09-05 06:09:56 +02:00
var v1 = `
2019-07-30 07:38:05 +02:00
{
products(
limit: 30
order_by: { price: desc }
distinct: [price]
where: { id: { and: { greater_or_equals: 20, lt: 28 } } }
) {
id
name
price
user {
id
email
}
}
2019-09-05 06:09:56 +02:00
}`
2019-07-29 07:13:33 +02:00
2019-09-05 06:09:56 +02:00
var v2 = ` { products( limit: 30, order_by: { price: desc }, distinct: [ price ] where: { id: { and: { greater_or_equals: 20, lt: 28 } } }) { id name price user { id email } } } `
2019-07-30 07:38:05 +02:00
h1 := gqlHash(v1, nil, "")
h2 := gqlHash(v2, nil, "")
2019-09-05 06:09:56 +02:00
if strings.Compare(h1, h2) != 0 {
t.Fatal("Hashes don't match they should")
}
}
func TestGQLHash3(t *testing.T) {
2019-10-03 09:08:01 +02:00
var v1 = `users {
id
email
picture: avatar
products(limit: 2, where: {price: {gt: 10}}) {
id
name
description
}
}`
var v2 = `
users {
id
email
picture: avatar
products(limit: 2, where: {price: {gt: 10}}) {
id
name
description
}
}
`
h1 := gqlHash(v1, nil, "")
h2 := gqlHash(v2, nil, "")
2019-10-03 09:08:01 +02:00
if strings.Compare(h1, h2) != 0 {
t.Fatal("Hashes don't match they should")
}
}
func TestGQLHash4(t *testing.T) {
var v1 = `
query {
products(
limit: 30
order_by: { price: desc }
distinct: [price]
where: { id: { and: { greater_or_equals: 20, lt: 28 } } }
) {
id
name
price
user {
id
email
}
}
}`
var v2 = ` { products( limit: 30, order_by: { price: desc }, distinct: [ price ] where: { id: { and: { greater_or_equals: 20, lt: 28 } } }) { id name price user { id email } } } `
h1 := gqlHash(v1, nil, "")
h2 := gqlHash(v2, nil, "")
if strings.Compare(h1, h2) != 0 {
t.Fatal("Hashes don't match they should")
}
}
func TestGQLHashWithVars1(t *testing.T) {
2019-09-05 06:09:56 +02:00
var q1 = `
products(
limit: 30,
where: { id: { AND: { greater_or_equals: 20, lt: 28 } } }) {
id
name
price
}`
var v1 = `
{
"insert": {
"name": "Hello",
"description": "World",
"created_at": "now",
"updated_at": "now",
"test": { "type2": "b", "type1": "a" }
},
"user": 123
}`
var q2 = `
products
(limit: 30, where: { id: { AND: { greater_or_equals: 20, lt: 28 } } }) {
id
name
price
} `
var v2 = `{
"insert": {
"created_at": "now",
"test": { "type1": "a", "type2": "b" },
"name": "Hello",
"updated_at": "now",
"description": "World"
},
"user": 123
}`
h1 := gqlHash(q1, []byte(v1), "user")
h2 := gqlHash(q2, []byte(v2), "user")
2019-09-05 06:09:56 +02:00
if strings.Compare(h1, h2) != 0 {
t.Fatal("Hashes don't match they should")
}
}
func TestGQLHashWithVars2(t *testing.T) {
2019-09-05 06:09:56 +02:00
var q1 = `
products(
limit: 30,
where: { id: { AND: { greater_or_equals: 20, lt: 28 } } }) {
id
name
price
}`
var v1 = `
{
"insert": [{
"name": "Hello",
"description": "World",
"created_at": "now",
"updated_at": "now",
"test": { "type2": "b", "type1": "a" }
},
{
"name": "Hello",
"description": "World",
"created_at": "now",
"updated_at": "now",
"test": { "type2": "b", "type1": "a" }
}],
"user": 123
}`
var q2 = `
products
(limit: 30, where: { id: { AND: { greater_or_equals: 20, lt: 28 } } }) {
id
name
price
} `
var v2 = `{
"insert": {
"created_at": "now",
"test": { "type1": "a", "type2": "b" },
"name": "Hello",
"updated_at": "now",
"description": "World"
},
"user": 123
}`
h1 := gqlHash(q1, []byte(v1), "user")
h2 := gqlHash(q2, []byte(v2), "user")
2019-07-30 07:38:05 +02:00
if strings.Compare(h1, h2) != 0 {
t.Fatal("Hashes don't match they should")
}
2019-07-29 07:13:33 +02:00
}
func TestGoFake(t *testing.T) {
gofakeit.Person()
}