From 305ad640faf3876c20e02db78b7c5a536b33e1a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20LUDWIG?= Date: Sat, 23 Mar 2024 01:43:27 +0100 Subject: [PATCH] refactor: app routes handling --- app/(pages)/_layout.tsx | 7 --- app/_layout.tsx | 4 +- app/{(pages) => }/application/_layout.tsx | 2 +- .../application/habits/history.tsx | 0 .../application/habits/index.tsx | 0 app/{(pages) => }/application/habits/new.tsx | 0 .../application/users/settings.tsx | 0 app/{(pages) => }/authentication/_layout.tsx | 2 +- app/{(pages) => }/authentication/login.tsx | 0 app/{(pages) => }/authentication/register.tsx | 0 app/{(pages) => }/index.tsx | 4 +- docs/CONVENTIONS.md | 3 + infrastructure/{index.ts => instances.ts} | 8 +-- .../{repositories => }/supabase/.gitignore | 0 .../{repositories => }/supabase/config.toml | 0 .../20240315152340_initial_schema.sql | 0 .../repositories/Authentication.ts} | 0 .../repositories}/GetHabitProgressHistory.ts | 0 .../repositories}/GetHabitsByUserId.ts | 0 .../repositories}/_SupabaseRepository.ts | 0 .../{repositories => }/supabase/seed.sql | 0 .../supabase/supabase-types.ts | 0 .../{repositories => }/supabase/supabase.ts | 0 package.json | 2 +- .../react/components/ButtonCustom.tsx | 34 ----------- presentation/react/components/MonoText.tsx | 13 ---- .../__tests__/ButtonCustom.test.tsx | 12 ---- .../components/__tests__/MonoText.test.tsx | 10 ---- .../components/__tests__/TabBarIcon.test.tsx | 12 ++++ .../__snapshots__/ButtonCustom.test.tsx.snap | 60 ------------------- .../__snapshots__/MonoText.test.tsx.snap | 16 ----- .../__snapshots__/TabBarIcon.test.tsx.snap | 3 + .../react/contexts/Authentication.tsx | 2 +- presentation/react/contexts/HabitsTracker.tsx | 2 +- 34 files changed, 30 insertions(+), 166 deletions(-) delete mode 100644 app/(pages)/_layout.tsx rename app/{(pages) => }/application/_layout.tsx (95%) rename app/{(pages) => }/application/habits/history.tsx (100%) rename app/{(pages) => }/application/habits/index.tsx (100%) rename app/{(pages) => }/application/habits/new.tsx (100%) rename app/{(pages) => }/application/users/settings.tsx (100%) rename app/{(pages) => }/authentication/_layout.tsx (93%) rename app/{(pages) => }/authentication/login.tsx (100%) rename app/{(pages) => }/authentication/register.tsx (100%) rename app/{(pages) => }/index.tsx (68%) rename infrastructure/{index.ts => instances.ts} (75%) rename infrastructure/{repositories => }/supabase/.gitignore (100%) rename infrastructure/{repositories => }/supabase/config.toml (100%) rename infrastructure/{repositories => }/supabase/migrations/20240315152340_initial_schema.sql (100%) rename infrastructure/{repositories/supabase/lib/AuthenticationRepository.ts => supabase/repositories/Authentication.ts} (100%) rename infrastructure/{repositories/supabase/lib => supabase/repositories}/GetHabitProgressHistory.ts (100%) rename infrastructure/{repositories/supabase/lib => supabase/repositories}/GetHabitsByUserId.ts (100%) rename infrastructure/{repositories/supabase/lib => supabase/repositories}/_SupabaseRepository.ts (100%) rename infrastructure/{repositories => }/supabase/seed.sql (100%) rename infrastructure/{repositories => }/supabase/supabase-types.ts (100%) rename infrastructure/{repositories => }/supabase/supabase.ts (100%) delete mode 100644 presentation/react/components/ButtonCustom.tsx delete mode 100644 presentation/react/components/MonoText.tsx delete mode 100644 presentation/react/components/__tests__/ButtonCustom.test.tsx delete mode 100644 presentation/react/components/__tests__/MonoText.test.tsx create mode 100644 presentation/react/components/__tests__/TabBarIcon.test.tsx delete mode 100644 presentation/react/components/__tests__/__snapshots__/ButtonCustom.test.tsx.snap delete mode 100644 presentation/react/components/__tests__/__snapshots__/MonoText.test.tsx.snap create mode 100644 presentation/react/components/__tests__/__snapshots__/TabBarIcon.test.tsx.snap diff --git a/app/(pages)/_layout.tsx b/app/(pages)/_layout.tsx deleted file mode 100644 index 8b5f90e..0000000 --- a/app/(pages)/_layout.tsx +++ /dev/null @@ -1,7 +0,0 @@ -import { Slot } from "expo-router" - -const Layout: React.FC = () => { - return -} - -export default Layout diff --git a/app/_layout.tsx b/app/_layout.tsx index 8b0adca..2abb980 100644 --- a/app/_layout.tsx +++ b/app/_layout.tsx @@ -43,9 +43,7 @@ const StackLayout: React.FC = () => { screenOptions={{ headerShown: false, }} - > - - + /> ) } diff --git a/app/(pages)/application/_layout.tsx b/app/application/_layout.tsx similarity index 95% rename from app/(pages)/application/_layout.tsx rename to app/application/_layout.tsx index 9a0133f..8f2eb1b 100644 --- a/app/(pages)/application/_layout.tsx +++ b/app/application/_layout.tsx @@ -8,7 +8,7 @@ const TabLayout: React.FC = () => { const { user } = useAuthentication() if (user == null) { - return + return } return ( diff --git a/app/(pages)/application/habits/history.tsx b/app/application/habits/history.tsx similarity index 100% rename from app/(pages)/application/habits/history.tsx rename to app/application/habits/history.tsx diff --git a/app/(pages)/application/habits/index.tsx b/app/application/habits/index.tsx similarity index 100% rename from app/(pages)/application/habits/index.tsx rename to app/application/habits/index.tsx diff --git a/app/(pages)/application/habits/new.tsx b/app/application/habits/new.tsx similarity index 100% rename from app/(pages)/application/habits/new.tsx rename to app/application/habits/new.tsx diff --git a/app/(pages)/application/users/settings.tsx b/app/application/users/settings.tsx similarity index 100% rename from app/(pages)/application/users/settings.tsx rename to app/application/users/settings.tsx diff --git a/app/(pages)/authentication/_layout.tsx b/app/authentication/_layout.tsx similarity index 93% rename from app/(pages)/authentication/_layout.tsx rename to app/authentication/_layout.tsx index 152f67f..cadac6f 100644 --- a/app/(pages)/authentication/_layout.tsx +++ b/app/authentication/_layout.tsx @@ -8,7 +8,7 @@ const TabLayout: React.FC = () => { const { user } = useAuthentication() if (user != null) { - return + return } return ( diff --git a/app/(pages)/authentication/login.tsx b/app/authentication/login.tsx similarity index 100% rename from app/(pages)/authentication/login.tsx rename to app/authentication/login.tsx diff --git a/app/(pages)/authentication/register.tsx b/app/authentication/register.tsx similarity index 100% rename from app/(pages)/authentication/register.tsx rename to app/authentication/register.tsx diff --git a/app/(pages)/index.tsx b/app/index.tsx similarity index 68% rename from app/(pages)/index.tsx rename to app/index.tsx index 33e8657..c8c246b 100644 --- a/app/(pages)/index.tsx +++ b/app/index.tsx @@ -6,10 +6,10 @@ const HomePage: React.FC = () => { const { user } = useAuthentication() if (user == null) { - return + return } - return + return } export default HomePage diff --git a/docs/CONVENTIONS.md b/docs/CONVENTIONS.md index 5c54e70..c37cf09 100644 --- a/docs/CONVENTIONS.md +++ b/docs/CONVENTIONS.md @@ -14,6 +14,9 @@ npm run lint:typescript # Test npm run test + +# Test Snapshots Update +npm run test -- --u ``` Une pipeline CI ([`.gitlab-ci.yml`](../.gitlab-ci.yml)) est en place pour vérifier que le code respecte ces bonnes pratiques et que les tests passent. diff --git a/infrastructure/index.ts b/infrastructure/instances.ts similarity index 75% rename from infrastructure/index.ts rename to infrastructure/instances.ts index 5a3aa72..a2ede57 100644 --- a/infrastructure/index.ts +++ b/infrastructure/instances.ts @@ -1,10 +1,10 @@ import { AuthenticationUseCase } from "@/domain/use-cases/Authentication" import { RetrieveHabitsTrackerUseCase } from "../domain/use-cases/RetrieveHabitsTracker" import { HabitsTrackerPresenter } from "../presentation/presenters/HabitsTracker" -import { AuthenticationSupabaseRepository } from "./repositories/supabase/lib/AuthenticationRepository" -import { GetHabitProgressHistorySupabaseRepository } from "./repositories/supabase/lib/GetHabitProgressHistory" -import { GetHabitsByUserIdSupabaseRepository } from "./repositories/supabase/lib/GetHabitsByUserId" -import { supabaseClient } from "./repositories/supabase/supabase" +import { AuthenticationSupabaseRepository } from "./supabase/repositories/Authentication" +import { GetHabitProgressHistorySupabaseRepository } from "./supabase/repositories/GetHabitProgressHistory" +import { GetHabitsByUserIdSupabaseRepository } from "./supabase/repositories/GetHabitsByUserId" +import { supabaseClient } from "./supabase/supabase" import { AuthenticationPresenter } from "@/presentation/presenters/Authentication" /** diff --git a/infrastructure/repositories/supabase/.gitignore b/infrastructure/supabase/.gitignore similarity index 100% rename from infrastructure/repositories/supabase/.gitignore rename to infrastructure/supabase/.gitignore diff --git a/infrastructure/repositories/supabase/config.toml b/infrastructure/supabase/config.toml similarity index 100% rename from infrastructure/repositories/supabase/config.toml rename to infrastructure/supabase/config.toml diff --git a/infrastructure/repositories/supabase/migrations/20240315152340_initial_schema.sql b/infrastructure/supabase/migrations/20240315152340_initial_schema.sql similarity index 100% rename from infrastructure/repositories/supabase/migrations/20240315152340_initial_schema.sql rename to infrastructure/supabase/migrations/20240315152340_initial_schema.sql diff --git a/infrastructure/repositories/supabase/lib/AuthenticationRepository.ts b/infrastructure/supabase/repositories/Authentication.ts similarity index 100% rename from infrastructure/repositories/supabase/lib/AuthenticationRepository.ts rename to infrastructure/supabase/repositories/Authentication.ts diff --git a/infrastructure/repositories/supabase/lib/GetHabitProgressHistory.ts b/infrastructure/supabase/repositories/GetHabitProgressHistory.ts similarity index 100% rename from infrastructure/repositories/supabase/lib/GetHabitProgressHistory.ts rename to infrastructure/supabase/repositories/GetHabitProgressHistory.ts diff --git a/infrastructure/repositories/supabase/lib/GetHabitsByUserId.ts b/infrastructure/supabase/repositories/GetHabitsByUserId.ts similarity index 100% rename from infrastructure/repositories/supabase/lib/GetHabitsByUserId.ts rename to infrastructure/supabase/repositories/GetHabitsByUserId.ts diff --git a/infrastructure/repositories/supabase/lib/_SupabaseRepository.ts b/infrastructure/supabase/repositories/_SupabaseRepository.ts similarity index 100% rename from infrastructure/repositories/supabase/lib/_SupabaseRepository.ts rename to infrastructure/supabase/repositories/_SupabaseRepository.ts diff --git a/infrastructure/repositories/supabase/seed.sql b/infrastructure/supabase/seed.sql similarity index 100% rename from infrastructure/repositories/supabase/seed.sql rename to infrastructure/supabase/seed.sql diff --git a/infrastructure/repositories/supabase/supabase-types.ts b/infrastructure/supabase/supabase-types.ts similarity index 100% rename from infrastructure/repositories/supabase/supabase-types.ts rename to infrastructure/supabase/supabase-types.ts diff --git a/infrastructure/repositories/supabase/supabase.ts b/infrastructure/supabase/supabase.ts similarity index 100% rename from infrastructure/repositories/supabase/supabase.ts rename to infrastructure/supabase/supabase.ts diff --git a/package.json b/package.json index e6635c7..2203eab 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,7 @@ "lint:typescript": "tsc --noEmit", "lint:staged": "lint-staged", "test": "jest --reporters=default --reporters=jest-junit", - "supabase": "supabase --workdir \"./infrastructure/repositories\"", + "supabase": "supabase --workdir \"./infrastructure\"", "postinstall": "husky" }, "dependencies": { diff --git a/presentation/react/components/ButtonCustom.tsx b/presentation/react/components/ButtonCustom.tsx deleted file mode 100644 index 9fc1e72..0000000 --- a/presentation/react/components/ButtonCustom.tsx +++ /dev/null @@ -1,34 +0,0 @@ -import type { StyleProp, ViewStyle } from "react-native" -import { Pressable, StyleSheet, Text } from "react-native" - -export interface ButtonCustomProps - extends React.ComponentProps { - children: React.ReactNode - style?: StyleProp -} - -export const ButtonCustom: React.FC = (props) => { - const { children, style, ...rest } = props - - return ( - - {children} - - ) -} - -const styles = StyleSheet.create({ - button: { - padding: 10, - borderWidth: 1, - borderColor: "black", - borderRadius: 10, - marginTop: 10, - backgroundColor: "#152B5D", - }, - text: { - color: "white", - textAlign: "center", - fontSize: 15, - }, -}) diff --git a/presentation/react/components/MonoText.tsx b/presentation/react/components/MonoText.tsx deleted file mode 100644 index 6012cb5..0000000 --- a/presentation/react/components/MonoText.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import { StyleSheet, Text } from "react-native" - -export const MonoText: React.FC = (props) => { - const { style, ...rest } = props - - return -} - -const styles = StyleSheet.create({ - text: { - fontFamily: "SpaceMono", - }, -}) diff --git a/presentation/react/components/__tests__/ButtonCustom.test.tsx b/presentation/react/components/__tests__/ButtonCustom.test.tsx deleted file mode 100644 index 0491962..0000000 --- a/presentation/react/components/__tests__/ButtonCustom.test.tsx +++ /dev/null @@ -1,12 +0,0 @@ -import renderer from "react-test-renderer" - -import { ButtonCustom } from "@/presentation/react/components/ButtonCustom" - -describe("", () => { - it("renders correctly", () => { - const tree = renderer - .create(Awesome Button!) - .toJSON() - expect(tree).toMatchSnapshot() - }) -}) diff --git a/presentation/react/components/__tests__/MonoText.test.tsx b/presentation/react/components/__tests__/MonoText.test.tsx deleted file mode 100644 index 9d9c749..0000000 --- a/presentation/react/components/__tests__/MonoText.test.tsx +++ /dev/null @@ -1,10 +0,0 @@ -import renderer from "react-test-renderer" - -import { MonoText } from "@/presentation/react/components/MonoText" - -describe("", () => { - it("renders correctly", () => { - const tree = renderer.create(Awesome text!).toJSON() - expect(tree).toMatchSnapshot() - }) -}) diff --git a/presentation/react/components/__tests__/TabBarIcon.test.tsx b/presentation/react/components/__tests__/TabBarIcon.test.tsx new file mode 100644 index 0000000..6e9fd0f --- /dev/null +++ b/presentation/react/components/__tests__/TabBarIcon.test.tsx @@ -0,0 +1,12 @@ +import renderer from "react-test-renderer" + +import { TabBarIcon } from "@/presentation/react/components/TabBarIcon" + +describe("", () => { + it("renders correctly", () => { + const tree = renderer + .create() + .toJSON() + expect(tree).toMatchSnapshot() + }) +}) diff --git a/presentation/react/components/__tests__/__snapshots__/ButtonCustom.test.tsx.snap b/presentation/react/components/__tests__/__snapshots__/ButtonCustom.test.tsx.snap deleted file mode 100644 index 0cd38a0..0000000 --- a/presentation/react/components/__tests__/__snapshots__/ButtonCustom.test.tsx.snap +++ /dev/null @@ -1,60 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[` renders correctly 1`] = ` - - - Awesome Button! - - -`; diff --git a/presentation/react/components/__tests__/__snapshots__/MonoText.test.tsx.snap b/presentation/react/components/__tests__/__snapshots__/MonoText.test.tsx.snap deleted file mode 100644 index ccda730..0000000 --- a/presentation/react/components/__tests__/__snapshots__/MonoText.test.tsx.snap +++ /dev/null @@ -1,16 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[` renders correctly 1`] = ` - - Awesome text! - -`; diff --git a/presentation/react/components/__tests__/__snapshots__/TabBarIcon.test.tsx.snap b/presentation/react/components/__tests__/__snapshots__/TabBarIcon.test.tsx.snap new file mode 100644 index 0000000..a185ce2 --- /dev/null +++ b/presentation/react/components/__tests__/__snapshots__/TabBarIcon.test.tsx.snap @@ -0,0 +1,3 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[` renders correctly 1`] = ``; diff --git a/presentation/react/contexts/Authentication.tsx b/presentation/react/contexts/Authentication.tsx index c0cf020..85c507c 100644 --- a/presentation/react/contexts/Authentication.tsx +++ b/presentation/react/contexts/Authentication.tsx @@ -5,7 +5,7 @@ import type { AuthenticationPresenter, AuthenticationPresenterState, } from "@/presentation/presenters/Authentication" -import { authenticationPresenter } from "@/infrastructure" +import { authenticationPresenter } from "@/infrastructure/instances" export interface AuthenticationContextValue extends AuthenticationPresenterState { diff --git a/presentation/react/contexts/HabitsTracker.tsx b/presentation/react/contexts/HabitsTracker.tsx index bb96249..a4b1948 100644 --- a/presentation/react/contexts/HabitsTracker.tsx +++ b/presentation/react/contexts/HabitsTracker.tsx @@ -5,7 +5,7 @@ import type { HabitsTrackerPresenterState, } from "@/presentation/presenters/HabitsTracker" import { usePresenterState } from "@/presentation/react/hooks/usePresenterState" -import { habitsTrackerPresenter } from "@/infrastructure" +import { habitsTrackerPresenter } from "@/infrastructure/instances" import { useAuthentication } from "./Authentication" export interface HabitsTrackerContextValue extends HabitsTrackerPresenterState {