Skip to content
This repository has been archived by the owner on Jan 22, 2025. It is now read-only.

Commit

Permalink
refactor(experimental): graphql: revise accounts schema for data inputs
Browse files Browse the repository at this point in the history
  • Loading branch information
buffalojoec committed Feb 5, 2024
1 parent fbbdd5d commit 112f2d3
Show file tree
Hide file tree
Showing 14 changed files with 411 additions and 265 deletions.
106 changes: 36 additions & 70 deletions packages/rpc-graphql/src/__tests__/account-test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -230,131 +230,94 @@ describe('account', () => {
});
});
describe('account data queries', () => {
// See scripts/fixtures/gpa1.json
const address = 'CcYNb7WqpjaMrNr7B1mapaNfWctZRH7LyAjWRLBGt1Fk';
it('can get account data as base58', async () => {
expect.assertions(1);
// See scripts/fixtures/gpa1.json
const variableValues = {
address: 'CcYNb7WqpjaMrNr7B1mapaNfWctZRH7LyAjWRLBGt1Fk',
encoding: 'BASE_58',
};
const source = /* GraphQL */ `
query testQuery($address: Address!, $encoding: AccountEncoding) {
account(address: $address, encoding: $encoding) {
query testQuery($address: Address!) {
account(address: $address) {
address
... on AccountBase58 {
data
}
data(encoding: BASE_58)
}
}
`;
const result = await rpcGraphQL.query(source, variableValues);
const result = await rpcGraphQL.query(source, { address });
expect(result).toMatchObject({
data: {
account: {
address: 'CcYNb7WqpjaMrNr7B1mapaNfWctZRH7LyAjWRLBGt1Fk',
address,
data: '2Uw1bpnsXxu3e',
},
},
});
});
it('can get account data as base64', async () => {
expect.assertions(1);
// See scripts/fixtures/gpa1.json
const variableValues = {
address: 'CcYNb7WqpjaMrNr7B1mapaNfWctZRH7LyAjWRLBGt1Fk',
encoding: 'BASE_64',
};
const source = /* GraphQL */ `
query testQuery($address: Address!, $encoding: AccountEncoding) {
account(address: $address, encoding: $encoding) {
query testQuery($address: Address!) {
account(address: $address) {
address
... on AccountBase64 {
data
}
data(encoding: BASE_64)
}
}
`;
const result = await rpcGraphQL.query(source, variableValues);
const result = await rpcGraphQL.query(source, { address });
expect(result).toMatchObject({
data: {
account: {
address: 'CcYNb7WqpjaMrNr7B1mapaNfWctZRH7LyAjWRLBGt1Fk',
address,
data: 'dGVzdCBkYXRh',
},
},
});
});
it('can get account data as base64+zstd', async () => {
expect.assertions(1);
// See scripts/fixtures/gpa1.json
const variableValues = {
address: 'CcYNb7WqpjaMrNr7B1mapaNfWctZRH7LyAjWRLBGt1Fk',
encoding: 'BASE_64_ZSTD',
};
const source = /* GraphQL */ `
query testQuery($address: Address!, $encoding: AccountEncoding) {
account(address: $address, encoding: $encoding) {
query testQuery($address: Address!) {
account(address: $address) {
address
... on AccountBase64Zstd {
data
}
data(encoding: BASE_64_ZSTD)
}
}
`;
const result = await rpcGraphQL.query(source, variableValues);
const result = await rpcGraphQL.query(source, { address });
expect(result).toMatchObject({
data: {
account: {
address: 'CcYNb7WqpjaMrNr7B1mapaNfWctZRH7LyAjWRLBGt1Fk',
address,
data: 'KLUv/QBYSQAAdGVzdCBkYXRh',
},
},
});
});
it('can get account data as jsonParsed', async () => {
expect.assertions(2);
it('can get account data with multiple encodings', async () => {
expect.assertions(1);
const source = /* GraphQL */ `
query testQuery($address: Address!) {
account(address: $address, encoding: PARSED) {
... on AccountBase64 {
data
}
... on MintAccount {
supply
}
account(address: $address) {
address
dataBase58: data(encoding: BASE_58)
dataBase64: data(encoding: BASE_64)
dataBase64Zstd: data(encoding: BASE_64_ZSTD)
}
}
`;
const resultParsed = await rpcGraphQL.query(source, {
// See scripts/fixtures/spl-token-mint-account.json
address: 'Gh9ZwEmdLJ8DscKNTkTqPbNwLNNBjuSzaG9Vp2KGtKJr',
});
expect(resultParsed).toMatchObject({
data: {
account: {
supply: expect.any(String),
},
},
});
// Defaults to base64 if can't be parsed
const resultBase64 = await rpcGraphQL.query(source, {
// See scripts/fixtures/gpa1.json
address: 'CcYNb7WqpjaMrNr7B1mapaNfWctZRH7LyAjWRLBGt1Fk',
});
expect(resultBase64).toMatchObject({
const result = await rpcGraphQL.query(source, { address });
expect(result).toMatchObject({
data: {
account: {
data: 'dGVzdCBkYXRh',
address,
dataBase58: '2Uw1bpnsXxu3e',
dataBase64: 'dGVzdCBkYXRh',
dataBase64Zstd: 'KLUv/QBYSQAAdGVzdCBkYXRh',
},
},
});
});
it('defaults to jsonParsed if possible', async () => {
it('can get account data as jsonParsed', async () => {
expect.assertions(1);
// See scripts/fixtures/spl-token-mint-account.json
const variableValues = {
address: 'Gh9ZwEmdLJ8DscKNTkTqPbNwLNNBjuSzaG9Vp2KGtKJr',
};
const source = /* GraphQL */ `
query testQuery($address: Address!) {
account(address: $address) {
Expand All @@ -364,8 +327,11 @@ describe('account', () => {
}
}
`;
const result = await rpcGraphQL.query(source, variableValues);
expect(result).toMatchObject({
const resultParsed = await rpcGraphQL.query(source, {
// See scripts/fixtures/spl-token-mint-account.json
address: 'Gh9ZwEmdLJ8DscKNTkTqPbNwLNNBjuSzaG9Vp2KGtKJr',
});
expect(resultParsed).toMatchObject({
data: {
account: {
supply: expect.any(String),
Expand Down
35 changes: 15 additions & 20 deletions packages/rpc-graphql/src/__tests__/program-accounts-test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -97,13 +97,12 @@ describe('programAccounts', () => {
programAddress: 'AmtpVzo6H6qQCP9dH9wfu5hfa8kKaAFpTJ4aamPYR6V6',
};
const source = /* GraphQL */ `
query testQuery($programAddress: Address!, $commitment: Commitment, $encoding: AccountEncoding) {
query testQuery($programAddress: Address!, $commitment: Commitment, $encoding: AccountEncoding!) {
# TODO: Program accounts needs refactor
programAccounts(programAddress: $programAddress, commitment: $commitment, encoding: $encoding) {
address
executable
... on AccountBase58 {
data
}
data(encoding: $encoding)
}
}
`;
Expand Down Expand Up @@ -134,13 +133,12 @@ describe('programAccounts', () => {
programAddress: 'AmtpVzo6H6qQCP9dH9wfu5hfa8kKaAFpTJ4aamPYR6V6',
};
const source = /* GraphQL */ `
query testQuery($programAddress: Address!, $commitment: Commitment, $encoding: AccountEncoding) {
query testQuery($programAddress: Address!, $commitment: Commitment, $encoding: AccountEncoding!) {
# TODO: Program accounts needs refactor
programAccounts(programAddress: $programAddress, commitment: $commitment, encoding: $encoding) {
address
executable
... on AccountBase64 {
data
}
data(encoding: $encoding)
}
}
`;
Expand Down Expand Up @@ -171,13 +169,12 @@ describe('programAccounts', () => {
programAddress: 'AmtpVzo6H6qQCP9dH9wfu5hfa8kKaAFpTJ4aamPYR6V6',
};
const source = /* GraphQL */ `
query testQuery($programAddress: Address!, $commitment: Commitment, $encoding: AccountEncoding) {
query testQuery($programAddress: Address!, $commitment: Commitment, $encoding: AccountEncoding!) {
# TODO: Program accounts needs refactor
programAccounts(programAddress: $programAddress, commitment: $commitment, encoding: $encoding) {
address
executable
... on AccountBase64Zstd {
data
}
data(encoding: $encoding)
}
}
`;
Expand Down Expand Up @@ -584,17 +581,16 @@ describe('programAccounts', () => {
$programAddress: Address!
$commitment: Commitment
$dataSlice: DataSlice
$encoding: AccountEncoding
$encoding: AccountEncoding!
) {
# TODO: Program accounts needs refactor
programAccounts(
programAddress: $programAddress
commitment: $commitment
dataSlice: $dataSlice
encoding: $encoding
) {
... on AccountBase58 {
data
}
data(encoding: $encoding, dataSlice: $dataSlice)
}
}
`;
Expand Down Expand Up @@ -628,17 +624,16 @@ describe('programAccounts', () => {
$programAddress: Address!
$commitment: Commitment
$dataSlice: DataSlice
$encoding: AccountEncoding
$encoding: AccountEncoding!
) {
# TODO: Program accounts needs refactor
programAccounts(
programAddress: $programAddress
commitment: $commitment
dataSlice: $dataSlice
encoding: $encoding
) {
... on AccountBase64 {
data
}
data(dataSlice: $dataSlice, encoding: $encoding)
}
}
`;
Expand Down
Loading

0 comments on commit 112f2d3

Please sign in to comment.