# Pleroma: A lightweight social networking server
# Copyright © 2017-2018 Pleroma Authors 
# SPDX-License-Identifier: AGPL-3.0-only
defmodule Pleroma.Web.OStatus.FeedRepresenterTest do
  use Pleroma.DataCase
  import Pleroma.Factory
  alias Pleroma.User
  alias Pleroma.Web.OStatus
  alias Pleroma.Web.OStatus.ActivityRepresenter
  alias Pleroma.Web.OStatus.FeedRepresenter
  alias Pleroma.Web.OStatus.UserRepresenter
  test "returns a feed of the last 20 items of the user" do
    note_activity = insert(:note_activity)
    user = User.get_cached_by_ap_id(note_activity.data["actor"])
    tuple = FeedRepresenter.to_simple_form(user, [note_activity], [user])
    most_recent_update =
      note_activity.updated_at
      |> NaiveDateTime.to_iso8601()
    res = :xmerl.export_simple_content(tuple, :xmerl_xml) |> to_string
    user_xml =
      UserRepresenter.to_simple_form(user)
      |> :xmerl.export_simple_content(:xmerl_xml)
    entry_xml =
      ActivityRepresenter.to_simple_form(note_activity, user)
      |> :xmerl.export_simple_content(:xmerl_xml)
    expected = """
    
      #{OStatus.feed_path(user)}
      #{user.nickname}'s timeline
      #{most_recent_update}
      #{User.avatar_url(user)}
      
      
      
      
        #{user_xml}
      
      
      
        #{entry_xml}
      
    
    """
    assert clean(res) == clean(expected)
  end
  defp clean(string) do
    String.replace(string, ~r/\s/, "")
  end
end