"""Unit tests for user_interaction model.""" from unittest.mock import MagicMock from boto.dynamodb2.items import Item from boto.dynamodb2.table import Table from oto import response from oto import status import pytest from social_analytics.models import user_interaction @pytest.fixture def get_user_interactions(): """Get user interactions fixture.""" data_for_iterm_1 = { 'artist_id': '57450', 'user_id': '2', 'created_date': '2017-10-27T12:04:10.590820'} data_for_iterm_2 = { 'artist_id': '57451', 'user_id': '2', 'created_date': '2017-10-24T12:04:10.590820'} interactions = Table('interactions') item1 = Item(interactions, data=data_for_iterm_1) item2 = Item(interactions, data=data_for_iterm_2) return response.Response([item1, item2]) @pytest.fixture def not_found_user_interactions(): """Get user interactions fixture.""" return response.create_not_found_response() def test_get_user_interactions_by_user_id(monkeypatch, get_user_interactions): """Test get user interactions by user id.""" monkeypatch.setattr(user_interaction.UserInteraction, 'fetch', MagicMock( return_value=get_user_interactions)) user_id = '2' user_interactions = user_interaction.get_user_interactions_by_user_id( user_id) assert user_interactions user_interactions = user_interactions.message['items'] assert len(user_interactions) == 2 def test_get_user_interactions_by_user_id_not_found( monkeypatch, not_found_user_interactions): """Test get user interactions by user id not found.""" monkeypatch.setattr(user_interaction.UserInteraction, 'fetch', MagicMock( return_value=not_found_user_interactions)) user_id = '3' user_interactions = user_interaction.get_user_interactions_by_user_id( user_id) assert not user_interactions def test_get_user_interactions_by_user_id_bad_params(): """Test get user interactions by user id with bad params.""" user_id = '' user_interactions = user_interaction.get_user_interactions_by_user_id( user_id) assert not user_interactions assert user_interactions.status == status.BAD_REQUEST