import json
from mongoengine import DynamicDocument
 
import pytest
from unittest.mock import patch , Mock, MagicMock
 
from app.models.base import Base
from app.models.user import User
 

class TestUserBase:
    @patch.object(DynamicDocument,"save")
    def test_user_base_save_(self,mocker,base_user_factory):
        print("Public ID: ",base_user_factory['public_id'])
        payload = base_user_factory
        
        Base.save(payload)
        mocker.assert_called_once()

    # @pytest.mark.skip(reason="mongoengine don't save abstracted objects")
    @patch("app.models.base.Base.save")
    def test_user_base_archive(self,mocker,user_model_factory):
        payload = user_model_factory
        base = User()
        print("Before: ",payload['deleted'])
        # assert payload['deleted'] == False
        base.archive()
        # mocker.save.assert_called_once()
        print("After: ",payload['deleted'])
        # assert payload['deleted'] == True
