def test_get_id_from_name(self): """Test converting state names to ids.""" id_1 = '123' name_1 = 'State 1' self.exploration.add_state(name_1, state_id=id_1) self.assertEqual( State._get_id_from_name(name_1, self.exploration), id_1) with self.assertRaises(Exception): State._get_id_from_name('fake_name', self.exploration) self.assertEqual( State._get_id_from_name(feconf.END_DEST, self.exploration), feconf.END_DEST)
def modify_using_dict(exploration_id, state_id, sdict): """Modifies the properties of a state using values from a dict.""" exploration = Exploration.get(exploration_id) state = exploration.get_state_by_id(state_id) state.content = [ Content(type=item['type'], value=item['value']) for item in sdict['content'] ] state.param_changes = [] for pc in sdict['param_changes']: instance = get_or_create_param( exploration_id, pc['name'], obj_type=pc['obj_type']) instance.values = pc['values'] state.param_changes.append(instance) wdict = sdict['widget'] state.widget = WidgetInstance( widget_id=wdict['widget_id'], sticky=wdict['sticky'], params=wdict['params'], handlers=[]) # Augment the list of parameters in state.widget with the default widget # params. for wp in InteractiveWidget.get(wdict['widget_id']).params: if wp.name not in wdict['params']: state.widget.params[wp.name] = wp.value for handler in wdict['handlers']: handler_rules = [Rule( name=rule['name'], inputs=rule['inputs'], dest=State._get_id_from_name(rule['dest'], exploration), feedback=rule['feedback'] ) for rule in handler['rules']] state.widget.handlers.append(AnswerHandlerInstance( name=handler['name'], rules=handler_rules)) state.put() return state