def test_process_tds_noop(mocker):
    """Tests that nothing happens given identical current & desired inputs"""
    current = generate_state(1, 1, 3, 30)
    desired = generate_state(1, 1, 3, 30)

    mock_create_td = mocker.patch.object(integ, 'create_td', autospec=True)
    mock_delete_td = mocker.patch.object(integ, 'delete_td', autospec=True)
    mock_update_td = mocker.patch.object(integ, 'update_td', autospec=True)

    integ.process_tds(current, desired, dry_run=True, enable_deletion=False)

    mock_create_td.assert_not_called()
    mock_delete_td.assert_not_called()
    mock_update_td.assert_not_called()
def test_process_tds_updated_td_ttl(mocker):
    """Tests that TDs are updated given a change in ttl in desired state"""
    current = generate_state(1, 1, 3, 30)
    desired = generate_state(1, 1, 3, 300)

    mock_create_td = mocker.patch.object(integ, 'create_td', autospec=True)
    mock_delete_td = mocker.patch.object(integ, 'delete_td', autospec=True)
    mock_update_td = mocker.patch.object(integ, 'update_td', autospec=True)

    integ.process_tds(current, desired, dry_run=True, enable_deletion=False)

    mock_create_td.assert_not_called()
    mock_delete_td.assert_not_called()
    mock_update_td.assert_called_once()
def test_process_tds_empty_state(mocker):
    """Tests that nothing happens given empty states"""
    current = generate_state(0, 0, 0, 0)
    desired = generate_state(0, 0, 0, 0)

    mock_create_td = mocker.patch.object(integ, "create_td", autospec=True)
    mock_delete_td = mocker.patch.object(integ, "delete_td", autospec=True)
    mock_update_td = mocker.patch.object(integ, "update_td", autospec=True)

    integ.process_tds(current, desired, dry_run=True, enable_deletion=False)

    mock_create_td.assert_not_called()
    mock_delete_td.assert_not_called()
    mock_update_td.assert_not_called()
def test_process_tds_deleted_td(mocker):
    """Tests that TD is deleted given it is missing from the desired state"""
    current = generate_state(1, 1, 3, 30)
    desired = generate_state(0, 1, 3, 30)

    mock_create_td = mocker.patch.object(integ, 'create_td', autospec=True)
    mock_delete_td = mocker.patch.object(integ, 'delete_td', autospec=True)
    mock_update_td = mocker.patch.object(integ, 'update_td', autospec=True)

    integ.process_tds(current, desired, dry_run=True, enable_deletion=False)

    mock_create_td.assert_not_called()
    mock_delete_td.assert_called_once()
    mock_update_td.assert_not_called()
def test_process_tds_added_td(mocker):
    """Tests that TDs are added given an additional TD in desired state"""
    current = generate_state(1, 1, 3, 30)
    desired = generate_state(2, 1, 3, 30)

    mock_create_td = mocker.patch.object(integ, "create_td", autospec=True)
    mock_delete_td = mocker.patch.object(integ, "delete_td", autospec=True)
    mock_update_td = mocker.patch.object(integ, "update_td", autospec=True)

    integ.process_tds(current, desired, dry_run=True, enable_deletion=False)

    mock_create_td.assert_called_once()
    mock_delete_td.assert_not_called()
    mock_update_td.assert_not_called()