Example #1
0
    def test_query_values(self):
        item_1 = MockModel(foo=1, bar=3, foobar=5)
        item_2 = MockModel(foo=2, bar=4, foobar=6)

        qs = MockSet(item_1, item_2)

        results_all = qs.values()
        results_with_fields = qs.values('foo', 'bar')

        assert results_all[0]['foo'] == 1
        assert results_all[0]['bar'] == 3
        assert results_all[0]['foobar'] == 5
        assert results_all[1]['foo'] == 2
        assert results_all[1]['bar'] == 4
        assert results_all[1]['foobar'] == 6

        assert results_with_fields[0]['foo'] == 1
        assert results_with_fields[0]['bar'] == 3
        assert results_with_fields[1]['foo'] == 2
        assert results_with_fields[1]['bar'] == 4
    def test_query_datetimes_day(self):
        qs = MockSet(model=create_model('date_begin'))

        item1 = MockModel(date_begin=datetime.datetime(2017, 1, 2, 1, 2, 3))
        item2 = MockModel(date_begin=datetime.datetime(2017, 2, 14, 4, 5, 6))
        item3 = MockModel(date_begin=datetime.datetime(2017, 2, 14, 7, 8, 9))

        qs.add(item1, item2, item3)

        result = qs.datetimes('date_begin', 'day', 'ASC')

        assert len(result) == 2
        assert result[0] == datetime.datetime(2017, 1, 2, 0, 0, 0)
        assert result[1] == datetime.datetime(2017, 2, 14, 0, 0, 0)

        result = qs.datetimes('date_begin', 'day', 'DESC')

        assert len(result) == 2
        assert result[0] == datetime.datetime(2017, 2, 14, 0, 0, 0)
        assert result[1] == datetime.datetime(2017, 1, 2, 0, 0, 0)
Example #3
0
    def test_and_merge_queryset(self):
        qs = MockSet(
            MockModel(mock_name='model-1', foo='A', bar='1'),
            MockModel(mock_name='model-2', foo='B', bar='1'),
            MockModel(mock_name='model-3', foo='C', bar='3'),
        )

        test_qs = qs.all().filter(Q(foo='A'))
        test_qs &= test_qs.all().filter(Q(bar='1'))
        expected_results = ['model-1']
        results = [str(x) for x in test_qs]
        # Note: the results may come in various orders, and since we're just focused on the content, we can sort
        assert sorted(results) == sorted(expected_results)

        test_qs = qs.all().filter(Q(foo='A'))
        test_qs &= test_qs.all()
        expected_results = ['model-1']
        results = [str(x) for x in test_qs]
        # Note: the results may come in various orders, and since we're just focused on the content, we can sort
        assert sorted(results) == sorted(expected_results)
    def test_query_datetimes_second(self):
        qs = MockSet(model=create_model('date_begin'))

        item1 = MockModel(date_begin=datetime.datetime(2017, 1, 10, 1, 2, 3))
        item2 = MockModel(date_begin=datetime.datetime(2017, 1, 10, 1, 2, 3))
        item3 = MockModel(date_begin=datetime.datetime(2017, 1, 10, 1, 2, 9))

        qs.add(item1, item2, item3)

        result = qs.datetimes('date_begin', 'second', 'ASC')

        assert len(result) == 2
        assert result[0] == datetime.datetime(2017, 1, 10, 1, 2, 3)
        assert result[1] == datetime.datetime(2017, 1, 10, 1, 2, 9)

        result = qs.datetimes('date_begin', 'second', 'DESC')

        assert len(result) == 2
        assert result[0] == datetime.datetime(2017, 1, 10, 1, 2, 9)
        assert result[1] == datetime.datetime(2017, 1, 10, 1, 2, 3)
    def test_query_dates_year(self):
        qs = MockSet(model=create_model('date_begin'))

        item1 = MockModel(date_begin=datetime.date(2017, 1, 2))
        item2 = MockModel(date_begin=datetime.date(2017, 3, 12))
        item3 = MockModel(date_begin=datetime.date(2016, 3, 4))

        qs.add(item1, item2, item3)

        result = qs.dates('date_begin', 'year', 'ASC')

        assert len(result) == 2
        assert result[0] == datetime.date(2016, 1, 1)
        assert result[1] == datetime.date(2017, 1, 1)

        result = qs.dates('date_begin', 'year', 'DESC')

        assert len(result) == 2
        assert result[0] == datetime.date(2017, 1, 1)
        assert result[1] == datetime.date(2016, 1, 1)
def mock_matviews_qs(monkeypatch):
    """Mocks all matvies to a single mock queryset"""
    mock_qs = MockSet()  # mock queryset
    monkeypatch.setattr(
        'usaspending_api.awards.models_matviews.SubawardView.objects', mock_qs)
    monkeypatch.setattr(
        'usaspending_api.awards.models_matviews.SummaryAwardView.objects',
        mock_qs)
    monkeypatch.setattr(
        'usaspending_api.awards.models_matviews.SummaryCfdaNumbersView.objects',
        mock_qs)
    monkeypatch.setattr(
        'usaspending_api.awards.models_matviews.SummaryNaicsCodesView.objects',
        mock_qs)
    monkeypatch.setattr(
        'usaspending_api.awards.models_matviews.SummaryPscCodesView.objects',
        mock_qs)
    monkeypatch.setattr(
        'usaspending_api.awards.models_matviews.SummaryStateView.objects',
        mock_qs)
    monkeypatch.setattr(
        'usaspending_api.awards.models_matviews.SummaryTransactionGeoView.objects',
        mock_qs)
    monkeypatch.setattr(
        'usaspending_api.awards.models_matviews.SummaryTransactionMonthView.objects',
        mock_qs)
    monkeypatch.setattr(
        'usaspending_api.awards.models_matviews.SummaryTransactionView.objects',
        mock_qs)
    monkeypatch.setattr(
        'usaspending_api.awards.models_matviews.SummaryView.objects', mock_qs)
    monkeypatch.setattr(
        'usaspending_api.awards.models_matviews.UniversalAwardView.objects',
        mock_qs)
    monkeypatch.setattr(
        'usaspending_api.awards.models_matviews.UniversalTransactionView.objects',
        mock_qs)

    yield mock_qs

    mock_qs.delete()
Example #7
0
def test_trimp_activities(mocker):
    user_a = UserFactory.build()
    user_b = UserFactory.build()
    all_activities = MockSet()
    mocker.patch.object(models.Activity, 'objects', all_activities)
    all_activities.add(
        MockModel(owner=user_b,
                  trimp=100,
                  time=datetime.datetime(2017, 5, 4, 3, 2, 1)),
        MockModel(owner=user_a,
                  trimp=100,
                  time=datetime.datetime(2017, 5, 5, 4, 2, 1)),
        MockModel(owner=user_a,
                  trimp=None,
                  time=datetime.datetime(2017, 5, 6, 5, 2, 1)),
        MockModel(owner=user_a,
                  trimp=100,
                  time=datetime.datetime(2017, 5, 7, 6, 2, 1)),
        MockModel(owner=user_a,
                  trimp=100,
                  time=datetime.datetime(2017, 5, 8, 6, 2, 1)),
        MockModel(owner=user_a,
                  trimp=100,
                  time=datetime.datetime(2017, 5, 9, 7, 2, 1)),
        MockModel(owner=user_b,
                  trimp=100,
                  time=datetime.datetime(2017, 5, 10, 8, 2, 1)),
    )
    activities, start, end = models.Activity.trimp_activities(user_a)
    assert set(a.time.day for a in activities) == {5, 7, 8, 9}
    assert start.day == 5
    assert end.day == 9
    activities, start, end = models.Activity.trimp_activities(
        user_a,
        start=datetime.datetime(2017, 5, 5, 10, 5, 5),
        end=datetime.datetime(2017, 5, 8, 10, 5, 5))
    assert set(a.time.day for a in activities) == {7, 8}
    assert start.day == 5
    assert end.day == 8
Example #8
0
    def test_get_proveedor_by_created(self, mocker):
        expected_results = [
            Proveedor(id_proveedor='1',
                      nombre_proveedor='Jhon',
                      cantidad_articulos=1000,
                      precio_producto=2000)
        ]

        date = strftime('%Y-%m-%d')
        # django-mock-queries nos permite crear Mock QuerySets
        # para omitir el acceso a BD
        qs = MockSet(expected_results[0])

        # Patch el metodo qet_queryset para modificar su comportamiento
        # y que nos retorne nuestro queryset  y asi omitir el acceso
        # a BD
        mocker.patch.object(Proveedor.objects, 'get_queryset', return_value=qs)

        result = list(Proveedor.objects.get_proveedor_by_created(date))

        assert result == expected_results
        assert str(result[0]) == expected_results[0].nombre_proveedor
    def test_update_active(self):
        uuid = uuid4()

        instance = UserAccount(
            uuid=uuid,
            username='******',
            password=
            '******',
            is_active=True)

        mockset = MockSet(instance, **{'model': UserAccount})

        class FakeModel:
            objects = mockset

        repository = DjangoCredentialRepository(FakeModel())
        credential = repository.find(uuid)
        credential.deactivate()

        result = repository.update(credential)

        assert instance.is_active is False
    def test_get_cars_by_created(self, mocker):
        expected_results = [
            Car(name='Ferrari',
                code='fr1',
                year=2019,
                created=datetime.datetime.now(),
                modified=datetime.datetime.now())
        ]

        date = strftime('%Y-%m-%d')
        # django-mock-queries nos permite crear Mock QuerySets
        # para omitir el acceso a BD
        qs = MockSet(expected_results[0])

        # Patch el metodo qet_queryset para modificar su comportamiento
        # y que nos retorne nuestro queryset  y asi omitir el acceso
        # a BD
        mocker.patch.object(Car.objects, 'get_queryset', return_value=qs)

        result = list(Car.objects.get_cars_by_created(date))

        assert result == expected_results
        assert str(result[0]) == expected_results[0].code
Example #11
0
    def test_list(self, rf, mocker):  # pylint: disable=no-self-use disable=invalid-name
        """
        test list
        """
        #  django-pytest nos permite pasar por inyeccion de dependencia
        # a nuestros tests algunos objetos, en este caso le "INYECTE"
        # el objeto rf que no es mas que el comun RequestFactory
        # y mocker que nos permite hacer patch a objetos y funciones
        url = reverse('genre-list')
        request = rf.get(url)

        # usamos la libreria django-mock-queries para crear un Mock
        # de nuestro queryset y omitir el acceso a BD

        queryset = MockSet(Genre(name='Drama'), Genre(name='Comedy'))

        mocker.patch.object(GenreViewSet,
                            'get_queryset',
                            return_value=queryset)
        response = GenreViewSet.as_view({'get': 'list'})(request).render()

        assert response.status_code == 200
        assert len(json.loads(response.content)) == 2
def test_get_aggregate_and_proceed_count(mocker):
    log = logging.getLogger()
    c = ConvTest(log, 'created_at', suffix='dev')
    c.set_query_period_uom(WEEKS)
    c.set_query_period_quantity(10)
    c.set_chat_id(1)

    mock = mocker.patch(TELEGRAM_REPLY_METHOD, return_value=None)

    update = Update(1)
    chat = Chat(1, 'user')
    message = Message(1, timezone.now(), chat=chat, text=COUNT)
    message.chat = chat
    update.message = message

    fake_data = MockSet()
    for _i in range(1, 15):
        fake_data.add(
            MockModel(
                mock_name=f'name{_i}',
                id=f'id{_i}',
                name=f'name{_i}',
                status='pending',
                created_at=timezone.now(),
            ))

    mocker.patch(
        INITIAL_QUERY_SET_METHOD,
        return_value=fake_data,
    )

    data = c.get_aggregate_and_proceed(update, None)
    assert mock.called
    assert mock.call_args[0] != (
        f'``` {TelegramConversation.EMPTY_RESULT} ```', )
    assert data == ConversationHandler.END
    assert c.aggregate_type == COUNT
Example #13
0
    def test_count_suspicions_with_mockset(
        self,
        mocker,
        reimbursement_data,
    ):
        data = reimbursement_data.copy()
        data['document_id'] = 42 * 2
        del data['suspicions']
        del data['probability']

        mock_queryset = MockSet(
            Reimbursement(**reimbursement_data),
            Reimbursement(**data),
            model=Reimbursement,
        )
        mocker.patch(
            'jarbas.chamber_of_deputies.models.Reimbursement'
            '.objects',
            mock_queryset,
        )

        queryset = Reimbursement.objects.filter(suspicions__isnull=True)

        assert queryset.count() == 1
Example #14
0
    def test_extract_success(self):
        qs = MockSet()

        class TestExpression():
            def __init__(self, template):
                self.template = template

        template = '%(function)s(MONTH from (%(expressions)s) + INTERVAL \'3 months\')'
        value = datetime.datetime(2007, 10, 1)
        expected_result = 1
        result = qs.extract(TestExpression(template), [value])
        assert expected_result == result

        template = "%(function)s(QUARTER from (%(expressions)s) + INTERVAL '3 months')"
        value = datetime.datetime(2008, 1, 1)
        expected_result = 2
        result = qs.extract(TestExpression(template), [value])
        assert expected_result == result

        template = "%(function)s(YEAR from (%(expressions)s) + INTERVAL '3 months')"
        value = datetime.datetime(2007, 10, 1)
        expected_result = 2008
        result = qs.extract(TestExpression(template), [value])
        assert expected_result == result
def mock_set(mocker):
    mockset = MockSet(
        UserAccount(uuid=UUID_MOCK, username='******',
                    password='******'),
        UserAccount(uuid=uuid4(), username='******', password='******'))
    mocker.patch.object(UserAccount, 'objects', mockset)
Example #16
0
class DoesTokenExistTestCase(TestCase):
    # Sets up some fake bookings
    fake_bookings = MockSet(
        MockModel(setid='LIVE-17-18',
                  finishtime='16:00',
                  id=8869,
                  weeknumber=12.0,
                  starttime='13:00',
                  bookabletype='CB',
                  title='Some topic',
                  finishdatetime=datetime.datetime(2017, 11, 14, 16, 0),
                  descrip='8 x rooms needed',
                  slotid=1662773,
                  sitename='IOE - Bedford Way, 20',
                  phone=None,
                  siteid='162',
                  roomname='IOE - Bedford Way (20) - 790',
                  condisplayname='Some Lecturer',
                  startdatetime=datetime.datetime(2017, 11, 14, 13, 0),
                  roomid='790',
                  bookingid=None),
        MockModel(setid='LIVE-17-18',
                  finishtime='12:30',
                  id=13692,
                  weeknumber=21.0,
                  starttime='11:00',
                  bookabletype='CB',
                  title='Another topic',
                  finishdatetime=datetime.datetime(2018, 1, 19, 12, 30),
                  descrip=None,
                  slotid=1673854,
                  sitename='IOE - Bedford Way, 20',
                  phone=None,
                  siteid='162',
                  roomname='Some other room',
                  condisplayname='Some other lecturer',
                  startdatetime=datetime.datetime(2018, 1, 19, 11, 0),
                  roomid='418',
                  bookingid=None))
    booking_objects = unittest.mock.patch(
        'roombookings.models.Booking.objects', fake_bookings)
    bookinga_objects = unittest.mock.patch(
        'roombookings.models.BookingA.objects', fake_bookings)
    bookingb_objects = unittest.mock.patch(
        'roombookings.models.BookingB.objects', fake_bookings)

    fake_locks = MockSet(MockModel(a=True, b=False))

    lock_objects = unittest.mock.patch('timetable.models.Lock.objects',
                                       fake_locks)

    def setUp(self):
        self.factory = APIRequestFactory()

        # General temporary token for tests
        self.token = get_temp_token()

        # A valid token to use later
        self.valid_token = get_temp_token()

        # Standard Token data
        self.user_ = User.objects.create(cn="test", employee_id=7357)
        self.app = App.objects.create(user=self.user_, name="An App")

    @booking_objects
    @bookinga_objects
    @bookingb_objects
    @lock_objects
    def test_no_token_provided(self):
        request = self.factory.get('/a/random/path')
        response = get_bookings(request)
        content = json.loads(response.content.decode())

        self.assertEqual(response.status_code, 400)
        self.assertFalse(content["ok"])
        self.assertEqual(content["error"], "No token provided.")

    @booking_objects
    @bookinga_objects
    @bookingb_objects
    @lock_objects
    def test_invalid_token_provided(self):
        request = self.factory.get('/a/random/path', {'token': 'uclapi'})
        response = get_bookings(request)

        content = json.loads(response.content.decode())
        self.assertEqual(response.status_code, 400)
        self.assertFalse(content["ok"])
        self.assertEqual(content["error"], "Token is invalid.")

    @booking_objects
    @bookinga_objects
    @bookingb_objects
    @lock_objects
    def test_invalid_temp_token_provided(self):
        request = self.factory.get('/a/random/path',
                                   {'token': 'uclapi-temp-invalid-token'})
        response = get_bookings(request)

        content = json.loads(response.content.decode())
        self.assertEqual(response.status_code, 400)
        self.assertFalse(content["ok"])
        self.assertEqual(content["error"],
                         "Temporary token is either invalid or expired.")

    @booking_objects
    @bookinga_objects
    @bookingb_objects
    @lock_objects
    def test_temp_token_wrong_path(self):
        request = self.factory.get('/a/path', {'token': self.token})
        response = get_bookings(request)

        content = json.loads(response.content.decode())
        self.assertEqual(response.status_code, 400)
        self.assertFalse(content["ok"])
        self.assertEqual(content["error"],
                         "Temporary token can only be used for /bookings.")

    @booking_objects
    @bookinga_objects
    @bookingb_objects
    @lock_objects
    def test_temp_token_page_token_provided(self):
        request = self.factory.get('/roombookings/bookings', {
            'token': self.token,
            'page_token': 'next_page_comes_here'
        })
        response = get_bookings(request)

        content = json.loads(response.content.decode())
        self.assertEqual(response.status_code, 400)
        self.assertFalse(content["ok"])
        self.assertEqual(content["error"],
                         "Temporary token can only return one booking.")

    @booking_objects
    @bookinga_objects
    @bookingb_objects
    @lock_objects
    def test_temp_token_overused(self):
        request = self.factory.get('/roombookings/bookings',
                                   {'token': self.token})
        for _ in repeat(None, 11):
            response = get_bookings(request)

        content = json.loads(response.content.decode())
        self.assertEqual(response.status_code, 429)
        self.assertFalse(content["ok"])
        self.assertEqual("You have been throttled. Please try again in ",
                         content["error"][:45])

    @booking_objects
    @bookinga_objects
    @bookingb_objects
    @lock_objects
    def test_temp_token_valid(self):
        request = self.factory.get('/roombookings/bookings',
                                   {'token': self.valid_token})
        response = get_bookings(request)
        self.assertEqual(response.status_code, 200)
        self.assertEqual(request.GET['results_per_page'], 1)

    @booking_objects
    @bookinga_objects
    @bookingb_objects
    @lock_objects
    def test_normal_token_valid(self):
        request = self.factory.get('/roombookings/bookings',
                                   {'token': self.app.api_token})
        response = get_bookings(request)

        self.assertEqual(response.status_code, 200)
Example #17
0
class TestLoadData:
    pytestmark = pytest.mark.django_db

    @patch('wazimap_ng.datasets.models.DatasetData')
    @patch('wazimap_ng.datasets.dataloader.load_geography')
    def test_bulk_create_lt_10000(self, load_geography, MockDatasetData,
                                  good_input):
        dataset = Mock()
        dataset.geography_hierarchy.version = 9999

        dataloader.loaddata(dataset, good_input, 0)

        MockDatasetData.objects.bulk_create.assert_called_once()
        load_geography.called_with("YYY", 222)

    @patch('wazimap_ng.datasets.models.DatasetData')
    @patch('wazimap_ng.datasets.dataloader.load_geography')
    def test_bulk_create_gt_10000(self, load_geography, MockDatasetData,
                                  good_input):
        dataset = Mock()
        load_geography.return_value = "XXX"

        input_data = [dict(good_input[0]) for i in range(20001)]

        dataloader.loaddata(dataset, input_data, 0)

        assert MockDatasetData.objects.bulk_create.call_count == 3

    @patch('wazimap_ng.datasets.models.DatasetData')
    @patch('wazimap_ng.datasets.dataloader.load_geography')
    def test_bulk_check_load_geography_call(self, load_geography,
                                            MockDatasetData, good_input):
        dataset = Mock()
        dataset.geography_hierarchy.version = 9999
        load_geography.return_value = "XXX"

        dataloader.loaddata(dataset, good_input, 0)

        load_geography.assert_called_with("YYY", 9999)

    @pytest.mark.django_db
    @patch('wazimap_ng.datasets.models.DatasetData')
    @patch('wazimap_ng.datasets.dataloader.load_geography')
    def test_missing_geography(self, load_geography, MockDatasetData,
                               good_input):
        dataset = Mock()
        load_geography.side_effect = models.Geography.DoesNotExist()

        try:
            (errors, warnings) = dataloader.loaddata(dataset, good_input, 0)
            assert len(warnings) == 2
            assert len(errors) == 0
        except models.Geography.DoesNotExist:
            assert False

        assert MockDatasetData.objects.bulk_create.call_count == 1
        MockDatasetData.objects.bulk_create.assert_called_with([], 1000)

    @patch('wazimap_ng.datasets.dataloader.load_geography')
    def test_bad_count(self, load_geography):
        dataset = Mock()
        input_data = [{"geography": "XXX", "count": ""}]

        (errors, warnings) = dataloader.loaddata(dataset, input_data, 0)
        assert len(warnings) == 0
        assert len(errors) == 1

    @patch('wazimap_ng.datasets.models.Group.objects')
    @patch('wazimap_ng.datasets.models.DatasetData')
    @patch('wazimap_ng.datasets.dataloader.load_geography')
    def test_datasetdata_created(self, load_geography, MockDatasetData,
                                 group_objects, good_input_with_groups):
        data = good_input_with_groups
        dataset = Mock(spec=models.Dataset)

        dataloader.loaddata(dataset, data, 0)

        assert MockDatasetData.call_count == 2
        args1 = MockDatasetData.call_args_list[0][1]
        args2 = MockDatasetData.call_args_list[1][1]
        assert args1["data"] == data[0]
        assert args1["dataset"] == dataset
        assert args2["data"] == data[1]
        assert args2["dataset"] == dataset

    @patch('wazimap_ng.datasets.models.DatasetData')
    @patch('wazimap_ng.datasets.dataloader.load_geography')
    @patch('wazimap_ng.datasets.dataloader.create_groups')
    def test_create_groups_called(self, create_groups, load_geography,
                                  MockDatasetData, good_input_with_groups):
        data = good_input_with_groups
        dataset = Mock(spec=models.Dataset)

        dataloader.loaddata(dataset, data, 0)

        assert create_groups.call_count == 1
        create_groups.assert_called_with(dataset, ["group1", "group2"])

    datasetdata = MockSet()
    datasetdata_objects = patch(
        'wazimap_ng.datasets.models.DatasetData.objects', datasetdata)
Example #18
0
    def test_length2(self):
        q = MockSet(MockModel(), MockModel())

        n = len(q)

        self.assertEqual(2, n)
Example #19
0
 def test_query_values_raises_attribute_error_when_field_is_not_in_meta_concrete_fields(
         self):
     qs = MockSet(MockModel(foo=1), MockModel(foo=2))
     self.assertRaises(FieldError, qs.values, 'bar')
Example #20
0
JohnTheOwner = MockModel(id=1, pk=1, name='john')
BillTheStranger = MockModel(id=2, pk=2, name='bill')

BoringBook = MockModel(id='10',
                       pk='10',
                       user_id=JohnTheOwner.id,
                       user=JohnTheOwner,
                       title='Boring book')
InterestingBook = MockModel(id='11',
                            pk='11',
                            user_id=JohnTheOwner.id,
                            user=JohnTheOwner,
                            title='Interesting book')

mock_book_queryset = MockSet(BoringBook, InterestingBook, model=BoringBook)


class BaseViewMixin:
    renderer_classes = (CamelCaseJSONRenderer, )
    parser_classes = (CamelCaseJSONParser, )

    queryset = mock_book_queryset
    serializer_class = PlainViewSetSerializer
    permission_classes = ()


class BaseListCreateAPIView(BaseViewMixin, generics.ListCreateAPIView):
    pass

def update_user(mocker):
    mockset = MockSet(
        UserAccount(uuid=UUID_MOCK, username='******',
                    password='******'))
    mocker.patch.object(UserAccount, 'objects', mockset)
    return mocker.patch.object(UserAccount, 'save')
Example #22
0
 def test_query_create_raises_model_not_specified_when_mockset_model_is_none(
         self):
     qs = MockSet()
     attrs = dict(foo=1, bar='a')
     self.assertRaises(ModelNotSpecified, qs.create, **attrs)
Example #23
0
 def test_query_implements_iterator_on_items(self):
     items = [1, 2, 3]
     assert [x for x in MockSet(*items)] == items
Example #24
0
 def test_query_counts_items_in_set(self):
     items = [1, 2, 3]
     assert MockSet(*items).count() == len(items)
def test_category_federal_accounts_subawards(mock_matviews_qs,
                                             mock_federal_account, mock_tas,
                                             mock_award,
                                             mock_financial_account,
                                             mock_transaction):
    fa = MockModel(id=10,
                   agency_identifier="020",
                   main_account_code="0001",
                   account_title="Test Federal Account")
    add_to_mock_objects(mock_federal_account, [fa])

    tas = MockModel(treasury_account_identifier=2, federal_account_id=10)
    add_to_mock_objects(mock_tas, [tas])

    award = MockModel(id=3)
    add_to_mock_objects(mock_award, [award])

    fs = MockModel(financial_accounts_by_awards_id=4,
                   submission_id=3,
                   treasury_account=tas,
                   award=award)
    add_to_mock_objects(mock_financial_account, [fs])

    award.financial_set = MockSet(fs)
    t1 = MockModel(award=award, id=5)
    t2 = MockModel(award=award, id=6)
    add_to_mock_objects(mock_transaction, [t1, t2])

    mock_model_1 = MockModel(transaction=t1,
                             recipient_hash="00000-00000-00000-00000-00000",
                             parent_recipient_unique_id="000000",
                             amount=1)
    mock_model_2 = MockModel(transaction=t2,
                             recipient_hash="00000-00000-00000-00000-00000",
                             parent_recipient_unique_id="000000",
                             amount=1)
    add_to_mock_objects(mock_matviews_qs, [mock_model_1, mock_model_2])

    test_payload = {
        "category": "federal_account",
        "filters": {
            "recipient_id": "00000-00000-00000-00000-00000-C"
        },
        "subawards": True,
        "page": 1,
        "limit": 50,
    }

    spending_by_category_logic = BusinessLogic(test_payload).results()

    expected_response = {
        "category":
        "federal_account",
        "limit":
        50,
        "page_metadata": {
            "page": 1,
            "next": None,
            "previous": None,
            "hasNext": False,
            "hasPrevious": False
        },
        "results": [{
            "amount": 2,
            "code": "020-0001",
            "name": "Test Federal Account",
            "id": 10
        }],
    }

    assert expected_response == spending_by_category_logic
Example #26
0
 def test_query_values_list_raises_type_error_when_kwargs_other_than_flat_specified(
         self):
     qs = MockSet(MockModel(foo=1), MockModel(foo=2))
     self.assertRaises(TypeError, qs.values_list, arg='value')
 class FakeModel:
     objects = MockSet()
Example #28
0
 def test_query_values_list_raises_type_error_when_flat_specified_with_multiple_fields(
         self):
     qs = MockSet(MockModel(foo=1), MockModel(foo=2))
     self.assertRaises(TypeError, qs.values_list, 'foo', 'bar', flat=True)
Example #29
0
 def test_query_create_raises_value_error_when_kwarg_key_is_not_in_concrete_fields(
         self):
     qs = MockSet(model=create_model('first', 'second', 'third'))
     attrs = dict(first=1, second=2, third=3, fourth=4)
     with self.assertRaises(ValueError):
         qs.create(**attrs)
Example #30
0
 def test_query_values_list_raises_not_implemented_if_no_fields_specified(
         self):
     qs = MockSet(MockModel(foo=1), MockModel(foo=2))
     self.assertRaises(NotImplementedError, qs.values_list)