mod common;
use common::TestServer;
use expect_test::expect;
#[tokio::test]
async fn code_actions_offers_generate_constructor() {
let mut s = TestServer::new().await;
let out = s
.check_code_actions(
r#"<?php
class U$0ser$0 {
public string $name = '';
public int $age = 0;
}
"#,
)
.await;
expect![[r#"
refactor Generate 4 getters/setters
refactor Generate constructor
refactor.extract Extract variable"#]]
.assert_eq(&out);
}
#[tokio::test]
async fn code_actions_offers_extract_variable_on_expression() {
let mut s = TestServer::new().await;
let out = s
.check_code_actions(
r#"<?php
function f(): int {
return $01 + 2$0;
}
"#,
)
.await;
expect!["refactor.extract Extract variable"].assert_eq(&out);
}
#[tokio::test]
async fn code_actions_offers_add_return_type() {
let mut s = TestServer::new().await;
let out = s
.check_code_actions(
r#"<?php
function $0noReturn$0() { return 42; }
"#,
)
.await;
expect![[r#"
refactor Add return type `: mixed`
refactor Generate PHPDoc
refactor.extract Extract variable"#]]
.assert_eq(&out);
}
#[tokio::test]
async fn code_actions_offers_implement_missing_methods() {
let mut s = TestServer::new().await;
let out = s
.check_code_actions(
r#"<?php
interface Writable { public function write(): void; }
class $0My$0 implements Writable {}
"#,
)
.await;
expect![[r#"
quickfix Implement missing method
refactor.extract Extract variable"#]]
.assert_eq(&out);
}