def test_to_dict(self): exp_issues = stats_domain.ExplorationIssues( 'exp_id1', [{ 'issue_id': 'EarlyQuit', 'issue_customization_args': { 'state_name': { 'value': 'state_name1' }, 'time_spent_in_exp_in_msecs': { 'value': 200 } }, 'playthrough_ids': ['playthrough_id1'] }]) exp_issues_dict = exp_issues.to_dict() self.assertEqual(exp_issues_dict['id'], 'exp_id1') self.assertEqual(exp_issues_dict['unresolved_issues'], [{ 'issue_id': 'EarlyQuit', 'issue_customization_args': { 'state_name': { 'value': 'state_name1' }, 'time_spent_in_exp_in_msecs': { 'value': 200 } }, 'playthrough_ids': ['playthrough_id1'] }])
def get_exp_issues_from_model(exp_issues_model): """Gets an ExplorationIssues domain object from an ExplorationIssuesModel instance. Args: exp_issues_model: ExplorationIssuesModel. Exploration issues model in datastore. Returns: ExplorationIssues. The domain object for exploration issues. """ unresolved_issues = [] for unresolved_issue_dict in exp_issues_model.unresolved_issues: _migrate_to_latest_issue_schema(copy.deepcopy(unresolved_issue_dict)) unresolved_issues.append( stats_domain.ExplorationIssue.from_dict(unresolved_issue_dict)) return stats_domain.ExplorationIssues(exp_issues_model.id, unresolved_issues)
def test_validate(self): exp_issues = stats_domain.ExplorationIssues( 'exp_id1', [{ 'issue_id': 'EarlyQuit', 'issue_customization_args': { 'state_name': { 'value': 'state_name1' }, 'time_spent_in_exp_in_msecs': { 'value': 200 } }, 'playthrough_ids': ['playthrough_id1'] }]) exp_issues.validate() # Change ID to int. exp_issues.id = 5 with self.assertRaisesRegexp( utils.ValidationError, ('Expected ID to be a string, received %s' % (type(5)))): exp_issues.validate() # Change unresolved_issues list. exp_issues.id = 'exp_id1' exp_issues.unresolved_issues = [{ 'issue_id': 'EarlyQuit', 'issue_customization_args': { 'state_name': { 'value': 'state_name1' }, 'time_spent_in_exp_in_msecs': { 'value': 200 } }, }] with self.assertRaisesRegexp( utils.ValidationError, ('KeyError in an element of unresolved_issues')): exp_issues.validate()