49 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Elixir
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Elixir
		
	
	
	
	
	
| # Pleroma: A lightweight social networking server
 | |
| # Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/>
 | |
| # SPDX-License-Identifier: AGPL-3.0-only
 | |
| 
 | |
| defmodule Mix.Tasks.Pleroma.DatabaseTest do
 | |
|   alias Pleroma.Repo
 | |
|   alias Pleroma.User
 | |
|   use Pleroma.DataCase
 | |
| 
 | |
|   import Pleroma.Factory
 | |
| 
 | |
|   setup_all do
 | |
|     Mix.shell(Mix.Shell.Process)
 | |
| 
 | |
|     on_exit(fn ->
 | |
|       Mix.shell(Mix.Shell.IO)
 | |
|     end)
 | |
| 
 | |
|     :ok
 | |
|   end
 | |
| 
 | |
|   describe "running update_users_following_followers_counts" do
 | |
|     test "following and followers count are updated" do
 | |
|       [user, user2] = insert_pair(:user)
 | |
|       {:ok, %User{following: following, info: info} = user} = User.follow(user, user2)
 | |
| 
 | |
|       assert length(following) == 2
 | |
|       assert info.follower_count == 0
 | |
| 
 | |
|       info_cng = Ecto.Changeset.change(info, %{follower_count: 3})
 | |
| 
 | |
|       {:ok, user} =
 | |
|         user
 | |
|         |> Ecto.Changeset.change(%{following: following ++ following})
 | |
|         |> Ecto.Changeset.put_embed(:info, info_cng)
 | |
|         |> Repo.update()
 | |
| 
 | |
|       assert length(user.following) == 4
 | |
|       assert user.info.follower_count == 3
 | |
| 
 | |
|       assert :ok == Mix.Tasks.Pleroma.Database.run(["update_users_following_followers_counts"])
 | |
| 
 | |
|       user = User.get_by_id(user.id)
 | |
| 
 | |
|       assert length(user.following) == 2
 | |
|       assert user.info.follower_count == 0
 | |
|     end
 | |
|   end
 | |
| end
 | 
