Princeton-CDH / mep-django

@@ -38,6 +38,8 @@
Loading
38 38
        'borrow_status',
39 39
        # purchase specific
40 40
        'purchase_price',
41 +
        # currency applies to purchase, borrow, and subscription
42 +
        'currency',
41 43
        # related book/item
42 44
        'item_uri', 'item_title', 'item_volume', 'item_authors',
43 45
        'item_year', 'item_notes',
@@ -70,18 +72,19 @@
Loading
70 72
71 73
        # variable to store footnote reference, if any
72 74
        footnote = None
75 +
        currency = None
73 76
74 77
        # subscription-specific data
75 78
        if event_type in ['Subscription', 'Supplement', 'Renewal']:
76 79
            data['subscription'] = self.subscription_info(obj)
80 +
            currency = obj.subscription.get_currency_display()
77 81
78 82
        # reimbursement data
79 83
        elif event_type in 'Reimbursement' and obj.reimbursement.refund:
80 84
            data['reimbursement'] = {
81 -
                'refund': '%s%.2f' %
82 -
                          (obj.reimbursement.currency_symbol(),
83 -
                           obj.reimbursement.refund)
85 +
                'refund': '%.2f' % obj.reimbursement.refund
84 86
            }
87 +
            currency = obj.reimbursement.get_currency_display()
85 88
86 89
        # borrow data
87 90
        elif event_type == 'Borrow':
@@ -92,9 +95,12 @@
Loading
92 95
        # purchase data
93 96
        elif event_type == 'Purchase' and obj.purchase.price:
94 97
            data['purchase'] = {
95 -
                'price': '%s%.2f' %
96 -
                         (obj.purchase.currency_symbol(), obj.purchase.price)
98 +
                'price': '%.2f' % obj.purchase.price
97 99
            }
100 +
            currency = obj.purchase.get_currency_display()
101 +
102 +
        if currency:
103 +
            data['currency'] = currency
98 104
99 105
        # footnote should always be attached to the base event
100 106
        footnote = obj.footnotes.first()
@@ -127,12 +133,12 @@
Loading
127 133
        except ObjectDoesNotExist:
128 134
            return
129 135
130 -
        info = OrderedDict([
131 -
            ('price_paid', '%s%.2f' % (subs.currency_symbol(),
132 -
                                       subs.price_paid or 0)),
133 -
            ('deposit', '%s%.2f' % (subs.currency_symbol(),
134 -
                                    subs.deposit or 0))
135 -
        ])
136 +
        info = OrderedDict()
137 +
        if subs.price_paid:
138 +
            info['price_paid'] = '%.2f' % subs.price_paid
139 +
        if subs.deposit:
140 +
            info['deposit'] = '%.2f' % subs.deposit
141 +
136 142
        if subs.duration:
137 143
            info['duration'] = subs.readable_duration()
138 144
            info['duration_days'] = subs.duration

@@ -428,7 +428,7 @@
Loading
428 428
429 429
        member_info = self.cmd.member_info(event)
430 430
        # each field should have two values
431 -
        for field in ('sort_names', 'names', 'URIs'):
431 +
        for field in ('sort_names', 'names', 'uris'):
432 432
            assert len(member_info[field]) == 2
433 433
434 434
        # test event with account but no person
@@ -444,10 +444,9 @@
Loading
444 444
            .first()
445 445
        subs = event.subscription
446 446
        info = self.cmd.subscription_info(event)
447 -
        assert info['price_paid'] == '%s%.2f' % (subs.currency_symbol(),
448 -
                                                 subs.price_paid)
447 +
        assert info['price_paid'] == '%.2f' % subs.price_paid
449 448
        # test event has no deposit amount
450 -
        assert info['deposit'] == '%s0.00' % subs.currency_symbol()
449 +
        assert 'deposit' not in info
451 450
        assert info['duration'] == subs.readable_duration()
452 451
        assert info['duration_days'] == subs.duration
453 452
        assert info['volumes'] == subs.volumes
@@ -529,6 +528,19 @@
Loading
529 528
        assert info['manifest'] == footnote.bibliography.manifest.uri
530 529
        assert info['image'] == str(footnote.image.image)
531 530
531 +
    def test_get_object_data(self):
532 +
        # get a subscription with no subcategory and both dates
533 +
        event = Event.objects.filter(
534 +
            subscription__isnull=False,
535 +
            start_date__isnull=False, end_date__isnull=False,
536 +
            subscription__category__isnull=True) \
537 +
            .first()
538 +
        data = self.cmd.get_object_data(event)
539 +
        assert data['event_type'] == event.event_label
540 +
        assert data['currency'] == 'French Franc'
541 +
        assert 'member' in data
542 +
        assert 'subscription in data'
543 +
532 544
    def test_command_line(self):
533 545
        # test calling via command line with args
534 546
        tempdir = TemporaryDirectory()
Files Coverage
mep 98.44%
srcmedia/ts 86.55%
Project Totals (223 files) 98.00%
2444.1
TRAVIS_PYTHON_VERSION=3.5
TRAVIS_OS_NAME=linux

No yaml found.

Create your codecov.yml to customize your Codecov experience

Sunburst
The inner-most circle is the entire project, moving away from the center are folders then, finally, a single file. The size and color of each slice is representing the number of statements and the coverage, respectively.
Icicle
The top section represents the entire project. Proceeding with folders and finally individual files. The size and color of each slice is representing the number of statements and the coverage, respectively.
Grid
Each block represents a single file in the project. The size and color of each block is represented by the number of statements and the coverage, respectively.
Loading