/** * Check if session has been used * * @since 0.3.0 * * @param \WP_REST_Request $request Full data about the request. * * @return \WP_Error|\WP_REST_Response */ public function session($request) { $session = $this->get_session_by_url_params($request); if (ingot_is_no_testing_mode()) { $data['ingot_ID'] = $session['ingot_ID']; $data['tests'] = []; $data['session_ID'] = $session['ID']; return $data; } $tests = []; if (!is_array($session)) { return $session; } else { if (\ingot\testing\crud\session::is_used($session['ID'])) { $new_session_args = []; if (0 != $request->get_param('ingot_id')) { $new_session_args['ingot_ID'] = $request->get_param('ingot_id'); } elseif (0 < absint($session['ingot_ID'])) { $new_session_args['ingot_ID'] = $session['ingot_ID']; } if (0 != get_current_user_id()) { $new_session_args['uID'] = get_current_user_id(); } $data['session_ID'] = \ingot\testing\crud\session::create($new_session_args, true); if (is_numeric($data['session_ID'])) { $session = \ingot\testing\crud\session::read((int) $data['session_ID']); if (!empty($request->get_param('test_ids'))) { foreach ($request->get_param('test_ids') as $variant_id) { $html = ''; if (is_array($group = group::get_by_variant_id($variant_id))) { $html = ingot_click_test($group); } $tests[] = ['html' => $html, 'ID' => $variant_id]; } } } } else { \ingot\testing\crud\session::mark_used($session['ID']); $data['session_ID'] = $session['ID']; } $data['ingot_ID'] = $session['ingot_ID']; $data['tests'] = $tests; return rest_ensure_response($data); } }
/** * Test the is_used function * * @since 0.3.0 * * @group session * @group crud * * @covers \ingot\testing\crud\session::is_used() */ public function testNotUsedYet() { $id = \ingot\testing\crud\session::create(array()); $this->assertTrue(is_numeric($id)); $this->assertFalse(\ingot\testing\crud\session::is_used($id)); }