Skip to content

Commit 861c59a

Browse files
committed
Fix repo creation after fixing duplicate name
1 parent 1bdc324 commit 861c59a

2 files changed

Lines changed: 37 additions & 24 deletions

File tree

lib/app/cubits/repo_creation.dart

Lines changed: 26 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -394,12 +394,32 @@ class RepoCreationCubit extends Cubit<RepoCreationState>
394394

395395
void _setInvalidName(String error) {
396396
final substate = switch (state.substate) {
397-
RepoCreationPending(setLocalSecret: final setLocalSecret) =>
398-
RepoCreationPending(setLocalSecret: setLocalSecret, nameError: error),
399-
RepoCreationValid(setLocalSecret: final setLocalSecret) =>
400-
RepoCreationPending(setLocalSecret: setLocalSecret, nameError: error),
401-
RepoCreationSuccess() ||
402-
RepoCreationFailure() => RepoCreationPending(nameError: error),
397+
RepoCreationPending(
398+
dir: final dir,
399+
setLocalSecret: final setLocalSecret,
400+
) =>
401+
RepoCreationPending(
402+
dir: dir,
403+
setLocalSecret: setLocalSecret,
404+
nameError: error,
405+
),
406+
RepoCreationValid(
407+
location: final location,
408+
setLocalSecret: final setLocalSecret,
409+
) =>
410+
RepoCreationPending(
411+
dir: location.dir,
412+
setLocalSecret: setLocalSecret,
413+
nameError: error,
414+
),
415+
RepoCreationSuccess(entry: final entry) => RepoCreationPending(
416+
dir: entry.location.dir,
417+
nameError: error,
418+
),
419+
RepoCreationFailure(location: final location) => RepoCreationPending(
420+
dir: location.dir,
421+
nameError: error,
422+
),
403423
};
404424

405425
emitUnlessClosed(state.copyWith(substate: substate));

test/widget/repo_creation_test.dart

Lines changed: 11 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -36,14 +36,10 @@ void main() {
3636
testWidgets(
3737
'attempt_to_create_repository_with_existing_name',
3838
(tester) => tester.runAsync(() async {
39-
final name = 'le repo';
40-
41-
final repoCreationObserver = StateObserver.install<RepoCreationState>();
42-
4339
await deps.reposCubit.createRepository(
4440
location: RepoLocation(
4541
dir: await deps.session.getStoreDirs().then((dirs) => dirs.first),
46-
name: name,
42+
name: 'foo',
4743
),
4844
setLocalSecret: randomSetLocalSecret(),
4945
localSecretMode: LocalSecretMode.randomStored,
@@ -57,22 +53,19 @@ void main() {
5753
await tester.anxiousTap(find.text('Create repository'));
5854
await tester.pumpAndSettle();
5955

60-
await tester.enterText(find.byKey(ValueKey('name')), name);
61-
await repoCreationObserver.waitUntil(
62-
(state) => switch (state.substate) {
63-
RepoCreationPending(nameError: final nameError)
64-
when nameError != null && nameError.isNotEmpty =>
65-
true,
66-
_ => false,
67-
},
56+
final nameFinder = find.byKey(ValueKey('name'));
57+
final errorFinder = find.text(
58+
'There is already a repository with this name',
6859
);
6960

70-
await tester.pump();
61+
await tester.enterText(nameFinder, 'foo');
62+
await tester.pumpUntilFound(errorFinder);
7163

72-
expect(
73-
find.text('There is already a repository with this name'),
74-
findsOne,
75-
);
64+
// The error should disappear after the name is fixed.
65+
await tester.enterText(nameFinder, 'bar');
66+
await tester.pumpAndSettle();
67+
68+
expect(errorFinder, findsNothing);
7669
}),
7770
);
7871

0 commit comments

Comments
 (0)