Archived
1
0
Fork 0

app/Jobs/ImportProfession.php: add support for specialization.

This commit is contained in:
Henrik Hautakoski 2021-07-11 15:32:35 +02:00
parent ad66ef86ab
commit 89d88110f5
2 changed files with 57 additions and 0 deletions

View file

@ -54,8 +54,19 @@ class ImportProfession implements ShouldQueue
throw new Exception($message);
}
// Find/Create specialization
if (isset($data->profession->specializationId) && $data->profession->specializationId) {
$specialization_id = Spell::firstOrCreate(
['id' => $data->profession->specializationId],
['name' => $data->profession->specializationName]
)->id;
} else {
$specialization_id = null;
}
// Create/update profession for player.
$this->ch_prof = $character->professions()->updateOrCreate(['profession_id' => $profession->id], [
'specialization_id' => $specialization_id,
'skill' => $data->profession->level,
]);

View file

@ -12,6 +12,7 @@ use App\Models\CharacterProfession;
use App\Models\Profession;
use App\Models\Item;
use App\Models\Recipe;
use App\Models\Spell;
use App\Jobs\ImportProfession;
class ProfessionImportTest extends TestCase
@ -250,4 +251,49 @@ class ProfessionImportTest extends TestCase
'item_id' => $item->id,
]);
}
public function test_specialization_is_imported_correctly()
{
$character = Character::factory()->create([ 'name' => 'Specialdude']);
$profession = Profession::factory()->create([ 'name' => 'Alchemy' ]);
$specialization = Spell::factory()->create(['id' => 28672, 'name' => 'Transmutation Master']);
$data = (object) [
"player" => $character->name,
"profession" => (object) [
"name" => $profession->name,
"specializationId" => 28672,
"specializationName" => "Transmutation Master",
"level" => 375,
"recipes" => [],
]
];
ImportProfession::dispatch($character, $data);
$this->assertNotNull($character->professions[0]->specialization, "specalization was not imported");
$this->assertEquals(28672, $character->professions[0]->specialization->id);
$this->assertEquals("Transmutation Master", $character->professions[0]->specialization->name);
$this->assertEquals(1, Spell::count());
}
public function test_specialization_can_be_omitted()
{
$character = Character::factory()->create([ 'name' => 'frankthetank']);
$profession = Profession::factory()->create([ 'name' => 'Carpenter' ]);
$data = (object) [
"player" => $character->name,
"profession" => (object) [
"name" => $profession->name,
"level" => 375,
"recipes" => [],
]
];
ImportProfession::dispatch($character, $data);
$this->assertNull($character->professions[0]->specialization);
}
}