Esempio n. 1
0
 def test_can_create_and_save_item_bank_question(self):
   fixtures = ['initial_data.yaml']    
   domain = Domain.objects.get(name="Number")
   item_bank = ItemBank()
   item_bank.name = "Fractions"
   item_bank.topic = "Addition"
   item_bank.domain = domain
   item_bank.question_type = QuestionType.objects.get(pk=1)
   item_bank.template = ItemBankTemplate.objects.get(pk=1)
   item_bank.save()
   ibq = ItemBankQuestion()
   ibq.name = "test item"      
   ibq.item_bank = item_bank
   ibq.usage = 0
   ibq.difficulty = 0
   ibq.sd_difficulty = 0
   ibq.discrimination = 1
   ibq.save()
   ibq = ItemBankQuestion.objects.all()[0]
   self.assertEquals(ibq.item_bank,item_bank)
   self.assertEquals(ibq.usage,0)
   self.assertEquals(ibq.difficulty,0)
   self.assertEquals(ibq.sd_difficulty,0)
   self.assertEquals(ibq.discrimination,1)
   self.assertEquals(ibq.name,"test item")
Esempio n. 2
0
 def test_can_create_link_btwn_item_bank_and_fraction_bank(self):
   fixtures = ['initial_data.yaml']
   #create domain
   domain = Domain.objects.get(name="Number")
   #Create item bank
   item_bank = ItemBank()
   item_bank.name = "Fractions"
   item_bank.topic = "Addition"
   item_bank.domain = domain
   item_bank.question_type = QuestionType.objects.get(pk=1)
   item_bank.template = ItemBankTemplate.objects.get(pk=1)
   item_bank.save()
   #Create item bank question
   ibq = ItemBankQuestion()
   ibq.item_bank = item_bank
   ibq.usage = 0
   ibq.difficulty = 0
   ibq.sd_difficulty = 0
   ibq.discrimination = 1
   ibq.save()
   #Create fraction question bank
   fqb = FractionQuestionBank()
   oper = Oper.objects.get(pk=1)
   n = 20
   st = 0
   en = 10
   name = "Test Bank"
   negatives_allowed = True
   fqb.generate(name,st,en,negatives_allowed,oper,n)
   fbqs = FractionBankQuestion.objects.filter(fraction_question_bank=fqb)
   #Link item bank and question bank
   ibfb = ItemBankFractionQuestion()
   ibfb.item_bank_question = ibq
   ibfb.fraction_bank_question = fbqs[0]
   ibfb.save()
   ibfbs = ItemBankFractionQuestion.objects.all()[0]
   self.assertEquals(ibfbs.item_bank_question,ibq)
   self.assertEquals(ibfbs.fraction_bank_question,fbqs[0])
Esempio n. 3
0
 def test_nextQuestion(self):
     cat_test = CatTest()
     cat_test.name = "short"
     cat_test.max_items = 10
     cat_test.save()
     user = User.objects.create_user("john", "*****@*****.**", "johnpassword")
     user.save()
     domain = Domain()
     domain.name = "Number"
     domain.create_date = datetime.datetime(2012, 03, 06)
     domain.save()
     item_bank = ItemBank()
     item_bank.name = "Fractions"
     item_bank.topic = "Addition"
     item_bank.domain = domain
     item_bank.create_date = datetime.datetime(2012, 03, 06)
     item_bank.save()
     user_item_bank = UserItemBank()
     user_item_bank.user = user
     user_item_bank.item_bank = item_bank
     user_item_bank.save()
     ibq = ItemBankQuestion()
     ibq.item_bank = item_bank
     ibq.save()
     user_cat_test = UserCatTest()
     user_cat_test.user = user
     user_cat_test.item_bank = item_bank
     user_cat_test.cat_test = cat_test
     user_cat_test.save()
     q = user_cat_test.nextQuestion()
     # One item in bank, one taken
     self.assertEquals(isinstance(q, CatTestItem), True)
     q = user_cat_test.nextQuestion()
     # One item in bank, try to take another, should return None
     self.assertEquals(isinstance(q, CatTestItem), False)
     # Add more questions and see if they are repeated
     for i in range(1, 11):
         ibq = ItemBankQuestion()
         ibq.item_bank = item_bank
         ibq.save()
     for i in range(1, 11):
         q = user_cat_test.nextQuestion()
         print q.item_bank_question.id
     # Add a question of perfect difficulty and see if it is chosen amongst others
     for i in range(1, 11):
         ibq = ItemBankQuestion()
         ibq.item_bank = item_bank
         ibq.save()
     user_cat_test.difficulty = 2
     user_cat_test.stand_err = 0.1
     hibq = ItemBankQuestion()
     hibq.item_bank = item_bank
     hibq.difficulty = 2
     hibq.save()
     q = user_cat_test.nextQuestion()
     self.assertEquals(q.item_bank_question, hibq)
     # Make ability different to all questions and make sure one is chosen
     user_cat_test.difficulty = 2
     user_cat_test.stand_err = 0.1
     q = user_cat_test.nextQuestion()
     self.assertEquals(isinstance(q, CatTestItem), True)