Exemple #1
0
    def test_books_returned_fields(self, client):
        books_url = reverse('books-list')
        BookFactory.create()
        
        resp = simplejson.loads(client.get(books_url).content)
        resp_keys = resp[0].keys()
        expected_keys = ['id', 'title', 'authors']

        assert expected_keys == list(resp_keys)
Exemple #2
0
    def test_get_goal_per_day_should_return_fifty_if_date_object_passed(self):
        today_date = datetime.datetime.today()
        end_date = today_date + datetime.timedelta(days=5)
        book = BookFactory(page_count=500)
        book.save()
        target = TargetFactory(end_date=end_date.date(),
                               start_date=today_date,
                               current_page_progress=250,
                               book=book)
        target.save()

        goal_value = ProgressService(target).get_pages_daily_target()
        expected_result = 50

        assert goal_value == expected_result
Exemple #3
0
    def test_get_goal_per_day_should_return_none_if_end_day_less_then_today(
            self):
        today_date = datetime.datetime.today()
        end_date = today_date - datetime.timedelta(days=5)
        book = BookFactory(page_count=500)
        book.save()
        target = TargetFactory(end_date=end_date,
                               start_date=today_date,
                               current_page_progress=250,
                               book=book)
        target.save()

        goal_value = ProgressService(target).get_pages_daily_target()

        assert goal_value is None
Exemple #4
0
 def test_books_detail_view_get_detail_book(self, client):
     book_params = {
         'title': 'test',
         'page_count': 500,
         'description': 'test_description'
     }
     author_params = {
         'first_name':'John', 
         'last_name':'Dad',
         'bio': 'test'
     }
     genre_params = {
         'title': 'test',
         'description': 'test'
     }
     author = AuthorFactory.create(**author_params)
     genre = GenreFactory.create(**genre_params)
     book = BookFactory.create(**book_params, authors=[author], genres=[genre])
     books_url = reverse('books-detail', args=[book.id])
     
     resp = simplejson.loads(client.get(books_url).content)
     expected_resp = {
         'id': 1, 
         'title': 'test', 
         'page_count': 500, 
         'description': 'test_description', 
         'authors': [{'first_name': 'John', 'last_name': 'Dad', 'bio': 'test'}], 
         'genres': [{'title': 'test', 'description': 'test'}]
     }
     
     assert resp == expected_resp
Exemple #5
0
    def test_authenticated_users_can_add_target(self, client):
        targets_url = reverse('targets-list')

        book = BookFactory.create()
        end_date = datetime.datetime.now() + datetime.timedelta(days=21)

        params = simplejson.dumps({
            'title':
            'Test title',
            'description':
            'test',
            'book':
            book.id,
            'start_date':
            datetime.datetime.now().strftime('%Y-%m-%d'),
            'end_date':
            end_date.strftime('%Y-%m-%d'),
        })
        login_params = {
            'username': '******',
            'email': '*****@*****.**',
            'password': '******'
        }

        UserFactory.create(**login_params)

        token_dict = get_login_params_dict(client, login_params)
        resp = simplejson.loads(
            client.post(targets_url, params, **token_dict).content)
        expected_resp_title = 'Test title'

        assert expected_resp_title == resp.get('title')
Exemple #6
0
    def test_books_list_view_should_return_three_books(self, client):
        books_url = reverse('books-list')
        BookFactory.create()
        BookFactory.create()
        BookFactory.create()
        
        expected_len = 3
        resp = simplejson.loads(client.get(books_url).content)

        assert len(resp) == expected_len
Exemple #7
0
    def test_not_owner_can_not_change_target(self, client):
        targets_url = reverse('targets-list')

        user_params_owner = {
            'username': '******',
            'email': '*****@*****.**',
            'password': '******'
        }
        user_params_not_owner = {
            'username': '******',
            'email': '*****@*****.**',
            'password': '******'
        }
        book = BookFactory.create()
        end_date = datetime.datetime.now() + datetime.timedelta(days=21)

        targets_create_params = {
            'title': 'Test title',
            'description': 'test',
            'book': book.id,
            'start_date': datetime.datetime.now().strftime('%Y-%m-%d'),
            'end_date': end_date.strftime('%Y-%m-%d'),
        }

        UserFactory.create(**user_params_owner)
        UserFactory.create(**user_params_not_owner)

        token_dict_owner = get_login_params_dict(client, user_params_owner)

        client.post(targets_url, simplejson.dumps(targets_create_params),
                    **token_dict_owner)

        created_target = Target.objects.get(title='Test title')
        targets_detail = reverse('targets-detail', args=[created_target.id])

        user_params_not_owner.pop('email')
        token_dict_not_owner = get_login_params_dict(client,
                                                     user_params_not_owner)

        resp = simplejson.loads(
            client.put(targets_detail, simplejson.dumps({'name': 'new'}),
                       **token_dict_not_owner).content)

        expected_resp = {
            'detail': 'You do not have permission to perform this action.'
        }

        assert resp == expected_resp
Exemple #8
0
    def test_detail_target_view_should_contain_pages_per_day(self, client):
        book = BookFactory.create()
        book.page_count = 700
        book.save()

        end_date = datetime.datetime.now() + datetime.timedelta(days=21)
        params = {
            'title': 'Test title',
            'description': 'test',
            'book': book,
            'start_date': datetime.datetime.now().strftime('%Y-%m-%d'),
            'end_date': end_date.strftime('%Y-%m-%d'),
        }

        target = TargetFactory(**params)
        target.save()

        targets_url = reverse('targets-detail', args=[target.id])

        resp = simplejson.loads(client.get(targets_url).content)

        assert resp.get('pages_per_day') == 33.3
Exemple #9
0
    def test_owner_can_change_target(self, client):
        targets_url = reverse('targets-list')
        user_params_owner = {
            'username': '******',
            'email': '*****@*****.**',
            'password': '******'
        }
        book = BookFactory.create()
        end_date = datetime.datetime.now() + datetime.timedelta(days=21)
        targets_create_params = {
            'title': 'Test title',
            'description': 'test',
            'book': book.id,
            'start_date': datetime.datetime.now().strftime('%Y-%m-%d'),
            'end_date': end_date.strftime('%Y-%m-%d'),
        }

        new_title = 'test_new'

        UserFactory.create(**user_params_owner)

        token_dict_owner = get_login_params_dict(client, user_params_owner)
        client.post(targets_url, simplejson.dumps(targets_create_params),
                    **token_dict_owner)

        created_target = Target.objects.get(title='Test title')
        targets_detail = reverse('targets-detail', args=[created_target.id])

        token_dict_owner = get_login_params_dict(client, user_params_owner)

        resp = simplejson.loads(
            client.patch(targets_detail, simplejson.dumps({'title':
                                                           new_title}),
                         **token_dict_owner).content)

        assert resp.get('title') == new_title