Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
117 commits
Select commit Hold shift + click to select a range
24f1e21
[REMOVE/#222] Dummy 데이터 제거
DongChyeon Jun 8, 2025
8c7b586
[REFACTOR/#222] UserPreferences 직접 접근 제거 및 repository 경유 구조로 개선
DongChyeon Jun 10, 2025
3adec81
[REMOVE/#222] 사용하지 않는 토큰 관련 코드 제거
DongChyeon Jun 10, 2025
79af3d3
[REFACTOR/#222] AlarmHelper를 AndroidAlarmScheduler로 이름 변경 및 domain 레이…
DongChyeon Jun 22, 2025
cf79340
[REMOVE/#222] core:network 모듈 core:datastore 종속성 제거
DongChyeon Jun 22, 2025
d00912f
[REFACTOR/#222] feature:navigator 모듈 삭제 및 app 모듈에 권한 위임
DongChyeon Jun 22, 2025
3ac3caf
[REFACTOR/#222] AlarmModule을 abstract class로 변경하여 @Provides와 @Binds를 …
DongChyeon Jun 23, 2025
6ecb05c
[REFACTOR/#222] UserLocalDataSource 관심사별로 분리 및 repository 구현체를 reposi…
DongChyeon Jun 24, 2025
f17c151
Merge pull request #223 from YAPP-Github/refactor/#222-module-depende…
DongChyeon Jun 24, 2025
d71b839
[ADD/#224] dependency 수정 및 추가: junit4, mockk, jacoco
MoonsuKang Jun 24, 2025
2394183
[ADD/#224] feature 모듈에만 Compose UI 테스트 의존성 설정 적용
MoonsuKang Jun 24, 2025
f9b625c
[FIX/#224] Junit4 의존성만 설정
MoonsuKang Jun 24, 2025
66960b2
[FIX/#224] Jacoco 기반 커버리지 측정 설정 및 리포트 생성 Task 추가
MoonsuKang Jun 24, 2025
dc9cff1
[ADD/#224] 테스트 및 커버리지 설정 함수 등록
MoonsuKang Jun 24, 2025
f839f43
[ADD/#224] 유닛 테스트 및 커버리지 리포트 생성 추가
MoonsuKang Jun 24, 2025
1a588b6
[ADD/#224] Data Layer 샘플 테스트 코드 추가
MoonsuKang Jun 24, 2025
31d921f
[ADD/#224] kotlin refelect 의존성 추가
MoonsuKang Jun 24, 2025
a10459f
[REFACTOR/#224] 중복 코드 제거 및 코드 정리
MoonsuKang Jun 24, 2025
a256232
[REFACTOR/#224] 커버리지 리포트 업로드 형식으로 수정
MoonsuKang Jun 24, 2025
2e63d35
Merge pull request #225 from YAPP-Github/feat/#224-junit-setting
MoonsuKang Jun 25, 2025
bfaa787
[FEAT/#227] AlarmEntity missionType(enum-int), missionCount column 추가
DongChyeon Jul 7, 2025
b5d85a5
[FEAT/#227] 변경된 missionType(enum-int) 에 따른 수정
DongChyeon Jul 7, 2025
6bbf6dc
[FEAT/#227] core:database 분리
DongChyeon Jul 7, 2025
e04fc63
[FEAT/#227] DatabaseMigration 정의
DongChyeon Jul 7, 2025
be11d14
[FEAT/#227] 이미지 저장 기능 core:media 모듈로 이전
DongChyeon Jul 7, 2025
4d82cd4
[REFACTOR/#227] ApiCallUtils, ApiError을 core:network 모듈로 이전
DongChyeon Jul 7, 2025
f4c12b3
[REFACTOR/#227] safeApiCall try-catch 구조로 리팩토링 및 CancellationExceptio…
DongChyeon Jul 7, 2025
9efdcaf
[CHORE/#227] 사용하지 않는 라이브러리 제거 및 room-testing 라이브러리 추가
DongChyeon Jul 7, 2025
1a60d25
[CHORE/#227] 테스트 설정 함수 분리 및 JUnit Android 설정 통합
DongChyeon Jul 7, 2025
3e42d61
[FEAT/#227] Room Migration 1->2 테스트 코드 추가
DongChyeon Jul 7, 2025
d672725
[CHORE/#228] CodeRabbit 설정
DongChyeon Jul 7, 2025
911f9c4
Merge pull request #229 from YAPP-Github/setting/#228-coderabbit-setup
DongChyeon Jul 7, 2025
bb07d3c
[CHORE/#227] api -> implementation 의존성 수정
DongChyeon Jul 7, 2025
f8f4a4b
[FEAT/#227] MissionTypeConverter에서 잘못된 missionType 문자열 파싱
DongChyeon Jul 7, 2025
e69cd5f
[FIX/#227] return 구문 중첩 오류 수정 및 메소드명 수정
DongChyeon Jul 7, 2025
046dff7
[FIX/#227] MissionTypeConverter Int <-> MissionType 변환으로 수정
DongChyeon Jul 12, 2025
67455bd
[RENAME/#227] 마이그레이션 테스트 함수 이름 변경
DongChyeon Jul 12, 2025
074b725
Merge pull request #230 from YAPP-Github/feat/#227-alarm-db-migration…
DongChyeon Jul 12, 2025
a077610
[REFACTOR/#231] SplashViewModel을 ContainerHost 기반으로 리팩토링
DongChyeon Jul 9, 2025
0f29771
[REFACTOR/#231] OnboardingViewModel을 ContainerHost 기반으로 리팩토링
DongChyeon Jul 9, 2025
1c3239f
[REFACTOR/#231] AlarmAddEditViewModel을 ContainerHost 기반으로 리팩토링
DongChyeon Jul 9, 2025
ca8f143
[REFACTOR/#231] handleSideEffect 위치를 Route 바로 아래로 이동하여 구조 가독성 개선
DongChyeon Jul 9, 2025
ad83ccd
[REFACTOR/#231] HomeViewModel을 ContainerHost 기반으로 리팩토링
DongChyeon Jul 9, 2025
61c6bf7
[REFACTOR/#231] SettingViewModel을 ContainerHost 기반으로 리팩토링
DongChyeon Jul 9, 2025
53034c6
[REFACTOR/#231] EditProfileViewModel을 ContainerHost 기반으로 리팩토링
DongChyeon Jul 9, 2025
8686872
[REFACTOR/#231] AlarmActionViewModel을 ContainerHost 기반으로 리팩토링
DongChyeon Jul 9, 2025
742d645
[REFACTOR/#231] AlarmSnoozeTimerViewModel을 ContainerHost 기반으로 리팩토링
DongChyeon Jul 9, 2025
99194cc
[REFACTOR/#231] FortuneViewModel을 ContainerHost 기반으로 리팩토링
DongChyeon Jul 9, 2025
9659795
[REFACTOR/#231] MissionViewModel을 ContainerHost 기반으로 리팩토링
DongChyeon Jul 9, 2025
92e1dec
[REMOVE/#231] BaseViewModel 제거
DongChyeon Jul 9, 2025
4fbdeb2
[RENAME/#231] onAction -> processAction
DongChyeon Jul 12, 2025
deb5b4d
[FIX/#231] 운세 재요청 실패 시 홈화면 이동
DongChyeon Jul 12, 2025
c5ff196
[REFACTOR/#231] 중첩 runCatching 제거 및 중복 코드 제거
DongChyeon Jul 12, 2025
04fb29d
[REFACTOR/#231] intent 내에서 processAction 호출 제거
DongChyeon Jul 12, 2025
e0ba516
Merge pull request #232 from YAPP-Github/refactor/#231-remove-basevie…
DongChyeon Jul 14, 2025
bdbf213
[UI/#226] OrbitPicker 사이즈 축소
DongChyeon Jul 14, 2025
3705c85
[UI/#226] 미션 선택 섹션 추가
DongChyeon Jul 14, 2025
0d281bd
[REFACTOR/#226] Type 안정성과 재사용성을 위해 PickeState를 generic으로 처리
DongChyeon Jul 14, 2025
1b3a951
[FEAT/#226] 미션 종류에 없음 추가
DongChyeon Jul 15, 2025
e6b9872
[REMOVE/#226] JUnit4를 사용하므로 useJUnitPlatform 제거
DongChyeon Jul 15, 2025
7474871
[FEAT/#226] AlarmEntity isAm 컬럼 제거
DongChyeon Jul 15, 2025
153cca5
[FEAT/#226] OrbitPicker가 java.time.LocalTime을 사용하도록 수정
DongChyeon Jul 15, 2025
aa761ec
[FEAT/#226] 알람 시간 표현을 LocalTime으로 통일
DongChyeon Jul 15, 2025
1826d1e
[FEAT/#226] 미션 타입이 NONE일 때 처리 추가
DongChyeon Jul 15, 2025
5c58962
[REMOVE/#226] 사용하지 않는 DB 연산 제거
DongChyeon Jul 15, 2025
ec9ab8b
[FEAT/#226] AlarmDateTimeFormatter에 알람 시간 계산 로직 위임
DongChyeon Jul 16, 2025
790faf6
[TEST/#226] AlarmDateTimeFormatter 테스트 코드 추가
DongChyeon Jul 16, 2025
2fcbf39
[REFACTOR/#226] AlarmScheduler를 UseCase를 통해 사용하도록 변경
DongChyeon Jul 16, 2025
b258571
[REFACTOR/#226] 알람 시간 계산 로직을 AlarmTimeCalculator로 분리
DongChyeon Jul 16, 2025
a68c962
[FIX/#226] 알람 스케줄링 시 공휴일 건너뛰기 여부에 따라 건너뛰도록 수정
DongChyeon Jul 16, 2025
d28a2ef
[TEST/#226] AlarmTimeCalculator 테스트 코드 추가
DongChyeon Jul 16, 2025
5587818
[FEAT/#226] AlarmEntity 관련 매핑 함수에 missionType과 missionCount 필드 추가
DongChyeon Jul 16, 2025
e3eea36
[FEAT/#226] MIGRATION_1_2 로직에 isAm 컬럼에 따른 시간 변환 로직 추가
DongChyeon Jul 16, 2025
955f467
[REFACTOR/#226] AlarmDateTimeFormatter 상수 정의 및 로그 제거
DongChyeon Jul 16, 2025
28d7e10
[FEAT/#226] 데이터베이스 마이그레이션 로직에 롤백 보장을 위한 트랜잭션 적용
DongChyeon Jul 16, 2025
05f5150
[TEST/#226] 12시간제에서 24시간제로 시간 변환 검증 테스트 추가
DongChyeon Jul 16, 2025
152b993
[REFACTOR/#226] 반복 알람 요일이 비어있을 경우 예외 발생하도록 검증 로직 변경
DongChyeon Jul 16, 2025
f392798
[REFACTOR/#226] 반복 알람 로직에서 잘못된 fallback 제거 및 명시적 예외 처리
DongChyeon Jul 16, 2025
bb9f921
[TEST/#226] AlarmDateTimeFormatterTest에 Clock 주입 적용하여 CI 환경 시간 오류 방지
DongChyeon Jul 16, 2025
a72dfae
[FIX/#226] ClockModule 생성 및 의존성 주입
DongChyeon Jul 16, 2025
8bbaea0
[REFACTOR/#226] AlarmDateTimeFormatter :feature:home 모듈로 이전
DongChyeon Jul 17, 2025
b114a1d
[MOVE/#226] 홈 모듈 내 알람 관련 파일 com.yapp.alarm 패키지로 이동
DongChyeon Jul 17, 2025
ecb5d2a
[MOVE/#226] ClockModule을 common 모듈로 이동
DongChyeon Jul 17, 2025
acf0c82
[TEST/#226] AlarmDateTimeFormatter 테스트용 Locale 사용
DongChyeon Jul 17, 2025
fc1702b
[FEAT/#226] AlarmDateTimeFormatter 예외 발생 시 로그 추가
DongChyeon Jul 17, 2025
06107dd
[REFACTOR/#226] formatTimeDifference 중복 검사 로직 제거
DongChyeon Jul 17, 2025
36bcb48
[FEAT/#226] AlarmDateTimeFormatter 테스트 용이성을 위한 Locale 주입
DongChyeon Jul 17, 2025
57d2da9
[FEAT/#226] 의존성 그래프 모듈 유형별 색상 구분
DongChyeon Jul 17, 2025
c5f3202
[REFACTOR/#226] given/when/then 분리
DongChyeon Jul 17, 2025
8ce6247
[CHORE/#227] Jacoco 리포트를 Codecov에 업로드하도록 수정
MoonsuKang Jul 20, 2025
d9cb6aa
[ADD/#227] Jacoco XML 리포트 생성 활성화
MoonsuKang Jul 20, 2025
1b958ab
[MOD/#227] CI 워크플로우에 Codecov 토큰 추가
MoonsuKang Jul 20, 2025
6a56222
[ADD/#227] Codecov 설정 파일 추가
MoonsuKang Jul 20, 2025
1f10398
[MOD/#227] 커버리지 리포트 PR 자동 코멘트 기능 삭제
MoonsuKang Jul 20, 2025
f63bce9
[FEAT/#226] MigrationTest에서 db를 닫기 위해 close 호출
DongChyeon Jul 21, 2025
d38d230
[REFACTOR/#226] AlarmDateTimeFormatter 코드 가독성 개선
DongChyeon Jul 21, 2025
43fffda
[UI/#226] 미션 추가 바텀시트
DongChyeon Jul 21, 2025
446345e
[UI/#226] 미션 선택 바텀시트
DongChyeon Jul 21, 2025
78f6461
[REFACTOR/#226] SelectorItems 공통 컴포넌트로 분리
DongChyeon Jul 21, 2025
f3df6b2
[UI/#226] 미션 횟수 설정 바텀시트
DongChyeon Jul 21, 2025
01e4d57
[UI/#226] 미션 설정 바텀시트
DongChyeon Jul 23, 2025
e07b2af
[FEAT/#26] 미션 타입, 횟수, 단계 상태 Composable 내에서 관리
DongChyeon Jul 23, 2025
8895489
[REFACTOR/#226] AlarmMissionSelectBottomSheet 문자열 리소스 작업
DongChyeon Jul 23, 2025
8538fc9
[REFACTOR/#226] 미션 선택 바텀시트 OrbitButton으로 교체 및 중복 코드 제거
DongChyeon Jul 23, 2025
d1c44c8
[FEAT/#226] 알람 미션 설정 기능 구현
DongChyeon Jul 23, 2025
49e4a47
[FIX/#226] AlarmListItem 24시간제 기준으로 시간 변환 로직 수정
DongChyeon Jul 23, 2025
512082d
[FEAT/#226] 미션 타입 및 횟수 동적 설정 기능 추가
DongChyeon Jul 23, 2025
94338cb
[UI/#226] OrbitButton fillMaxWidth 여부 설정 가능하도록 수정
DongChyeon Jul 23, 2025
c98fbcd
[FIX/#226] 미션 카운트가 10 이상일 때 플립 카드 애니메이션이 동작하지 않는 버그 수정
DongChyeon Jul 23, 2025
991743e
[FIX/#226] 미션 화면 테스트용 주석 제거
DongChyeon Jul 23, 2025
6215002
[UI/#226] 버튼 터치 영역 수정
DongChyeon Jul 23, 2025
69aa808
[REFACTOR/#235] 미션 종류에 따른 로직 통합
DongChyeon Jul 23, 2025
e424de0
[FEAT/#235] 미션 미리보기 기능 추가
DongChyeon Jul 23, 2025
3bc0eaa
[FEAT/#235] 알람 설정 화면 미션 미리보기 기능 연결
DongChyeon Jul 23, 2025
8c80112
[REFACTOR/#235] 미션 화면 문자열 리소스 작업
DongChyeon Jul 23, 2025
09b4762
[REFACTOR/#235] MissionMode enum 클래스를 domain 레이어로 이동
DongChyeon Jul 27, 2025
a214096
[FIX/#235] 미션 미리보기 이동 시 시간 설정 상태 보존
DongChyeon Jul 27, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions .codecov.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
coverage:
status:
project:
default:
target: 60%
threshold: 2%

comment:
layout: "reach, diff, flags, files"
behavior: default
require_changes: true

parsers:
gcov:
branch_detection:
conditional: true
loop: true
method: true
macro: true

ignore:
- "**/di/**"
- "**/BuildConfig.*"
- "**/generated/**"
19 changes: 19 additions & 0 deletions .coderabbit.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json
language: "ko-KR"
early_access: false
reviews:
profile: "chill"
request_changes_workflow: false
high_level_summary: true
poem: false
review_status: true
collapse_walkthrough: false
abort_on_close: true
auto_review:
enabled: true
drafts: false
finishing_touches:
unit_tests:
enabled: true
chat:
auto_reply: true
13 changes: 13 additions & 0 deletions .github/workflows/android_ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -80,3 +80,16 @@ jobs:
# Run Lint and Build
- name: Run lint and build
run: ./gradlew ktlintCheck assembleDebug

# Run Unit Test and Generate Coverage
- name: Run unit tests and generate coverage
run: ./gradlew generateTestCoverageReport

# Upload Coverage to Codecov
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v4
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: data/build/reports/jacoco/testDebugUnitTestCoverage/testDebugUnitTestCoverage.xml
name: codecov-report
fail_ci_if_error: true
7 changes: 6 additions & 1 deletion app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -29,22 +29,27 @@ android {

dependencies {
implementation(projects.core.common)
implementation(projects.core.analytics)
implementation(projects.core.buildconfig)
implementation(projects.core.network)
implementation(projects.core.designsystem)
implementation(projects.core.datastore)
implementation(projects.core.alarm)
implementation(projects.core.media)
implementation(projects.core.ui)
implementation(projects.data)
implementation(projects.domain)
implementation(projects.feature.splash)
implementation(projects.feature.onboarding)
implementation(projects.feature.home)
implementation(projects.feature.alarmInteraction)
implementation(projects.feature.fortune)
implementation(projects.feature.mission)
implementation(projects.feature.setting)
implementation(projects.feature.navigator)
implementation(projects.feature.webview)
implementation(platform(libs.firebase.bom))
implementation(libs.firebase.analytics)
implementation(libs.firebase.crashlytics)
implementation(libs.play.services.ads)
implementation(libs.kotlin.reflect)
}
2 changes: 1 addition & 1 deletion app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
android:value="@string/admob_app_id" />

<activity
android:name="com.yapp.navigator.MainActivity"
android:name="com.yapp.orbit.MainActivity"
android:windowSoftInputMode="adjustResize"
android:exported="true"
android:label="@string/app_name"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.yapp.navigator
package com.yapp.orbit

import android.annotation.SuppressLint
import android.content.pm.ActivityInfo
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.yapp.navigator
package com.yapp.orbit

import android.annotation.SuppressLint
import androidx.compose.animation.AnimatedVisibility
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ internal fun Project.configureComposeAndroid() {
val bom = libs.findLibrary("compose.bom").get()
add("implementation", platform(bom))

add("implementation", libs.findLibrary("activity.compose").get())

add("implementation", libs.findLibrary("compose.material3").get())
add("implementation", libs.findLibrary("compose.ui").get())
add("implementation", libs.findLibrary("compose.ui.tooling.preview").get())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ internal fun Project.configureHiltAndroid() {
dependencies {
"implementation"(libs.findLibrary("hilt.android").get())
"ksp"(libs.findLibrary("hilt.android.compiler").get())
"implementation"(libs.findLibrary("hilt-navigation-compose").get())
}
}

Expand Down
21 changes: 19 additions & 2 deletions build-logic/src/main/java/com/yapp/convention/TestAndroid.kt
Original file line number Diff line number Diff line change
@@ -1,16 +1,33 @@
package com.yapp.convention

import org.gradle.api.Project
import org.gradle.kotlin.dsl.dependencies

internal fun Project.configureTestAndroid() {
configureJUnitAndroid()
// feature 모듈에만 UI 테스트 관련 설정 적용
if (path.startsWith(":feature:")) {
configureComposeUiTest()
}
}

internal fun Project.configureComposeUiTest() {
val libs = extensions.libs
dependencies {
"androidTestImplementation"(libs.findLibrary("compose-ui-test-junit4").get())
"debugImplementation"(libs.findLibrary("compose-ui-test-manifest").get())
}
}

@Suppress("UnstableApiUsage")
internal fun Project.configureJUnitAndroid() {
androidExtension.apply {
testOptions {
unitTests.all { it.useJUnitPlatform() }
defaultConfig { testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" }

val libs = extensions.libs
dependencies {
"androidTestImplementation"(libs.findLibrary("androidx-test-ext-junit").get())
"androidTestImplementation"(libs.findLibrary("androidx-test-runner").get())
}
}
}
58 changes: 58 additions & 0 deletions build-logic/src/main/java/com/yapp/convention/TestCoverage.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
package com.yapp.convention

import com.android.build.api.dsl.ApplicationExtension
import com.android.build.api.dsl.LibraryExtension
import org.gradle.api.Project
import org.gradle.api.tasks.testing.Test
import org.gradle.kotlin.dsl.configure
import org.gradle.kotlin.dsl.withType
import org.gradle.testing.jacoco.plugins.JacocoPluginExtension
import org.gradle.testing.jacoco.plugins.JacocoTaskExtension
import org.gradle.testing.jacoco.tasks.JacocoReport

internal fun Project.configureTestCoverage() {
pluginManager.apply("jacoco")

val libs = extensions.libs
extensions.configure<JacocoPluginExtension> {
toolVersion = libs.findVersion("jacoco").get().toString()
}

// 모든 유닛 테스트에 Jacoco 설정 적용
tasks.withType<Test>().configureEach {
extensions.configure<JacocoTaskExtension> {
isIncludeNoLocationClasses = true
excludes = listOf("jdk.internal.*")
}
}

// Android 모듈이면 커버리지 설정 추가
extensions.findByType(ApplicationExtension::class.java)?.buildTypes?.configureEach {
enableUnitTestCoverage = true
}

extensions.findByType(LibraryExtension::class.java)?.buildTypes?.configureEach {
enableUnitTestCoverage = true
}

// 커버리지 리포트 Task 등록
tasks.register("generateTestCoverageReport") {
group = "verification"
description = "Run unit tests and generate coverage report."

dependsOn("testDebugUnitTest")
dependsOn("createDebugUnitTestCoverageReport")
}

// .exec 파일 없을 경우 createDebugUnitTestCoverageReport task 스킵
tasks.matching { it.name == "createDebugUnitTestCoverageReport" }.configureEach {
onlyIf {
val execFile = layout.buildDirectory
.file("outputs/unit_test_code_coverage/debugUnitTest/testDebugUnitTest.exec")
.get().asFile
execFile.exists()
}

(this as? JacocoReport)?.reports?.xml?.required?.set(true)
}
}
17 changes: 5 additions & 12 deletions build-logic/src/main/java/com/yapp/convention/TestKotlin.kt
Original file line number Diff line number Diff line change
@@ -1,23 +1,16 @@
package com.yapp.convention

import org.gradle.api.Project
import org.gradle.api.tasks.testing.Test
import org.gradle.kotlin.dsl.dependencies
import org.gradle.kotlin.dsl.withType

internal fun Project.configureTest() {
configureJUnit()
internal fun Project.configureTestKotlin() {
val libs = extensions.libs
dependencies {
// JUnit4 단위 테스트 프레임워크
"testImplementation"(libs.findLibrary("junit4").get())
"testImplementation"(libs.findLibrary("junit-jupiter").get())
"testImplementation"(libs.findLibrary("coroutines-test").get())
// 코루틴 관련 테스트 도구 (TestCoroutineScope, runTest 등..)
"testImplementation"(libs.findLibrary("kotlinx-coroutines-test").get())
// Kotlin 기반 mock 객체 생성, 행위 검증
"testImplementation"(libs.findLibrary("mockk").get())
}
}

internal fun Project.configureJUnit() {
tasks.withType<Test>().configureEach {
useJUnitPlatform()
}
}
7 changes: 0 additions & 7 deletions build-logic/src/main/java/orbit.android.feature.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -6,20 +6,13 @@ plugins {
id("orbit.android.compose")
}

android {
defaultConfig {
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}
}

configureHiltAndroid()

dependencies {
implementation(project(":core:designsystem"))
implementation(project(":core:ui"))

val libs = project.extensions.libs
implementation(libs.findLibrary("hilt-navigation-compose").get())
implementation(libs.findLibrary("compose-navigation").get())
implementation(libs.findLibrary("lifecycle-viewmodel").get())
implementation(libs.findLibrary("lifecycle-runtime").get())
Expand Down
6 changes: 6 additions & 0 deletions build-logic/src/main/java/orbit.android.library.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
import com.yapp.convention.configureCoroutine
import com.yapp.convention.configureHiltAndroid
import com.yapp.convention.configureKotlinAndroid
import com.yapp.convention.configureTestAndroid
import com.yapp.convention.configureTestCoverage
import com.yapp.convention.configureTestKotlin

plugins {
id("com.android.library")
Expand All @@ -9,3 +12,6 @@ plugins {
configureKotlinAndroid()
configureCoroutine()
configureHiltAndroid()
configureTestAndroid()
configureTestKotlin()
configureTestCoverage()
2 changes: 1 addition & 1 deletion build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,12 @@ plugins {
alias(libs.plugins.kotlin.jvm) apply false
alias(libs.plugins.kotlin.serialization) apply false
alias(libs.plugins.ksp) apply false
alias(libs.plugins.room) apply false
alias(libs.plugins.hilt) apply false
alias(libs.plugins.compose.compiler) apply false
alias(libs.plugins.google.service) apply false
alias(libs.plugins.firebase.app.distribution) apply false
alias(libs.plugins.firebase.crashlytics) apply false
// alias(libs.plugins.sentry) apply false
}

apply {
Expand Down
2 changes: 1 addition & 1 deletion core/alarm/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ android {

dependencies {
implementation(projects.core.analytics)
implementation(projects.core.datastore)
implementation(projects.core.common)
implementation(projects.core.designsystem)
implementation(projects.core.media)
implementation(projects.domain)
Expand Down
2 changes: 0 additions & 2 deletions core/alarm/src/main/java/com/yapp/alarm/AlarmConstants.kt
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,6 @@ object AlarmConstants {

const val SNOOZE_ID_OFFSET = 10000

const val WEEK_INTERVAL_MILLIS: Long = 7 * 24 * 60 * 60 * 1000

val HOLIDAYS_2025 = setOf(
"2025-01-01", "2025-01-27", "2025-01-28", "2025-01-29", "2025-01-30",
"2025-03-01", "2025-03-03", "2025-05-05", "2025-05-06", "2025-06-06",
Expand Down
Loading