Calculating which direction my enemy should face when moving
In my opinion you should first get the axis of the maximum direction via comparison of xDiff with yDiff:

protected FacingDirections CalculateFacingDirection(Vector2 navPos)
{
    Vector2 curPos = transform.position;

    float xDiff = Mathf.Abs(navPos.x - curPos.x);
    float yDiff = Mathf.Abs(navPos.y - curPos.y);

    if (xDiff &gt; yDiff) // we are moving more along X axis
    {
        return navPos.x &gt; curPos.x ? FacingDirections.Left : FacingDirections.Right;
    }
    // we are moving more along Y axis
    return navPos.y &gt; curPos.y ? FacingDirections.Up : FacingDirections.Down;
}