From e4403815e7141ba9f1818b04e40cc6ceb56418f2 Mon Sep 17 00:00:00 2001 From: polesye Date: Tue, 3 Dec 2013 12:50:16 +0200 Subject: [PATCH 1/3] Fix LTI max_score method. --- common/lib/xmodule/xmodule/lti_module.py | 2 +- common/lib/xmodule/xmodule/tests/test_lti_unit.py | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/common/lib/xmodule/xmodule/lti_module.py b/common/lib/xmodule/xmodule/lti_module.py index 12bca979db..abc2c7084e 100644 --- a/common/lib/xmodule/xmodule/lti_module.py +++ b/common/lib/xmodule/xmodule/lti_module.py @@ -375,7 +375,7 @@ oauth_consumer_key="", oauth_signature="frVp4JuvT1mVXlxktiAUjQ7%2F1cw%3D"'} return params def max_score(self): - return self.weight + return self.weight if self.graded else 0 @XBlock.handler diff --git a/common/lib/xmodule/xmodule/tests/test_lti_unit.py b/common/lib/xmodule/xmodule/tests/test_lti_unit.py index b79bec16cc..2049366930 100644 --- a/common/lib/xmodule/xmodule/tests/test_lti_unit.py +++ b/common/lib/xmodule/xmodule/tests/test_lti_unit.py @@ -249,3 +249,13 @@ class LTIModuleTest(LogicTest): def test_client_key_secret(self): pass + def test_max_score(self): + self.xmodule.weight = 100.0 + + self.xmodule.graded = True + self.assertEqual(self.xmodule.max_score(), 100) + + self.xmodule.graded = False + self.assertEqual(self.xmodule.max_score(), 0) + + From c4515faedf52507788826009ab6a278f65db6299 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80?= Date: Tue, 3 Dec 2013 17:48:27 +0200 Subject: [PATCH 2/3] Make has_score to be XField insted of decriptor property. Conflicts: common/lib/xmodule/xmodule/lti_module.py --- common/lib/xmodule/xmodule/lti_module.py | 4 ++-- common/lib/xmodule/xmodule/tests/test_lti_unit.py | 7 +++++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/common/lib/xmodule/xmodule/lti_module.py b/common/lib/xmodule/xmodule/lti_module.py index abc2c7084e..013d5e7ecb 100644 --- a/common/lib/xmodule/xmodule/lti_module.py +++ b/common/lib/xmodule/xmodule/lti_module.py @@ -89,6 +89,7 @@ class LTIFields(object): open_in_a_new_page = Boolean(help="Should LTI be opened in new page?", default=True, scope=Scope.settings) graded = Boolean(help="Grades will be considered in overall score.", default=False, scope=Scope.settings) weight = Float(help="Weight for student grades.", default=1.0, scope=Scope.settings) + has_score = Boolean(help="Does this LTI module have score?", default=False, scope=Scope.settings) class LTIModule(LTIFields, XModule): @@ -375,7 +376,7 @@ oauth_consumer_key="", oauth_signature="frVp4JuvT1mVXlxktiAUjQ7%2F1cw%3D"'} return params def max_score(self): - return self.weight if self.graded else 0 + return self.weight if self.has_score else None @XBlock.handler @@ -581,6 +582,5 @@ class LTIDescriptor(LTIFields, MetadataOnlyEditingDescriptor, EmptyDataRawDescri """ Descriptor for LTI Xmodule. """ - has_score = True module_class = LTIModule grade_handler = module_attr('grade_handler') diff --git a/common/lib/xmodule/xmodule/tests/test_lti_unit.py b/common/lib/xmodule/xmodule/tests/test_lti_unit.py index 2049366930..427a3c3ff2 100644 --- a/common/lib/xmodule/xmodule/tests/test_lti_unit.py +++ b/common/lib/xmodule/xmodule/tests/test_lti_unit.py @@ -253,9 +253,12 @@ class LTIModuleTest(LogicTest): self.xmodule.weight = 100.0 self.xmodule.graded = True - self.assertEqual(self.xmodule.max_score(), 100) + self.assertEqual(self.xmodule.max_score(), None) + + self.xmodule.has_score = True + self.assertEqual(self.xmodule.max_score(), 100.0) self.xmodule.graded = False - self.assertEqual(self.xmodule.max_score(), 0) + self.assertEqual(self.xmodule.max_score(), 100.0) From e96108629dbd545be20f58bcf7ffce71c9c68f03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80?= Date: Tue, 3 Dec 2013 19:04:21 +0200 Subject: [PATCH 3/3] Fix LTI tests. --- common/lib/xmodule/xmodule/tests/test_lti_unit.py | 1 + lms/djangoapps/courseware/features/lti.feature | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/common/lib/xmodule/xmodule/tests/test_lti_unit.py b/common/lib/xmodule/xmodule/tests/test_lti_unit.py index 427a3c3ff2..bb04b20868 100644 --- a/common/lib/xmodule/xmodule/tests/test_lti_unit.py +++ b/common/lib/xmodule/xmodule/tests/test_lti_unit.py @@ -194,6 +194,7 @@ class LTIModuleTest(LogicTest): Response from Tool Provider is correct. """ self.xmodule.verify_oauth_body_sign = Mock() + self.xmodule.has_score = True request = Request(self.environ) request.body = self.get_request_body() response = self.xmodule.grade_handler(request, '') diff --git a/lms/djangoapps/courseware/features/lti.feature b/lms/djangoapps/courseware/features/lti.feature index 7f27a65b5a..eb2da7436b 100644 --- a/lms/djangoapps/courseware/features/lti.feature +++ b/lms/djangoapps/courseware/features/lti.feature @@ -44,8 +44,8 @@ Feature: LMS.LTI component Scenario: Graded LTI component in LMS is correctly works Given the course has correct LTI credentials And the course has an LTI component with correct fields: - | open_in_a_new_page | weight | is_graded | - | False | 10 | True | + | open_in_a_new_page | weight | is_graded | has_score | + | False | 10 | True | True | And I submit answer to LTI question And I click on the "Progress" tab Then I see text "Problem Scores: 5/10"