Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
Original file line number Diff line number Diff line change
Expand Up @@ -543,15 +543,16 @@ internal fun Subcategory.displayName(): String = stringResource(
Subcategory.T_SHIRT -> R.string.subcategory_t_shirt
Subcategory.POLO -> R.string.subcategory_polo
Subcategory.DRESS_SHIRT -> R.string.subcategory_dress_shirt
Subcategory.LONG_SLEEVE_SHIRT -> R.string.subcategory_long_sleeve_shirt
Subcategory.HENLEY -> R.string.subcategory_henley
Subcategory.SWEATER -> R.string.subcategory_sweater
Subcategory.HOODIE -> R.string.subcategory_hoodie
Subcategory.JEANS -> R.string.subcategory_jeans
Subcategory.CHINOS -> R.string.subcategory_chinos
Subcategory.TAILORED_PANTS -> R.string.subcategory_tailored_pants
Subcategory.SHORTS -> R.string.subcategory_shorts
Subcategory.CARGO_PANTS -> R.string.subcategory_cargo_pants
Subcategory.SWEATPANTS -> R.string.subcategory_sweatpants
Subcategory.SWEATER -> R.string.subcategory_sweater
Subcategory.HOODIE -> R.string.subcategory_hoodie
Subcategory.BOMBER -> R.string.subcategory_bomber
Subcategory.TRUCKER -> R.string.subcategory_trucker
Subcategory.PUFFER -> R.string.subcategory_puffer
Expand Down
5 changes: 3 additions & 2 deletions composeApp/src/main/res/values-pt-rBR/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -233,15 +233,16 @@
<string name="subcategory_t_shirt">Camiseta</string>
<string name="subcategory_polo">Polo</string>
<string name="subcategory_dress_shirt">Camisa social</string>
<string name="subcategory_long_sleeve_shirt">Camisa manga longa</string>
<string name="subcategory_henley">Henley</string>
<string name="subcategory_sweater">Suéter</string>
<string name="subcategory_hoodie">Moletom</string>
<string name="subcategory_jeans">Jeans</string>
<string name="subcategory_chinos">Chinos</string>
<string name="subcategory_tailored_pants">Calça social</string>
<string name="subcategory_shorts">Bermuda</string>
<string name="subcategory_cargo_pants">Calça cargo</string>
<string name="subcategory_sweatpants">Calça de moletom</string>
<string name="subcategory_sweater">Suéter</string>
<string name="subcategory_hoodie">Moletom</string>
<string name="subcategory_bomber">Bomber</string>
<string name="subcategory_trucker">Trucker</string>
<string name="subcategory_puffer">Puffer</string>
Expand Down
5 changes: 3 additions & 2 deletions composeApp/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -233,15 +233,16 @@
<string name="subcategory_t_shirt">T shirt</string>
<string name="subcategory_polo">Polo</string>
<string name="subcategory_dress_shirt">Dress shirt</string>
<string name="subcategory_long_sleeve_shirt">Long sleeve shirt</string>
<string name="subcategory_henley">Henley</string>
<string name="subcategory_sweater">Sweater</string>
<string name="subcategory_hoodie">Hoodie</string>
<string name="subcategory_jeans">Jeans</string>
<string name="subcategory_chinos">Chinos</string>
<string name="subcategory_tailored_pants">Tailored pants</string>
<string name="subcategory_shorts">Shorts</string>
<string name="subcategory_cargo_pants">Cargo pants</string>
<string name="subcategory_sweatpants">Sweatpants</string>
<string name="subcategory_sweater">Sweater</string>
<string name="subcategory_hoodie">Hoodie</string>
<string name="subcategory_bomber">Bomber</string>
<string name="subcategory_trucker">Trucker</string>
<string name="subcategory_puffer">Puffer</string>
Expand Down
5 changes: 3 additions & 2 deletions iosApp/iosApp/en.lproj/Localizable.strings
Original file line number Diff line number Diff line change
Expand Up @@ -230,15 +230,16 @@
"subcategory_t_shirt" = "T shirt";
"subcategory_polo" = "Polo";
"subcategory_dress_shirt" = "Dress shirt";
"subcategory_long_sleeve_shirt" = "Long sleeve shirt";
"subcategory_henley" = "Henley";
"subcategory_sweater" = "Sweater";
"subcategory_hoodie" = "Hoodie";
"subcategory_jeans" = "Jeans";
"subcategory_chinos" = "Chinos";
"subcategory_tailored_pants" = "Tailored pants";
"subcategory_shorts" = "Shorts";
"subcategory_cargo_pants" = "Cargo pants";
"subcategory_sweatpants" = "Sweatpants";
"subcategory_sweater" = "Sweater";
"subcategory_hoodie" = "Hoodie";
"subcategory_bomber" = "Bomber";
"subcategory_trucker" = "Trucker";
"subcategory_puffer" = "Puffer";
Expand Down
5 changes: 3 additions & 2 deletions iosApp/iosApp/pt-BR.lproj/Localizable.strings
Original file line number Diff line number Diff line change
Expand Up @@ -230,15 +230,16 @@
"subcategory_t_shirt" = "Camiseta";
"subcategory_polo" = "Polo";
"subcategory_dress_shirt" = "Camisa social";
"subcategory_long_sleeve_shirt" = "Camisa manga longa";
"subcategory_henley" = "Henley";
"subcategory_sweater" = "Suéter";
"subcategory_hoodie" = "Moletom";
"subcategory_jeans" = "Jeans";
"subcategory_chinos" = "Chinos";
"subcategory_tailored_pants" = "Calça social";
"subcategory_shorts" = "Bermuda";
"subcategory_cargo_pants" = "Calça cargo";
"subcategory_sweatpants" = "Calça de moletom";
"subcategory_sweater" = "Suéter";
"subcategory_hoodie" = "Moletom";
"subcategory_bomber" = "Bomber";
"subcategory_trucker" = "Trucker";
"subcategory_puffer" = "Puffer";
Expand Down
2 changes: 1 addition & 1 deletion shared/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ sqldelight {
databases {
create("WardrobeDatabase") {
packageName.set("com.github.worn.data.source.local.db")
version = 2
version = 3
srcDirs("src/commonMain/sqldelight")
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ internal object AiPrompts {
}
}

private const val SUBCATEGORY_VALUES = "T_SHIRT, POLO, DRESS_SHIRT, HENLEY, SWEATER, HOODIE, " +
"JEANS, CHINOS, TAILORED_PANTS, SHORTS, CARGO_PANTS, SWEATPANTS, BOMBER, TRUCKER, PUFFER, " +
"BLAZER, COAT, WINDBREAKER, SNEAKERS, BOOTS_MILITARY, BOOTS_CHELSEA, DERBY, OXFORD, LOAFER, " +
"SANDALS, WATCH, BELT, SUNGLASSES, HAT_CAP, SCARF, BAG_BACKPACK"
private const val SUBCATEGORY_VALUES = "T_SHIRT, POLO, DRESS_SHIRT, LONG_SLEEVE_SHIRT, HENLEY, " +
"JEANS, CHINOS, TAILORED_PANTS, SHORTS, CARGO_PANTS, SWEATPANTS, SWEATER, HOODIE, BOMBER, " +
"TRUCKER, PUFFER, BLAZER, COAT, WINDBREAKER, SNEAKERS, BOOTS_MILITARY, BOOTS_CHELSEA, DERBY, " +
"OXFORD, LOAFER, SANDALS, WATCH, BELT, SUNGLASSES, HAT_CAP, SCARF, BAG_BACKPACK"
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,8 @@ enum class Subcategory {
T_SHIRT,
POLO,
DRESS_SHIRT,
LONG_SLEEVE_SHIRT,
HENLEY,
SWEATER,
HOODIE,

// BOTTOM
JEANS,
Expand All @@ -18,6 +17,8 @@ enum class Subcategory {
SWEATPANTS,

// OUTERWEAR
SWEATER,
HOODIE,
BOMBER,
TRUCKER,
PUFFER,
Expand Down Expand Up @@ -48,9 +49,8 @@ fun subcategoriesFor(category: Category): List<Subcategory> = when (category) {
Subcategory.T_SHIRT,
Subcategory.POLO,
Subcategory.DRESS_SHIRT,
Subcategory.LONG_SLEEVE_SHIRT,
Subcategory.HENLEY,
Subcategory.SWEATER,
Subcategory.HOODIE,
)
Category.BOTTOM -> listOf(
Subcategory.JEANS,
Expand All @@ -61,6 +61,8 @@ fun subcategoriesFor(category: Category): List<Subcategory> = when (category) {
Subcategory.SWEATPANTS,
)
Category.OUTERWEAR -> listOf(
Subcategory.SWEATER,
Subcategory.HOODIE,
Subcategory.BOMBER,
Subcategory.TRUCKER,
Subcategory.PUFFER,
Expand Down
1 change: 1 addition & 0 deletions shared/src/commonMain/sqldelight/migrations/2.sqm
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
UPDATE clothingItem SET category = 'OUTERWEAR' WHERE subcategory IN ('HOODIE', 'SWEATER');
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package com.github.worn.model

import com.github.worn.domain.model.Category
import com.github.worn.domain.model.Subcategory
import com.github.worn.domain.model.capsuleWardrobeSuggestions
import com.github.worn.domain.model.subcategoriesFor
import kotlin.test.Test
import kotlin.test.assertEquals
import kotlin.test.assertTrue

class SubcategoryTest {

@Test
fun `every subcategory belongs to exactly one category`() {
val mapped = Category.entries.flatMap { subcategoriesFor(it) }

assertEquals(mapped.size, mapped.toSet().size, "a subcategory is listed under more than one category")
assertEquals(Subcategory.entries.toSet(), mapped.toSet(), "a subcategory is missing from subcategoriesFor()")
}

@Test
fun `hoodie and sweater are outerwear`() {
val outerwear = subcategoriesFor(Category.OUTERWEAR)

assertTrue(Subcategory.HOODIE in outerwear)
assertTrue(Subcategory.SWEATER in outerwear)
}

@Test
fun `capsule wardrobe suggestions pair each subcategory with its own category`() {
capsuleWardrobeSuggestions.forEach { suggestion ->
val subcategory = suggestion.subcategory ?: return@forEach
assertTrue(
subcategory in subcategoriesFor(suggestion.mappedCategory),
"${suggestion.itemName}: $subcategory is not a ${suggestion.mappedCategory} subcategory",
)
}
}
}
Loading