implementing a test for multi-categories parsing check feature.
[sgn.git] / t / selenium2 / 01_list / list.t
blobe49366ab1f5cf67513180d5179585a2d2346eae6
1 use strict;
3 use lib 't/lib';
5 use Test::More 'tests' => 69;
6 use SGN::Test::Fixture;
7 use SGN::Test::WWW::WebDriver;
8 use CXGN::List;
9 use SimulateC;
11 my $d = SGN::Test::WWW::WebDriver->new();
13 my $f = SGN::Test::Fixture->new();
14 # my $c = SimulateC->new( { dbh => $f->dbh(),
15 #                         bcs_schema => $f->bcs_schema(),
16 #                         metadata_schema => $f->metadata_schema(),
17 #                         phenome_schema => $f->phenome_schema(),
18 #                         sp_person_id => 41 });
20 $d->while_logged_in_as("submitter", sub {
22     $d->get_ok("/search", "get root url test");
23     sleep(2);
24     my $out = $d->find_element_ok("lists_link", "name", "find lists_link")->click();
25     sleep(2);
26     print "Adding new list...\n";
28     $d->find_element_ok("add_list_input", "id", "find add list input");
30     sleep(1);
32     my $add_list_input = $d->find_element_ok("add_list_input", "id", "find add list input test");
34     sleep(1);
36     $add_list_input->send_keys("new_test_list");
38     $d->find_element_ok("add_list_button", "id", "find add list button test")->click();
40     $d->find_element_ok("view_list_new_test_list", "id", "view list test")->click();
42     sleep(1);
44     $d->find_element_ok("dialog_add_list_item", "id", "add test list")->send_keys("element1\nelement2\nelement3\n");
46     sleep(1);
48     $d->find_element_ok("dialog_add_list_item_button", "id", "find dialog_add_list_item_button test")->click();
50     my $edit_list_name = $d->find_element_ok("updateNameField", "id", "edit list name");
52     $edit_list_name->clear();
53     $edit_list_name->send_keys("update_list_name");
55     sleep(1);
57     $d->find_element_ok("updateNameButton", "id", "submit edit list name")->click();
59     sleep(1);
60     $d->accept_alert_ok();
61     sleep(1);
62     #$d->accept_alert_ok();
63     sleep(1);
65     $d->find_element_ok("close_list_item_dialog", "id", "find close_list_item_dialog button test")->click();
67     sleep(1);
69     #my %test_lists = ('accessions'=>"test_accession1\ntest_accession2\ntest_accession3\n", 'plots'=>"test_trial1\ntest_trial21\ntest_trial22\n", 'locations'=>"test_location\nCornell Biotech\n", 'trials'=>"test\ntest_trial\ntest_genotyping_project\n", 'traits'=>"fresh shoot weight|CO_334:0000016\ndry matter content|CO_334:0000092\nharvest index|CO_334:0000015\n");
71     my %test_lists = (
72         'accessions'=>"test_accession1\ntest_accession2\ntest_accession3\n",
73         'plots'=>"test_trial1\ntest_trial21\ntest_trial22\n",
74         'locations'=>"test_location\nCornell Biotech\n",
75         #'traits'=>"fresh shoot weight|CO_334:0000016\ndry matter content|CO_334:0000092\nharvest index|CO_334:0000015\n"
76     );
78     foreach my $list_type ( keys %test_lists ) {
80         print STDERR "NOW TESTING $list_type...\n";
81         sleep(1);
83         $d->find_element_ok("add_list_input", "id", "find add list input");
84         sleep(1);
87         $d->find_element_ok("add_list_input", "id", "find add list input test")->send_keys($list_type);
88         sleep(1);
89         $d->find_element_ok("add_list_button", "id", "find add list button test")->click();
90         sleep(1);
91         $d->find_element_ok("view_list_".$list_type, "id", "view list dialog test")->click();
93         sleep(1);
95         $d->find_element_ok("dialog_add_list_item", "id", "add list items")->send_keys($test_lists{$list_type});
96         sleep(1);
97         my @list_items = split /\n/, $test_lists{$list_type};
99         $d->find_element_ok("dialog_add_list_item_button", "id", "find dialog_add_list_item_button test")->click();
100         sleep(1);
101         $d->find_element_ok("type_select", "id", "validate list select")->click();
102         sleep(1);
103         $d->find_element_ok("//select[\@id='type_select']/option[\@name='$list_type']", 'xpath', "Select '$list_type' as value for list type")->click();
104         sleep(1);
105         $d->find_element_ok("list_item_dialog_validate", "id", "submit list validate")->click();
107         sleep(1);
108         my $alert_text = $d->driver->get_alert_text;
109         if ($alert_text eq 'This list passed validation.'){
110             $d->accept_alert_ok();
111         } else {
112             print STDERR "\n\n<ERROR>: list not validated: ".$list_type."\n\n";
113             $d->accept_alert_ok();
114         }
115         sleep(1);
117         $d->find_element_ok("close_list_item_dialog", "id", "find close list dialog button")->click();
118         sleep(1);
119         $d->find_element_ok("view_list_".$list_type, "id", "view accession list dialog test");
120         sleep(1);
121     }
123     $d->find_element_ok("view_public_lists_button", "id", "find public list button")->click();
125     sleep(3);
127     $d->find_element_ok("view_public_list_johndoe_1_public", "id", "view johndoe1public list")->click();
129     sleep(1);
131     $d->find_element_ok("close_list_item_dialog", "id", "close public list item dialog")->click();
133     sleep(1);
135     $d->find_element_ok("copy_public_list_johndoe_1_public", "id", "copy johndoe public list")->click();
137     sleep(1);
139     $d->accept_alert_ok();
141     sleep(1);
143     $d->find_element_ok("copy_public_list_janedoe_1_public", "id", "copy janedoe public list")->click();
145     sleep(1);
147     $d->accept_alert_ok();
149     sleep(1);
151     $d->find_element_ok("close_public_list_item_dialog", "id", "close public list dialog")->click();
153     sleep(1);
155     $d->find_element_ok("share_list_johndoe_1_private", "id", "make private list public")->click();
157     sleep(1);
159     $d->accept_alert_ok();
161     sleep(1);
163     $d->find_element_ok("view_public_lists_button", "id", "view public lists")->click();
165     sleep(2);
167     $d->find_element_ok("view_public_list_johndoe_1_private", "id", "view new public list")->click();
169     sleep(1);
171     $d->find_element_ok("close_list_item_dialog", "id", "close new public list item dialog")->click();
173     sleep(1);
175     $d->find_element_ok("close_public_list_item_dialog", "id", "close new public list dialog")->click();
177     sleep(1);
179     $d->find_element_ok("view_list_janedoe_1_public", "id", "view new public list")->click();
181     #sleep(100);
183     #my $list_id = 16;
184     #my $q = "SELECT list_item_id from sgn_people.list join sgn_people.list_item using(list_id) WHERE list_id=?";
185     #my $h = $c->dbh->prepare($q);
186     #$h->execute($list_id);
187     #my @list = ();
188     #while (my ($content) = $h->fetchrow_array()) {
189     #      push @list, $content;
190     #}
192     #$d->find_element_ok($list[0], "id", "delete item from list")->click();
193     #$d->find_element_ok($list[1], "id", "delete item from list")->click();
195     sleep(1);
197     $d->find_element_ok("close_list_item_dialog", "id", "close new public list item dialog")->click();
199     sleep(1);
201     print "Delete test list...\n";
203     # $d->find_element_ok("delete_list_update_list_name", "id", "find delete test list button")->click();
204     $d->find_element_ok('//*[starts-with(@id, "delete_list")]', 'xpath', 'delete list')->click();
206     sleep(1);
208     $d->accept_alert_ok();
210     sleep(1);
212     $d->accept_alert_ok();
214     print "Deleted the list\n";
216     $d->find_element_ok("close_list_dialog_button", "id", "find close dialog button")->click();
218     $d->logout_ok();
222 $d->driver->close();
223 done_testing();