Проверьте метод static void, который обновляет базу данных - PullRequest
0 голосов
/ 17 октября 2019

У меня есть этот класс с 2 открытыми статическими методами, оба они обновляют базу данных (firestore). В этой ситуации, как лучше написать для него модульный тест? Макетировать локальную базу данных пожарного магазина?

Я немного искал, но не могу найти примеров того, как это сделать. кто-нибудь может помочь с этим? Спасибо!

public class LikeThisRestaurant {

// When current user likes a restaurant
public static void like(String restaurantId) {
    // Update the restaurant in db (+1 totalRestaurantLikes))
    RestaurantHelper.getRestaurant(restaurantId).addOnCompleteListener(task -> {
        if (task.getResult() != null) {
            Restaurant restaurant = task.getResult().toObject(Restaurant.class);
            if (restaurant != null)

                RestaurantHelper.updateTotalLikes(restaurantId, restaurant.getTotalLikes() + 1);
        }
    });

    // Add this restaurant to the list of likes of current user
    UserHelper.getUser(FirebaseAuth.getInstance().getUid()).addOnCompleteListener(task -> {
        if (task.getResult() != null) {
            User currentUser = task.getResult().toObject(User.class);
            if (currentUser != null) {

                List<String> restaurantsLiked = currentUser.getRestaurantsLiked();
                restaurantsLiked.add(restaurantId);
                UserHelper.updateRestaurantLikes(FirebaseAuth.getInstance().getUid(), restaurantsLiked);
            }
        }
    });
}

// When current user unlikes a restaurant
public static void unlike(String restaurantId) {
    // Update the restaurant in db (-1 totalRestaurantLikes))
    RestaurantHelper.getRestaurant(restaurantId).addOnCompleteListener(task -> {
        if (task.getResult() != null) {
            Restaurant restaurant = task.getResult().toObject(Restaurant.class);
            if (restaurant != null)

                RestaurantHelper.updateTotalLikes(restaurantId, restaurant.getTotalLikes() - 1);
        }
    });

    // Remove this restaurant from the list of likes of current user
    UserHelper.getUser(FirebaseAuth.getInstance().getUid()).addOnCompleteListener(task -> {
        if (task.getResult() != null) {
            User currentUser = task.getResult().toObject(User.class);
            if (currentUser != null) {

                List<String> restaurantsLiked = currentUser.getRestaurantsLiked();
                restaurantsLiked.remove(restaurantId);
                UserHelper.updateRestaurantLikes(FirebaseAuth.getInstance().getUid(), restaurantsLiked);
            }
        }
    });
  }
}
...