blob: 5f18be24a0997c216d7b4d711f309dc202823325 [file] [log] [blame]
// Copyright 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#import "ios/chrome/browser/ui/settings/settings_root_collection_view_controller.h"
#import <Foundation/Foundation.h>
#import "ios/chrome/browser/ui/collection_view/cells/collection_view_item.h"
#import "ios/chrome/browser/ui/collection_view/collection_view_model.h"
#include "testing/gtest/include/gtest/gtest.h"
#import "testing/gtest_mac.h"
#include "testing/platform_test.h"
#if !defined(__has_feature) || !__has_feature(objc_arc)
#error "This file requires ARC support."
#endif
@interface TestSettingsRootCollectionViewController
: SettingsRootCollectionViewController
@property(nonatomic, readonly) NSMutableArray* items;
- (void)reset;
@end
@implementation TestSettingsRootCollectionViewController {
NSMutableArray* _items;
}
- (NSMutableArray*)items {
if (!_items) {
_items = [[NSMutableArray alloc] init];
}
return _items;
}
- (void)reset {
_items = nil;
}
- (void)loadModel {
[super loadModel];
if ([self.items count] > 0) {
[self.collectionViewModel
addSectionWithIdentifier:kSectionIdentifierEnumZero];
}
for (CollectionViewItem* item in self.items) {
[self.collectionViewModel addItem:item
toSectionWithIdentifier:kSectionIdentifierEnumZero];
}
}
@end
namespace {
class SettingsRootCollectionViewControllerTest : public PlatformTest {
public:
SettingsRootCollectionViewControllerTest()
: controller_([[TestSettingsRootCollectionViewController alloc]
initWithStyle:CollectionViewControllerStyleDefault]) {
item1_ = [[CollectionViewItem alloc] initWithType:kItemTypeEnumZero];
item2_ = [[CollectionViewItem alloc] initWithType:kItemTypeEnumZero + 10];
}
protected:
void SetUp() override {
PlatformTest::SetUp();
[controller() reset];
}
TestSettingsRootCollectionViewController* controller() { return controller_; }
CollectionViewItem* item1() { return item1_; }
CollectionViewItem* item2() { return item2_; }
id getCollectionViewItem(int section, int item) {
return [controller().collectionViewModel
itemAtIndexPath:[NSIndexPath indexPathForItem:item inSection:section]];
}
int numberOfSections() {
return [controller().collectionViewModel numberOfSections];
}
int numberOfItems(int section) {
return [controller().collectionViewModel numberOfItemsInSection:section];
}
TestSettingsRootCollectionViewController* controller_;
CollectionViewItem* item1_;
CollectionViewItem* item2_;
};
TEST_F(SettingsRootCollectionViewControllerTest, Empty) {
[controller() loadModel];
EXPECT_EQ(0, numberOfSections());
}
TEST_F(SettingsRootCollectionViewControllerTest, ModelContents) {
[controller().items addObjectsFromArray:@[ item1(), item2() ]];
[controller() loadModel];
EXPECT_EQ(1, numberOfSections());
EXPECT_EQ(2, numberOfItems(0));
EXPECT_EQ(item1(), getCollectionViewItem(0, 0));
EXPECT_EQ(item2(), getCollectionViewItem(0, 1));
}
} // namespace