chore: update remaining tests and iOS config

Update feed_screen_test.dart for the new OAuth patterns.

iOS changes:
- Add Runner.entitlements for associated domains
- Enable Universal Links (applinks:coves.social)
- Reference entitlements in Xcode project

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

Changed files
+26 -4
ios
Runner
Runner.xcodeproj
test
+5
ios/Runner.xcodeproj/project.pbxproj
···
97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
···
97C146FD1CF9000F007C117D /* Assets.xcassets */,
97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */,
97C147021CF9000F007C117D /* Info.plist */,
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */,
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */,
74858FAE1ED2DC5600515810 /* AppDelegate.swift */,
···
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist;
···
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist;
···
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist;
···
97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
+
F2B3C8D12D0C8A5E00ABCDEF /* Runner.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Runner.entitlements; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
···
97C146FD1CF9000F007C117D /* Assets.xcassets */,
97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */,
97C147021CF9000F007C117D /* Info.plist */,
+
F2B3C8D12D0C8A5E00ABCDEF /* Runner.entitlements */,
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */,
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */,
74858FAE1ED2DC5600515810 /* AppDelegate.swift */,
···
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
+
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist;
···
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
+
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist;
···
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
+
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist;
+10
ios/Runner/Runner.entitlements
···
···
+
<?xml version="1.0" encoding="UTF-8"?>
+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+
<plist version="1.0">
+
<dict>
+
<key>com.apple.developer.associated-domains</key>
+
<array>
+
<string>applinks:coves.social</string>
+
</array>
+
</dict>
+
</plist>
+11 -4
test/widgets/feed_screen_test.dart
···
voteService: VoteService(
sessionGetter: () async => null,
didGetter: () => null,
-
pdsUrlGetter: () => null,
),
authProvider: FakeAuthProvider(),
);
···
community: CommunityRef(
did: 'did:plc:community',
name: 'test-community',
),
createdAt: DateTime.now(),
indexedAt: DateTime.now(),
···
await tester.pumpWidget(createTestWidget());
-
expect(find.text('c/test-community'), findsOneWidget);
expect(find.text('@test.user'), findsOneWidget);
});
···
// Verify post card exists (which contains Semantics wrapper)
expect(find.text('Accessible Post'), findsOneWidget);
-
expect(find.text('c/test-community'), findsOneWidget);
});
testWidgets('should properly dispose scroll controller', (tester) async {
···
handle: 'test.user',
displayName: 'Test User',
),
-
community: CommunityRef(did: 'did:plc:community', name: 'test-community'),
createdAt: DateTime.parse('2025-01-01T12:00:00Z'),
indexedAt: DateTime.parse('2025-01-01T12:00:00Z'),
text: 'Test body',
···
voteService: VoteService(
sessionGetter: () async => null,
didGetter: () => null,
),
authProvider: FakeAuthProvider(),
);
···
community: CommunityRef(
did: 'did:plc:community',
name: 'test-community',
+
handle: 'test-community.community.coves.social',
),
createdAt: DateTime.now(),
indexedAt: DateTime.now(),
···
await tester.pumpWidget(createTestWidget());
+
// Check for community handle parts (displayed as !test-community@coves.social)
+
expect(find.textContaining('!test-community'), findsOneWidget);
expect(find.text('@test.user'), findsOneWidget);
});
···
// Verify post card exists (which contains Semantics wrapper)
expect(find.text('Accessible Post'), findsOneWidget);
+
// Check for community handle parts (displayed as !test-community@coves.social)
+
expect(find.textContaining('!test-community'), findsOneWidget);
+
expect(find.textContaining('@coves.social'), findsOneWidget);
});
testWidgets('should properly dispose scroll controller', (tester) async {
···
handle: 'test.user',
displayName: 'Test User',
),
+
community: CommunityRef(
+
did: 'did:plc:community',
+
name: 'test-community',
+
handle: 'test-community.community.coves.social',
+
),
createdAt: DateTime.parse('2025-01-01T12:00:00Z'),
indexedAt: DateTime.parse('2025-01-01T12:00:00Z'),
text: 'Test body',