Exercise: Write User Objects To JSON File#

Catching up with modern times that broke loose in Exercise: Split Strings To User Objects, lets modify how we write out the user objects to a JSON file.

import userdb
import io
import json

def test_write_users_to_json():
    users_out = [
        userdb.User(id=666,
                    firstname = 'Jörg',
                    lastname = 'Faschingbauer',
                    birth = '1966-06-19',
                    ),
        userdb.User(id = 42,
                    firstname = 'Caro',
                    lastname = 'Faschingbauer',
                    birth = '1997-04-25',
                    ),
        userdb.User(id = 7,
                    firstname = 'Johanna',
                    lastname = 'Faschingbauer',
                    birth = '1995-06-11',
                    ),
        userdb.User(id = 1024,
                    firstname = 'Philipp',
                    lastname = 'Lichtenberger',
                    birth = '1986-04-06',
                    ),
    ]

    output = io.StringIO()
    userdb.write_userobjs_to_json(users_out, output)

    input = io.StringIO(output.getvalue())
    users_in = json.load(input)

    assert users_out[0].id == users_in[0]['id']
    assert users_out[0].firstname == users_in[0]['firstname']
    assert users_out[0].lastname == users_in[0]['lastname']
    assert users_out[0].birth == users_in[0]['birth']

    assert users_out[1].id == users_in[1]['id']
    assert users_out[1].firstname == users_in[1]['firstname']
    assert users_out[1].lastname == users_in[1]['lastname']
    assert users_out[1].birth == users_in[1]['birth']

    assert users_out[2].id == users_in[2]['id']
    assert users_out[2].firstname == users_in[2]['firstname']
    assert users_out[2].lastname == users_in[2]['lastname']
    assert users_out[2].birth == users_in[2]['birth']

    assert users_out[3].id == users_in[3]['id']
    assert users_out[3].firstname == users_in[3]['firstname']
    assert users_out[3].lastname == users_in[3]['lastname']
    assert users_out[3].birth == users_in[3]['birth']