import { test } from 'uvu'; import * as assert from 'uvu/assert'; import { Request } from '../src/Request'; test('compute a standard request', () => { const request = new Request('GetVolleyTransferList', ['No']); assert.equal(request.toString(), ''); }); test('compute a standard request with no properties', () => { const request = new Request('GetVolleyTransferList'); assert.equal(request.toString(), ''); }); test('let us use the old properties tag', () => { const request = new Request('GetVolleyTransferList', ['No'], 'Fields'); assert.equal(request.toString(), ''); }); test('clone request', () => { const request = new Request('GetVolleyTransferList'); const request2 = request.clone().addRootAttribute('No', 1); assert.not.equal(request.toString(), request2.toString()); }); test('compute multiple attributes', () => { const request = new Request('GetVolleyTransferList', ['No']).addRootAttribute('Version', 0); assert.equal(request.toString(), ''); }); test('compute attributes with null values', () => { const request = new Request('SavePlayer').addNode('Player', { FirstName: null, }); assert.equal(request.toString(), ''); }); test('compute attributes with boolean values', () => { const request = new Request('SaveArticle').addNode('Article', { IsVideoLive: true, }); assert.equal(request.toString(), '
'); }); test('compute relation', () => { const request = new Request('GetVolleyTransferList', ['No']).addRelation('Season', ['Name']); assert.equal( request.toString(), '' ); }); test('compute relation with the old properties tag', () => { const request = new Request('GetVolleyTransferList', ['No'], 'Fields').addRelation('Season', ['Name']); assert.equal( request.toString(), '' ); }); test('compute nested relation', () => { const request = new Request('GetVolleyTransferList', ['No']) .addRelation('Player', ['No']) .addRelation('Player.Federation', ['Code']); assert.equal( request.toString(), '' ); }); test('compute deeply nested relation', () => { const request = new Request('GetVolleyTransferList', ['No']) .addRelation('Player', ['No']) .addRelation('Player.Federation', ['Code']) .addRelation('Player.Federation.Confederation', ['Name']); assert.equal( request.toString(), '' ); }); test('compute deeply nested relation 2', () => { const request = new Request('GetVolleyTransferList', ['No']) .addRelation('Player', ['No']) .addRelation('Player.Federation.Confederation', ['Name']); assert.equal( request.toString(), '' ); }); test('compute inline filters', () => { const request = new Request('GetVolleyTransferList', ['No']).addInlineFilter('Statuses', 30); assert.equal( request.toString(), '' ); }); test('compute multiple inline filters', () => { const request = new Request('GetVolleyTransferList', ['No']) .addInlineFilter('Statuses', 30) .addInlineFilter('NoSeason', 11); assert.equal( request.toString(), '' ); }); test('compute tag filters', () => { const request = new Request('GetArticleList', ['No'], 'Fields').addTagFilter('player:123'); assert.equal( request.toString(), 'player:123' ); }); test('compute multiple tag filters', () => { const request = new Request('GetArticleList', ['No'], 'Fields') .addTagFilter('player:123') .addTagFilter('player:1234'); assert.equal( request.toString(), 'player:123 player:1234' ); }); test('compute both filter system', () => { const request = new Request('GetArticleList', ['No'], 'Fields') .addInlineFilter('Statuses', 30) .addInlineFilter('NoSeason', 11) .addTagFilter('player:123') .addTagFilter('player:1234'); assert.equal( request.toString(), 'player:123 player:1234' ); }); test('compute relations with custom attributes', () => { const request = new Request('GetVolleyClubTeamList') .addRelation('ChampionshipAt', null, { Date: '2020-07-01' }) .addRelation('ChampionshipAt.Championship.Division', ['Name']); assert.equal( request.toString(), '' ); }); test('compute query with custom nodes', () => { const request = new Request('SaveVolleyTransferContract').addNode('VolleyTransferContract', { StartOn: '2020-07-01', }); assert.equal( request.toString(), '' ); }); test('compute query with deep custom nodes', () => { const request = new Request('SaveArticle') .addNode('Article', { DateTime: '2020-07-01', }) .addNode('Article.ArticleText', { Headline: 'Test' }); assert.equal( request.toString(), '
' ); }); test('compute query with special characters', () => { const request = new Request('SaveArticle').addNode('Article', { Title: 'ba"d&', }); assert.equal( request.toString(), '
' ); }); test('compute query with custom node with content', () => { const request = new Request('SavePlayer') .addNode('Player', { No: 1, }) .addNode('Player.Photo', { Extension: 'png' }, 'Something'); assert.equal( request.toString(), 'Something' ); }); test.run();