app/Jobs/ImportProfession.php: add support for specialization.
This commit is contained in:
parent
ad66ef86ab
commit
89d88110f5
2 changed files with 57 additions and 0 deletions
|
|
@ -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,
|
||||
]);
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue