def test_assignment(self): b = UserBadge.create(u'all users - ' + tt_make_str(), u'', False, u'') t = Treatment.create(tt_make_str(), source_badges=[b], variant_count=2) sb, assignments, unassigned = get_assignments_by_source_badge(t)[0] assert sb == b ass1, ass2 = assignments assert len(ass1) == 0 assert len(ass2) == 0 assert len(unassigned) == 0 first_users = [tt_make_user() for _ in range(5)] for u in first_users: b.assign(u, u) # sanity check assert set(u.id for u in b.users) == set(u.id for u in first_users) sb, assignments, unassigned = get_assignments_by_source_badge(t)[0] assert sb == b ass1, ass2 = assignments assert len(ass1) == 0 assert len(ass2) == 0 assert len(unassigned) == len(first_users) assert assign_users(t) sb, assignments, unassigned = get_assignments_by_source_badge(t)[0] assert sb == b ass1, ass2 = assignments assert len(ass1) + len(ass2) == len(first_users) assert (len(ass1) == len(ass2) - 1) or (len(ass1) == len(ass2) + 1) assert len(unassigned) == 0 assert not assign_users(t) new_users = [tt_make_user() for _ in range(5)] for u in new_users: b.assign(u, u) sb, assignments, unassigned = get_assignments_by_source_badge(t)[0] assert sb == b ass1, ass2 = assignments assert len(ass1) + len(ass2) == len(first_users) assert (len(ass1) == len(ass2) - 1) or (len(ass1) == len(ass2) + 1) assert len(unassigned) == len(new_users) assert assign_users(t) sb, assignments, unassigned = get_assignments_by_source_badge(t)[0] assert sb == b ass1, ass2 = assignments assert len(ass1) + len(ass2) == len(first_users) + len(new_users) # The following assert is disabled as it fails non-deterministically # (see #601). It can be reenabled once this issue is fixed. #assert len(ass1) == len(ass2) assert len(unassigned) == 0 assert not assign_users(t)
def _make_norm(self, proposal, creator): from adhocracy import model instance = tt_get_instance() page = model.Page.create(instance, title=tt_make_str(), text=tt_make_str(), creator=creator) selection = model.Selection.create(proposal, page, creator) selection.variant_poll(page.head) return page
def test_importexport_instance(self): opts = { u'include_instance': True } ed = importexport.export_data(opts) testdata = ed[u'instance'][self.instance.key] testdata[u'key'] += testtools.tt_make_str() + u'A' # Test uppercase ed[u'instance'] = {testdata[u'key']: testdata} importexport.import_data(opts, ed) imported_instance = model.Instance.find(testdata[u'key']) self.assertTrue(imported_instance) INSTANCE_PROPS = [ u'label', u'creator', u'description', u'required_majority', u'activation_delay', u'create_time', u'access_time', u'delete_time', u'default_group_id', u'allow_adopt', u'allow_delegate', u'allow_propose', u'allow_index', u'hidden', u'locale', u'css', u'frozen', u'milestones', u'use_norms', u'require_selection', u'is_authenticated', u'hide_global_categories', u'editable_comments_default', u'editable_proposals_default', u'require_valid_email', u'allow_thumbnailbadges', u'thumbnailbadges_height', u'thumbnailbadges_width', ] for p in INSTANCE_PROPS: imported = getattr(imported_instance, p) expected = getattr(self.instance, p) msg = (u'Instance.%s: Got %r, but expected %r' % (p, imported, expected)) self.assertEqual(expected, imported, msg)
def test_export_comments(self): p = testtools.tt_make_proposal(creator=self.u1, with_description=True) desc1 = testtools.tt_make_str() desc2 = testtools.tt_make_str() c1 = model.Comment.create( text=desc1, user=self.u1, topic=p.description, reply=None, variant=u'HEAD', sentiment=1) c2 = model.Comment.create( text=desc2, user=self.u2, topic=p.description, reply=c1, variant=u'HEAD', sentiment=-1) assert p.description.comments e = importexport.export_data({ "include_instance": True, "include_instance_proposal": True, "include_instance_proposal_comment": True, "include_users": True, }) idata = e[u'instance'][p.instance.key] pdata = idata[u'proposals'][str(p.id)] assert u'comments' in pdata self.assertEqual(len(pdata[u'comments']), 1) cdata = next(iter(pdata[u'comments'].values())) self.assertEqual(cdata[u'text'], desc1) self.assertEqual(cdata[u'creator'], str(self.u1.id)) self.assertEqual(cdata[u'sentiment'], 1) self.assertEqual(cdata[u'adhocracy_type'], u'comment') self.assertEqual(len(cdata[u'comments']), 1) cdata2 = next(iter(cdata[u'comments'].values())) self.assertEqual(cdata2[u'text'], desc2) self.assertEqual(cdata2[u'creator'], str(self.u2.id)) self.assertEqual(cdata2[u'sentiment'], -1) self.assertEqual(cdata2[u'adhocracy_type'], u'comment')
def test_export_comments(self): p = testtools.tt_make_proposal(creator=self.u1, with_description=True) desc1 = testtools.tt_make_str() desc2 = testtools.tt_make_str() c1 = model.Comment.create( text=desc1, user=self.u1, topic=p.description, reply=None, variant=u"HEAD", sentiment=1 ) c2 = model.Comment.create( text=desc2, user=self.u2, topic=p.description, reply=c1, variant=u"HEAD", sentiment=-1 ) assert p.description.comments e = importexport.export_data( { "include_instance": True, "include_instance_proposal": True, "include_instance_proposal_comment": True, "include_users": True, } ) idata = e[u"instance"][p.instance.key] pdata = idata[u"proposals"][str(p.id)] assert u"comments" in pdata self.assertEqual(len(pdata[u"comments"]), 1) cdata = next(iter(pdata[u"comments"].values())) self.assertEqual(cdata[u"text"], desc1) self.assertEqual(cdata[u"creator"], str(self.u1.id)) self.assertEqual(cdata[u"sentiment"], 1) self.assertEqual(cdata[u"adhocracy_type"], u"comment") self.assertEqual(len(cdata[u"comments"]), 1) cdata2 = next(iter(cdata[u"comments"].values())) self.assertEqual(cdata2[u"text"], desc2) self.assertEqual(cdata2[u"creator"], str(self.u2.id)) self.assertEqual(cdata2[u"sentiment"], -1) self.assertEqual(cdata2[u"adhocracy_type"], u"comment")
def test_importexport_instance(self): opts = {u"include_instance": True} ed = importexport.export_data(opts) testdata = ed[u"instance"][self.instance.key] testdata[u"key"] += testtools.tt_make_str() + u"A" # Test uppercase ed[u"instance"] = {testdata[u"key"]: testdata} importexport.import_data(opts, ed) imported_instance = model.Instance.find(testdata[u"key"]) self.assertTrue(imported_instance) INSTANCE_PROPS = [ u"label", u"creator", u"description", u"required_majority", u"activation_delay", u"create_time", u"access_time", u"delete_time", u"default_group_id", u"allow_adopt", u"allow_delegate", u"allow_propose", u"allow_index", u"hidden", u"locale", u"css", u"frozen", u"milestones", u"use_norms", u"require_selection", u"is_authenticated", u"hide_global_categories", u"editable_comments_default", u"editable_proposals_default", u"require_valid_email", u"allow_thumbnailbadges", u"thumbnailbadges_height", u"thumbnailbadges_width", ] for p in INSTANCE_PROPS: imported = getattr(imported_instance, p) expected = getattr(self.instance, p) msg = u"Instance.%s: Got %r, but expected %r" % (p, imported, expected) self.assertEqual(expected, imported, msg)