Created
October 29, 2014 02:08
-
-
Save CapnKernel/a87736e6cef64451b079 to your computer and use it in GitHub Desktop.
peer saves v1 verbose
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # -*- coding: utf-8 -*- | |
| from django.db import models | |
| class C(models.Model): | |
| role = models.CharField(max_length=20) | |
| an_int = models.IntegerField(default=0) | |
| master = models.ForeignKey('C', null=True, blank=True) | |
| def __unicode__(self): | |
| return "<C: pk=%s role=%s an_int=%s>" % (self.pk, self.role, self.an_int) | |
| def save(self, *args, **kwargs): | |
| # print "C.save: pk=%s role=%s master=%s an_int=%s>" % (self.pk, self.role, self.master, self.an_int) | |
| # print " C.save: pk=%s role=%s an_int=%s>: calling super" % (self.pk, self.role, self.an_int) | |
| super(C, self).save(*args, **kwargs) | |
| # print " C.save: pk=%s role=%s an_int=%s>: back from super" % (self.pk, self.role, self.an_int) | |
| # Find slaves if we're a saved master | |
| if self.pk and self.master is None: | |
| # print "we're a master, look for slaves and mod and save them" | |
| for slave in C.objects.filter(master=self): | |
| # print "slave=", slave | |
| # Does the slave differ from us? | |
| if self.an_int != slave.an_int: | |
| slave.an_int = self.an_int | |
| slave.save() | |
| assert slave.an_int == self.an_int | |
| # else: | |
| # print "slave not set" | |
| # else: | |
| # print "no slaves" | |
| # else: | |
| # print "no slaves" | |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| from django.test import TestCase | |
| from .models import C | |
| class C_Test(TestCase): | |
| def setUp(self): | |
| # print "> in setUp" | |
| sole = C(role="sole", an_int=10) | |
| sole.save() | |
| master = C(role="master", an_int=11) | |
| master.save() | |
| slave = C(role="slave", an_int=11) | |
| slave.master = master | |
| slave.save() | |
| # print "> finished setUp" | |
| """ | |
| def test_set_up_correctly(self): | |
| self.assertEquals(C.objects.get(role="sole").an_int, 10) | |
| self.assertEquals(C.objects.get(role="master").an_int, 11) | |
| self.assertEquals(C.objects.get(role="slave").an_int, 11) | |
| """ | |
| """ | |
| def test_slave_change_ignores_master(self): | |
| # Change an_int in the slave. | |
| # Verify it doesn't change in the master | |
| print "> in test_slave_change_ignores_master" | |
| master = C.objects.get(role="master") | |
| slave = C.objects.get(role="slave") | |
| slave.an_int = 12 | |
| slave.save() | |
| self.assertEquals(master.an_int, 11) | |
| self.assertEquals(slave.an_int, 12) | |
| # How about if we reload them from the DB? | |
| master = C.objects.get(role="master") | |
| slave = C.objects.get(role="slave") | |
| self.assertEquals(master.an_int, 11) | |
| self.assertEquals(slave.an_int, 12) | |
| print "> finished test_slave_change_ignores_master" | |
| """ | |
| def test_master_change_sets_slave(self): | |
| # Change an_int in the master. | |
| # Verify it also changes in the slave | |
| # print "> in test_master_change_sets_slave" | |
| master = C.objects.get(role="master") | |
| slave = C.objects.get(role="slave") | |
| master.an_int = 12 | |
| master.save() | |
| self.assertEquals(master.an_int, 12) | |
| self.assertEquals(slave.an_int, 12) | |
| # How about if we reload them from the DB? | |
| master = C.objects.get(role="master") | |
| slave = C.objects.get(role="slave") | |
| self.assertEquals(master.an_int, 12) | |
| self.assertEquals(slave.an_int, 12) | |
| # print "> finished test_master_change_sets_slave" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment