Class: Suxess::Evaluators::TaskSuccessEvaluator
- Inherits:
-
Object
- Object
- Suxess::Evaluators::TaskSuccessEvaluator
- Defined in:
- lib/suxess/evaluators/task_success_evaluator.rb
Instance Method Summary (collapse)
-
- (Object) evaluate(id)
This method will be called by sidekiq.
-
- (Object) extract_clicks(record)
extract click events from logged events.
-
- (Object) get_result(task_run)
This method evaluates whether Task was finished successfully or not success = last click was on target element indirect-success = there was click on target element but was not last fail = there wasn't click on target element.
-
- (Object) save_result(task_run, result_flag)
this method persists evaluation result into DB.
Instance Method Details
- (Object) evaluate(id)
This method will be called by sidekiq
7 8 9 10 11 12 13 14 |
# File 'lib/suxess/evaluators/task_success_evaluator.rb', line 7 def evaluate(id) @task_run = TaskRun.find(id) unless @task_run.nil? result_flag = get_result(@task_run) save_result(@task_run, result_flag) end end |
- (Object) extract_clicks(record)
extract click events from logged events. Clicks are returned in reversed order, so last click is returned as first.
54 55 56 57 58 59 60 61 62 63 |
# File 'lib/suxess/evaluators/task_success_evaluator.rb', line 54 def extract_clicks(record) clicks = [] record.events.reverse.each do |event| if event["type"] == "click" event["target"]["id"].sub!('mockup_element_','') clicks << event end end clicks end |
- (Object) get_result(task_run)
This method evaluates whether Task was finished successfully or not success = last click was on target element indirect-success = there was click on target element but was not last fail = there wasn't click on target element
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/suxess/evaluators/task_success_evaluator.rb', line 22 def get_result(task_run) target_id = task_run.task.element_aoi_id.to_s last_click = true result_flag = 'F' Record.where(task_run_id: @task_run.id).order('created_at DESC').each do |record| clicks = extract_clicks(record) if clicks.count > 0 if last_click && clicks.first["target"]["id"] == target_id result_flag = 'S' break end last_click = false clicks.each do |click| if click["target"]["id"] == target_id result_flag = 'I' break end end break if result_flag == 'I' end end result_flag end |
- (Object) save_result(task_run, result_flag)
this method persists evaluation result into DB.
67 68 69 70 71 72 73 74 |
# File 'lib/suxess/evaluators/task_success_evaluator.rb', line 67 def save_result(task_run, result_flag) Result.create(task_id: task_run.task_id, task_run_id: task_run.id, project_id: task_run.task.project_id, result_type: :success, user_id: task_run.user.id, result: {:task_completion => result_flag}) end |