Skip to content

Commit

Permalink
New Group: Refactor rename all references to concept to be consistent
Browse files Browse the repository at this point in the history
  • Loading branch information
davidfstr committed Jan 13, 2024
1 parent 2e30f44 commit 6c90ad7
Show file tree
Hide file tree
Showing 8 changed files with 108 additions and 108 deletions.
4 changes: 2 additions & 2 deletions src/crystal/browser/__init__.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from contextlib import contextmanager, nullcontext
from crystal import APP_NAME
from crystal import __version__ as crystal_version
from crystal.browser.addgroup import AddGroupDialog
from crystal.browser.new_group import NewGroupDialog
from crystal.browser.new_root_url import NewRootUrlDialog
from crystal.browser.entitytree import EntityTree, ResourceGroupNode, RootResourceNode
from crystal.browser.icons import TREE_NODE_ICONS
Expand Down Expand Up @@ -458,7 +458,7 @@ def _on_add_url_dialog_ok(self, name: str, url: str) -> None:

def _on_add_group(self, event: wx.CommandEvent) -> None:
try:
AddGroupDialog(
NewGroupDialog(
self._frame, self._on_add_group_dialog_ok,
self.project,
initial_url_pattern=self._suggested_url_or_url_pattern_for_selection or '',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
_FORM_ROW_SPACING = 10


class AddGroupDialog:
class NewGroupDialog:
_INITIAL_URL_PATTERN_WIDTH = NewRootUrlDialog._INITIAL_URL_WIDTH
_MAX_VISIBLE_PREVIEW_URLS = 100

Expand Down Expand Up @@ -55,7 +55,7 @@ def __init__(self,

dialog = self.dialog = wx.Dialog(
parent, title='New Group',
name='cr-add-group-dialog',
name='cr-new-group-dialog',
style=wx.DEFAULT_DIALOG_STYLE|wx.RESIZE_BORDER)
dialog_sizer = wx.BoxSizer(wx.VERTICAL)
dialog.SetSizer(dialog_sizer)
Expand All @@ -74,7 +74,7 @@ def __init__(self,
if preview_box_collapsible:
preview_box = wx.CollapsiblePane(
dialog, label='Preview Members',
name='cr-add-group-dialog__preview-members')
name='cr-new-group-dialog__preview-members')
preview_box.Expand()
preview_box_root = preview_box.GetPane()
preview_box_root_sizer = wx.BoxSizer(wx.VERTICAL)
Expand Down Expand Up @@ -130,7 +130,7 @@ def _create_fields(self,
self.pattern_field = wx.TextCtrl(
parent, value=initial_url_pattern,
size=(self._INITIAL_URL_PATTERN_WIDTH, wx.DefaultCoord),
name='cr-add-group-dialog__pattern-field')
name='cr-new-group-dialog__pattern-field')
bind(self.pattern_field, wx.EVT_TEXT, self._on_pattern_field_changed)
self.pattern_field.Hint = 'https://example.com/post/*'
self.pattern_field.SetSelection(-1, -1) # select all upon focus
Expand All @@ -145,7 +145,7 @@ def _create_fields(self,
fields_sizer.Add(wx.StaticText(parent, label='Source:', style=wx.ALIGN_RIGHT), flag=wx.EXPAND)
self.source_choice_box = wx.Choice(
parent,
name='cr-add-group-dialog__source-field')
name='cr-new-group-dialog__source-field')
self.source_choice_box.Append('none', None)
for rr in self._project.root_resources:
self.source_choice_box.Append(
Expand Down Expand Up @@ -173,7 +173,7 @@ def _create_fields(self,
fields_sizer.Add(wx.StaticText(parent, label='Name:', style=wx.ALIGN_RIGHT), flag=wx.EXPAND)
self.name_field = wx.TextCtrl(
parent, value=initial_name,
name='cr-add-group-dialog__name-field')
name='cr-new-group-dialog__name-field')
self.name_field.Hint = 'Post'
self.name_field.SetSelection(-1, -1) # select all upon focus
fields_sizer.Add(self.name_field, flag=wx.EXPAND)
Expand All @@ -185,7 +185,7 @@ def _create_preview_box_content(self, parent: wx.Window) -> wx.Sizer:

self.url_list = wx.ListBox(
parent, style=wx.LB_ALWAYS_SB, size=(-1,150),
name='cr-add-group-dialog__preview-members__list')
name='cr-new-group-dialog__preview-members__list')

content_sizer.Add(wx.StaticText(parent, label='Known matching URLs:'), flag=wx.EXPAND)
content_sizer.Add(self.url_list, proportion=1, flag=wx.EXPAND)
Expand Down
6 changes: 3 additions & 3 deletions src/crystal/tests/index.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
from contextlib import contextmanager
from crystal.tests import (
test_addgroup,
test_disk_io_errors,
test_download,
test_download_body,
Expand All @@ -11,6 +10,7 @@
test_load_urls,
test_log_drawer,
test_menus,
test_new_group,
test_new_root_url,
test_open_project,
test_parse_html,
Expand Down Expand Up @@ -59,8 +59,6 @@ def _test_functions_in_module(mod) -> List[Callable]:

# TODO: Avoid the need to manually enumerate all test modules individually
_TEST_FUNCS = (
_test_functions_in_module(test_addgroup) +
_test_functions_in_module(test_new_root_url) +
_test_functions_in_module(test_disk_io_errors) +
_test_functions_in_module(test_download) +
_test_functions_in_module(test_download_body) +
Expand All @@ -71,6 +69,8 @@ def _test_functions_in_module(mod) -> List[Callable]:
_test_functions_in_module(test_load_urls) +
_test_functions_in_module(test_log_drawer) +
_test_functions_in_module(test_menus) +
_test_functions_in_module(test_new_group) +
_test_functions_in_module(test_new_root_url) +
_test_functions_in_module(test_open_project) +
_test_functions_in_module(test_parse_html) +
_test_functions_in_module(test_profile) +
Expand Down
12 changes: 6 additions & 6 deletions src/crystal/tests/test_load_urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
tree_has_no_children_condition,
wait_for,
)
from crystal.tests.util.windows import AddGroupDialog, OpenOrCreateDialog
from crystal.tests.util.windows import NewGroupDialog, OpenOrCreateDialog
from unittest import skip
from unittest.mock import patch
import tempfile
Expand Down Expand Up @@ -122,8 +122,8 @@ async def test_given_project_database_not_on_ssd_when_press_add_group_button_the
# Wait for progress dialog to show and for cancel to be pressed
await wait_for(lambda: (progress_listener_method.call_count >= 1) or None)

# Ensure did not show AddGroupDialog
assert AddGroupDialog.window_condition()() is None
# Ensure did not show NewGroupDialog
assert NewGroupDialog.window_condition()() is None


@skip('covered by: test_given_project_database_not_on_ssd_when_press_add_group_button_then_loading_urls_progress_dialog_becomes_visible')
Expand Down Expand Up @@ -224,13 +224,13 @@ async def test_given_project_database_on_ssd_when_press_add_group_button_then_ad
wraps=project._load_urls_progress_listener.loading_resource) as progress_listener_method:
click_button(mw.add_group_button)

# Wait for AddGroupDialog to appear
agd = await AddGroupDialog.wait_for()
# Wait for NewGroupDialog to appear
ngd = await NewGroupDialog.wait_for()

# Ensure did not show LoadUrlsProgressDialog
assert 0 == progress_listener_method.call_count

click_button(agd.cancel_button)
click_button(ngd.cancel_button)


# === Test: No Load Required ===
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
wait_for,
)
from crystal.tests.util.windows import (
AddGroupDialog, NewRootUrlDialog, EntityTree, MainWindow, OpenOrCreateDialog,
NewGroupDialog, NewRootUrlDialog, EntityTree, MainWindow, OpenOrCreateDialog,
)
from crystal.util.xos import is_windows
import re
Expand Down Expand Up @@ -49,35 +49,35 @@ async def test_can_create_group_with_source(*, with_source: bool=True) -> None:

assert mw.add_group_button.Enabled
click_button(mw.add_group_button)
agd = await AddGroupDialog.wait_for()
ngd = await NewGroupDialog.wait_for()

# Ensure prepopulates reasonable information
if not is_windows():
assert '' == agd.pattern_field.Value
assert '' == agd.name_field.Value
assert None == agd.source
assert '' == ngd.pattern_field.Value
assert '' == ngd.name_field.Value
assert None == ngd.source
else:
# Windows appears to have some kind of race condition that
# sometimes causes the Home tree item to be selected initially
assert agd.pattern_field.Value in ['', home_url]
assert agd.name_field.Value in ['', 'Home']
assert None == agd.source
assert agd.pattern_field.HasFocus # default focused field
assert ngd.pattern_field.Value in ['', home_url]
assert ngd.name_field.Value in ['', 'Home']
assert None == ngd.source
assert ngd.pattern_field.HasFocus # default focused field

# Input new URL pattern with wildcard, to match comics
agd.pattern_field.Value = comic_pattern
ngd.pattern_field.Value = comic_pattern

# Ensure preview members show the new matching URLs (i.e. none)
member_urls = [
agd.preview_members_list.GetString(i)
for i in range(agd.preview_members_list.GetCount())
ngd.preview_members_list.GetString(i)
for i in range(ngd.preview_members_list.GetCount())
]
assert [] == member_urls # no comics discovered yet

if with_source:
agd.source = 'Home'
agd.name_field.Value = 'Comic'
await agd.ok()
ngd.source = 'Home'
ngd.name_field.Value = 'Comic'
await ngd.ok()

# Ensure appearance is correct
(comic_ti,) = [
Expand Down Expand Up @@ -168,40 +168,40 @@ async def test_given_resource_node_with_multiple_link_children_matching_url_patt
if True:
assert mw.add_group_button.Enabled
click_button(mw.add_group_button)
agd = await AddGroupDialog.wait_for()
ngd = await NewGroupDialog.wait_for()

# Ensure prepopulates reasonable information
assert comic1_url == agd.pattern_field.Value # default pattern = (from resource)
assert '|<' == agd.name_field.Value # default name = (from first text link)
assert 'Home' == agd.source # default source = (from resource parent)
assert agd.pattern_field.HasFocus # default focused field
assert comic1_url == ngd.pattern_field.Value # default pattern = (from resource)
assert '|<' == ngd.name_field.Value # default name = (from first text link)
assert 'Home' == ngd.source # default source = (from resource parent)
assert ngd.pattern_field.HasFocus # default focused field

# Ensure preview members show the 1 URL
assert (
agd.preview_members_pane is None or # always expanded
agd.preview_members_pane.IsExpanded() # expanded by default
ngd.preview_members_pane is None or # always expanded
ngd.preview_members_pane.IsExpanded() # expanded by default
)
member_urls = [
agd.preview_members_list.GetString(i)
for i in range(agd.preview_members_list.GetCount())
ngd.preview_members_list.GetString(i)
for i in range(ngd.preview_members_list.GetCount())
]
assert [comic1_url] == member_urls # contains exact match of pattern

# Input new URL pattern with wildcard, to match other comics
agd.pattern_field.Value = comic_pattern
ngd.pattern_field.Value = comic_pattern

# Ensure preview members show the new matching URLs
member_urls = [
agd.preview_members_list.GetString(i)
for i in range(agd.preview_members_list.GetCount())
ngd.preview_members_list.GetString(i)
for i in range(ngd.preview_members_list.GetCount())
]
assert comic1_url in member_urls # contains first comic
assert len(member_urls) >= 2 # contains last comic too

# Input new name
agd.name_field.Value = 'Comic'
ngd.name_field.Value = 'Comic'

await agd.ok()
await ngd.ok()

# 1. Ensure the new resource group does now bundle the comic links together
# 2. Ensure the bundled link is selected immediately after closing the add group dialog
Expand Down Expand Up @@ -413,9 +413,9 @@ async def _source_name_for_node(node_ti: TreeItem, mw: MainWindow) -> Optional[s
node_ti.SelectItem()

click_button(mw.add_group_button)
agd = await AddGroupDialog.wait_for()
source_name = agd.source # capture
await agd.cancel()
ngd = await NewGroupDialog.wait_for()
source_name = ngd.source # capture
await ngd.cancel()
return source_name


Expand Down
2 changes: 1 addition & 1 deletion src/crystal/tests/test_new_root_url.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ async def test_can_create_root_url(*, ensure_revisions_not_deleted: bool=False)
# Ensure prepopulates reasonable information
assert '' == nud.url_field.Value
assert '' == nud.name_field.Value
#assert None == agd.source
#assert None == ngd.source
assert nud.url_field.HasFocus # default focused field

nud.name_field.Value = 'Home'
Expand Down
Loading

0 comments on commit 6c90ad7

Please sign in to comment.