
    >j                     x    d Z ddlZddlmc mZ ddlZddlm	Z	m
Z
 ej                  d        Zd Z G d d      Zy)z!Tests for symbol scanner service.    N)SymbolScannerServiceTickerSnapshotc                      t               S )N)r        CC:\xampp\htdocs\tradingbinance\backend\tests\test_symbol_scanner.pyscannerr	      s    !!r   c                 T    t        | |||t               j                  |||            S )N)symbolquote_volumeprice_change_pcttrade_countactivity_score)r   r   _activity_score)r   volchgtradess       r   _tickerr      s0    +-==c3O r   c                   $    e Zd Zd Zd Zd Zd Zy)TestSymbolScannerc           
         t        dddd      t        dddd      t        d	d
dd      t        dddd      t        dddd      d}g d}g d}|j                  |||d      }|j                  d d }||k(  }|st        j                  d|fd||f      t        j
                  |      dt        j                         v st        j                  |      rt        j
                  |      nddz  }dd|iz  }	t        t        j                  |	            d x}}|j                  }t        |      }
d}|
|k(  }|s
t        j                  d|fd |
|f      d!t        j                         v st        j                  t              rt        j
                  t              nd!d"t        j                         v st        j                  |      rt        j
                  |      nd"t        j
                  |      t        j
                  |
      t        j
                  |      d#z  }d$d%|iz  }t        t        j                  |            d x}x}
x}}d}|j                  }
||
v }|st        j                  d&|fd'||
f      t        j
                  |      d"t        j                         v st        j                  |      rt        j
                  |      nd"t        j
                  |
      d(z  }	d)d*|	iz  }t        t        j                  |            d x}x}}
|j                  }t        |      }
d+}|
|k(  }|s
t        j                  d|fd,|
|f      d!t        j                         v st        j                  t              rt        j
                  t              nd!d"t        j                         v st        j                  |      rt        j
                  |      nd"t        j
                  |      t        j
                  |
      t        j
                  |      d#z  }d$d%|iz  }t        t        j                  |            d x}x}
x}}y )-NDOGEUSDT       @'	 NEARUSDT Zb      @ ADAUSDT@x}      ?順 SUIUSDTig      @i@ AAVEUSDTi g      ?iP  )r   r   r    r$   r%   BTCUSDTETHUSDTSOLUSDTBNBUSDTXRPUSDT   tickerscore_symbolsrotation_poolrotation_slots   ==)z%(py1)s == %(py3)score)py1py3zassert %(py5)spy5)zT%(py5)s
{%(py5)s = %(py0)s(%(py3)s
{%(py3)s = %(py1)s.rotation_picks
})
} == %(py8)slenresult)py0r6   r7   r8   py8zassert %(py10)spy10in)z6%(py1)s in %(py5)s
{%(py5)s = %(py3)s.rotation_picks
}r6   r7   r8   assert %(py7)spy7   )zT%(py5)s
{%(py5)s = %(py0)s(%(py3)s
{%(py3)s = %(py1)s.active_symbols
})
} == %(py8)s)r   select_symbolsactive_symbols
@pytest_ar_call_reprcompare	_saferepr@py_builtinslocals_should_repr_global_nameAssertionError_format_explanationrotation_picksr9   )selfr	   r.   r5   poolr:   @py_assert0@py_assert2@py_format4@py_format6@py_assert4@py_assert7@py_assert6@py_format9@py_format11@py_format8s                   r   #test_selects_top_rotation_from_poolz5TestSymbolScanner.test_selects_top_rotation_from_pool   s   
JWE
JWEy*c7Cy*c7C
JVD
 GI''	 ( 
 $$Ra(0(D0000(D000(000000D000D0000000((.s().Q.)Q....)Q......s...s......6...6...(...)...Q.......2V222z22222z2222z222222V222V22222222222((.s().Q.)Q....)Q......s...s......6...6...(...)...Q.......r   c                    t        dddd      t        dddd      t        d	d
dd      d}g d}g d}|j                  |||ddg      }d}|j                  }||v }|st        j                  d|fd||f      t        j
                  |      dt        j                         v st        j                  |      rt        j
                  |      ndt        j
                  |      dz  }	dd|	iz  }
t        t        j                  |
            d x}x}}d}|j                  }||v }|st        j                  d|fd||f      t        j
                  |      dt        j                         v st        j                  |      rt        j
                  |      ndt        j
                  |      dz  }	dd|	iz  }
t        t        j                  |
            d x}x}}y )Nr   r   r   r   r   r   r   r   r    r!   r"   r#   )r   r   r    r&      ENSUSDT)r.   r/   r0   r1   pinned_symbolsr>   )z6%(py1)s in %(py5)s
{%(py5)s = %(py3)s.active_symbols
}r:   r@   rA   rB   )z6%(py1)s in %(py5)s
{%(py5)s = %(py3)s.pinned_symbols
})r   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   r_   )rO   r	   r.   r5   rP   r:   rQ   rU   rR   rT   rZ   s              r   test_pins_open_positionsz*TestSymbolScanner.test_pins_open_positions/   sL   
JWE
JWEy*c7C

 G2''%; ( 
 1F111y11111y1111y111111F111F111111111111F111y11111y1111y111111F111F11111111111r   c                    t        dddd      t        dddd      d	}d
g}ddg}|j                  |||d      }|j                  }dg}||k(  }|st        j                  d|fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      dz  }	dd|	iz  }
t        t        j                  |
            d x}x}}y )Nr   r   g      9@r   r   r   r   r   r   r   r'      r-   r3   z6%(py2)s
{%(py2)s = %(py0)s.rotation_picks
} == %(py5)sr:   r;   py2r8   rA   rB   r   rD   rN   rF   rG   rI   rJ   rK   rH   rL   rM   rO   r	   r.   r5   rP   r:   @py_assert1rU   @py_assert3rT   rZ   s              r   test_excludes_extreme_pumpsz-TestSymbolScanner.test_excludes_extreme_pumpsC   s    
JgF
JWE
 {J'''	 ( 
 $$44$4444$444444v444v444$4444444444r   c                    t        dddd      t        dddd      d	}d
g}ddg}|j                  |||d      }|j                  }dg}||k(  }|st        j                  d|fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      dz  }	dd|	iz  }
t        t        j                  |
            d x}x}}y )Nr   i@B g      @i'  r   r   r   r   rb   r'   rc   r-   r3   rd   r:   re   rA   rB   rg   rh   s              r   test_excludes_low_volumez*TestSymbolScanner.test_excludes_low_volumeT   s    
IsFC
JWE
 {J'''	 ( 
 $$44$4444$444444v444v444$4444444444r   N)__name__
__module____qualname__r[   r`   rk   rm   r   r   r   r   r      s    /.2(5"5r   r   )__doc__builtinsrI   _pytest.assertion.rewrite	assertionrewriterF   pytest#app.services.symbol_scanner_servicer   r   fixturer	   r   r   r   r   r   <module>ry      s;    '    T " "L5 L5r   