def test_save(self):
        cl = make_contactlog()
        operator = make_operator()

        f = ContactForm(data={'callsign': 'W2PE',
                              'mode': Mode.objects.get(name='CW').id,
                              'band': Band.objects.get(name='20m').id,
                              'frequency': '14.125',
                              'when': '2011-01-02 03:04',
                              'rst_sent': '59',
                              'rst_received': '599',
                              'contest_exchange_sent': '1/NY',
                              'contest_exchange_received': '33/WV'})

        self.assertTrue(f.is_valid())
        self.assertEquals(0, Contact.objects.filter(callsign='W2PE').count())

        contact = f.save(contact_log=cl,operator=operator)

        self.assertEquals(1, Contact.objects.filter(callsign='W2PE').count())
        self.assertEquals('W2PE', contact.callsign)
        self.assertEquals('2011-01-02 03:04:00', unicode(contact.when))
        self.assertEquals(cl, contact.contact_log)
        self.assertEquals(operator, contact.operator)
        self.assertEquals('CW', contact.mode.name)
        self.assertEquals('20m', contact.band.name)
        self.assertEquals('59', contact.rst_sent)
        self.assertEquals('599', contact.rst_received)
        self.assertEquals('1/NY', contact.contest_exchange_sent)
        self.assertEquals('33/WV', contact.contest_exchange_received)
        self.assertEquals('14.125', contact.frequency)
    def test_save_set_band(self):
        cl = make_contactlog()
        operator = make_operator()

        f = ContactForm(data={'callsign': 'W2PE',
                              'frequency': '14.243',
                              'mode': Mode.objects.get(name='CW').id})
        self.assertTrue(f.is_valid())
        self.assertEquals(0, Contact.objects.filter(callsign='W2PE').count())

        contact = f.save(contact_log=cl,operator=operator)

        self.assertEquals(1, Contact.objects.filter(callsign='W2PE').count())
        self.assertEquals('W2PE', contact.callsign)
        self.assertEquals('20m', contact.band.name)

        f = ContactForm(data={'callsign': 'W2PE',
                              'frequency': '1.000',
                              'mode': Mode.objects.get(name='CW').id})
        self.assertFalse(f.is_valid())
        self.assertEquals({'__all__': [u'Please select a band or enter a frequency.']}, f.errors)
    def test_save_set_when(self):
        cl = make_contactlog()
        operator = make_operator()

        f = ContactForm(data={'callsign': 'W2PE',
                              'mode': Mode.objects.get(name='CW').id,
                              'band': Band.objects.get(name='20m').id})

        self.assertTrue(f.is_valid())
        self.assertEquals(0, Contact.objects.filter(callsign='W2PE').count())

        contact = f.save(contact_log=cl,operator=operator)

        self.assertEquals(1, Contact.objects.filter(callsign='W2PE').count())
        self.assertEquals('W2PE', contact.callsign)
            
        d = datetime.datetime.utcnow()
        self.assertEquals(d.year, contact.when.year)
        self.assertEquals(d.month, contact.when.month)
        self.assertEquals(d.day, contact.when.day)
        self.assertEquals(d.hour, contact.when.hour)
        self.assertEquals(d.minute, contact.when.minute)