def test_raise_error_when_columns_with_same_name_are_added(): test_question_1 = simplesurvey.Question("repeat_column_name") test_question_2 = simplesurvey.Question("repeat_column_name") survey = simplesurvey.Survey() survey.add_column(test_question_1) with pytest.raises(simplesurvey.DuplicateColumnException): survey.add_column(test_question_2)
def test_set_response_data(tmpdir): path = tmpdir.join("data.csv") path.write("""col1,col2,col3 data1,data2,data2""") survey = simplesurvey.Survey() survey.responses(str(path))\ .add_column(simplesurvey.Question("col1"))\ .add_column(simplesurvey.Question("col2"))\ .add_column(simplesurvey.Question("col3"))\ .process() result = survey.data assert sorted(result.columns) == sorted(['col1', 'col2', 'col3'])
def test_add_question_to_survey(): test_question = simplesurvey.Question("A test column") survey = simplesurvey.Survey() survey.add_column(test_question) assert len(survey.questions) == 1 assert survey.questions[0].column == "A test column"
def test_survey_summary_returns_summarizer_with_loaded_columns(): data = pd.DataFrame({'a': [1, 2, 3, 4, 5]}) survey = simplesurvey.Survey() survey.responses(data)\ .add_column(simplesurvey.Question('a'))\ .process() result = survey.summarize(['a']) assert isinstance(result, simplesurvey.Summarizer)
def test_data_raises_exception_if_column_doesnt_exist(): survey = simplesurvey.Survey() question1 = simplesurvey.Question("I am a missing column") data = pd.DataFrame(data={'col1': ['1'], 'col2': ['2']}) survey._responses = data survey.add_column(question1) with pytest.raises(simplesurvey.SurveyLoadingException): survey.process()
def test_supplementary_data(tmpdir): path = tmpdir.join("data.csv") path.write("""col1,col2,col3 1,data2,data2""") suppath = tmpdir.join("data2.csv") suppath.write("""natural_key,sup2,sup3 1,data2,data2""") survey = simplesurvey.Survey() survey.responses(str(path), natural_key='col1')\ .supplementary_data(str(suppath), "natural_key")\ .add_column(simplesurvey.Question("col2"))\ .add_column(simplesurvey.Question("col3"))\ .add_column(simplesurvey.Question("sup2"))\ .add_column(simplesurvey.Question("sup3"))\ .process() result = survey.data assert sorted(list(result.columns)) == sorted( ['col2', 'col3', 'sup2', 'sup3'])
def test_simple_filter_data(): survey = simplesurvey.Survey() question1 = simplesurvey.Question("col1").add_filter(lambda x: x == 1) data = pd.DataFrame(data={'col1': [1, 2, 3], 'col2': [2, 3, 4]}) survey._responses = data survey.add_column(question1)\ .process() result = survey.data expected = pd.DataFrame({'col1': [1]}) assert result.equals(expected)