Merge pull request #136 from MierenManz/main
Argument parsing for commands
This commit is contained in:
		
						commit
						60e7c75113
					
				
					 5 changed files with 264 additions and 5 deletions
				
			
		
							
								
								
									
										150
									
								
								test/argsparser_test.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										150
									
								
								test/argsparser_test.ts
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,150 @@ | |||
| import { Args, parseArgs } from '../src/utils/command.ts' | ||||
| import { | ||||
|   assertEquals, | ||||
|   assertNotEquals | ||||
| } from 'https://deno.land/std@0.95.0/testing/asserts.ts' | ||||
| 
 | ||||
| const commandArgs: Args[] = [ | ||||
|   { | ||||
|     name: 'originalMessage', | ||||
|     match: 'content' | ||||
|   }, | ||||
|   { | ||||
|     name: 'permaban', | ||||
|     match: 'flag', | ||||
|     flag: '--permanent', | ||||
|     defaultValue: true | ||||
|   }, | ||||
|   { | ||||
|     name: 'user', | ||||
|     match: 'mentionUser' | ||||
|   }, | ||||
|   { | ||||
|     name: 'reason', | ||||
|     match: 'rest', | ||||
|     defaultValue: 'ree' | ||||
|   } | ||||
| ] | ||||
| 
 | ||||
| const messageArgs1: string[] = [ | ||||
|   '<@!708544768342229012>', | ||||
|   '--permanent', | ||||
|   'bye', | ||||
|   'bye', | ||||
|   'Skyler' | ||||
| ] | ||||
| const expectedResult1 = { | ||||
|   originalMessage: [ | ||||
|     '<@!708544768342229012>', | ||||
|     '--permanent', | ||||
|     'bye', | ||||
|     'bye', | ||||
|     'Skyler' | ||||
|   ], | ||||
|   permaban: true, | ||||
|   user: '708544768342229012', | ||||
|   reason: 'bye bye Skyler' | ||||
| } | ||||
| 
 | ||||
| Deno.test({ | ||||
|   only: false, | ||||
|   name: 'parse command arguments 1 (assertEquals)', | ||||
|   fn: () => { | ||||
|     const result = parseArgs(commandArgs, messageArgs1) | ||||
|     assertEquals(result, expectedResult1) | ||||
|   }, | ||||
|   sanitizeOps: true, | ||||
|   sanitizeResources: true, | ||||
|   sanitizeExit: true | ||||
| }) | ||||
| 
 | ||||
| const messageArgs2: string[] = [ | ||||
|   '<@!708544768342229012>', | ||||
|   'bye', | ||||
|   'bye', | ||||
|   'Skyler' | ||||
| ] | ||||
| const expectedResult2 = { | ||||
|   originalMessage: ['<@!708544768342229012>', 'bye', 'bye', 'Skyler'], | ||||
|   permaban: true, | ||||
|   user: '708544768342229012', | ||||
|   reason: 'bye bye Skyler' | ||||
| } | ||||
| 
 | ||||
| Deno.test({ | ||||
|   name: 'parse command arguments 2 (assertEquals)', | ||||
|   fn: () => { | ||||
|     const result = parseArgs(commandArgs, messageArgs2) | ||||
|     assertEquals(result, expectedResult2) | ||||
|   }, | ||||
|   sanitizeOps: true, | ||||
|   sanitizeResources: true, | ||||
|   sanitizeExit: true | ||||
| }) | ||||
| 
 | ||||
| const messageArgs3: string[] = [ | ||||
|   '<@!708544768342229012>', | ||||
|   'bye', | ||||
|   'bye', | ||||
|   'Skyler' | ||||
| ] | ||||
| const expectedResult3 = { | ||||
|   permaban: false, | ||||
|   user: '708544768342229012', | ||||
|   reason: 'bye bye Skyler' | ||||
| } | ||||
| 
 | ||||
| Deno.test({ | ||||
|   name: 'parse command arguments default value (assertNotEquals)', | ||||
|   fn: () => { | ||||
|     const result = parseArgs(commandArgs, messageArgs3) | ||||
|     assertNotEquals(result, expectedResult3) | ||||
|   }, | ||||
|   sanitizeOps: true, | ||||
|   sanitizeResources: true, | ||||
|   sanitizeExit: true | ||||
| }) | ||||
| 
 | ||||
| const commandArgs2: Args[] = [ | ||||
|   { | ||||
|     name: 'user', | ||||
|     match: 'mentionUser' | ||||
|   }, | ||||
|   { | ||||
|     name: 'channel', | ||||
|     match: 'mentionChannel' | ||||
|   }, | ||||
|   { | ||||
|     name: 'role', | ||||
|     match: 'mentionRole' | ||||
|   }, | ||||
|   { | ||||
|     name: 'reason', | ||||
|     match: 'rest', | ||||
|     defaultValue: 'ree' | ||||
|   } | ||||
| ] | ||||
| 
 | ||||
| const messageArgs4: string[] = [ | ||||
|   '<@!708544768342229012>', | ||||
|   'bye', | ||||
|   '<#783319033730564098>', | ||||
|   '<@&836715188690092032>' | ||||
| ] | ||||
| const expectedResult4 = { | ||||
|   channel: '783319033730564098', | ||||
|   role: '836715188690092032', | ||||
|   user: '708544768342229012', | ||||
|   reason: 'bye' | ||||
| } | ||||
| 
 | ||||
| Deno.test({ | ||||
|   name: 'parse command arguments mentions (assertEquals)', | ||||
|   fn: () => { | ||||
|     const result = parseArgs(commandArgs2, messageArgs4) | ||||
|     assertEquals(result, expectedResult4) | ||||
|   }, | ||||
|   sanitizeOps: true, | ||||
|   sanitizeResources: true, | ||||
|   sanitizeExit: true | ||||
| }) | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue