
    Qi                         d Z ddlZddlmZ ddlZddlZej                  j                  dd        G d d      Z G d d      Z	y)	u  auto_orch.py의 enabled 필드 처리 테스트 (TDD RED 단계 — task-1012.1)

테스트 대상:
  - load_pipeline()           : YAML 파이프라인 로드 시 enabled 필드 반영
  - is_pipeline_enabled()     : 파이프라인 dict에서 enabled 여부 반환하는 새 함수

모든 테스트는 RED 단계이므로 실행 시 실패가 예상됩니다.
(is_pipeline_enabled 함수가 아직 구현되지 않았습니다)
    N)Pathz/home/jay/workspacec                   @    e Zd ZdZdeddfdZdeddfdZdeddfdZy)TestLoadPipelineEnabledFielduI   load_pipeline()이 enabled 필드를 올바르게 로드하는지 검증.tmp_pathreturnNc                     ddl m} d}|dz  }|j                  |d        |t        |            }d|v sJ |d   du sJ y	)
uD   enabled: true인 YAML 로드 시 enabled 값이 True인 dict 반환.r   load_pipelinez2name: test-pipeline
enabled: true
schedule: daily
ztest-pipeline.yamlutf-8encodingenabledTNorchestrator.auto_orchr
   
write_textstrselfr   r
   yaml_content	yaml_filepipelines         V/home/jay/workspace/.worktrees/task-2117-dev1/orchestrator/tests/test_enabled_field.py$test_load_pipeline_with_enabled_truezATestLoadPipelineEnabledField.test_load_pipeline_with_enabled_true   s^    8  	
 33	\G< Y0H$$$	"d***    c                     ddl m} d}|dz  }|j                  |d        |t        |            }d|v sJ |d   du sJ y	)
uF   enabled: false인 YAML 로드 시 enabled 값이 False인 dict 반환.r   r	   z8name: disabled-pipeline
enabled: false
schedule: weekly
zdisabled-pipeline.yamlr   r   r   FNr   r   s         r   %test_load_pipeline_with_enabled_falsezBTestLoadPipelineEnabledField.test_load_pipeline_with_enabled_false,   s^    8! 	
 77	\G< Y0H$$$	"e+++r   c                     ddl m} d}|dz  }|j                  |d        |t        |            }|j	                  dd      du sJ y	)
u   enabled 필드가 없는 YAML 로드 시 기본값 True를 반환해야 함.

        구현체는 enabled 키가 없을 경우 setdefault 또는 동등한 방법으로
        기본값 True를 pipeline dict에 삽입해야 한다.
        r   r	   z<name: legacy-pipeline
schedule: monthly
token_budget: 50000
zlegacy-pipeline.yamlr   r   r   TN)r   r
   r   r   getr   s         r   0test_load_pipeline_without_enabled_defaults_truezMTestLoadPipelineEnabledField.test_load_pipeline_without_enabled_defaults_true=   sZ     	9$ 	
 55	\G< Y0 ||It,444r   )__name__
__module____qualname____doc__r   r   r   r    r   r   r   r      s?    S+T +d +",d ,t ,"5 5RV 5r   r   c                   @    e Zd ZdZd	dZd	dZd	dZd	dZd	dZd	dZ	y)
TestIsPipelineEnabledu   is_pipeline_enabled(pipeline: dict) -> bool 함수 검증.

    이 함수는 아직 구현되지 않아 ImportError가 발생합니다 (RED 단계).
    Nc                 *    ddl m} t        |      sJ y)u;   is_pipeline_enabled가 callable로 import 가능해야 함.r   is_pipeline_enabledN)r   r)   callable)r   r)   s     r   !test_is_pipeline_enabled_functionz7TestIsPipelineEnabled.test_is_pipeline_enabled_function\   s    >+,,,r   c                 2    ddl m} ddd} ||      du sJ y)u&   enabled: True인 dict → True 반환.r   r(   activeTnamer   Nr   r)   r   r)   r   s      r   7test_is_pipeline_enabled_returns_true_when_enabled_truezMTestIsPipelineEnabled.test_is_pipeline_enabled_returns_true_when_enabled_trueb   s"    >$6"8,444r   c                 2    ddl m} ddd} ||      du sJ y)u(   enabled: False인 dict → False 반환.r   r(   inactiveFr.   Nr0   r1   s      r   9test_is_pipeline_enabled_returns_false_when_enabled_falsezOTestIsPipelineEnabled.test_is_pipeline_enabled_returns_false_when_enabled_falsei   s"    >&59"8,555r   c                 2    ddl m} ddd} ||      du sJ y)u5   enabled 키가 없는 dict → 기본값 True 반환.r   r(   zlegacy-no-fielddaily)r/   scheduleTNr0   r1   s      r   7test_is_pipeline_enabled_defaults_true_when_key_missingzMTestIsPipelineEnabled.test_is_pipeline_enabled_defaults_true_when_key_missingp   s"    >-7C"8,444r   c                 ,    ddl m} i } ||      du sJ y)uG   빈 dict → 기본값 True 반환 (예외 발생하지 않아야 함).r   r(   TNr0   r1   s      r   (test_is_pipeline_enabled_with_empty_dictz>TestIsPipelineEnabled.test_is_pipeline_enabled_with_empty_dictw   s    >"8,444r   c                     ddl m} ddd}ddd} ||      } ||      }t        |      t        u sJ t        |      t        u sJ y)	uX   반환값이 반드시 bool 타입이어야 함 (truthy/falsy 값이 아닌 True/False).r   r(   aTr.   bFN)r   r)   typebool)r   r)   pipeline_onpipeline_off	result_on
result_offs         r   *test_is_pipeline_enabled_returns_bool_typez@TestIsPipelineEnabled.test_is_pipeline_enabled_returns_bool_type~   sR    >"t4 #6'4	(6
I$&&&J4'''r   )r   N)
r    r!   r"   r#   r+   r2   r5   r9   r;   rE   r$   r   r   r&   r&   V   s%    
-5655(r   r&   )
r#   syspathlibr   pytestyamlpathinsertr   r&   r$   r   r   <module>rL      sB        ( )85 85|3( 3(r   