class TestRequestFilterMixin(TestCase):
    def setUp(self):
        super(TestRequestFilterMixin, self).setUp()
        self.mixin = RequestFilterMixin()

    def test_should_build_filter_based_on_request(self):
        self.mixin.supported_filters = {
            "query": "query_filter"
        }

        filters = self.mixin.build_filters({'query': 'Unicef'})

        self.assertDictEqual(filters, {'query_filter': 'Unicef'})

    def test_should_not_filter_out_with_unsupported_filters(self):
        self.mixin.supported_filters = {
            "query": "query_filter"
        }

        filters = self.mixin.build_filters({'query': 'Unicef', 'unsupported_filter': 'unsupported_filter'})

        self.assertNotIn('unsupported_filter', filters)

    def test_should_apply_additional_supported_filter(self):
        self.mixin.supported_filters = {
            "query": "query_filter",
            "name": "name_filter"
        }

        filters = self.mixin.build_filters({'query': 'Unicef'}, name='Unicef')

        self.assertDictEqual(filters, {'query_filter': 'Unicef', 'name_filter': 'Unicef'})

    def test_should_build_empty_filter_when_query_params_is_none(self):
        self.assertDictEqual(self.mixin.build_filters(None), {})
Beispiel #2
0
class TestRequestFilterMixin(TestCase):
    def setUp(self):
        super(TestRequestFilterMixin, self).setUp()
        self.mixin = RequestFilterMixin()

    def test_should_build_filter_based_on_request(self):
        self.mixin.supported_filters = {"query": "query_filter"}

        filters = self.mixin.build_filters({'query': 'Unicef'})

        self.assertDictEqual(filters, {'query_filter': 'Unicef'})

    def test_should_not_filter_out_with_unsupported_filters(self):
        self.mixin.supported_filters = {"query": "query_filter"}

        filters = self.mixin.build_filters({
            'query':
            'Unicef',
            'unsupported_filter':
            'unsupported_filter'
        })

        self.assertNotIn('unsupported_filter', filters)

    def test_should_apply_additional_supported_filter(self):
        self.mixin.supported_filters = {
            "query": "query_filter",
            "name": "name_filter"
        }

        filters = self.mixin.build_filters({'query': 'Unicef'}, name='Unicef')

        self.assertDictEqual(filters, {
            'query_filter': 'Unicef',
            'name_filter': 'Unicef'
        })

    def test_should_build_empty_filter_when_query_params_is_none(self):
        self.assertDictEqual(self.mixin.build_filters(None), {})
from eums.models import DistributionPlanNode, DistributionPlan, Flow
from rest_framework.utils.urls import replace_query_param
from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework import status
from eums.api.sorting.standard_dic_sort import StandardDicSort
from eums.api.filter.filter_mixin import RequestFilterMixin
from eums.permissions.stock_report_permissions import StockReportPermissions

PAGE_SIZE = 10
sort = StandardDicSort('last_shipment_date', 'last_received_date',
                       'total_value_received', 'total_value_dispensed',
                       'total_value_lost', 'balance')

mixin = RequestFilterMixin()


class StockReport(APIView):
    permission_classes = (StockReportPermissions, )

    def get(self, request):
        reduced_stock_report = filter_stock_report(request)
        totals = _compute_totals(reduced_stock_report)
        reduced_stock_report = sort.sort_by(request, reduced_stock_report)
        paginated_results = Paginator(reduced_stock_report, PAGE_SIZE)

        page_number = _get_page_number(request)
        results_current_page = paginated_results.page(page_number)

        data = {
Beispiel #4
0
 def setUp(self):
     super(TestRequestFilterMixin, self).setUp()
     self.mixin = RequestFilterMixin()
 def setUp(self):
     super(TestRequestFilterMixin, self).setUp()
     self.mixin = RequestFilterMixin()