def subG(self, subD): return SubjectFactory(text='G', parent=subD)
def subject_a(self): return SubjectFactory(text='Z')
def create_subject_rules(self): ''' Subject Hierarchy +-----------------------------+ | | | +-------->B+----->F | | | | | A+----------->C | | | | | +-------->D+----->G | | | | H+------>I+----->J | | | | | +----->K | | | | L+------>M+----->N | | | | | +------->E | | | | O | +-----------------------------+ ''' self.subA = SubjectFactory(text='A') self.subB = SubjectFactory(text='B', parent=self.subA) self.subC = SubjectFactory(text='C', parent=self.subA) self.subD = SubjectFactory(text='D', parent=self.subA) self.subF = SubjectFactory(text='F', parent=self.subB) self.subG = SubjectFactory(text='G', parent=self.subD) self.subH = SubjectFactory(text='H') self.subI = SubjectFactory(text='I', parent=self.subH) self.subJ = SubjectFactory(text='J', parent=self.subI) self.subK = SubjectFactory(text='K', parent=self.subI) self.subL = SubjectFactory(text='L') self.subM = SubjectFactory(text='M', parent=self.subL) self.subE = SubjectFactory(text='E', parent=self.subM) self.subN = SubjectFactory(text='N', parent=self.subM) self.subO = SubjectFactory(text='O') rules = [([self.subA._id, self.subB._id], False), ([self.subA._id, self.subD._id], True), ([self.subH._id, self.subI._id, self.subJ._id], True), ([self.subL._id], True)] # This should allow: A, B, D, G, H, I, J, L, M, N and E # This should not allow: C, F, K, O return rules
def setUp(self): super(TestSubjectEditValidation, self).setUp() self.subject = SubjectFactory()
def subject(self): return SubjectFactory(text='A')
def subj_a(self, provider): return SubjectFactory(provider=provider, text='A')
def subject_one(self): return SubjectFactory()
def subN(self, subM): return SubjectFactory(text='N', parent=subM)
def subO(self): return SubjectFactory(text='O')
def subL(self): return SubjectFactory(text='L')
def subM(self, subL): return SubjectFactory(text='M', parent=subL)
def subK(self, subI): return SubjectFactory(text='K', parent=subI)
def subI(self, subH): return SubjectFactory(text='I', parent=subH)
def subH(self): return SubjectFactory(text='H')
def bepress_subj(self, osf_provider): return SubjectFactory(text='BePress Text', provider=osf_provider)
def root_subject_1(self, provider_1): return SubjectFactory(text='R1', provider=provider_1)
def other_subj(self, bepress_subj, asdf_provider): return SubjectFactory(text='Other Text', bepress_subject=bepress_subj, provider=asdf_provider)
def parent_subject_1(self, provider_1, root_subject_1): return SubjectFactory(text='P1', provider=provider_1, parent=root_subject_1)
def subj_aa(self, provider, subj_a): return SubjectFactory(provider=provider, text='AA', parent=subj_a, highlighted=True)
def rootOther(self, provider_1): return SubjectFactory(text='Other 1', provider=provider_1)
def setUp(self): super(TestSubjectTreeValidation, self).setUp() self.root_subject = SubjectFactory() self.one_level_root = SubjectFactory() self.two_level_root = SubjectFactory() self.outside_root = SubjectFactory() self.root_subject.save() self.outside_root.save() self.two_level_root.save() self.one_level_root.save() self.parent_subj_0 = SubjectFactory(parent=self.root_subject) self.parent_subj_1 = SubjectFactory(parent=self.root_subject) self.two_level_parent = SubjectFactory(parent=self.two_level_root) self.outside_parent = SubjectFactory(parent=self.outside_root) self.parent_subj_0.save() self.parent_subj_1.save() self.outside_parent.save() self.two_level_parent.save() self.child_subj_00 = SubjectFactory(parent=self.parent_subj_0) self.child_subj_01 = SubjectFactory(parent=self.parent_subj_0) self.child_subj_10 = SubjectFactory(parent=self.parent_subj_1) self.child_subj_11 = SubjectFactory(parent=self.parent_subj_1) self.outside_child = SubjectFactory(parent=self.outside_parent) self.child_subj_00.save() self.child_subj_01.save() self.child_subj_10.save() self.child_subj_11.save() self.outside_child.save() self.valid_full_hierarchy = [self.root_subject._id, self.parent_subj_0._id, self.child_subj_00._id] self.valid_two_level_hierarchy = [self.two_level_root._id, self.two_level_parent._id] self.valid_one_level_hierarchy = [self.one_level_root._id] self.valid_partial_hierarchy = [self.root_subject._id, self.parent_subj_1._id] self.valid_root = [self.root_subject._id] self.no_root = [self.parent_subj_0._id, self.child_subj_00._id] self.no_parent = [self.root_subject._id, self.child_subj_00._id] self.invalid_child_leaf = [self.root_subject._id, self.parent_subj_0._id, self.child_subj_10._id] self.invalid_parent_leaf = [self.root_subject._id, self.outside_parent._id, self.child_subj_00._id] self.invalid_root_leaf = [self.outside_root._id, self.parent_subj_0._id, self.child_subj_00._id] self.invalid_ids = ['notarealsubjectid', 'thisisalsoafakeid']
def child_subject_1(self, provider_1, parent_subject_1): return SubjectFactory(text='C1', provider=provider_1, parent=parent_subject_1)
def test_max_highlighted_count(self): highlights = [SubjectFactory(provider=self.subject.provider, highlighted=True) for _ in range(10)] with assert_raises(ValidationError): self.subject.highlighted=True self.subject.save()
def root_subject_2(self, provider_2): return SubjectFactory(text='R2', provider=provider_2)
def subject_other(self): return SubjectFactory(text='Other Sub')
def parent_subject_2(self, provider_2, root_subject_2): return SubjectFactory(text='P2', provider=provider_2, parent=root_subject_2)
def subject_child_two(self, subject): return SubjectFactory(parent=subject)
def child_subject_2(self, provider_2, parent_subject_2): return SubjectFactory(text='C2', provider=provider_2, parent=parent_subject_2)
def subject(self): return SubjectFactory()
def subF(self, subB): return SubjectFactory(text='F', parent=subB)