from flask import Flask

from fittrackee.application.models import AppConfig
from fittrackee.application.utils import get_or_init_config


class TestGetOrInitAppConfig:
    def test_it_creates_app_config(self, app_no_config: Flask) -> None:
        get_or_init_config()

        assert AppConfig.query.count() == 1

    def test_it_inits_max_users_with_default_value(
        self, app_no_config: Flask
    ) -> None:
        get_or_init_config()

        app_config = AppConfig.query.first()
        assert app_config.max_users == 0

    def test_it_inits_max_single_file_size_with_default_value(
        self, app_no_config: Flask
    ) -> None:
        get_or_init_config()

        app_config = AppConfig.query.first()
        assert app_config.max_single_file_size == 1048576  # 1MB

    def test_it_inits_max_zip_file_size_with_default_value(
        self, app_no_config: Flask
    ) -> None:
        get_or_init_config()

        app_config = AppConfig.query.first()
        assert app_config.max_zip_file_size == 10485760  # 10MB

    def test_it_inits_gpx_limit_import_with_default_value(
        self, app_no_config: Flask
    ) -> None:
        get_or_init_config()

        app_config = AppConfig.query.first()
        assert app_config.gpx_limit_import == 10

    def test_it_returns_existing_config(self, app: Flask) -> None:
        app_config = get_or_init_config()

        assert app_config.max_users == 100
