Example #1
0
    def test_existent_user_could_be_deleted(self):
        fake_email = '*****@*****.**'
        fake_password = '******'

        with vcr.use_cassette(
                'fixtures/vcr_cassettes/create_fake_user_to_destroy2.json',
                before_record_response=scrub_string(fake_password),
                filter_post_data_parameters=['password', 'j_password']):
            Client.create_user(name='fake',
                               email=fake_email,
                               password=fake_password)

        with vcr.use_cassette(
                'fixtures/vcr_cassettes/fake_user_login.json',
                before_record_response=scrub_string(fake_password),
                filter_post_data_parameters=['j_password'],
                record_mode='new_episodes'):
            user = Client(email=fake_email, password=fake_password).get_user()

        with vcr.use_cassette(
                'fixtures/vcr_cassettes/user_destroy_valid2.json',
                before_record_response=scrub_string(fake_password),
                filter_post_data_parameters=['password'],
        ):
            user.destroy()

        with vcr.use_cassette(
                'fixtures/vcr_cassettes/invalid_login_after_destroy.json',
                filter_post_data_parameters=['password', 'j_password'],
        ):
            with self.assertRaises(errors.UnauthorizedError):
                Client(email=fake_email, password=fake_password)
Example #2
0
    def test_tasks_filtered_by_deleted_status_without_refresh(self):
        user = self.get_me()
        with vcr.use_cassette('fixtures/vcr_cassettes/tasks_with_deleted.json'):
            user.tasks(refresh=True, include_deleted=True)

        with vcr.use_cassette('fixtures/vcr_cassettes/fake.json', record_mode='none'):
            none_deleted_tasks = user.tasks(include_deleted=False)
            self.assertEqual(None, next((task for task in none_deleted_tasks if task['status'] == 'DELETED'), None))
Example #3
0
    def test_no_need_to_refresh_tasks_after_creation(self):
        user = self.get_me()
        with vcr.use_cassette('fixtures/vcr_cassettes/tasks.json'):
            initial_size = len(user.tasks())

        with vcr.use_cassette('fixtures/vcr_cassettes/task_create_valid.json'):
            new_task = Task.create(user=user, title='New Task')

        self.assertTrue(new_task in user.tasks())
Example #4
0
    def test_no_need_to_refresh_tasks_after_creation(self):
        user = self.get_me()
        with vcr.use_cassette('fixtures/vcr_cassettes/tasks.json'):
            initial_size = len(user.tasks())

        with vcr.use_cassette('fixtures/vcr_cassettes/task_create_valid.json'):
            new_task = Task.create(user=user, title='New Task')

        self.assertTrue(new_task in user.tasks())
Example #5
0
    def test_subtask_could_be_created_directly(self):
        user = self.get_me()
        with vcr.use_cassette('fixtures/vcr_cassettes/task_create_new_parent.json'):
            parent = Task.create(user=user, title='Parent')

        with vcr.use_cassette('fixtures/vcr_cassettes/task_create_new_subtask.json'):
            new_task = parent.create_subtask(title='New subtask')

        self.assertEqual(new_task, parent.subtasks()[0])
Example #6
0
    def __get_task(self, refresh=False):
        user = self.get_me()
        if refresh:
            with vcr.use_cassette('fixtures/vcr_cassettes/tasks_refreshed.json'):
                task = user.tasks(refresh=True)[0]
        else:
            with vcr.use_cassette('fixtures/vcr_cassettes/tasks.json'):
                task = user.tasks()[0]

        return task
Example #7
0
    def __get_category(self, refresh=False):
        user = self.get_me()
        if refresh:
            with vcr.use_cassette(
                    'fixtures/vcr_cassettes/categories_refreshed.json'):
                category = user.categories(refresh=True)[0]
        else:
            with vcr.use_cassette('fixtures/vcr_cassettes/categories.json'):
                category = user.categories()[0]

        return category
Example #8
0
    def test_no_need_to_refresh_categories_after_creation(self):
        user = self.get_me()

        with vcr.use_cassette('fixtures/vcr_cassettes/categories.json'):
            initial_size = len(user.categories())

        with vcr.use_cassette(
                'fixtures/vcr_cassettes/category_create_valid.json'):
            category = Category.create(user=user, name='Test Category')

        self.assertTrue(category in user.categories())
Example #9
0
    def test_text_notes_could_be_added_to_task(self):
        user = self.get_me()
        note = 'first one'

        with vcr.use_cassette('fixtures/vcr_cassettes/task_create_new_for_notes.json'):
            task = Task.create(user=user, title='I have notes')

        with vcr.use_cassette('fixtures/vcr_cassettes/task_add_some_notes.json'):
            task.add_note(note)

        self.assertTrue(note in task.notes())
Example #10
0
    def test_task_have_subtasks_that_are_tasks_too(self):
        user = self.get_me()
        with vcr.use_cassette('fixtures/vcr_cassettes/task_create_new_parent.json'):
            parent = Task.create(user=user, title='Parent')

        self.assertEqual([], parent.subtasks())

        with vcr.use_cassette('fixtures/vcr_cassettes/task_create_new_subtask.json'):
            new_task = Task.create(user=parent.user, title='New subtask', parentGlobalTaskId=parent['id'])

        self.assertEqual(new_task, parent.subtasks()[0])
Example #11
0
    def test_subtask_could_be_created_directly(self):
        user = self.get_me()
        with vcr.use_cassette(
                'fixtures/vcr_cassettes/task_create_new_parent.json'):
            parent = Task.create(user=user, title='Parent')

        with vcr.use_cassette(
                'fixtures/vcr_cassettes/task_create_new_subtask.json'):
            new_task = parent.create_subtask(title='New subtask')

        self.assertEqual(new_task, parent.subtasks()[0])
Example #12
0
    def test_subtask_knows_about_its_parent(self):
        user = self.get_me()
        with vcr.use_cassette('fixtures/vcr_cassettes/task_create_new_parent.json'):
            parent = Task.create(user=user, title='Parent')

        with vcr.use_cassette('fixtures/vcr_cassettes/task_create_new_subtask.json'):
            new_task = Task.create(user=parent.user, title='New subtask', parentGlobalTaskId=parent['id'])

        with vcr.use_cassette('fixtures/vcr_cassettes/fake.json', record_mode='none'):
            self.assertEqual(parent, new_task.parent())
            self.assertEqual(None, parent.parent())
Example #13
0
    def __get_task(self, refresh=False):
        user = self.get_me()
        if refresh:
            with vcr.use_cassette(
                    'fixtures/vcr_cassettes/tasks_refreshed.json'):
                task = user.tasks(refresh=True)[0]
        else:
            with vcr.use_cassette('fixtures/vcr_cassettes/tasks.json'):
                task = user.tasks()[0]

        return task
Example #14
0
    def test_task_could_be_marked_as_done(self):
        user = self.get_me()
        with vcr.use_cassette('fixtures/vcr_cassettes/tasks_before_mark.json'):
            task = user.tasks()[0]
            self.assertEqual('UNCHECKED', task['status'])

        with vcr.use_cassette('fixtures/vcr_cassettes/task_mark_done.json'):
            task.done()

        with vcr.use_cassette('fixtures/vcr_cassettes/tasks_after_done.json'):
            task = next((t for t in user.tasks(refresh=True, include_done=True) if t['id'] == task['id']), None)
            self.assertEqual('DONE', task['status'])
Example #15
0
    def test_subtask_could_be_added_as_another_task(self):
        user = self.get_me()
        with vcr.use_cassette('fixtures/vcr_cassettes/task_create_new_parent.json'):
            parent = Task.create(user=user, title='Parent')

        with vcr.use_cassette('fixtures/vcr_cassettes/task_create_new_subtask.json'):
            subtask = parent.create_subtask(title='New subtask')

        with vcr.use_cassette('fixtures/vcr_cassettes/task_add_subtask.json'):
            parent.add_subtask(subtask)

        self.assertEqual(subtask, parent.subtasks()[0])
Example #16
0
    def test_user_could_be_updated_successfully_by_attribute(self):
        new_title = 'First'
        task = self.__get_task()

        with vcr.use_cassette('fixtures/vcr_cassettes/task_update_valid.json'):
            task.title = new_title
            task.save()
            self.assertEqual(new_title, task.title)

        task = self.__get_task(refresh=True)
        with vcr.use_cassette('fixtures/vcr_cassettes/task_updated.json'):
            self.assertEqual(new_title, task.title)
Example #17
0
    def test_user_could_be_updated_successfully_by_attribute(self):
        new_title = 'First'
        task = self.__get_task()

        with vcr.use_cassette('fixtures/vcr_cassettes/task_update_valid.json'):
            task.title = new_title
            task.save()
            self.assertEqual(new_title, task.title)

        task = self.__get_task(refresh=True)
        with vcr.use_cassette('fixtures/vcr_cassettes/task_updated.json'):
            self.assertEqual(new_title, task.title)
Example #18
0
    def test_user_could_be_updated_successfully_by_attribute(self):
        new_name = 'New Name'
        user = self.get_me()

        with vcr.use_cassette('fixtures/vcr_cassettes/user_update_valid.json',
                              filter_post_data_parameters=['j_password']):
            user.name = new_name
            user.save()
            self.assertEqual(new_name, user.name)

        with vcr.use_cassette('fixtures/vcr_cassettes/me_updated.json', ):
            user = self.get_session().get_user(refresh=True)
            self.assertEqual(new_name, user.name)
Example #19
0
    def test_text_notes_could_be_added_to_task(self):
        user = self.get_me()
        note = 'first one'

        with vcr.use_cassette(
                'fixtures/vcr_cassettes/task_create_new_for_notes.json'):
            task = Task.create(user=user, title='I have notes')

        with vcr.use_cassette(
                'fixtures/vcr_cassettes/task_add_some_notes.json'):
            task.add_note(note)

        self.assertTrue(note in task.notes())
Example #20
0
    def test_task_could_be_marked_as_done(self):
        user = self.get_me()
        with vcr.use_cassette('fixtures/vcr_cassettes/tasks_before_mark.json'):
            task = user.tasks()[0]
            self.assertEqual('UNCHECKED', task['status'])

        with vcr.use_cassette('fixtures/vcr_cassettes/task_mark_done.json'):
            task.done()

        with vcr.use_cassette('fixtures/vcr_cassettes/tasks_after_done.json'):
            task = next((t for t in user.tasks(refresh=True, include_done=True)
                         if t['id'] == task['id']), None)
            self.assertEqual('DONE', task['status'])
Example #21
0
    def test_tasks_filtered_by_deleted_status_without_refresh(self):
        user = self.get_me()
        with vcr.use_cassette(
                'fixtures/vcr_cassettes/tasks_with_deleted.json'):
            user.tasks(refresh=True, include_deleted=True)

        with vcr.use_cassette('fixtures/vcr_cassettes/fake.json',
                              record_mode='none'):
            none_deleted_tasks = user.tasks(include_deleted=False)
            self.assertEqual(
                None,
                next((task for task in none_deleted_tasks
                      if task['status'] == 'DELETED'), None))
Example #22
0
    def test_subtask_could_be_added_as_another_task(self):
        user = self.get_me()
        with vcr.use_cassette(
                'fixtures/vcr_cassettes/task_create_new_parent.json'):
            parent = Task.create(user=user, title='Parent')

        with vcr.use_cassette(
                'fixtures/vcr_cassettes/task_create_new_subtask.json'):
            subtask = parent.create_subtask(title='New subtask')

        with vcr.use_cassette('fixtures/vcr_cassettes/task_add_subtask.json'):
            parent.add_subtask(subtask)

        self.assertEqual(subtask, parent.subtasks()[0])
Example #23
0
    def test_category_could_be_added_to_category(self):
        category = self.__get_category()

        with vcr.use_cassette('fixtures/vcr_cassettes/task_create_valid.json'):
            task = Task.create(user=category.user,
                               title='Task For Category',
                               priority='Normal',
                               status='UNCHECKED')

        with vcr.use_cassette(
                'fixtures/vcr_cassettes/category_move_task_to_category.json'):
            category.add_task(task)

        self.assertEqual(category, task.category())
        self.assertTrue(task in category.tasks())
Example #24
0
    def test_categories_could_be_filtered_by_deleted_status_with_refresh(self):
        user = self.get_me()

        with vcr.use_cassette(
                'fixtures/vcr_cassettes/category_deleted_ones.json'):
            deleted = user.categories(refresh=True, include_deleted=True)

        self.assertTrue(len(deleted) > 0)

        with vcr.use_cassette('fixtures/vcr_cassettes/fake.json',
                              record_mode='none'):
            deleted2 = user.categories(include_deleted=True)

        self.assertEqual(deleted, deleted2)
        self.assertTrue(len([cat for cat in deleted2 if cat['isDeleted']]) > 0)
Example #25
0
    def test_new_task_could_be_deleted_permanently_after_creation(self):
        user = self.get_me()
        with vcr.use_cassette('fixtures/vcr_cassettes/task_create_for_delete2.json'):
            Task.create(user=user, title='Delete me2', status='UNCHECKED')

        with vcr.use_cassette('fixtures/vcr_cassettes/tasks_after_new_one_created2.json'):
            task = user.tasks(refresh=True)[-1]
            self.assertEqual('Delete me2', task.title)

        with vcr.use_cassette('fixtures/vcr_cassettes/task_destroy_valid2.json'):
            task.destroy()

        with vcr.use_cassette('fixtures/vcr_cassettes/tasks_after_new_one_deleted2.json'):
            tasks = user.tasks(refresh=True)
            self.assertFalse(task['id'] in map(lambda task: task['id'], tasks))
Example #26
0
    def test_task_have_subtasks_that_are_tasks_too(self):
        user = self.get_me()
        with vcr.use_cassette(
                'fixtures/vcr_cassettes/task_create_new_parent.json'):
            parent = Task.create(user=user, title='Parent')

        self.assertEqual([], parent.subtasks())

        with vcr.use_cassette(
                'fixtures/vcr_cassettes/task_create_new_subtask.json'):
            new_task = Task.create(user=parent.user,
                                   title='New subtask',
                                   parentGlobalTaskId=parent['id'])

        self.assertEqual(new_task, parent.subtasks()[0])
Example #27
0
 def test_unchanged_data_dont_hit_an_api(self):
     user = self.get_me()
     with vcr.use_cassette('fixtures/vcr_cassettes/fake.json',
                           record_mode='none'):
         name = user.name
         user['name'] = name[:]
         user.save()
Example #28
0
 def test_duplicate_user_creation_raises_conflict(self):
     with vcr.use_cassette('fixtures/vcr_cassettes/duplicate_user.json',
                           filter_post_data_parameters=['password']):
         with self.assertRaises(errors.ConflictError):
             Client.create_user(name=self.username,
                                email=self.email,
                                password=self.password)
Example #29
0
    def test_user_has_appropriate_attributes(self):
        with vcr.use_cassette('fixtures/vcr_cassettes/me.json',
                              filter_post_data_parameters=['j_password']):
            user = self.get_me()

            self.assertEqual(self.username, user['name'])
            self.assertEqual(self.email, user['email'])
Example #30
0
    def test_user_attributes_accessible_directly(self):
        with vcr.use_cassette('fixtures/vcr_cassettes/me.json',
                              filter_post_data_parameters=['j_password']):
            user = self.get_me()

            self.assertEqual(self.username, user.name)
            self.assertEqual(self.email, user.email)
Example #31
0
 def test_user_categories_are_cached_and_not_require_additional_request(
         self):
     user = self.get_me()
     with vcr.use_cassette('fixtures/vcr_cassettes/categories.json',
                           record_mode='once'):
         user.categories()
         user.categories()
Example #32
0
 def test_unchanged_data_dont_hit_an_api(self):
     category = self.__get_category()
     with vcr.use_cassette('fixtures/vcr_cassettes/fake.json',
                           record_mode='none'):
         name = category.name
         category['name'] = name[:]
         category.save()
Example #33
0
 def test_valid_session_initialized_silently(self):
     with vcr.use_cassette(
         'fixtures/vcr_cassettes/valid_login.json',
         filter_post_data_parameters=['j_password']
     ):
         client = Client(email=self.email, password=self.password)
         self.assertIsInstance(client, Client)
Example #34
0
    def test_subtask_knows_about_its_parent(self):
        user = self.get_me()
        with vcr.use_cassette(
                'fixtures/vcr_cassettes/task_create_new_parent.json'):
            parent = Task.create(user=user, title='Parent')

        with vcr.use_cassette(
                'fixtures/vcr_cassettes/task_create_new_subtask.json'):
            new_task = Task.create(user=parent.user,
                                   title='New subtask',
                                   parentGlobalTaskId=parent['id'])

        with vcr.use_cassette('fixtures/vcr_cassettes/fake.json',
                              record_mode='none'):
            self.assertEqual(parent, new_task.parent())
            self.assertEqual(None, parent.parent())
Example #35
0
 def test_unchanged_data_dont_hit_an_api(self):
     task = self.__get_task()
     with vcr.use_cassette('fixtures/vcr_cassettes/fake.json',
                           record_mode='none'):
         title = task.title
         task['title'] = title[:]
         task.save()
Example #36
0
 def test_me_returns_user_object(self):
     with vcr.use_cassette(
         'fixtures/vcr_cassettes/me.json',
         filter_post_data_parameters=['j_password']
     ):
         user = self.get_session().get_user()
         self.assertIsInstance(user, User)
Example #37
0
 def test_task_creation_returns_task_instance(self):
     with vcr.use_cassette('fixtures/vcr_cassettes/task_create_valid.json'):
         task = Task.create(user=self.get_me(),
                            title='Test Task',
                            category='Personal',
                            priority='Normal',
                            status='UNCHECKED')
         self.assertIsInstance(task, Task)
Example #38
0
 def test_user_tasks_could_be_refreshed_from_the_server(self):
     with self.assertRaises(
             vcr_module.errors.CannotOverwriteExistingCassetteException):
         with vcr.use_cassette('fixtures/vcr_cassettes/tasks.json',
                               record_mode='once'):
             user = self.get_me()
             user.tasks(refresh=True)
             user.tasks(refresh=True)
Example #39
0
 def test_client_session_is_cached_and_not_requires_additional_request(self):
     with vcr.use_cassette('fixtures/vcr_cassettes/me.json',
         filter_post_data_parameters=['password'],
         record_mode='once'
     ):
         user = self.get_session()
         user.get_user()
         user.get_user()
Example #40
0
 def test_client_session_is_cached_and_not_requires_additional_request(
         self):
     with vcr.use_cassette('fixtures/vcr_cassettes/me.json',
                           filter_post_data_parameters=['password'],
                           record_mode='once'):
         user = self.get_session()
         user.get_user()
         user.get_user()
Example #41
0
    def test_task_could_be_approved_by_user(self):
        old_member = self.get_me()
        with vcr.use_cassette(
                'fixtures/vcr_cassettes/task_create_for_sharing.json'):
            task = Task.create(user=old_member,
                               title='Shared Task',
                               category='Personal',
                               priority='Normal',
                               status='UNCHECKED')

        fake_email = '*****@*****.**'
        fake_password = '******'
        with vcr.use_cassette(
                'fixtures/vcr_cassettes/task_create_user_for_sharing_and_approve.json',
                before_record_response=scrub_string(fake_password),
                filter_post_data_parameters=['password', 'j_password']):
            new_member = Client.create_user(name='fake',
                                            email=fake_email,
                                            password=fake_password)

        with vcr.use_cassette(
                'fixtures/vcr_cassettes/task_share_with_user_to_approve.json'):
            task.share_with(new_member)

        with vcr.use_cassette(
                'fixtures/vcr_cassettes/task_user_pending_tasks_before_approve.json'
        ):
            self.assertTrue(
                len(new_member.pending_tasks_ids(refresh=True)) == 1)

        with vcr.use_cassette(
                'fixtures/vcr_cassettes/task_user_approve_pending_task.json'):
            new_member.approve_pending_task(
                pending_task_id=new_member.pending_tasks_ids()[0])

        with vcr.use_cassette(
                'fixtures/vcr_cassettes/task_user_pending_tasks_after_approve.json'
        ):
            self.assertTrue(
                len(new_member.pending_tasks_ids(refresh=True)) == 0)

        with vcr.use_cassette(
                'fixtures/vcr_cassettes/task_members_after_refresh.json'):
            task.refresh()

            self.assertEqual([{
                old_member['email']: old_member['name']
            }, {
                new_member['email']: new_member['name']
            }], task.members())

        with vcr.use_cassette(
                'fixtures/vcr_cassettes/tasks_of_new_member.json'):
            shared_task = new_member.tasks(refresh=True)[0]
            self.assertEqual(task['title'], shared_task['title'])
Example #42
0
 def test_category_creation_returns_category_instance(self):
     with vcr.use_cassette(
             'fixtures/vcr_cassettes/category_create_valid.json'):
         category = Category.create(
             user=self.get_me(),
             name='Test Category',
         )
         self.assertIsInstance(category, Category)
         self.assertEqual('Test Category', category['name'])
Example #43
0
 def test_task_creation_returns_task_instance(self):
     with vcr.use_cassette('fixtures/vcr_cassettes/task_create_valid.json'):
         task = Task.create(user=self.get_me(),
             title='Test Task',
             category='Personal',
             priority='Normal',
             status='UNCHECKED'
         )
         self.assertIsInstance(task, Task)
Example #44
0
 def test_user_data_could_be_refreshed_from_the_server(self):
     with self.assertRaises(vcr_module.errors.CannotOverwriteExistingCassetteException):
         with vcr.use_cassette('fixtures/vcr_cassettes/me.json',
             filter_post_data_parameters=['password'],
             record_mode='once'
         ):
             user = self.get_session()
             user.get_user(refresh=True)
             user.get_user(refresh=True)
Example #45
0
    def test_category_could_be_updated_successfully_by_index(self):
        user = self.get_me()
        new_name = 'Home'
        # lastUpdateDate should be the actual one
        with vcr.use_cassette(
                'fixtures/vcr_cassettes/categories_before_update.json'):
            category = user.categories(refresh=True)[0]

        with vcr.use_cassette(
                'fixtures/vcr_cassettes/category_update_valid.json'):
            category['name'] = new_name
            category.save()
            self.assertEqual(new_name, category['name'])

        with vcr.use_cassette('fixtures/vcr_cassettes/category_updated.json'):
            category = next((cat for cat in user.categories(refresh=True)
                             if cat['id'] == category['id']), None)
            self.assertEqual(new_name, category['name'])
Example #46
0
    def test_user_knows_about_its_pending_tasks(self):
        task = self.__get_task()

        fake_email = '*****@*****.**'
        fake_password = '******'
        with vcr.use_cassette('fixtures/vcr_cassettes/task_create_user_for_share.json',
            before_record_response=scrub_string(fake_password),
            filter_post_data_parameters=['password', 'j_password']
        ):
            new_member = Client.create_user(name='fake', email=fake_email, password=fake_password)


        with vcr.use_cassette('fixtures/vcr_cassettes/task_share_with_user.json'):
            task.share_with(new_member)

        with vcr.use_cassette('fixtures/vcr_cassettes/task_user_pending_tasks.json'):
            self.assertTrue(len(new_member.pending_tasks_ids()) == 1)
            self.assertEqual(task['title'], new_member.pending_tasks()[0]['title'])
Example #47
0
 def test_user_data_could_be_refreshed_from_the_server(self):
     with self.assertRaises(
             vcr_module.errors.CannotOverwriteExistingCassetteException):
         with vcr.use_cassette('fixtures/vcr_cassettes/me.json',
                               filter_post_data_parameters=['password'],
                               record_mode='once'):
             user = self.get_session()
             user.get_user(refresh=True)
             user.get_user(refresh=True)
Example #48
0
    def test_tasks_filtered_by_checked_status(self):
        user = self.get_me()

        with vcr.use_cassette('fixtures/vcr_cassettes/tasks_after_check.json'):
            none_checked_tasks = user.tasks(
                refresh=True,
                include_done=False,
                include_deleted=False,
                include_checked=False
            )

            self.assertEqual(None, next((task for task in none_checked_tasks if task['status'] == 'CHECKED'), None))

        with vcr.use_cassette('fixtures/vcr_cassettes/tasks_after_check.json'):
            checked_tasks = user.tasks(
                refresh=True,
                include_done=False,
                include_deleted=False,
                include_unchecked=False
            )
            self.assertEqual(None, next((task for task in checked_tasks if task['status'] == 'UNCHECKED'), None))
Example #49
0
    def test_task_creation_reraises_occured_errors(self):
        # Emulate Server Error bypassing internal validaitons for missed fields
        original = Task.required_attributes
        def fake(): return set()
        Task.required_attributes = staticmethod(fake)

        with vcr.use_cassette('fixtures/vcr_cassettes/task_create_invalid.json'):
            with self.assertRaises(errors.InternalServerError):
                Task.create(user=self.get_me(),
                    status='UNCHECKED',
                )
        Task.required_attributes = staticmethod(original)
Example #50
0
    def test_task_creation_saves_attributers_correctly(self):
        title = 'New Task'
        note = 'Hello world'
        with vcr.use_cassette('fixtures/vcr_cassettes/task_create_valid_with_attributes.json'):
            task = Task.create(user=self.get_me(),
                title=title,
                category='Personal',
                priority='Normal',
                status='UNCHECKED',
                repeatingMethod='TASK_REPEAT_OFF',
                note=note,
            )

        self.assertEqual(title, task.title)
        self.assertEqual(note, task['note'])
Example #51
0
    def test_task_could_be_approved_by_user(self):
        old_member = self.get_me()
        with vcr.use_cassette('fixtures/vcr_cassettes/task_create_for_sharing.json'):
            task = Task.create(user=old_member,
                title='Shared Task',
                category='Personal',
                priority='Normal',
                status='UNCHECKED'
            )

        fake_email = '*****@*****.**'
        fake_password = '******'
        with vcr.use_cassette('fixtures/vcr_cassettes/task_create_user_for_sharing_and_approve.json',
            before_record_response=scrub_string(fake_password),
            filter_post_data_parameters=['password', 'j_password']
        ):
            new_member = Client.create_user(name='fake', email=fake_email, password=fake_password)

        with vcr.use_cassette('fixtures/vcr_cassettes/task_share_with_user_to_approve.json'):
            task.share_with(new_member)

        with vcr.use_cassette('fixtures/vcr_cassettes/task_user_pending_tasks_before_approve.json'):
            self.assertTrue(len(new_member.pending_tasks_ids(refresh=True)) == 1)

        with vcr.use_cassette('fixtures/vcr_cassettes/task_user_approve_pending_task.json'):
            new_member.approve_pending_task(pending_task_id=new_member.pending_tasks_ids()[0])

        with vcr.use_cassette('fixtures/vcr_cassettes/task_user_pending_tasks_after_approve.json'):
            self.assertTrue(len(new_member.pending_tasks_ids(refresh=True)) == 0)

        with vcr.use_cassette('fixtures/vcr_cassettes/task_members_after_refresh.json'):
            task.refresh()

            self.assertEqual([
                { old_member['email']: old_member['name'] },
                { new_member['email']: new_member['name'] }],
                task.members()
            )

        with vcr.use_cassette('fixtures/vcr_cassettes/tasks_of_new_member.json'):
            shared_task = new_member.tasks(refresh=True)[0]
            self.assertEqual(task['title'], shared_task['title'])
Example #52
0
 def test_user_has_access_to_its_tasks(self):
     user = self.get_me()
     with vcr.use_cassette('fixtures/vcr_cassettes/tasks.json'):
         self.assertIsInstance(user.tasks(), list)
Example #53
0
 def test_user_tasks_are_cached_and_not_require_additional_request(self):
     with vcr.use_cassette('fixtures/vcr_cassettes/tasks.json', record_mode='once'):
         user = self.get_me()
         user.tasks()
         user.tasks()
Example #54
0
 def test_user_tasks_could_be_refreshed_from_the_server(self):
     with self.assertRaises(vcr_module.errors.CannotOverwriteExistingCassetteException):
         with vcr.use_cassette('fixtures/vcr_cassettes/tasks.json', record_mode='once'):
             user = self.get_me()
             user.tasks(refresh=True)
             user.tasks(refresh=True)
Example #55
0
 def test_new_client_reraises_occured_errors(self):
     with vcr.use_cassette('fixtures/vcr_cassettes/invalid_login.json'):
         with self.assertRaises(errors.UnauthorizedError):
             Client(email='***', password='******')
Example #56
0
 def test_task_creation_checks_required_fields(self):
     with vcr.use_cassette('fixtures/vcr_cassettes/fake.json', record_mode='none'):
         with self.assertRaises(errors.ModelAttributeError):
             Task.create(user=self.get_me(), status='UNCHECKED')
Example #57
0
 def test_unchanged_data_dont_hit_an_api(self):
     task = self.__get_task()
     with vcr.use_cassette('fixtures/vcr_cassettes/fake.json', record_mode='none'):
         title = task.title
         task['title'] = title[:]
         task.save()