예제 #1
0
    def test_success(self, seer_auth, gql_client, unused_time_sleep):
        # setup
        seer_auth.return_value.cookie = {COOKIE_KEY_PROD: "cookie"}

        side_effects = []

        with open(TEST_DATA_DIR / "labels_1.json", "r") as f:
            side_effects.append(json.load(f))
        with open(TEST_DATA_DIR / "labels_2.json", "r") as f:
            side_effects.append(json.load(f))
        # this is the "no more data" response for get_labels()
        with open(TEST_DATA_DIR / "labels_1_empty.json", "r") as f:
            side_effects.append(json.load(f))

        gql_client.return_value.execute.side_effect = side_effects

        expected_result = pd.read_csv(TEST_DATA_DIR / "labels_1.csv",
                                      index_col=0)

        # run test
        result = SeerConnect().get_labels_dataframe("study-1-id",
                                                    "label-group-1-id")

        # check result
        pd.testing.assert_frame_equal(result, expected_result)
예제 #2
0
    def test_success(self, seer_auth, gql_client, unused_time_sleep):
        # setup
        seer_auth.return_value.cookie = {COOKIE_KEY_PROD: "cookie"}

        side_effects = []

        with open(TEST_DATA_DIR / "view_groups.json", "r") as f:
            side_effects.append(json.load(f))
        # this is the "no more data" response for get_viewed_times_dataframe()
        with open(TEST_DATA_DIR / "view_groups_empty.json", "r") as f:
            side_effects.append(json.load(f))

        gql_client.return_value.execute.side_effect = side_effects

        # need to set parse_dates and float_precision='round_trip' to make the comparison work
        expected_result = pd.read_csv(TEST_DATA_DIR / "views.csv",
                                      index_col=0,
                                      parse_dates=['createdAt', 'updatedAt'],
                                      float_precision='round_trip')

        # run test
        result = SeerConnect().get_viewed_times_dataframe("study-1-id")

        # check result
        pd.testing.assert_frame_equal(result, expected_result)
예제 #3
0
    def test_getting_multiple_study_ids_by_name(self, seer_auth, gql_client,
                                                unused_time_sleep):
        # setup
        seer_auth.return_value.cookie = {COOKIE_KEY_PROD: "cookie"}

        side_effects = []

        # this is the call in get_studies()
        with open(TEST_DATA_DIR / "studies_filtered1.json", "r") as f:
            side_effects.append({'studies': json.load(f)})
        # this is the "no more data" response for get_studies()
        side_effects.append({'studies': []})

        with open(TEST_DATA_DIR / "studies_filtered2.json", "r") as f:
            side_effects.append({'studies': json.load(f)})
        # this is the "no more data" response for get_studies()
        side_effects.append({'studies': []})

        # Build up the expected results from file
        expected_results = []
        with open(TEST_DATA_DIR / "study1_metadata.json", "r") as f:
            with open(TEST_DATA_DIR / "study2_metadata.json", "r") as g:
                study1 = json.load(f)
                study2 = json.load(g)
                expected_results = [
                    study1['study']['id'], study2['study']['id']
                ]

        gql_client.return_value.execute.side_effect = side_effects

        # run test
        result = SeerConnect().get_study_ids_from_names(["Study 1", "Study 2"])

        # check result
        assert result == expected_results
예제 #4
0
    def test_existing_study_param(self, seer_auth, gql_client,
                                  unused_time_sleep):
        # setup
        seer_auth.return_value.cookie = {'seer.sid': "cookie"}

        side_effects = []

        # this is the call in get_studies()
        with open(TEST_DATA_DIR / "studies.json", "r") as f:
            side_effects.append({'studies': json.load(f)})
        # this is the "no more data" response for get_studies()
        side_effects.append({'studies': []})

        # these are the calls from the loop in get_all_study_metadata_by_ids()
        expected_results = []
        with open(TEST_DATA_DIR / "study1_metadata.json", "r") as f:
            study = json.load(f)
            side_effects.append(study)
            expected_results = [study['study']]

        gql_client.return_value.execute.side_effect = side_effects

        # run test
        result = SeerConnect().get_all_study_metadata_by_names("Study 1")

        # check result
        assert result == {'studies': expected_results}
예제 #5
0
    def test_success(self, seer_auth, gql_client, unused_time_sleep):
        # setup
        seer_auth.return_value.cookie = {COOKIE_KEY_PROD: "cookie"}

        side_effects = []

        with open(TEST_DATA_DIR / "study_documents.json", "r") as f:
            side_effects.append(json.load(f))
        # # this is the "no more data" response for get_documents_for_studies_dataframe()
        with open(TEST_DATA_DIR / "study_documents_empty.json", "r") as f:
            side_effects.append(json.load(f))
        side_effects.append(
            {'studies':
             []})  # this is the "no more data" response for get_studies()

        gql_client.return_value.execute.side_effect = side_effects

        # need to set parse_dates and float_precision='round_trip' to make the comparison work
        expected_result = pd.read_csv(TEST_DATA_DIR / "study_documents.csv",
                                      index_col=0,
                                      parse_dates=['uploaded'],
                                      float_precision='round_trip')
        expected_result['uploaded'] = expected_result['uploaded'].astype(int)

        # run test
        result = SeerConnect().get_documents_for_studies_dataframe(
            "study-1-id")

        # check result
        pd.testing.assert_frame_equal(result, expected_result, check_like=True)
예제 #6
0
    def test_success(self, seer_auth, gql_client, unused_sleep):
        # setup
        seer_auth.return_value.cookie = {DEFAULT_COOKIE_KEY: "cookie"}
        seer_auth.return_value.get_connection_parameters.return_value = DEFAULT_CONNECTION_PARAMS

        expected_result = [{
            'category': {
                'description': None,
                'id': 'algorithm',
                'name': 'Algorithm'
            },
            'forDiary': None,
            'forStudy': True,
            'id': 'tag-1-id',
            'value': 'Needs Review'
        }, {
            'category': {
                'description': None,
                'id': 'algorithm',
                'name': 'Algorithm'
            },
            'forDiary': None,
            'forStudy': False,
            'id': 'tag-2-id',
            'value': 'Epileptiform'
        }]
        gql_client.return_value.execute.return_value = {
            'labelTags': expected_result
        }

        # run test
        result = SeerConnect().get_tag_ids()

        # check result
        assert result == expected_result
예제 #7
0
    def test_no_study_param(self, seer_auth, gql_client, unused_time_sleep):
        # setup
        seer_auth.return_value.cookie = {COOKIE_KEY_PROD: "cookie"}

        side_effects = []

        # this is the call in get_studies()
        with open(TEST_DATA_DIR / "studies.json", "r") as f:
            side_effects.append({'studies': json.load(f)})
        # this is the "no more data" response for get_studies()
        side_effects.append({'studies': []})

        # these are the calls from the loop in get_all_study_metadata_by_ids()
        expected_results = []
        for i in range(1, 5):
            filename = "study" + str(i) + "_metadata.json"
            with open(TEST_DATA_DIR / filename, "r") as f:
                study = json.load(f)
                side_effects.append(study)
                expected_results.append(study['study'])

        gql_client.return_value.execute.side_effect = side_effects

        # run test
        result = SeerConnect().get_all_study_metadata_by_names()

        # check result
        assert result == {'studies': expected_results}
예제 #8
0
    def test_success_multiple(self, seer_auth, gql_client, unused_sleep):
        # setup
        seer_auth.return_value.cookie = {DEFAULT_COOKIE_KEY: "cookie"}
        seer_auth.return_value.get_connection_parameters.return_value = DEFAULT_CONNECTION_PARAMS

        side_effects = []

        with open(TEST_DATA_DIR / "labels_1.json", "r") as f:
            side_effects.append(json.load(f))
        with open(TEST_DATA_DIR / "labels_2.json", "r") as f:
            side_effects.append(json.load(f))
        # this is the "no more data" response for get_labels()
        with open(TEST_DATA_DIR / "labels_1_empty.json", "r") as f:
            side_effects.append(json.load(f))

        gql_client.return_value.execute.side_effect = side_effects

        with open(TEST_DATA_DIR / "labels_result.json", "r") as f:
            expected_result = json.load(f)

        # run test
        result = SeerConnect().get_labels("study-1-id", "label-group-1-id")

        # check result
        assert result == expected_result
예제 #9
0
    def test_get_empty_results_dataframe(self, seer_auth, gql_client):
        seer_auth.return_value.cookie = {COOKIE_KEY_PROD: "cookie"}

        side_effects = []
        with open(TEST_DATA_DIR / "mood_survey_response_empty.json", "r") as f:
            side_effects.append(json.load(f))
        gql_client.return_value.execute.side_effect = side_effects

        result = SeerConnect().get_mood_survey_results_dataframe(
            ["aMoodSurveyId"])
        assert result.empty
예제 #10
0
    def test_get_user_ids_in_user_cohort_with_cohort_not_found(
            self, seer_auth, gql_client):
        # setup
        seer_auth.return_value.cookie = {'seer.sid': "cookie"}

        side_effects = [Exception('NOT_FOUND')]
        gql_client.return_value.execute.side_effect = side_effects

        with pytest.raises(Exception) as ex:
            SeerConnect().get_user_ids_in_user_cohort(
                'random-cohort-that-doesnt-exist')
            assert str(ex.value) == 'NOT_FOUND'
예제 #11
0
    def test_empty_segment_ids(self, seer_auth, unused_gql_client,
                               unused_time_sleep):
        # setup
        seer_auth.return_value.cookie = {COOKIE_KEY_PROD: "cookie"}

        # gql_client is never called as we don't enter the loop

        # run test
        result = SeerConnect().get_segment_urls([])

        # check result
        assert result.empty
예제 #12
0
    def test_get_empty_results_dataframe(self, seer_auth, gql_client,
                                         unused_sleep):
        seer_auth.return_value.cookie = {DEFAULT_COOKIE_KEY: "cookie"}
        seer_auth.return_value.get_connection_parameters.return_value = DEFAULT_CONNECTION_PARAMS

        side_effects = []
        with open(TEST_DATA_DIR / "mood_survey_response_empty.json", "r") as f:
            side_effects.append(json.load(f))
        gql_client.return_value.execute.side_effect = side_effects

        result = SeerConnect().get_mood_survey_results_dataframe(
            ["aMoodSurveyId"])
        assert result.empty
예제 #13
0
    def test_unmatched_segment_ids(self, seer_auth, gql_client, unused_sleep):
        # setup
        seer_auth.return_value.cookie = {DEFAULT_COOKIE_KEY: "cookie"}
        seer_auth.return_value.get_connection_parameters.return_value = DEFAULT_CONNECTION_PARAMS

        with open(TEST_DATA_DIR / "segment_urls_no_match.json", "r") as f:
            gql_client.return_value.execute.return_value = json.load(f)

        # run test
        result = SeerConnect().get_segment_urls(["blah", "blah1"])

        # check result
        assert result.empty
예제 #14
0
    def test_unmatched_segment_ids(self, seer_auth, gql_client,
                                   unused_time_sleep):
        # setup
        seer_auth.return_value.cookie = {COOKIE_KEY_PROD: "cookie"}

        with open(TEST_DATA_DIR / "segment_urls_no_match.json", "r") as f:
            gql_client.return_value.execute.return_value = json.load(f)

        # run test
        result = SeerConnect().get_segment_urls(["blah", "blah1"])

        # check result
        assert result.empty
예제 #15
0
    def test_none_segment_ids(self, seer_auth, unused_gql_client,
                              unused_time_sleep):
        # setup
        seer_auth.return_value.cookie = {COOKIE_KEY_PROD: "cookie"}

        expected_result = pd.read_csv(TEST_DATA_DIR / "segment_urls_empty.csv",
                                      index_col=0)

        # run test
        result = SeerConnect().get_segment_urls(None)

        # check result
        pd.testing.assert_frame_equal(result, expected_result)
예제 #16
0
    def test_single_study(self, unused_seer_connect_init, get_all_metadata):
        # setup
        with open(TEST_DATA_DIR / "study1_metadata.json", "r") as f:
            test_input = json.load(f)
        get_all_metadata.return_value = {'studies': [test_input['study']]}

        expected_result = pd.read_csv(TEST_DATA_DIR / "study1_metadata.csv",
                                      index_col=0)

        # run test
        result = SeerConnect().get_all_study_metadata_dataframe_by_ids()

        # check result
        pd.testing.assert_frame_equal(result, expected_result)
예제 #17
0
    def test_empty(self, seer_auth, gql_client, unused_sleep):
        # setup
        seer_auth.return_value.cookie = {DEFAULT_COOKIE_KEY: "cookie"}
        seer_auth.return_value.get_connection_parameters.return_value = DEFAULT_CONNECTION_PARAMS

        expected_result = []
        gql_client.return_value.execute.return_value = {
            'labelTags': expected_result
        }

        # run test
        result = SeerConnect().get_tag_ids()

        # check result
        assert result == expected_result
예제 #18
0
    def test_get_results_dataframe(self, seer_auth, gql_client):
        seer_auth.return_value.cookie = {COOKIE_KEY_PROD: "cookie"}

        side_effects = []
        with open(TEST_DATA_DIR / "mood_survey_response_1.json", "r") as f:
            side_effects.append(json.load(f))
        with open(TEST_DATA_DIR / "mood_survey_response_empty.json", "r") as f:
            side_effects.append(json.load(f))
        gql_client.return_value.execute.side_effect = side_effects

        expected_result = pd.read_csv(TEST_DATA_DIR /
                                      "mood_survey_results.csv")

        result = SeerConnect().get_mood_survey_results_dataframe(
            ["aMoodSurveyId"])
        pd.testing.assert_frame_equal(result, expected_result)
예제 #19
0
    def test_success(self, seer_auth, gql_client, unused_time_sleep):
        # setup
        seer_auth.return_value.cookie = {COOKIE_KEY_PROD: "cookie"}

        with open(TEST_DATA_DIR / "segment_urls_1.json", "r") as f:
            gql_client.return_value.execute.return_value = json.load(f)

        expected_result = pd.read_csv(TEST_DATA_DIR / "segment_urls_1.csv",
                                      index_col=0)

        # run test
        result = SeerConnect().get_segment_urls(
            ["segment-1-id", "segment-2-id"])

        # check result
        pd.testing.assert_frame_equal(result, expected_result)
예제 #20
0
    def test_get_user_ids_in_user_cohort_with_no_users(self, seer_auth,
                                                       gql_client):
        # setup
        seer_auth.return_value.cookie = {'seer.sid': "cookie"}

        side_effects = []

        with open(TEST_DATA_DIR / "user_cohorts_2_get.json", "r") as f:
            side_effects.append(json.load(f))

        gql_client.return_value.execute.side_effect = side_effects

        expected_result = []

        # run test and check result
        result = SeerConnect().get_user_ids_in_user_cohort('a-missing-cohort')
        assert result == expected_result
예제 #21
0
    def test_get_study_ids_in_study_cohort(self, seer_auth, gql_client):
        # setup
        seer_auth.return_value.cookie = {COOKIE_KEY_PROD: "cookie"}

        side_effects = []

        with open(TEST_DATA_DIR / "study_cohorts_1_get.json", "r") as f:
            side_effects.append(json.load(f))
        with open(TEST_DATA_DIR / "study_cohorts_2_get.json", "r") as f:
            side_effects.append(json.load(f))

        gql_client.return_value.execute.side_effect = side_effects

        expected_result = ['study1', 'study2']

        # run test and check result
        result = SeerConnect().get_study_ids_in_study_cohort('cohort1')
        assert result == expected_result
예제 #22
0
    def test_four_studies(self, unused_seer_connect_init, get_all_metadata):
        # setup
        studies = []
        for i in range(1, 5):
            filename = "study" + str(i) + "_metadata.json"
            with open(TEST_DATA_DIR / filename, "r") as f:
                studies.append(json.load(f)['study'])

        get_all_metadata.return_value = {'studies': studies}

        expected_result = pd.read_csv(TEST_DATA_DIR /
                                      "studies1-4_metadata.csv",
                                      index_col=0)

        # run test
        result = SeerConnect().get_all_study_metadata_dataframe_by_ids()

        # check result
        pd.testing.assert_frame_equal(result, expected_result)
예제 #23
0
    def test_nonexistent_study_param(self, seer_auth, gql_client,
                                     unused_time_sleep):
        # setup
        seer_auth.return_value.cookie = {COOKIE_KEY_PROD: "cookie"}

        side_effects = []

        # this is the call in get_studies() when no objects are found
        side_effects.append({'studies': []})

        gql_client.return_value.execute.side_effect = side_effects

        # run test
        result = SeerConnect().get_all_study_metadata_by_names("Study 12")

        # check result
        assert result == {'studies': []}
        # the only call will be in getStudies()
        assert gql_client.return_value.execute.call_count == 1
예제 #24
0
    def test_get_user_ids_in_user_cohort(self, seer_auth, gql_client,
                                         unused_sleep):
        # setup
        seer_auth.return_value.cookie = {'seer.sid': "cookie"}
        seer_auth.return_value.get_connection_parameters.return_value = DEFAULT_CONNECTION_PARAMS

        side_effects = []

        with open(TEST_DATA_DIR / "user_cohorts_1_get.json", "r") as f:
            side_effects.append(json.load(f))
        with open(TEST_DATA_DIR / "user_cohorts_2_get.json", "r") as f:
            side_effects.append(json.load(f))

        gql_client.return_value.execute.side_effect = side_effects

        expected_result = ['user1', 'user2']

        # run test and check result
        result = SeerConnect().get_user_ids_in_user_cohort('cohort1')
        assert result == expected_result
예제 #25
0
    def test_multiple_batches(self, seer_auth, gql_client, unused_time_sleep):
        # setup
        seer_auth.return_value.cookie = {COOKIE_KEY_PROD: "cookie"}

        side_effects = []
        for file_name in ["segment_urls_1.json", "segment_urls_2.json"]:
            with open(TEST_DATA_DIR / file_name, "r") as f:
                side_effects.append(json.load(f))
        gql_client.return_value.execute.side_effect = side_effects

        expected_result = pd.read_csv(TEST_DATA_DIR / "segment_urls_2.csv",
                                      index_col=0)

        # run test
        result = SeerConnect().get_segment_urls(
            ["segment-1-id", "segment-2-id", "segment-3-id", "segment-4-id"],
            2)

        # check result
        pd.testing.assert_frame_equal(result, expected_result)
예제 #26
0
    def test_get_multiple_results_pages_dataframe(self, seer_auth, gql_client,
                                                  unused_sleep):
        seer_auth.return_value.cookie = {DEFAULT_COOKIE_KEY: "cookie"}
        seer_auth.return_value.get_connection_parameters.return_value = DEFAULT_CONNECTION_PARAMS

        side_effects = []
        with open(TEST_DATA_DIR / "mood_survey_response_1.json", "r") as f:
            side_effects.append(json.load(f))
        with open(TEST_DATA_DIR / "mood_survey_response_2.json", "r") as f:
            side_effects.append(json.load(f))
        with open(TEST_DATA_DIR / "mood_survey_response_empty.json", "r") as f:
            side_effects.append(json.load(f))
        gql_client.return_value.execute.side_effect = side_effects

        expected_result = pd.read_csv(TEST_DATA_DIR /
                                      "mood_survey_results_multipage.csv")

        result = SeerConnect().get_mood_survey_results_dataframe(
            ["aMoodSurveyId"])
        pd.testing.assert_frame_equal(result, expected_result)
예제 #27
0
    def test_nonexistent_study_param(self, seer_auth, gql_client,
                                     unused_time_sleep):
        # setup
        seer_auth.return_value.cookie = {'seer.sid': "cookie"}

        side_effects = []

        # this is the call in get_studies()
        with open(TEST_DATA_DIR / "studies.json", "r") as f:
            side_effects.append({'studies': json.load(f)})
        # this is the "no more data" response for get_studies()
        side_effects.append({'studies': []})

        gql_client.return_value.execute.side_effect = side_effects

        # run test
        result = SeerConnect().get_all_study_metadata_by_names("Study 12")

        # check result
        assert result == {'studies': []}
        # the only call will be in getStudies()
        assert gql_client.return_value.execute.call_count == 2
예제 #28
0
    def test_success(self, seer_auth, gql_client, unused_time_sleep):
        # setup
        seer_auth.return_value.cookie = {'seer.sid': "cookie"}

        side_effects = []

        with open(TEST_DATA_DIR / "labels_1.json", "r") as f:
            side_effects.append(json.load(f))
        with open(TEST_DATA_DIR / "labels_2.json", "r") as f:
            side_effects.append(json.load(f))
        # this is the "no more data" response for get_labels()
        with open(TEST_DATA_DIR / "labels_1_empty.json", "r") as f:
            side_effects.append(json.load(f))

        gql_client.return_value.execute.side_effect = side_effects

        with open(TEST_DATA_DIR / "labels_result.json", "r") as f:
            expected_result = json.load(f)

        # run test
        result = SeerConnect().get_labels("study-1-id", "label-group-1-id")

        # check result
        assert result == expected_result
예제 #29
0
    def test_login_error(self, get_auth):
        get_auth.side_effect = InterruptedError('Authentication Failed')

        with pytest.raises(InterruptedError):
            SeerConnect()
예제 #30
0
    def test_success(self):
        result = SeerConnect(seer_auth=auth.BaseAuth(api_url=''))

        assert result.graphql_client