test(app): add geocoding and restaurant card coverage

This commit is contained in:
JiWoong Sul
2025-11-26 19:16:27 +09:00
parent 0e8c06bade
commit d05e378569
3 changed files with 158 additions and 4 deletions

View File

@@ -177,7 +177,7 @@ void main() {
Restaurant(
id: '1',
name: '김치찌개',
category: 'korean',
category: '한식',
subCategory: '한식',
roadAddress: '서울시',
jibunAddress: '서울시',
@@ -190,7 +190,7 @@ void main() {
Restaurant(
id: '2',
name: '스시',
category: 'japanese',
category: '일식',
subCategory: '일식',
roadAddress: '서울시',
jibunAddress: '서울시',
@@ -208,10 +208,14 @@ void main() {
// Act - 카테고리 필터 설정
container.read(selectedCategoryProvider.notifier).state = '한식';
container.read(searchQueryProvider.notifier).state = '김치';
final filtered = await container.read(
filteredRestaurantsProvider.future,
);
// Assert
// filteredRestaurantsProvider는 StreamProvider이므로 실제 테스트에서는
// 비동기 처리가 필요함
expect(filtered.length, 1);
expect(filtered.first.name, '김치찌개');
},
);
@@ -257,5 +261,69 @@ void main() {
expect(result.first.name, '가까운 맛집');
},
);
test('categoriesProvider emits sorted unique categories', () async {
// Arrange
final restaurants = [
Restaurant(
id: '1',
name: '카테고리1',
category: '양식',
subCategory: '파스타',
roadAddress: '서울시',
jibunAddress: '서울시',
latitude: 0,
longitude: 0,
source: DataSource.USER_INPUT,
createdAt: DateTime.now(),
updatedAt: DateTime.now(),
),
Restaurant(
id: '2',
name: '카테고리2',
category: '한식',
subCategory: '찌개',
roadAddress: '서울시',
jibunAddress: '서울시',
latitude: 0,
longitude: 0,
source: DataSource.USER_INPUT,
createdAt: DateTime.now(),
updatedAt: DateTime.now(),
),
Restaurant(
id: '3',
name: '카테고리3',
category: '한식',
subCategory: '비빔밥',
roadAddress: '서울시',
jibunAddress: '서울시',
latitude: 0,
longitude: 0,
source: DataSource.USER_INPUT,
createdAt: DateTime.now(),
updatedAt: DateTime.now(),
),
];
when(
mockRepository.watchRestaurants(),
).thenAnswer((_) => Stream.value(restaurants));
final categoriesContainer = ProviderContainer(
overrides: [
restaurantListProvider.overrideWith(
(ref) => Stream.value(restaurants),
),
],
);
final categories = await categoriesContainer
.read(categoriesProvider.stream)
.first;
expect(categories, ['양식', '한식']);
categoriesContainer.dispose();
});
});
}