Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

💽 Import data functionality #114

Merged
merged 21 commits into from
Sep 15, 2023
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
fd435d8
wip(data-import): created UI to import files
mrfelipemartins Sep 6, 2023
94cd579
Merge branch 'godot-4.x' into data-import
mrfelipemartins Sep 6, 2023
68673bd
feat(data-import): add possibility to import and merge pandora data f…
mrfelipemartins Sep 6, 2023
7a18a72
fix(data-import): accidental visibility change
mrfelipemartins Sep 6, 2023
7dd3058
fix(data): update data.pandora to uncompressed version
mrfelipemartins Sep 6, 2023
66c158b
Merge branch 'godot-4.x' into data-import
mrfelipemartins Sep 6, 2023
9d75e88
tests(data-import): add unit tests
mrfelipemartins Sep 6, 2023
c22a7e7
feat(data-import): fixed conflicts and added confirmations before imp…
mrfelipemartins Sep 6, 2023
84282db
Merge branch 'godot-4.x' into data-import
mrfelipemartins Sep 6, 2023
e8826e5
fix(data-import): fix vailidations
mrfelipemartins Sep 7, 2023
450b65c
Merge branch 'godot-4.x' into data-import
mrfelipemartins Sep 7, 2023
9eeeadf
Merge branch 'godot-4.x' into data-import
bitbrain Sep 7, 2023
cbaa462
Merge branch 'godot-4.x' into data-import
mrfelipemartins Sep 14, 2023
d6b52cf
Merge branch 'godot-4.x' into data-import
mrfelipemartins Sep 14, 2023
143043a
refactor
mrfelipemartins Sep 14, 2023
68781bc
move import tests to api
mrfelipemartins Sep 15, 2023
0fa1153
update tests
mrfelipemartins Sep 15, 2023
cb003e2
Merge branch 'godot-4.x' into data-import
mrfelipemartins Sep 15, 2023
a450de3
done?
mrfelipemartins Sep 15, 2023
9963666
done?
mrfelipemartins Sep 15, 2023
92993f7
:prayge:
mrfelipemartins Sep 15, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
81 changes: 80 additions & 1 deletion test/api_test.gd
Original file line number Diff line number Diff line change
Expand Up @@ -10,20 +10,27 @@ const __source = "res://addons/pandora/api.gd"
const TEST_DIR = "testdata"
const CustomTexture = preload("res://docs/assets/logo.svg")

var _pandora_backend:PandoraEntityBackend


func before() -> void:
_pandora_backend = Pandora._entity_backend
Pandora.set_context_id(TEST_DIR)
Pandora._clear()
Pandora.load_data()


func after() -> void:
Pandora._entity_backend = _pandora_backend
DirAccess.remove_absolute("res://" + TEST_DIR + "/data.pandora")
DirAccess.remove_absolute("res://" + TEST_DIR)
Pandora.set_context_id("")
Pandora._clear()
Pandora.load_data()

func create_object_backend() -> PandoraEntityBackend:
var backend = auto_free(PandoraEntityBackend.new(PandoraIDGenerator.new()))
Pandora._entity_backend = backend
return backend

func test_api_save_and_load_objects() -> void:
var category = Pandora.create_category("Swords")
Expand Down Expand Up @@ -90,3 +97,75 @@ func test_entity_is_category() -> void:
assert_bool(sword.is_category(items.get_entity_id())).is_true()
assert_bool(sword.is_category(weapons.get_entity_id())).is_true()
assert_bool(sword.is_category(quests.get_entity_id())).is_false()

func test_import_duplicates() -> void:
Pandora.set_context_id(TEST_DIR)
Pandora._clear()
Pandora.load_data()
Pandora.create_category("new_category2")
Pandora.create_entity("new_entity", Pandora.create_category("new_category"))
Pandora.save_data()
var data_file = ProjectSettings.globalize_path("res://" + TEST_DIR + "/data.pandora")
var imported_count: int = Pandora.import_data(data_file)

DirAccess.remove_absolute("res://" + TEST_DIR + "/data.pandora")
mrfelipemartins marked this conversation as resolved.
Show resolved Hide resolved
DirAccess.remove_absolute("res://" + TEST_DIR)
assert_that(imported_count == 0).is_true()


func test_import_empty_data_file() -> void:
# Create empty data file
Pandora.set_context_id(TEST_DIR)
Pandora._clear()
Pandora.load_data()
Pandora.save_data()

Pandora.set_context_id("")
Pandora._clear()
Pandora.load_data()

var data_file = ProjectSettings.globalize_path("res://" + TEST_DIR + "/data.pandora")
var imported_count: int = Pandora.import_data(data_file)

Pandora._clear()

DirAccess.remove_absolute("res://" + TEST_DIR + "/data.pandora")
DirAccess.remove_absolute("res://" + TEST_DIR)

assert_that(imported_count == 0).is_true()

func test_import_valid_pandora_data_file() -> void:
var backend = create_object_backend() as PandoraEntityBackend
backend.create_category("root")
var data_file = ProjectSettings.globalize_path("res://data.pandora")
var imported_count: int = Pandora.import_data(data_file)
assert_that(imported_count > 0).is_true()

func test_import_invalid_pandora_data_file() -> void:
Pandora._clear()
Pandora.set_context_id(TEST_DIR)
Pandora.load_data()
var invalid_data: Dictionary = {
"_invalid_structure": ""
}
var file = FileAccess.open("res://" + TEST_DIR + "/data.pandora", FileAccess.WRITE)
file.store_string(JSON.stringify(invalid_data))
file.close()
var backend = create_object_backend() as PandoraEntityBackend
backend.create_category("root")
var data_file = ProjectSettings.globalize_path("res://" + TEST_DIR + "/data.pandora")
var imported_count: int = Pandora.import_data(data_file)

DirAccess.remove_absolute("res://" + TEST_DIR + "/data.pandora")
DirAccess.remove_absolute("res://" + TEST_DIR)

assert_that(imported_count == 0).is_true()

func test_calculate_import_data() -> void:
var backend = create_object_backend() as PandoraEntityBackend
backend.create_category("root")
var data_file = ProjectSettings.globalize_path("res://data.pandora")

var total_items:int = Pandora.calculate_import_data(data_file)

assert_that(total_items > 0).is_true()
72 changes: 0 additions & 72 deletions test/backend/entity_backend_test.gd
Original file line number Diff line number Diff line change
Expand Up @@ -681,78 +681,6 @@ func test_check_properties_will_change_after_move() -> void:
assert_that(will_change3).is_false()
assert_that(will_change4).is_true()

func test_import_duplicates() -> void:
Pandora.set_context_id(TEST_DIR)
Pandora._clear()
Pandora.load_data()
Pandora.create_category("new_category2")
Pandora.create_entity("new_entity", Pandora.create_category("new_category"))
Pandora.save_data()
var data_file = ProjectSettings.globalize_path("res://" + TEST_DIR + "/data.pandora")
var imported_count: int = Pandora.import_data(data_file)

DirAccess.remove_absolute("res://" + TEST_DIR + "/data.pandora")
DirAccess.remove_absolute("res://" + TEST_DIR)
assert_that(imported_count == 0).is_true()


func test_import_empty_data_file() -> void:
# Create empty data file
Pandora.set_context_id(TEST_DIR)
Pandora._clear()
Pandora.load_data()
Pandora.save_data()

Pandora.set_context_id("")
Pandora._clear()
Pandora.load_data()

var data_file = ProjectSettings.globalize_path("res://" + TEST_DIR + "/data.pandora")
var imported_count: int = Pandora.import_data(data_file)

Pandora._clear()

DirAccess.remove_absolute("res://" + TEST_DIR + "/data.pandora")
DirAccess.remove_absolute("res://" + TEST_DIR)

assert_that(imported_count == 0).is_true()

func test_import_valid_pandora_data_file() -> void:
var backend = create_object_backend() as PandoraEntityBackend
backend.create_category("root")
var data_file = ProjectSettings.globalize_path("res://data.pandora")
var imported_count: int = Pandora.import_data(data_file)
assert_that(imported_count > 0).is_true()

func test_import_invalid_pandora_data_file() -> void:
Pandora._clear()
Pandora.set_context_id(TEST_DIR)
Pandora.load_data()
var invalid_data: Dictionary = {
"_invalid_structure": ""
}
var file = FileAccess.open("res://" + TEST_DIR + "/data.pandora", FileAccess.WRITE)
file.store_string(JSON.stringify(invalid_data))
file.close()
var backend = create_object_backend() as PandoraEntityBackend
backend.create_category("root")
var data_file = ProjectSettings.globalize_path("res://" + TEST_DIR + "/data.pandora")
var imported_count: int = Pandora.import_data(data_file)

DirAccess.remove_absolute("res://" + TEST_DIR + "/data.pandora")
DirAccess.remove_absolute("res://" + TEST_DIR)

assert_that(imported_count == 0).is_true()

func test_calculate_import_data() -> void:
var backend = create_object_backend() as PandoraEntityBackend
backend.create_category("root")
var data_file = ProjectSettings.globalize_path("res://data.pandora")

var total_items:int = Pandora.calculate_import_data(data_file)

assert_that(total_items > 0).is_true()

func test_change_entity_icon_color() -> void:
var backend = create_object_backend()
var category = backend.create_category("Category")
Expand Down