Skip to content
Open
5 changes: 5 additions & 0 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,11 @@ android {
isIncludeAndroidResources = true
}
}

sourceSets {
getByName("test").kotlin.srcDir("src/testShared/java")
getByName("androidTest").kotlin.srcDir("src/testShared/java")
}
}

roborazzi {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,8 @@ class BrushDesignerViewModelTest {

viewModel.saveToPalette(brushName).join()

kotlinx.coroutines.delay(500)

val savedBrushes = customBrushDao.getAllCustomBrushes().first()
assertTrue(savedBrushes.any { it.name == brushName })
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ import com.example.cahier.core.navigation.DrawingCanvasDestination
import com.example.cahier.core.utils.FileHelper
import com.example.cahier.developer.brushdesigner.data.CustomBrushDao
import com.example.cahier.developer.brushdesigner.data.CustomBrushEntity
import com.example.cahier.developer.brushdesigner.data.FakeCustomBrushDao
import dagger.hilt.android.testing.HiltAndroidRule
import dagger.hilt.android.testing.HiltAndroidTest
import kotlinx.coroutines.Dispatchers
Expand Down Expand Up @@ -218,9 +219,3 @@ class DrawingCanvasViewModelTest {
)
}
}

private class FakeCustomBrushDao : CustomBrushDao {
override fun getAllCustomBrushes(): Flow<List<CustomBrushEntity>> = flowOf(emptyList())
override suspend fun saveCustomBrush(brush: CustomBrushEntity) {}
override suspend fun deleteCustomBrush(name: String) {}
}
25 changes: 25 additions & 0 deletions app/src/main/java/com/example/cahier/core/di/AppModule.kt
Original file line number Diff line number Diff line change
Expand Up @@ -28,17 +28,34 @@ import com.example.cahier.core.data.NotesRepository
import com.example.cahier.core.data.OfflineNotesRepository
import com.example.cahier.core.utils.FileHelper
import com.example.cahier.developer.brushdesigner.data.CustomBrushDao
import com.example.cahier.developer.brushgraph.data.BrushGraphRepository
import com.example.cahier.developer.brushgraph.data.DefaultBrushGraphRepository
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
import dagger.hilt.android.qualifiers.ApplicationContext
import dagger.hilt.components.SingletonComponent
import javax.inject.Singleton
import javax.inject.Qualifier
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.SupervisorJob

@Qualifier
@Retention(AnnotationRetention.BINARY)
annotation class ApplicationScope

@Module
@InstallIn(SingletonComponent::class)
object AppModule {

@Provides
@Singleton
@ApplicationScope
fun provideApplicationScope(): CoroutineScope {
return CoroutineScope(SupervisorJob() + Dispatchers.Default)
}

@Provides
@Singleton
fun provideNoteDatabase(@ApplicationContext context: Context): NoteDatabase {
Expand Down Expand Up @@ -77,4 +94,12 @@ object AppModule {
fun provideFileHelper(@ApplicationContext context: Context): FileHelper {
return FileHelper(context)
}

@Provides
@Singleton
fun provideBrushGraphRepository(
impl: DefaultBrushGraphRepository
): BrushGraphRepository {
return impl
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,15 @@ import androidx.room.OnConflictStrategy
import androidx.room.Query
import kotlinx.coroutines.flow.Flow

public const val AUTOSAVE_KEY = "__autosave__"

@Dao
interface CustomBrushDao {
@Query("SELECT * FROM custom_brushes")
fun getAllCustomBrushes(): Flow<List<CustomBrushEntity>>
@Query("SELECT * FROM custom_brushes WHERE name != :autosaveKey")
fun getAllCustomBrushes(autosaveKey: String = AUTOSAVE_KEY): Flow<List<CustomBrushEntity>>

@Query("SELECT * FROM custom_brushes WHERE name = :autosaveKey")
fun getAutoSaveBrush(autosaveKey: String = AUTOSAVE_KEY): Flow<CustomBrushEntity?>

@Insert(onConflict = OnConflictStrategy.REPLACE)
suspend fun saveCustomBrush(brush: CustomBrushEntity)
Expand Down
Loading