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

loveapple / web-crawler / 48

30 Jul 2025 10:52AM UTC coverage: 78.916% (-21.1%) from 100.0%
48

push

circleci

Chunli Hao
add test case for CrawlerComponents.java

25 of 46 new or added lines in 3 files covered. (54.35%)

131 of 166 relevant lines covered (78.92%)

0.79 hits per line

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

33.33
/src/main/java/com/happinesea/webcrawler/service/SiteContentsService.java
1
package com.happinesea.webcrawler.service;
2

3
import java.time.LocalDateTime;
4
import java.util.ArrayList;
5
import java.util.List;
6

7
import org.springframework.beans.factory.annotation.Autowired;
8
import org.springframework.stereotype.Service;
9

10
import com.happinesea.webcrawler.Const.ProcessStatus;
11
import com.happinesea.webcrawler.entity.SiteContents;
12
import com.happinesea.webcrawler.entity.SiteInfoProcessPool;
13
import com.happinesea.webcrawler.repository.SiteContentsRepository;
14
import com.happinesea.webcrawler.repository.SiteInfoProcessRepository;
15

16
import jakarta.transaction.Transactional;
17
import lombok.extern.slf4j.Slf4j;
18

19
@Slf4j
1✔
20
@Service
21
public class SiteContentsService {
1✔
22
        @Autowired
23
        private SiteContentsRepository siteContentsRepository;
24
        @Autowired
25
        private SiteInfoProcessRepository siteInfoProcessRepository;
26

27
        public List<SiteInfoProcessPool> findAliveProcess() {
28
                return siteInfoProcessRepository.findByProcessStatusNot(ProcessStatus.PROCESSING);
1✔
29
        }
30

31
        @Transactional
32
        public SiteInfoProcessPool changSiteInfoProcess2Processing(SiteInfoProcessPool process) {
NEW
33
                process.setProcessStatus(ProcessStatus.PROCESSING);
×
NEW
34
                process.setProcessTime(LocalDateTime.now());
×
NEW
35
                return siteInfoProcessRepository.save(process);
×
36
        }
37

38
        @Transactional
39
        public SiteInfoProcessPool changSiteInfoProcess2Sucess(SiteInfoProcessPool process) {
NEW
40
                process.setProcessStatus(ProcessStatus.SUCCESS);
×
NEW
41
                process.setProcessTime(LocalDateTime.now());
×
NEW
42
                return siteInfoProcessRepository.save(process);
×
43

44
        }
45
        
46
        @Transactional
47
        public SiteInfoProcessPool changSiteInfoProcess2Fail(SiteInfoProcessPool process) {
NEW
48
                process.setProcessStatus(ProcessStatus.FAIL);
×
NEW
49
                process.setProcessTime(LocalDateTime.now());
×
NEW
50
                return siteInfoProcessRepository.save(process);
×
51

52
        }
53

54
        @Transactional
55
        public List<SiteInfoProcessPool> saveAllProcessPools(List<? extends SiteInfoProcessPool> pools) {
56

NEW
57
                List<SiteInfoProcessPool> result = new ArrayList<SiteInfoProcessPool>();
×
NEW
58
                for (SiteInfoProcessPool siteInfoProcessPool : pools) {
×
NEW
59
                        if (ProcessStatus.PROCESSING.equals(siteInfoProcessPool.getProcessStatus())) {
×
60
                                // TODO CMSにコンテンツ登録
NEW
61
                                log.debug("send cms  : " + result);
×
62
                                // 処理後、成功状態更新
NEW
63
                                result.add(changSiteInfoProcess2Sucess(siteInfoProcessPool));
×
64
                        }
NEW
65
                }
×
NEW
66
                return result;
×
67
        }
68

69
        /**
70
         * 重複しないデータだけを一括保存
71
         * 
72
         * @param newContents
73
         */
74
        @Transactional
75
        public List<SiteContents> bulkInsertIfNotExists(List<SiteContents> newContents) {
76
                // 1. URLリスト抽出
77
                List<String> urls = newContents.stream().map(SiteContents::getUrl).toList();
1✔
78

79
                // 2. 既存データ取得
80
                List<String> existingUrls = siteContentsRepository.findAllByUrlIn(urls).stream().map(SiteContents::getUrl)
1✔
81
                                .toList();
1✔
82

83
                // 3. 差分だけ抽出
84
                List<SiteContents> filtered = newContents.stream().filter(c -> !existingUrls.contains(c.getUrl())).toList();
1✔
85

86
                // 4. 一括保存 (saveAll → バルク insert)
87
                return siteContentsRepository.saveAll(filtered);
1✔
88
        }
89
}
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