Example #1
0
    def test_delays_order(self):
        """A NoticeXML's effective date can be delayed by multiple NoticeXMLs.
        Last one wins"""
        delayed, delayer1, delayer2 = Mock(), Mock(), Mock()
        delayed.configure_mock(published=1,
                               fr_volume='vvv',
                               start_page=100,
                               end_page=200,
                               version_id='1',
                               **{'delays.return_value': []})
        delayer1.configure_mock(
            published=2,
            fr_volume='vvv',
            start_page=200,
            end_page=300,
            version_id='2',
            **{'delays.return_value': [FRDelay('vvv', 100, 'zzz-date')]})
        delayer2.configure_mock(
            published=3,
            fr_volume='vvv',
            start_page=300,
            end_page=400,
            version_id='3',
            **{'delays.return_value': [FRDelay('vvv', 100, 'aaa-date')]})

        delays = versions.delays([delayed, delayer2, delayer1])
        self.assertEqual(delays, {'1': versions.Delay('3', 'aaa-date')})

        delays = versions.delays([delayed, delayer1, delayer2])
        self.assertEqual(delays, {'1': versions.Delay('3', 'aaa-date')})
Example #2
0
    def test_delays(self):
        """For NoticeXMLs which cause delays to other NoticeXMLs, we'd like to
        get a dictionary of delayed -> Delay(delayer, delayed_until)"""
        not_involved, delayed, delayer = Mock(), Mock(), Mock()
        not_involved.configure_mock(published=1,
                                    fr_volume='vvv',
                                    start_page=100,
                                    end_page=200,
                                    version_id='1',
                                    **{'delays.return_value': []})
        delayed.configure_mock(published=2,
                               fr_volume='vvv',
                               start_page=300,
                               end_page=400,
                               version_id='2',
                               **{'delays.return_value': []})
        delayer.configure_mock(published=3,
                               fr_volume='vvv',
                               start_page=500,
                               end_page=600,
                               version_id='3',
                               **{
                                   'delays.return_value': [
                                       FRDelay('other', 1, 'another-date'),
                                       FRDelay('vvv', 350, 'new-date')
                                   ]
                               })

        delays = versions.delays([not_involved, delayed, delayer])
        self.assertEqual(delays, {'2': versions.Delay('3', 'new-date')})
def test_write_if_needed_delays(monkeypatch):
    """Delays introduce dependencies."""
    monkeypatch.setattr(versions, 'write_to_disk', Mock())
    entry.Entry('notice_xml', '111').write(b'content')
    entry.Entry('notice_xml', '222').write(b'content')
    entry.Entry('version', 'title', 'part', '111').write(b'out')
    versions.write_if_needed('title', 'part', ['111'], {'111': 'xml111'},
                             {'111': versions.Delay('222', 'until-date')})
    assert not versions.write_to_disk.called

    # Simulate a change to an input file
    label_id = str(entry.Notice('222'))
    new_time = timezone.now() + timedelta(hours=1)
    DBEntry.objects.filter(label_id=label_id).update(modified=new_time)
    versions.write_if_needed('title', 'part', ['111'], {'111': 'xml111'},
                             {'111': versions.Delay('222', 'until-date')})
    assert versions.write_to_disk.called
    def test_write_if_needed_delays(self, write_to_disk):
        """Delays introduce dependencies."""
        with self.cli.isolated_filesystem():
            entry.Entry('notice_xml', '111').write(b'content')
            entry.Entry('notice_xml', '222').write(b'content')
            entry.Entry('version', 'title', 'part', '111').write(b'out')
            versions.write_if_needed(
                'title', 'part', ['111'], {'111': 'xml111'},
                {'111': versions.Delay('222', 'until-date')})
            self.assertFalse(write_to_disk.called)

            # Simulate a change to an input file
            os.utime(str(entry.Notice('222')), (time() + 1000, time() + 1000))
            versions.write_if_needed(
                'title', 'part', ['111'], {'111': 'xml111'},
                {'111': versions.Delay('222', 'until-date')})
            self.assertTrue(write_to_disk.called)
Example #5
0
    def test_write_if_needed_delays(self, write_to_disk):
        """Delays introduce dependencies."""
        with self.cli.isolated_filesystem():
            entry.Entry('notice_xml', '111').write(b'content')
            entry.Entry('notice_xml', '222').write(b'content')
            entry.Entry('version', 'title', 'part', '111').write(b'out')
            versions.write_if_needed(
                'title', 'part', ['111'], {'111': 'xml111'},
                {'111': versions.Delay('222', 'until-date')})
            self.assertFalse(write_to_disk.called)

            # Simulate a change to an input file
            label_id = str(entry.Notice('222'))
            new_time = timezone.now() + timedelta(hours=1)
            DBEntry.objects.filter(label_id=label_id).update(modified=new_time)
            versions.write_if_needed(
                'title', 'part', ['111'], {'111': 'xml111'},
                {'111': versions.Delay('222', 'until-date')})
            self.assertTrue(write_to_disk.called)
def test_write_to_disk():
    """If a version has been delayed, its effective date should be part of the
    serialized json"""
    xml = Mock(effective=date(2002, 2, 2),
               version_id='111',
               fr_citation=Citation(1, 1))
    path = entry.Version('12', '1000')
    versions.write_to_disk(xml, path / '111')

    xml.version_id = '222'
    versions.write_to_disk(xml, path / '222',
                           versions.Delay(by='333', until=date(2004, 4, 4)))

    assert (path / '111').read().effective == date(2002, 2, 2)
    assert (path / '222').read().effective == date(2004, 4, 4)
    def test_write_to_disk(self):
        """If a version has been delayed, its effective date should be part of
        the serialized json"""
        xml = Mock()
        path = entry.Version('12', '1000')
        with self.cli.isolated_filesystem():
            xml.configure_mock(effective=date(2002, 2, 2), version_id='111',
                               published=date(2002, 1, 1))
            versions.write_to_disk(xml, path / '111')

            xml.configure_mock(version_id='222')
            versions.write_to_disk(
                xml, path / '222',
                versions.Delay(by='333', until=date(2004, 4, 4)))

            self.assertEqual((path / '111').read().effective, date(2002, 2, 2))
            self.assertEqual((path / '222').read().effective, date(2004, 4, 4))