Esempio n. 1
0
    def setUp(self):
        self.user_1 = AuthUserFactory()
        self.auth_1 = Auth(self.user_1)
        self.view = UserWorkshopFormView()
        self.workshop_date = timezone.now()
        self.data = [
            ['none', 'date', 'none', 'none', 'none', 'email', 'none'],
            [
                None,
                self.workshop_date.strftime('%m/%d/%y'), None, None, None,
                self.user_1.username, None
            ],
        ]

        self.user_exists_by_name_data = [
            ['number', 'date', 'location', 'topic', 'name', 'email', 'other'],
            [
                None,
                self.workshop_date.strftime('%m/%d/%y'), None, None,
                self.user_1.fullname, '*****@*****.**', None
            ],
        ]

        self.user_not_found_data = [
            ['none', 'date', 'none', 'none', 'none', 'email', 'none'],
            [
                None,
                self.workshop_date.strftime('%m/%d/%y'), None, None, None,
                '*****@*****.**', None
            ],
        ]
Esempio n. 2
0
    def setUp(self):
        self.user_1 = AuthUserFactory()
        self.auth_1 = Auth(self.user_1)
        self.view = UserWorkshopFormView()
        self.workshop_date = datetime.now()
        self.data = [
            ['none', 'date', 'none', 'none', 'none', 'email', 'none'],
            [None, self.workshop_date.strftime('%m/%d/%y'), None, None, None, self.user_1.username, None],
        ]

        self.user_exists_by_name_data = [
            ['number', 'date', 'location', 'topic', 'name', 'email', 'other'],
            [None, self.workshop_date.strftime('%m/%d/%y'), None, None, self.user_1.fullname, '*****@*****.**', None],
        ]

        self.user_not_found_data = [
            ['none', 'date', 'none', 'none', 'none', 'email', 'none'],
            [None, self.workshop_date.strftime('%m/%d/%y'), None, None, None, '*****@*****.**', None],
        ]
Esempio n. 3
0
class TestUserWorkshopFormView(AdminTestCase):

    def setUp(self):
        self.user_1 = AuthUserFactory()
        self.auth_1 = Auth(self.user_1)
        self.view = UserWorkshopFormView()
        self.workshop_date = datetime.now()
        self.data = [
            ['none', 'date', 'none', 'none', 'none', 'email', 'none'],
            [None, self.workshop_date.strftime('%m/%d/%y'), None, None, None, self.user_1.username, None],
        ]

        self.user_exists_by_name_data = [
            ['number', 'date', 'location', 'topic', 'name', 'email', 'other'],
            [None, self.workshop_date.strftime('%m/%d/%y'), None, None, self.user_1.fullname, '*****@*****.**', None],
        ]

        self.user_not_found_data = [
            ['none', 'date', 'none', 'none', 'none', 'email', 'none'],
            [None, self.workshop_date.strftime('%m/%d/%y'), None, None, None, '*****@*****.**', None],
        ]

    def _create_and_parse_test_file(self, data):
        with open('test.csv', 'w') as fp:
            writer = csv.writer(fp)
            for row in data:
                writer.writerow(row)

        with file('test.csv') as fp:
            result_csv = self.view.parse(fp)

        return result_csv

    def _create_nodes_and_add_logs(self, first_activity_date, second_activity_date=None):
        node_one = ProjectFactory(creator=self.user_1, date_created=first_activity_date)
        node_one.add_log(
            'log_added', params={'project': node_one._id}, auth=self.auth_1, log_date=first_activity_date, save=True
        )

        if second_activity_date:
            node_two = ProjectFactory(creator=self.user_1, date_created=second_activity_date)
            node_two.add_log(
                'log_added', params={'project': node_two._id}, auth=self.auth_1, log_date=second_activity_date, save=True
            )

    def test_correct_number_of_columns_added(self):
        added_columns = ['OSF ID', 'Logs Since Workshop', 'Nodes Created Since Workshop', 'Last Log Data']
        result_csv = self._create_and_parse_test_file(self.data)
        nt.assert_equal(len(self.data[0]) + len(added_columns), len(result_csv[0]))

    def test_user_activity_day_of_workshop_only(self):
        self._create_nodes_and_add_logs(first_activity_date=self.workshop_date)

        result_csv = self._create_and_parse_test_file(self.data)
        user_logs_since_workshop = result_csv[1][-3]
        user_nodes_created_since_workshop = result_csv[1][-2]

        nt.assert_equal(user_logs_since_workshop, 0)
        nt.assert_equal(user_nodes_created_since_workshop, 0)

    def test_user_activity_before_workshop_only(self):
        activity_date = datetime.now() - timedelta(days=1)
        self._create_nodes_and_add_logs(first_activity_date=activity_date)

        result_csv = self._create_and_parse_test_file(self.data)
        user_logs_since_workshop = result_csv[1][-3]
        user_nodes_created_since_workshop = result_csv[1][-2]

        nt.assert_equal(user_logs_since_workshop, 0)
        nt.assert_equal(user_nodes_created_since_workshop, 0)

    def test_user_activity_after_workshop_only(self):
        activity_date = datetime.now() + timedelta(days=1)
        self._create_nodes_and_add_logs(first_activity_date=activity_date)

        result_csv = self._create_and_parse_test_file(self.data)
        user_logs_since_workshop = result_csv[1][-3]
        user_nodes_created_since_workshop = result_csv[1][-2]

        nt.assert_equal(user_logs_since_workshop, 2)
        nt.assert_equal(user_nodes_created_since_workshop, 1)

    def test_user_activity_day_of_workshop_and_before(self):
        activity_date = datetime.now() - timedelta(days=1)
        self._create_nodes_and_add_logs(
            first_activity_date=self.workshop_date,
            second_activity_date=activity_date
        )

        result_csv = self._create_and_parse_test_file(self.data)
        user_logs_since_workshop = result_csv[1][-3]
        user_nodes_created_since_workshop = result_csv[1][-2]

        nt.assert_equal(user_logs_since_workshop, 0)
        nt.assert_equal(user_nodes_created_since_workshop, 0)

    def test_user_activity_day_of_workshop_and_after(self):
        activity_date = datetime.now() + timedelta(days=1)
        self._create_nodes_and_add_logs(
            first_activity_date=self.workshop_date,
            second_activity_date=activity_date
        )

        result_csv = self._create_and_parse_test_file(self.data)
        user_logs_since_workshop = result_csv[1][-3]
        user_nodes_created_since_workshop = result_csv[1][-2]

        nt.assert_equal(user_logs_since_workshop, 2)
        nt.assert_equal(user_nodes_created_since_workshop, 1)

    def test_user_activity_before_workshop_and_after(self):
        before_activity_date = datetime.now() - timedelta(days=1)
        after_activity_date = datetime.now() + timedelta(days=1)
        self._create_nodes_and_add_logs(
            first_activity_date=before_activity_date,
            second_activity_date=after_activity_date
        )

        result_csv = self._create_and_parse_test_file(self.data)
        user_logs_since_workshop = result_csv[1][-3]
        user_nodes_created_since_workshop = result_csv[1][-2]

        nt.assert_equal(user_logs_since_workshop, 2)
        nt.assert_equal(user_nodes_created_since_workshop, 1)

    def test_user_osf_account_not_found(self):
        result_csv = self._create_and_parse_test_file(self.user_not_found_data)
        user_guid = result_csv[1][-4]
        last_log_date = result_csv[1][-1]
        user_logs_since_workshop = result_csv[1][-3]
        user_nodes_created_since_workshop = result_csv[1][-2]

        nt.assert_equal(user_guid, '')
        nt.assert_equal(last_log_date, '')
        nt.assert_equal(user_logs_since_workshop, 0)
        nt.assert_equal(user_nodes_created_since_workshop, 0)

    def test_user_found_by_name(self):
        result_csv = self._create_and_parse_test_file(self.user_exists_by_name_data)
        user_guid = result_csv[1][-4]
        last_log_date = result_csv[1][-1]
        user_logs_since_workshop = result_csv[1][-3]
        user_nodes_created_since_workshop = result_csv[1][-2]

        nt.assert_equal(user_guid, self.user_1._id)
        nt.assert_equal(last_log_date, '')
        nt.assert_equal(user_logs_since_workshop, 0)
        nt.assert_equal(user_nodes_created_since_workshop, 0)

    def test_form_valid(self):
        request = RequestFactory().post('/fake_path')
        data = [
            ['none', 'date', 'none', 'none', 'none', 'email', 'none'],
            [None, '9/1/16', None, None, None, self.user_1.username, None],
        ]

        with open('test.csv', 'w') as fp:
            writer = csv.writer(fp)
            for row in data:
                writer.writerow(row)

        with file('test.csv', mode='rb') as fp:
            uploaded = SimpleUploadedFile(fp.name, fp.read(), content_type='text/csv')

        form = WorkshopForm(data={'document': uploaded})
        form.is_valid()
        form.cleaned_data['document'] = uploaded
        setup_form_view(self.view, request, form)

    def tearDown(self):
        if os.path.isfile('test.csv'):
            os.remove('test.csv')
Esempio n. 4
0
class TestUserWorkshopFormView(AdminTestCase):
    def setUp(self):
        self.user_1 = AuthUserFactory()
        self.auth_1 = Auth(self.user_1)
        self.view = UserWorkshopFormView()
        self.workshop_date = timezone.now()
        self.data = [
            ['none', 'date', 'none', 'none', 'none', 'email', 'none'],
            [
                None,
                self.workshop_date.strftime('%m/%d/%y'), None, None, None,
                self.user_1.username, None
            ],
        ]

        self.user_exists_by_name_data = [
            ['number', 'date', 'location', 'topic', 'name', 'email', 'other'],
            [
                None,
                self.workshop_date.strftime('%m/%d/%y'), None, None,
                self.user_1.fullname, '*****@*****.**', None
            ],
        ]

        self.user_not_found_data = [
            ['none', 'date', 'none', 'none', 'none', 'email', 'none'],
            [
                None,
                self.workshop_date.strftime('%m/%d/%y'), None, None, None,
                '*****@*****.**', None
            ],
        ]

    def _create_and_parse_test_file(self, data):
        with open('test.csv', 'w') as fp:
            writer = csv.writer(fp)
            for row in data:
                writer.writerow(row)

        with file('test.csv') as fp:
            result_csv = self.view.parse(fp)

        return result_csv

    def _create_nodes_and_add_logs(self,
                                   first_activity_date,
                                   second_activity_date=None):
        node_one = ProjectFactory(creator=self.user_1,
                                  date_created=first_activity_date)
        node_one.add_log('log_added',
                         params={'project': node_one._id},
                         auth=self.auth_1,
                         log_date=first_activity_date,
                         save=True)

        if second_activity_date:
            node_two = ProjectFactory(creator=self.user_1,
                                      date_created=second_activity_date)
            node_two.add_log('log_added',
                             params={'project': node_two._id},
                             auth=self.auth_1,
                             log_date=second_activity_date,
                             save=True)

    def test_correct_number_of_columns_added(self):
        added_columns = [
            'OSF ID', 'Logs Since Workshop', 'Nodes Created Since Workshop',
            'Last Log Data'
        ]
        result_csv = self._create_and_parse_test_file(self.data)
        nt.assert_equal(
            len(self.data[0]) + len(added_columns), len(result_csv[0]))

    def test_user_activity_day_of_workshop_only(self):
        self._create_nodes_and_add_logs(first_activity_date=self.workshop_date)

        result_csv = self._create_and_parse_test_file(self.data)
        user_logs_since_workshop = result_csv[1][-3]
        user_nodes_created_since_workshop = result_csv[1][-2]

        nt.assert_equal(user_logs_since_workshop, 0)
        nt.assert_equal(user_nodes_created_since_workshop, 0)

    def test_user_activity_before_workshop_only(self):
        activity_date = timezone.now() - timedelta(days=1)
        self._create_nodes_and_add_logs(first_activity_date=activity_date)

        result_csv = self._create_and_parse_test_file(self.data)
        user_logs_since_workshop = result_csv[1][-3]
        user_nodes_created_since_workshop = result_csv[1][-2]

        nt.assert_equal(user_logs_since_workshop, 0)
        nt.assert_equal(user_nodes_created_since_workshop, 0)

    def test_user_activity_after_workshop_only(self):
        activity_date = timezone.now() + timedelta(days=1)
        self._create_nodes_and_add_logs(first_activity_date=activity_date)

        result_csv = self._create_and_parse_test_file(self.data)
        user_logs_since_workshop = result_csv[1][-3]
        user_nodes_created_since_workshop = result_csv[1][-2]

        nt.assert_equal(user_logs_since_workshop, 2)
        nt.assert_equal(user_nodes_created_since_workshop, 1)

    def test_user_activity_day_of_workshop_and_before(self):
        activity_date = timezone.now() - timedelta(days=1)
        self._create_nodes_and_add_logs(first_activity_date=self.workshop_date,
                                        second_activity_date=activity_date)

        result_csv = self._create_and_parse_test_file(self.data)
        user_logs_since_workshop = result_csv[1][-3]
        user_nodes_created_since_workshop = result_csv[1][-2]

        nt.assert_equal(user_logs_since_workshop, 0)
        nt.assert_equal(user_nodes_created_since_workshop, 0)

    def test_user_activity_day_of_workshop_and_after(self):
        activity_date = timezone.now() + timedelta(days=1)
        self._create_nodes_and_add_logs(first_activity_date=self.workshop_date,
                                        second_activity_date=activity_date)

        result_csv = self._create_and_parse_test_file(self.data)
        user_logs_since_workshop = result_csv[1][-3]
        user_nodes_created_since_workshop = result_csv[1][-2]

        nt.assert_equal(user_logs_since_workshop, 2)
        nt.assert_equal(user_nodes_created_since_workshop, 1)

    def test_user_activity_before_workshop_and_after(self):
        before_activity_date = timezone.now() - timedelta(days=1)
        after_activity_date = timezone.now() + timedelta(days=1)
        self._create_nodes_and_add_logs(
            first_activity_date=before_activity_date,
            second_activity_date=after_activity_date)

        result_csv = self._create_and_parse_test_file(self.data)
        user_logs_since_workshop = result_csv[1][-3]
        user_nodes_created_since_workshop = result_csv[1][-2]

        nt.assert_equal(user_logs_since_workshop, 2)
        nt.assert_equal(user_nodes_created_since_workshop, 1)

    def test_user_osf_account_not_found(self):
        result_csv = self._create_and_parse_test_file(self.user_not_found_data)
        user_id = result_csv[1][-4]
        last_log_date = result_csv[1][-1]
        user_logs_since_workshop = result_csv[1][-3]
        user_nodes_created_since_workshop = result_csv[1][-2]

        nt.assert_equal(user_id, '')
        nt.assert_equal(last_log_date, '')
        nt.assert_equal(user_logs_since_workshop, 0)
        nt.assert_equal(user_nodes_created_since_workshop, 0)

    def test_user_found_by_name(self):
        result_csv = self._create_and_parse_test_file(
            self.user_exists_by_name_data)
        user_id = result_csv[1][-4]
        last_log_date = result_csv[1][-1]
        user_logs_since_workshop = result_csv[1][-3]
        user_nodes_created_since_workshop = result_csv[1][-2]

        nt.assert_equal(user_id, self.user_1.id)
        nt.assert_equal(last_log_date, '')
        nt.assert_equal(user_logs_since_workshop, 0)
        nt.assert_equal(user_nodes_created_since_workshop, 0)

    def test_form_valid(self):
        request = RequestFactory().post('/fake_path')
        data = [
            ['none', 'date', 'none', 'none', 'none', 'email', 'none'],
            [None, '9/1/16', None, None, None, self.user_1.username, None],
        ]

        with open('test.csv', 'w') as fp:
            writer = csv.writer(fp)
            for row in data:
                writer.writerow(row)

        with file('test.csv', mode='rb') as fp:
            uploaded = SimpleUploadedFile(fp.name,
                                          fp.read(),
                                          content_type='text/csv')

        form = WorkshopForm(data={'document': uploaded})
        form.is_valid()
        form.cleaned_data['document'] = uploaded
        setup_form_view(self.view, request, form)

    def tearDown(self):
        if os.path.isfile('test.csv'):
            os.remove('test.csv')