176 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
			
		
		
	
	
			176 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
| /*
 | |
|  * Copyright 2025 coze-dev Authors
 | |
|  *
 | |
|  * Licensed under the Apache License, Version 2.0 (the "License");
 | |
|  * you may not use this file except in compliance with the License.
 | |
|  * You may obtain a copy of the License at
 | |
|  *
 | |
|  *     http://www.apache.org/licenses/LICENSE-2.0
 | |
|  *
 | |
|  * Unless required by applicable law or agreed to in writing, software
 | |
|  * distributed under the License is distributed on an "AS IS" BASIS,
 | |
|  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | |
|  * See the License for the specific language governing permissions and
 | |
|  * limitations under the License.
 | |
|  */
 | |
| 
 | |
| import { describe, it, expect } from 'vitest';
 | |
| import { ProductEntityType } from '@coze-arch/bot-api/product_api';
 | |
| 
 | |
| import {
 | |
|   convertTemplateType,
 | |
|   extractTemplateActionCommonParams,
 | |
| } from '../src/utils';
 | |
| 
 | |
| describe('utils', () => {
 | |
|   describe('convertTemplateType', () => {
 | |
|     it('should convert workflow template type', () => {
 | |
|       expect(convertTemplateType(ProductEntityType.WorkflowTemplateV2)).toBe(
 | |
|         'workflow',
 | |
|       );
 | |
|     });
 | |
| 
 | |
|     it('should convert imageflow template type', () => {
 | |
|       expect(convertTemplateType(ProductEntityType.ImageflowTemplateV2)).toBe(
 | |
|         'imageflow',
 | |
|       );
 | |
|     });
 | |
| 
 | |
|     it('should convert bot template type', () => {
 | |
|       expect(convertTemplateType(ProductEntityType.BotTemplate)).toBe('bot');
 | |
|     });
 | |
| 
 | |
|     it('should convert project template type', () => {
 | |
|       expect(convertTemplateType(ProductEntityType.ProjectTemplate)).toBe(
 | |
|         'project',
 | |
|       );
 | |
|     });
 | |
| 
 | |
|     it('should return unknown for undefined type', () => {
 | |
|       expect(convertTemplateType(undefined)).toBe('unknown');
 | |
|     });
 | |
| 
 | |
|     it('should return unknown for unrecognized type', () => {
 | |
|       expect(convertTemplateType('invalid' as any)).toBe('unknown');
 | |
|     });
 | |
|   });
 | |
| 
 | |
|   describe('extractTemplateActionCommonParams', () => {
 | |
|     it('should extract params from workflow template', () => {
 | |
|       const mockDetail = {
 | |
|         meta_info: {
 | |
|           id: 'test-id',
 | |
|           entity_id: 'entity-id',
 | |
|           name: 'Test Template',
 | |
|           entity_type: ProductEntityType.WorkflowTemplateV2,
 | |
|           is_professional: true,
 | |
|           is_free: true,
 | |
|         },
 | |
|       };
 | |
| 
 | |
|       expect(extractTemplateActionCommonParams(mockDetail)).toEqual({
 | |
|         template_id: 'test-id',
 | |
|         entity_id: 'entity-id',
 | |
|         template_name: 'Test Template',
 | |
|         template_type: 'workflow',
 | |
|         template_tag_professional: 'professional',
 | |
|         template_tag_prize: 'free',
 | |
|         from: '',
 | |
|       });
 | |
|     });
 | |
| 
 | |
|     it('should extract params from paid template', () => {
 | |
|       const mockDetail = {
 | |
|         meta_info: {
 | |
|           id: 'test-id',
 | |
|           entity_id: 'entity-id',
 | |
|           name: 'Test Template',
 | |
|           entity_type: ProductEntityType.BotTemplate,
 | |
|           is_professional: false,
 | |
|           is_free: false,
 | |
|           price: {
 | |
|             amount: '100',
 | |
|           },
 | |
|         },
 | |
|       };
 | |
| 
 | |
|       expect(extractTemplateActionCommonParams(mockDetail)).toEqual({
 | |
|         template_id: 'test-id',
 | |
|         entity_id: 'entity-id',
 | |
|         template_name: 'Test Template',
 | |
|         template_type: 'bot',
 | |
|         template_tag_professional: 'basic',
 | |
|         template_tag_prize: 'paid',
 | |
|         template_prize_detail: 100,
 | |
|         from: '',
 | |
|       });
 | |
|     });
 | |
| 
 | |
|     it('should extract params from project template', () => {
 | |
|       const mockDetail = {
 | |
|         meta_info: {
 | |
|           id: 'test-id',
 | |
|           entity_id: 'entity-id',
 | |
|           name: 'Test Template',
 | |
|           entity_type: ProductEntityType.ProjectTemplate,
 | |
|           is_professional: false,
 | |
|           is_free: true,
 | |
|         },
 | |
|         project_extra: {
 | |
|           template_project_id: 'project-id',
 | |
|         },
 | |
|       };
 | |
| 
 | |
|       expect(extractTemplateActionCommonParams(mockDetail)).toEqual({
 | |
|         template_id: 'test-id',
 | |
|         entity_id: 'entity-id',
 | |
|         template_name: 'Test Template',
 | |
|         template_type: 'project',
 | |
|         entity_copy_id: 'project-id',
 | |
|         template_tag_professional: 'basic',
 | |
|         template_tag_prize: 'free',
 | |
|         from: '',
 | |
|       });
 | |
|     });
 | |
| 
 | |
|     it('should handle undefined detail', () => {
 | |
|       expect(extractTemplateActionCommonParams(undefined)).toEqual({
 | |
|         template_id: '',
 | |
|         entity_id: '',
 | |
|         template_name: '',
 | |
|         template_type: 'unknown',
 | |
|         template_tag_professional: 'basic',
 | |
|         template_tag_prize: 'paid',
 | |
|         template_prize_detail: 0,
 | |
|         from: '',
 | |
|       });
 | |
|     });
 | |
| 
 | |
|     it('should handle missing price amount', () => {
 | |
|       const mockDetail = {
 | |
|         meta_info: {
 | |
|           id: 'test-id',
 | |
|           entity_id: 'entity-id',
 | |
|           name: 'Test Template',
 | |
|           entity_type: ProductEntityType.BotTemplate,
 | |
|           is_professional: false,
 | |
|           is_free: false,
 | |
|           price: {},
 | |
|           from: '',
 | |
|         },
 | |
|       };
 | |
| 
 | |
|       expect(extractTemplateActionCommonParams(mockDetail)).toEqual({
 | |
|         template_id: 'test-id',
 | |
|         entity_id: 'entity-id',
 | |
|         template_name: 'Test Template',
 | |
|         template_type: 'bot',
 | |
|         template_tag_professional: 'basic',
 | |
|         template_tag_prize: 'paid',
 | |
|         template_prize_detail: 0,
 | |
|         from: '',
 | |
|       });
 | |
|     });
 | |
|   });
 | |
| });
 |