• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

DaniSomoza / galactic-commander / 12457139241

22 Dec 2024 07:38PM UTC coverage: 52.086% (-13.5%) from 65.587%
12457139241

push

github

web-flow
Build units (#11)

* update models in game-engine

* added fleets

* add build unit service and troops page

* added build units dialog

* added build units queue

206 of 790 branches covered (26.08%)

Branch coverage included in aggregate %.

366 of 893 new or added lines in 84 files covered. (40.99%)

10 existing lines in 7 files now uncovered.

1417 of 2326 relevant lines covered (60.92%)

3.83 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

93.62
/packages/game-engine/src/engine/tasks/processFinishResearchTask.ts
1
import { IPoint } from '../../types/IPoint'
2
import { FinishResearchTaskType } from '../../types/ITask'
3
import GameEngineError from '../errors/GameEngineError'
4✔
4
import PointModel from '../../models/PointModel'
4✔
5
import { ITaskTypeDocument } from '../../models/TaskModel'
6
import taskRepository from '../../repositories/taskRepository'
4✔
7
import playerRepository from '../../repositories/playerRepository'
4✔
8
import upgradeBonus from '../bonus/upgradeBonus'
4✔
9
import createStartResearchTask from './utils/createStartResearchTask'
4✔
10
import hasBonus from '../../helpers/hasBonus'
4✔
11

12
async function processFinishResearchTask(
13
  task: ITaskTypeDocument<FinishResearchTaskType>,
14
  second: number
15
) {
16
  // get all the required data from DB
17
  const player = await playerRepository.findPlayerById(task.data.playerId)
11✔
18

19
  if (!player) {
11✔
20
    throw new GameEngineError('invalid player')
1✔
21
  }
22

23
  const research = player.race.researches.find(
10✔
24
    (research) => research._id.toString() === task.data.researchId
94✔
25
  )
26

27
  if (!research) {
10✔
28
    throw new GameEngineError('invalid research')
1✔
29
  }
30

31
  const playerResearch = player.researches.researched.find(
9✔
32
    (playerResearch) => playerResearch.research.name === research.name
3✔
33
  )
34

35
  const isFirstLevel = !playerResearch
9✔
36

37
  const newLevel = isFirstLevel ? 1 : playerResearch.level + 1
9✔
38

39
  // upgrade player researches
40
  if (isFirstLevel) {
9✔
41
    player.researches.researched.push({
6✔
42
      research,
43
      level: 1
44
    })
45
  } else {
46
    playerResearch.level = newLevel
3✔
47
  }
48

49
  // upgrade player bonus if present in the research
50
  const hasBonusToUpdate = hasBonus(research.bonus)
9✔
51

52
  if (hasBonusToUpdate) {
9✔
53
    const PlayerBonus = player.perks.find((perk) => perk.sourceId === task.data.researchId)
3✔
54

55
    if (PlayerBonus) {
3✔
56
      PlayerBonus.bonus = upgradeBonus(research.bonus, newLevel)
1✔
57
    } else {
58
      player.perks.push({
2✔
59
        bonus: research.bonus,
60
        sourceId: task.data.researchId,
61
        sourceName: research.name,
62
        type: 'Research'
63
      })
64
    }
65
  }
66

67
  // TODO: intergalacticTravel check?
68
  const point: IPoint = {
9✔
69
    playerId: player._id.toString(),
70
    taskId: task._id.toString(),
71
    points: task.data.researchResourceCost,
72
    sourceId: task.data.researchId,
73
    sourceName: research.name,
74
    type: 'Research',
75
    second
76
  }
77

78
  const points = new PointModel(point)
9✔
79

80
  player.researches.activeResearch = undefined
9✔
81

82
  // check player research queue
83
  const nextResearchName = player.researches.queue.shift()
9✔
84
  const nextResearch = player.race.researches.find((research) => research.name === nextResearchName)
171✔
85

86
  if (nextResearch) {
9!
UNCOV
87
    const startResearchTask = createStartResearchTask(
×
88
      task.universeId,
89
      player._id.toString(),
90
      nextResearch._id.toString()
91
    )
92

NEW
93
    return Promise.all([
×
94
      player.save(),
95
      points.save(),
96
      taskRepository.createStartResearchTask(startResearchTask)
97
    ])
98
  }
99

100
  return Promise.all([player.save(), points.save()])
9✔
101
}
102

103
export default processFinishResearchTask
4✔
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc