app: debug-only Hilt bindings of every :core:model interface to the fakes (temporary until M8)
Features' @HiltViewModel classes need bindings in :app's graph; until M8 binds :data, debug builds bind FakeRepositories(FakeScenarios.empty). Debug source set only; M8 deletes the file. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TQd3pEP9UeN2uifbHknQ7B
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
// Temporary until M8 binds :data; M8 deletes this file.
|
||||
package se.hagstedt.kvitt.debug
|
||||
|
||||
import dagger.Module
|
||||
import dagger.Provides
|
||||
import dagger.hilt.InstallIn
|
||||
import dagger.hilt.components.SingletonComponent
|
||||
import se.hagstedt.kvitt.fakes.FakeRepositories
|
||||
import se.hagstedt.kvitt.fakes.FakeScenarios
|
||||
import se.hagstedt.kvitt.model.AboutRepository
|
||||
import se.hagstedt.kvitt.model.AccountRepository
|
||||
import se.hagstedt.kvitt.model.AnalyticsRepository
|
||||
import se.hagstedt.kvitt.model.CategoryRepository
|
||||
import se.hagstedt.kvitt.model.ConnectivityRepository
|
||||
import se.hagstedt.kvitt.model.DeviceRepository
|
||||
import se.hagstedt.kvitt.model.ExpenseRepository
|
||||
import se.hagstedt.kvitt.model.HomeRepository
|
||||
import se.hagstedt.kvitt.model.InviteRepository
|
||||
import se.hagstedt.kvitt.model.ProfileRepository
|
||||
import se.hagstedt.kvitt.model.RecurringRepository
|
||||
import se.hagstedt.kvitt.model.SessionRepository
|
||||
import se.hagstedt.kvitt.model.SettlementRepository
|
||||
import se.hagstedt.kvitt.model.SyncRepository
|
||||
import se.hagstedt.kvitt.model.UpdateRepository
|
||||
import javax.inject.Singleton
|
||||
|
||||
/**
|
||||
* Debug builds only (src/debug): binds every `:core:model` repository interface of SPEC §14.2.4 to one set of fakes at
|
||||
* [FakeScenarios.empty], so the features' `@HiltViewModel`s have bindings in the debug graph before M8 binds `:data`.
|
||||
* Fakes never reach a release build: this source set and `debugImplementation(project(":core:fakes"))` are debug only.
|
||||
*/
|
||||
@Module
|
||||
@InstallIn(SingletonComponent::class)
|
||||
object DebugFakesModule {
|
||||
@Provides @Singleton
|
||||
fun fakes(): FakeRepositories = FakeRepositories(FakeScenarios.empty)
|
||||
|
||||
@Provides fun session(f: FakeRepositories): SessionRepository = f.session
|
||||
@Provides fun home(f: FakeRepositories): HomeRepository = f.home
|
||||
@Provides fun accounts(f: FakeRepositories): AccountRepository = f.accounts
|
||||
@Provides fun expenses(f: FakeRepositories): ExpenseRepository = f.expenses
|
||||
@Provides fun settlements(f: FakeRepositories): SettlementRepository = f.settlements
|
||||
@Provides fun analytics(f: FakeRepositories): AnalyticsRepository = f.analytics
|
||||
@Provides fun profile(f: FakeRepositories): ProfileRepository = f.profile
|
||||
@Provides fun categories(f: FakeRepositories): CategoryRepository = f.categories
|
||||
@Provides fun recurring(f: FakeRepositories): RecurringRepository = f.recurring
|
||||
@Provides fun devices(f: FakeRepositories): DeviceRepository = f.devices
|
||||
@Provides fun invites(f: FakeRepositories): InviteRepository = f.invites
|
||||
@Provides fun sync(f: FakeRepositories): SyncRepository = f.sync
|
||||
@Provides fun update(f: FakeRepositories): UpdateRepository = f.update
|
||||
@Provides fun about(f: FakeRepositories): AboutRepository = f.about
|
||||
@Provides fun connectivity(f: FakeRepositories): ConnectivityRepository = f.connectivity
|
||||
}
|
||||
Reference in New Issue
Block a user