from banbou import _Projet
import banbou


def test_doit_calculer_la_taille_du_projet(mocker):

    class MockResponse:
        def __init__(self):
            self.taille = 40
            self.implication = "Necessaire"

    mocker.patch("banbou._Fichier", return_value = MockResponse())

    liste = [banbou._Fichier()]
    sut = _Projet()
    sut.liste = liste

    expected_value = 40

    sut.calculer_taille()

    assert sut.taille == expected_value

def test_doit_calculer_une_liste_vide(mocker):

    liste = []
    sut = _Projet()
    sut.liste = liste

    expected_value = 0

    sut.calculer_taille()

    assert sut.taille == expected_value

def test_ne_doit_pas_calculer_fichier_non_necessaire(mocker):

    class MockResponse:
        def __init__(self):
            self.taille = 40
            self.implication = "A-ignorer"
        
    mocker.patch("banbou._Fichier", return_value = MockResponse())

    liste = [banbou._Fichier()]
    sut = _Projet()
    sut.liste = liste
    
    expected_value = 0

    sut.calculer_taille()

    assert sut.taille == expected_value

def test_doit_afficher_un_arrondi_deux_decimale(mocker, capsys):

    class MockResponse:
        def __init__(self):
            self.taille = 2089457
            self.implication = "Necessaire"

    mocker.patch("banbou._Fichier", return_value = MockResponse())

    liste = [banbou._Fichier()]
    sut = _Projet()
    sut.liste = liste

    expected_value = "Taille totale : 1.99 Mo.\n\n"

    sut.calculer_taille()
    out, err = capsys.readouterr()

    assert out == expected_value


    


