def test_create_guest_contact_no_guest_name(service: RegisterReservationInOdoo, context: Context, house, reservation):
    context.house = house
    context.reservation = attr.evolve(reservation, guest_name='', guest_surname='')

    result = service.create_guest_contact(context)
    assert not is_successful(result)
    assert result.failure().failure == ReservationErrors.missed_guest
def test_create_guest_contact_fail(mocker, service: RegisterReservationInOdoo, context: Context, house, reservation):
    mocker.patch('contacts.usecases.CreateContact.execute', return_value=Failure(CaseError(error='ERR')))
    context.house = house
    context.reservation = reservation

    result = service.create_guest_contact(context)
    assert not is_successful(result)
    assert result.failure().failure == ReservationErrors.error
    assert result.failure().error == 'ERR'
def test_create_guest_contact_ok(mocker, service: RegisterReservationInOdoo, context: Context, house, reservation):
    mocker.patch('contacts.usecases.CreateContact.execute', return_value=Success(Contact(id=123, name='XXX')))
    context.house = house
    context.reservation = reservation

    result = service.create_guest_contact(context)
    assert is_successful(result)
    assert result.unwrap().reservation.guest_contact_id == 123
    assert result.unwrap().reservation.guest_contact_ids == [123]
def test_create_guest_contact_has_guest_contact_id(
    mocker, service: RegisterReservationInOdoo, context: Context, house, reservation
):
    mocker.patch('contacts.usecases.CreateContact.execute', return_value=Failure(CaseError(error='ERR')))
    context.house = house
    context.reservation = attr.evolve(reservation, guest_contact_id=123)

    result = service.create_guest_contact(context)
    assert is_successful(result)