Back to Repositories

Testing Midjourney API Integration Workflow in RuoYi Vue Pro

This test suite validates the Midjourney API integration within the RuoYi Vue Pro framework, focusing on image generation capabilities and task management. The tests cover core API functionalities including image creation, action handling, and task list retrieval.

Test Coverage Overview

The test suite provides comprehensive coverage of the MidjourneyApi functionality.

Key areas tested include:
  • Image generation with custom parameters
  • Action execution on existing tasks
  • Task list retrieval and management
  • API response handling and validation
Integration points focus on the external Midjourney API endpoint and authentication handling.

Implementation Analysis

The testing approach utilizes JUnit Jupiter for structured unit testing, with @Test and @Disabled annotations for controlled execution. The implementation follows a clear pattern of request preparation, API method invocation, and response validation, specifically tailored for Midjourney API interactions.

Each test method demonstrates isolated functionality testing with proper setup and verification steps.

Technical Details

Testing tools and configuration:
  • JUnit Jupiter test framework
  • MidjourneyApi custom implementation
  • API endpoint configuration with authentication token
  • Custom request/response model classes
  • Task ID management for sequential operations

Best Practices Demonstrated

The test suite exemplifies several testing best practices:

  • Isolated test methods with clear responsibility
  • Proper test method naming conventions
  • Structured request preparation and response handling
  • Disabled annotation usage for controlled execution
  • Clear documentation and comments
  • Consistent error handling patterns

yunaiv/ruoyi-vue-pro

yudao-module-ai/yudao-spring-boot-starter-ai/src/test/java/cn/iocoder/yudao/framework/ai/image/MidjourneyApiTests.java

            
package cn.iocoder.yudao.framework.ai.image;

import cn.iocoder.yudao.framework.ai.core.model.midjourney.api.MidjourneyApi;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;

import java.util.Collections;
import java.util.List;

/**
 * {@link MidjourneyApi} 集成测试
 *
 * @author 芋道源码
 */
public class MidjourneyApiTests {

    private final MidjourneyApi midjourneyApi = new MidjourneyApi(
            "https://api.holdai.top/mj",
            "sk-dZEPiVaNcT3FHhef51996bAa0bC74806BeAb620dA5Da10Bf",
            null);

    @Test
    @Disabled
    public void testImagine() {
        // 准备参数
        MidjourneyApi.ImagineRequest request = new MidjourneyApi.ImagineRequest(null,
                "生成一个小猫,可爱的", null,
                MidjourneyApi.ImagineRequest.buildState(512, 512, "6.0", MidjourneyApi.ModelEnum.MIDJOURNEY.getModel()));

        // 方法调用
        MidjourneyApi.SubmitResponse response = midjourneyApi.imagine(request);
        // 打印结果
        System.out.println(response);
    }

    @Test
    @Disabled
    public void testAction() {
        // 准备参数
        MidjourneyApi.ActionRequest request = new MidjourneyApi.ActionRequest("1720277033455953",
                "MJ::JOB::upsample::1::ee267661-ee52-4ced-a530-0343ba95af3b", null);

        // 方法调用
        MidjourneyApi.SubmitResponse response = midjourneyApi.action(request);
        // 打印结果
        System.out.println(response);
    }

    @Test
    @Disabled
    public void testGetTaskList() {
        // 准备参数。该参数可以通过 MidjourneyApi.SubmitResponse 的 result 获取
//        String taskId = "1720277033455953";
        String taskId = "1720277214045971";

        // 方法调用
        List<MidjourneyApi.Notify> taskList = midjourneyApi.getTaskList(Collections.singletonList(taskId));
        // 打印结果
        System.out.println(taskList);
    }

}