riku
2025-08-28 3bb4fb15c664d29d179083698fdad35a661b1d7f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
package com.flightfeather.uav.lightshare.service.impl
 
import com.flightfeather.uav.biz.FactorFilter
import com.flightfeather.uav.biz.report.MissionReport
import com.flightfeather.uav.common.exception.BizException
import com.flightfeather.uav.domain.repository.MissionRep
import com.flightfeather.uav.lightshare.service.MissionService
 
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.boot.test.context.SpringBootTest
import org.springframework.test.context.junit4.SpringRunner
import javax.servlet.http.HttpServletResponse
 
import org.junit.jupiter.api.Assertions.*
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.assertThrows
import org.junit.runner.RunWith
 
import io.mockk.every
import io.mockk.mockk
import io.mockk.verify
 
class MissionServiceImplTest {
 
    @Autowired
    lateinit var missionService: MissionService
 
    private var missionRep: MissionRep = mockk()
 
    @Autowired
    lateinit var missionReport: MissionReport
 
    @Test
    fun getReport() {
        missionReport.execute("SH-CN-20240723-01", FactorFilter.default())
        missionReport.execute("SH-CN-20240723-02", FactorFilter.default())
    }
 
    @Test
    fun `calMissionInfo should throw BizException when mission not found`() {
        // Arrange
        val missionCode = "M001"
        every { missionRep.findOne(missionCode) } returns null
 
        // Act & Assert
        val exception = assertThrows<BizException> {
            missionService.calMissionInfo(missionCode)
        }
        assertEquals("走航任务不存在", exception.message)
    }
 
    @Test
    fun `calMissionInfo should calculate and update mission info successfully`() {
        // Arrange
        val missionCode = "M001"
        val mission = Mission(missionCode)
        val data = listOf<RealTimeData>()
 
        every { missionRep.findOne(missionCode) } returns mission
        every { realTimeDataRep.fetchData(mission) } returns data
        every { missionUtil.calKilometres(data) } returns 100.0
        every { missionUtil.calRegion(data) } returns "Center"
        every { missionRep.updateMission(mission) } returns true
 
        // Act
        val result = missionService.calMissionInfo(missionCode)
 
        // Assert
        assertTrue(result)
        assertEquals(100.0f, mission.kilometres)
        assertEquals("Center", mission.region)
 
        verify {
            missionRep.findOne(missionCode)
            realTimeDataRep.fetchData(mission)
            missionUtil.calKilometres(data)
            missionUtil.calRegion(data)
            missionRep.updateMission(mission)
        }
    }
 
    @Test
    fun `calMissionInfo should return false when update fails`() {
        // Arrange
        val missionCode = "M001"
        val mission = Mission(missionCode)
        val data = listOf<RealTimeData>()
 
        every { missionRep.findOne(missionCode) } returns mission
        every { realTimeDataRep.fetchData(mission) } returns data
        every { missionUtil.calKilometres(data) } returns 100.0
        every { missionUtil.calRegion(data) } returns "Center"
        every { missionRep.updateMission(mission) } returns false
 
        // Act
        val result = missionService.calMissionInfo(missionCode)
 
        // Assert
        assertFalse(result)
    }
}