238 lines
3.9 KiB
Go
238 lines
3.9 KiB
Go
package serv
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
|
|
"github.com/brianvoe/gofakeit/v5"
|
|
)
|
|
|
|
func TestGQLHash1(t *testing.T) {
|
|
var v1 = `
|
|
products(
|
|
limit: 30,
|
|
|
|
where: { id: { AND: { greater_or_equals: 20, lt: 28 } } }) {
|
|
id
|
|
name
|
|
price
|
|
}`
|
|
|
|
var v2 = `
|
|
products
|
|
(limit: 30, where: { id: { AND: { greater_or_equals: 20, lt: 28 } } }) {
|
|
id
|
|
name
|
|
price
|
|
} `
|
|
|
|
h1 := gqlHash(v1, nil, "")
|
|
h2 := gqlHash(v2, nil, "")
|
|
|
|
if strings.Compare(h1, h2) != 0 {
|
|
t.Fatal("Hashes don't match they should")
|
|
}
|
|
}
|
|
|
|
func TestGQLHash2(t *testing.T) {
|
|
var v1 = `
|
|
{
|
|
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 TestGQLHash3(t *testing.T) {
|
|
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, "")
|
|
|
|
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) {
|
|
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")
|
|
|
|
if strings.Compare(h1, h2) != 0 {
|
|
t.Fatal("Hashes don't match they should")
|
|
}
|
|
}
|
|
|
|
func TestGQLHashWithVars2(t *testing.T) {
|
|
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")
|
|
|
|
if strings.Compare(h1, h2) != 0 {
|
|
t.Fatal("Hashes don't match they should")
|
|
}
|
|
}
|
|
|
|
func TestGoFake(t *testing.T) {
|
|
gofakeit.Person()
|
|
}
|