| 1 |  |  | import os | 
            
                                                                                                            
                            
            
                                    
            
            
                | 2 |  |  | import pytest | 
            
                                                                                                            
                            
            
                                    
            
            
                | 3 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 4 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 5 |  |  | my_dir = os.path.dirname(os.path.realpath(__file__)) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 6 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 7 |  |  | ####### Files and folders | 
            
                                                                                                            
                            
            
                                    
            
            
                | 8 |  |  | @pytest.fixture | 
            
                                                                                                            
                            
            
                                    
            
            
                | 9 |  |  | def tests_root_dir(): | 
            
                                                                                                            
                            
            
                                    
            
            
                | 10 |  |  |     return my_dir | 
            
                                                                                                            
                            
            
                                    
            
            
                | 11 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 12 |  |  | @pytest.fixture | 
            
                                                                                                            
                            
            
                                    
            
            
                | 13 |  |  | def tests_data_root(tests_root_dir): | 
            
                                                                                                            
                            
            
                                    
            
            
                | 14 |  |  |     return os.path.join(tests_root_dir, 'dts') | 
            
                                                                                                            
                            
            
                                    
            
            
                | 15 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 16 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 17 |  |  | @pytest.fixture | 
            
                                                                                                            
                            
            
                                    
            
            
                | 18 |  |  | def sample_json(tests_data_root): | 
            
                                                                                                            
                            
            
                                    
            
            
                | 19 |  |  |     return os.path.join(tests_data_root, 'sample-data.jsonlines') | 
            
                                                                                                            
                            
            
                                    
            
            
                | 20 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 21 |  |  | @pytest.fixture | 
            
                                                                                                            
                            
            
                                    
            
            
                | 22 |  |  | def sample_collaped_json(tests_data_root): | 
            
                                                                                                            
                            
            
                                    
            
            
                | 23 |  |  |     return os.path.join(tests_data_root, 'sample-data-collapsed.jsonlines') | 
            
                                                                                                            
                            
            
                                    
            
            
                | 24 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 25 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 26 |  |  | @pytest.fixture() | 
            
                                                                                                            
                            
            
                                    
            
            
                | 27 |  |  | def test_json_data(sample_json): | 
            
                                                                                                            
                            
            
                                    
            
            
                | 28 |  |  |     return { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 29 |  |  |         'file_path': sample_json, | 
            
                                                                                                            
                            
            
                                    
            
            
                | 30 |  |  |         'nb_lines': 100, | 
            
                                                                                                            
                            
            
                                    
            
            
                | 31 |  |  |         'attributes': {'flavors', 'name', 'medical', 'description', 'image_urls', 'parents', 'negatives', 'grow_info', '_id', 'type', 'image_paths', 'effects'}, | 
            
                                                                                                            
                            
            
                                    
            
            
                | 32 |  |  |     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 33 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 34 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 35 |  |  | @pytest.fixture | 
            
                                                                                                            
                            
            
                                    
            
            
                | 36 |  |  | def somagic(): | 
            
                                                                                                            
                            
            
                                    
            
            
                | 37 |  |  |     from so_magic import init_so_magic | 
            
                                                                                                            
                            
            
                                    
            
            
                | 38 |  |  |     _ = init_so_magic() | 
            
                                                                                                            
                            
            
                                    
            
            
                | 39 |  |  |     return _ | 
            
                                                                                                            
                            
            
                                    
            
            
                | 40 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 41 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 42 |  |  | @pytest.fixture | 
            
                                                                                                            
                            
            
                                    
            
            
                | 43 |  |  | def data_manager(): | 
            
                                                                                                            
                            
            
                                    
            
            
                | 44 |  |  |     def getter(): | 
            
                                                                                                            
                            
            
                                    
            
            
                | 45 |  |  |         from so_magic.data import init_data_manager | 
            
                                                                                                            
                            
            
                                    
            
            
                | 46 |  |  |         from so_magic.data.backend import init_backend | 
            
                                                                                                            
                            
            
                                    
            
            
                | 47 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 48 |  |  |         data_manager = init_data_manager(init_backend(engine_type='pd')) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 49 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 50 |  |  |         datapoints_fact = data_manager.backend.datapoints_factory | 
            
                                                                                                            
                            
            
                                    
            
            
                | 51 |  |  |         cmd_fact = data_manager.backend.engine.command_factory | 
            
                                                                                                            
                            
            
                                    
            
            
                | 52 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 53 |  |  |         # test 1 | 
            
                                                                                                            
                            
            
                                    
            
            
                | 54 |  |  |         from so_magic.data.datapoints.datapoints import DatapointsFactory | 
            
                                                                                                            
                            
            
                                    
            
            
                | 55 |  |  |         from so_magic.data.backend.engine import MagicCommandFactory | 
            
                                                                                                            
                            
            
                                    
            
            
                | 56 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 57 |  |  |         assert isinstance(datapoints_fact, DatapointsFactory) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 58 |  |  |         assert isinstance(cmd_fact, MagicCommandFactory) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 59 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 60 |  |  |         subjects = [datapoints_fact.subject, cmd_fact, data_manager.phi_class.subject] | 
            
                                                                                                            
                            
            
                                    
            
            
                | 61 |  |  |         assert len(set([id(x._observers) for x in subjects])) == len(subjects) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 62 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 63 |  |  |         assert datapoints_fact.subject._observers[0] == data_manager.backend.datapoints_manager | 
            
                                                                                                            
                            
            
                                    
            
            
                | 64 |  |  |         assert cmd_fact._observers[0] == data_manager.commands_manager.command.accumulator | 
            
                                                                                                            
                            
            
                                    
            
            
                | 65 |  |  |         assert data_manager.phi_class.subject._observers[0] == data_manager.built_phis | 
            
                                                                                                            
                            
            
                                    
            
            
                | 66 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 67 |  |  |         print(f"DTP FCT OBS: [{', '.join(str(_) for _ in datapoints_fact.subject._observers)}]") | 
            
                                                                                                            
                            
            
                                    
            
            
                | 68 |  |  |         print(f"CMD FCT OBS: [{', '.join(str(_) for _ in cmd_fact._observers)}]") | 
            
                                                                                                            
                            
            
                                    
            
            
                | 69 |  |  |         print(f"PHIFUNC class OBS: [{', '.join(str(_) for _ in data_manager.phi_class.subject._observers)}]") | 
            
                                                                                                            
                            
            
                                    
            
            
                | 70 |  |  |         assert all([len(x._observers) == 1 for x in subjects]) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 71 |  |  |         return data_manager | 
            
                                                                                                            
                            
            
                                    
            
            
                | 72 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 73 |  |  |     return getter | 
            
                                                                                                            
                            
            
                                    
            
            
                | 74 |  |  |  |