Add SetAppLabel function for group item
[platform/core/api/notification.git] / unittest / src / test_group_item.cc
1 // Copyright (c) 2019 Samsung Electronics Co., Ltd All Rights Reserved
2 // Use of this source code is governed by a apache 2.0 license that can be
3 // found in the LICENSE file.
4
5 #include <gmock/gmock.h>
6
7 #include "notification-ex/group_item.h"
8 #include "notification-ex/button_item.h"
9 #include "notification-ex/item_inflator.h"
10 #include "unittest/mock/app_common.h"
11
12 using namespace notification;
13 using namespace notification::item;
14 using namespace std;
15
16 namespace {
17
18 class GroupItemTest : public ::testing::Test {
19  protected:
20   void SetUp() override {}
21   void TearDown() override {}
22 };
23
24 TEST_F(GroupItemTest, AddChild) {
25   GroupItem item("GROUP1");
26   item.AddChild(std::make_shared<ButtonItem>("btn1", "test1"));
27   item.AddChild(std::make_shared<ButtonItem>("btn2", "test2"));
28   ASSERT_EQ(item.GetChildren().size(), 2);
29 }
30
31 TEST_F(GroupItemTest, RemoveChild) {
32   GroupItem item("GROUP1");
33   item.AddChild(std::make_shared<ButtonItem>("btn1", "test1"));
34   item.AddChild(std::make_shared<ButtonItem>("btn2", "test2"));
35   ASSERT_EQ(item.GetChildren().size(), 2);
36
37   item.RemoveChild("btn1");
38   ASSERT_EQ(item.GetChildren().size(), 1);
39 }
40
41 TEST_F(GroupItemTest, SerializeDeserialize) {
42   GroupItem item("GROUP1");
43   item.AddChild(std::make_shared<ButtonItem>("btn1", "test1"));
44   item.AddChild(std::make_shared<ButtonItem>("btn2", "test2"));
45
46   Bundle b = item.Serialize();
47   shared_ptr<AbstractItem> gen_item = ItemInflator::Create(b);
48   ASSERT_EQ(gen_item->GetType(), item.GetType());
49
50   auto gen_group = static_pointer_cast<GroupItem>(gen_item);
51   list<shared_ptr<AbstractItem>> gen_children_list = gen_group->GetChildren();
52   list<shared_ptr<AbstractItem>> origin_children_list = item.GetChildren();
53
54   list<shared_ptr<AbstractItem>>::iterator it = origin_children_list.begin();
55   for (auto& i : gen_children_list) {
56     ASSERT_EQ(i->GetType(), (*it)->GetType());
57     if (i->GetType() == AbstractItem::Button) {
58       ButtonItem* btn1 = static_cast<ButtonItem*>(i.get());
59       ButtonItem* btn2 = static_cast<ButtonItem*>((*it).get());
60       ASSERT_EQ(btn1->GetTitle(), btn2->GetTitle());
61     }
62     it++;
63   }
64   ASSERT_EQ(item.GetChildren().size(), 2);
65 }
66
67 TEST_F(GroupItemTest, FindByID) {
68   GroupItem item("GROUP1");
69   item.AddChild(std::make_shared<ButtonItem>("btn1", "test1"));
70   item.AddChild(std::make_shared<ButtonItem>("btn2", "test2"));
71   ASSERT_EQ(item.GetChildren().size(), 2);
72
73   AbstractItem& child = item.FindByID("btn2");
74   ButtonItem& btn = static_cast<ButtonItem&>(child);
75   ASSERT_EQ(btn.GetTitle(), "test2");
76 }
77
78 TEST_F(GroupItemTest, FindByIDGroupItem) {
79   GroupItem item("GROUP1");
80   shared_ptr<GroupItem> gr2 = shared_ptr<GroupItem>(new GroupItem("GROUP2"));
81   shared_ptr<GroupItem> gr3 = shared_ptr<GroupItem>(new GroupItem("GROUP3"));
82   gr2->AddChild(std::make_shared<ButtonItem>("btn2", "test2"));
83   gr2->AddChild(std::make_shared<ButtonItem>("btn3", "test3"));
84   gr2->AddChild(std::make_shared<ButtonItem>("btn4", "test4"));
85   gr3->AddChild(std::make_shared<ButtonItem>("btn6", "test6"));
86   gr2->AddChild(gr3);
87
88   item.AddChild(std::make_shared<ButtonItem>("btn1", "test1"));
89   item.AddChild(gr2);
90   item.AddChild(std::make_shared<ButtonItem>("btn5", "test5"));
91   ASSERT_EQ(item.GetChildren().size(), 3);
92
93   AbstractItem& child = item.FindByID("btn3");
94   ButtonItem& btn = static_cast<ButtonItem&>(child);
95   ASSERT_EQ(btn.GetTitle(), "test3");
96
97   AbstractItem& child2 = item.FindByID("GROUP3");
98   GroupItem& ret_gr = static_cast<GroupItem&>(child2);
99   ASSERT_EQ(ret_gr.GetChildren().size(), 1);
100 }
101
102 TEST_F(GroupItemTest, FindByIDNullItemReturn) {
103   GroupItem item("GROUP1");
104   item.AddChild(std::make_shared<ButtonItem>("btn1", "test1"));
105   item.AddChild(std::make_shared<ButtonItem>("btn2", "test2"));
106   ASSERT_EQ(item.GetChildren().size(), 2);
107
108   AbstractItem& child = item.FindByID("not_exist_button");
109   ASSERT_EQ(child.GetType(), AbstractItem::NullObject);
110 }
111
112 int __fake_app_get_name(char** app_name) {
113   *app_name = (char*)"unittest_appname";
114   return 0;
115 }
116
117 TEST_F(GroupItemTest, GetAppLabel) {
118   app_get_name_fake.custom_fake = __fake_app_get_name;
119
120   GroupItem item("GROUP1");
121   string app_label = item.GetAppLabel();
122
123   ASSERT_EQ(app_label, "unittest_appname");
124 }
125
126 TEST_F(GroupItemTest, SetAppLabel) {
127   GroupItem item("GROUP1");
128   item.SetAppLabel("test");
129   string app_label = item.GetAppLabel();
130
131   ASSERT_EQ(app_label, "test");
132 }
133
134 TEST_F(GroupItemTest, SetDirection) {
135   GroupItem item("GROUP1");
136   item.SetDirection(true);
137
138   ASSERT_TRUE(item.IsVertical());
139 }
140
141 }  // namespace