|
| 1 | +import pytest |
| 2 | +import json |
| 3 | +from pins.rsconnect.fs import RsConnectFs |
| 4 | +from pins.boards import BoardRsConnect |
| 5 | + |
| 6 | +RSC_SERVER_URL = "http://localhost:3939" |
| 7 | +RSC_KEYS_FNAME = "vetiver/tests/rsconnect_api_keys.json" |
| 8 | + |
| 9 | +pytestmark = pytest.mark.rsc_test # noqa |
| 10 | + |
| 11 | +def rsc_from_key(name): |
| 12 | + from pins.rsconnect.api import RsConnectApi |
| 13 | + |
| 14 | + with open(RSC_KEYS_FNAME) as f: |
| 15 | + api_key = json.load(f)[name] |
| 16 | + return RsConnectApi(RSC_SERVER_URL, api_key) |
| 17 | + |
| 18 | +def rsc_fs_from_key(name): |
| 19 | + from pins.rsconnect.fs import RsConnectFs |
| 20 | + |
| 21 | + rsc = rsc_from_key(name) |
| 22 | + |
| 23 | + return RsConnectFs(rsc) |
| 24 | + |
| 25 | + |
| 26 | +def rsc_delete_user_content(rsc): |
| 27 | + guid = rsc.get_user()["guid"] |
| 28 | + content = rsc.get_content(owner_guid=guid) |
| 29 | + for entry in content: |
| 30 | + rsc.delete_content_item(entry["guid"]) |
| 31 | + |
| 32 | +@pytest.fixture(scope="function") |
| 33 | +def rsc_short(): |
| 34 | + # tears down content after each test |
| 35 | + fs_susan = rsc_fs_from_key("susan") |
| 36 | + |
| 37 | + # delete any content that might already exist |
| 38 | + rsc_delete_user_content(fs_susan.api) |
| 39 | + |
| 40 | + yield BoardRsConnect("", fs_susan, allow_pickle_read=True) #fs_susan.ls to list content |
| 41 | + |
| 42 | + rsc_delete_user_content(fs_susan.api) |
| 43 | + |
| 44 | +from vetiver import VetiverModel, vetiver_pin_write, mock |
| 45 | +import sklearn |
| 46 | +# Load data, model |
| 47 | +X_df, y = mock.get_mock_data() |
| 48 | +model = mock.get_mock_model().fit(X_df, y) |
| 49 | + |
| 50 | +def test_board_pin_write(rsc_short): |
| 51 | + v = VetiverModel(model=model, ptype_data=X_df, |
| 52 | + model_name="susan/model", versioned=None) |
| 53 | + vetiver_pin_write(board=rsc_short, model=v) |
| 54 | + assert isinstance(rsc_short.pin_read("susan/model"), sklearn.dummy.DummyRegressor) |
0 commit comments