/** * */ package com.eleybourn.bookcatalogue.test; import java.io.File; import java.util.ArrayList; import android.test.ActivityInstrumentationTestCase2; import android.util.Log; import android.view.View; import android.widget.CheckBox; import android.widget.EditText; import android.widget.ImageView; import android.widget.TextView; import com.eleybourn.bookcatalogue.Utils; import com.jayway.android.robotium.solo.Solo; @SuppressWarnings("unchecked") /** * @author evan * */ public class BookCatalogueTest extends ActivityInstrumentationTestCase2 { private static final String TARGET_PACKAGE_ID = "com.eleybourn.bookcatalogue"; private static final String LAUNCHER_ACTIVITY_FULL_CLASSNAME = "com.eleybourn.bookcatalogue.BookCatalogue"; private static Class<?> launcherActivityClass; static{ try { launcherActivityClass = Class.forName(LAUNCHER_ACTIVITY_FULL_CLASSNAME); } catch (ClassNotFoundException e) { throw new RuntimeException(e); } } //@SuppressWarnings("unchecked") public BookCatalogueTest() throws ClassNotFoundException { super(TARGET_PACKAGE_ID, launcherActivityClass); } private Solo t; @Override protected void setUp() throws Exception { t = new Solo(getInstrumentation(), getActivity()); } public void test000Reset() { File sp = new File("/data/data/com.eleybourn.bookcatalogue/shared_prefs/bookCatalogue.xml"); sp.delete(); File db = new File("/data/data/com.eleybourn.bookcatalogue/databases/book_catalogue"); db.delete(); } public void test001LibraryThing() { //reset message for LT t.clickOnMenuItem("Help & Admin"); t.assertCurrentActivity("Expected Administration activity", "Administration"); t.clickOnText("LibraryThing"); t.clickOnEditText(0); //Dev Key t.goBack(); t.clearEditText(t.getEditText(0)); t.clickOnText("Save"); t.clickOnText("Reset"); t.goBack(); //Disable the message t.clickOnMenuItem("Add Book..."); t.clickOnText("Add by ISBN"); t.assertCurrentActivity("Expected BookISBNSearch activity", "BookISBNSearch"); t.clickOnText("Disable Message"); // This will fail if it does not exist t.goBack(); //Check it has been disabled t.clickOnMenuItem("Add Book..."); t.clickOnText("Add by ISBN"); t.assertCurrentActivity("Expected BookISBNSearch activity", "BookISBNSearch"); assertFalse("Did not expect cancel button", t.searchButton("Cancel")); t.goBack(); //reset again t.clickOnMenuItem("Help & Admin"); t.assertCurrentActivity("Expected Administration activity", "Administration"); t.clickOnText("LibraryThing"); t.clickOnEditText(0); //Dev Key t.goBack(); t.clearEditText(t.getEditText(0)); t.clickOnText("Save"); t.clickOnText("Reset"); t.goBack(); //Test Cancel Button t.clickOnMenuItem("Add Book..."); t.clickOnText("Add by ISBN"); t.assertCurrentActivity("Expected BookISBNSearch activity", "BookISBNSearch"); t.clickOnText("Cancel"); // This will fail if it does not exist t.goBack(); //Test Adding Dev Key t.clickOnMenuItem("Add Book..."); t.clickOnText("Add by ISBN"); t.assertCurrentActivity("Expected BookISBNSearch activity", "BookISBNSearch"); t.clickOnText("More Info"); // This will fail if it does not exist t.assertCurrentActivity("Expected AdministrationLibraryThing activity", "AdministrationLibraryThing"); t.clickOnEditText(0); //Dev Key t.goBack(); t.enterText(0, "118983f247fc3fe43dcafcd042655440"); t.sleep(1000); t.clickOnText("Save"); t.clickOnText("Reset"); t.goBack(); t.goBack(); //Check it has been disabled (the key has been added) t.clickOnMenuItem("Add Book..."); t.clickOnText("Add by ISBN"); t.assertCurrentActivity("Expected BookISBNSearch activity", "BookISBNSearch"); assertFalse("Did not expect cancel button", t.searchButton("Cancel")); t.goBack(); } public void test101AddByISBNNumbers() { t.clickOnMenuItem("Add Book..."); t.clickOnText("Add by ISBN"); t.assertCurrentActivity("Expected BookISBNSearch activity", "BookISBNSearch"); //setup fields EditText isbn = t.getEditText(0); //ISBN //test all the buttons t.clickOnText("1"); t.clickOnText("2"); t.clickOnText("3"); t.clickOnText("4"); t.clickOnText("5"); t.clickOnText("6"); t.clickOnText("7"); t.clickOnText("8"); t.clickOnText("9"); t.clickOnText("X"); t.clickOnText("0"); t.sleep(1000); //TODO: FIX solo.clickOnText("1"); // solo.clickOnImageButton(0); assertEquals("The ISBN string was different than expected", "123456789X0", isbn.getText().toString()); } public void test102AddByISBN(){ t.clickOnMenuItem("Add Book..."); t.clickOnText("Add by ISBN"); t.assertCurrentActivity("Expected BookISBNSearch activity", "BookISBNSearch"); //setup fields EditText isbn = t.getEditText(0); //ISBN Log.e("BC", "" + t.getCurrentButtons().size()); Log.e("BC", "" + t.getCurrentImageButtons().size()); //Search for an ISBN t.clearEditText(isbn); t.enterText(isbn, "0586057242"); t.clickOnButton("Search"); t.sleep(10000); //wait 10 seconds for the page to search and load t.assertCurrentActivity("Expected BookEdit activity", "BookEdit"); assertTrue("Expected populated title", t.searchEditText("The Complete Robot")); assertTrue("Expected populated ISBN", t.searchEditText("9780586057247")); t.clickOnButton("Add Book"); t.sleep(1000); t.assertCurrentActivity("Expected BookEdit activity", "BookEdit"); t.clickOnButton("Save Book"); t.assertCurrentActivity("Expected BookISBNSearch activity", "BookISBNSearch"); t.goBack(); assertTrue("Expected populated title", t.searchText("Complete Robot, The")); assertTrue("Expected populated author", t.searchText("Asimov, Isaac")); } public void test103AddByISBNLandscape() { t.clickOnMenuItem("Add Book..."); t.clickOnText("Add by ISBN"); t.assertCurrentActivity("Expected BookISBNSearch activity", "BookISBNSearch"); t.setActivityOrientation(Solo.LANDSCAPE); // Change orientation of activity //setup fields EditText isbn = t.getEditText(0); //ISBN //test all the buttons t.clickOnText("1"); t.clickOnText("2"); t.clickOnText("3"); t.clickOnText("4"); t.clickOnText("5"); t.clickOnText("6"); t.clickOnText("7"); t.clickOnText("8"); t.clickOnText("9"); t.clickOnText("X"); t.clickOnText("0"); t.setActivityOrientation(Solo.PORTRAIT); // Change orientation of activity t.sleep(1000); //TODO: FIX solo.clickOnText("1"); // solo.clickOnImageButton(0); assertEquals("The ISBN string was different than expected", "123456789X0", isbn.getText().toString()); assertTrue("Expected search button", t.searchButton("Search")); } public void test104Anthology() { if (t.searchText("Complete Robot") == false) { t.clickOnText("Asimov"); } t.sleep(100); t.clickOnText("Complete Robot"); t.assertCurrentActivity("Expected BookEdit activity", "BookEdit"); assertTrue("Expected book title", t.searchText("Complete Robot, The")); t.searchText("Is this book an Anthology?"); if (t.isCheckBoxChecked(0) == false) { t.clickOnCheckBox(0); assertTrue("Expected anthology tab to appear", t.searchText("Anthology Titles")); } t.clickOnCheckBox(0); assertFalse("Expected anthology tab to disappear", t.searchText("Anthology Titles")); t.clickOnCheckBox(0); assertTrue("Expected anthology tab to appear", t.searchText("Anthology Titles")); t.clickOnText("Anthology Titles"); //multiple authors t.clickOnText("All stories in this anthology are written by the same author"); t.sleep(100); EditText author = (EditText) t.getCurrentActivity().findViewById(com.eleybourn.bookcatalogue.R.id.add_author); EditText title = (EditText) t.getCurrentActivity().findViewById(com.eleybourn.bookcatalogue.R.id.add_title); t.sleep(100); assertEquals("Author", author.getHint().toString()); assertEquals("Title", title.getHint().toString()); //manually add title t.enterText(author, "Test Author"); t.enterText(title, "Test Title"); t.clickOnButton("Add"); //same author int gone = 8; int visible = 0; t.clickOnText("All stories in this anthology are written by the same author"); author = (EditText) t.getCurrentActivity().findViewById(com.eleybourn.bookcatalogue.R.id.add_author); t.sleep(100); assertEquals(gone, author.getVisibility()); assertFalse(t.searchText("Author, Test", true)); t.clickOnText("All stories in this anthology are written by the same author"); t.sleep(100); author = (EditText) t.getCurrentActivity().findViewById(com.eleybourn.bookcatalogue.R.id.add_author); assertEquals(visible, author.getVisibility()); assertTrue(t.searchText("Author, Test", true)); t.clickOnText("All stories in this anthology are written by the same author"); t.sleep(100); author = (EditText) t.getCurrentActivity().findViewById(com.eleybourn.bookcatalogue.R.id.add_author); assertEquals(gone, author.getVisibility()); assertFalse(t.searchText("Author, Test", true)); //edit list title = (EditText) t.getCurrentActivity().findViewById(com.eleybourn.bookcatalogue.R.id.add_title); t.clickInList(0); t.clearEditText(title); t.enterText(title, "A"); t.clickOnButton("Save"); assertTrue(t.searchText("A")); t.sleep(1000); //setup move title = (EditText) t.getCurrentActivity().findViewById(com.eleybourn.bookcatalogue.R.id.add_title); t.enterText(title, "B"); t.clickOnButton("Add"); t.enterText(title, "C"); t.clickOnButton("Add"); t.scrollUpList(0); t.sleep(1000); //TODO: Fix this. Image number does not work??? ArrayList<View> v2 = t.getCurrentViews(); for (int i = 0; i<v2.size(); i++) { View view = v2.get(i); Log.e("BC", i + " " + view.toString() + " " + view.getId() + " " + view.getWidth() + " " + view.isClickable() + " "); } //move title down t.clickOnImage(4); t.sleep(1000); ArrayList<TextView> v = t.getCurrentTextViews(null); boolean found = false; for (int i=0; i<v.size(); i++) { if (v.get(i).getText().toString().trim().equals("B")) { found = false; } if (v.get(i).getText().toString().trim().equals("A")) { found = true; } Log.e("BC", "A" + found + " " + i + " " + v.get(i).getText().toString() + "."); } assertTrue(found); t.scrollUpList(0); //move title up t.clickOnImage(7); t.sleep(1000); v = t.getCurrentTextViews(null); found = false; for (int i=0; i<v.size(); i++) { if (v.get(i).getText().toString().trim().equals("A")) { found = false; } if (v.get(i).getText().toString().trim().equals("B")) { found = true; } Log.e("BC", "B" + found + " " + i + " " + v.get(i).getText().toString() + "."); } assertTrue(found); //delete t.clickLongInList(0); t.clickOnText("Delete Title from Anthology"); assertFalse(t.searchText("Foobar")); //search & cancel t.clickOnMenuItem("Automatically Populate Titles"); t.sleep(3000); t.clickOnButton("Cancel"); assertFalse(t.searchText("Sally")); t.sleep(1000); //search & do t.clickOnMenuItem("Automatically Populate Titles"); t.sleep(3000); t.clickOnButton("OK"); assertTrue(t.searchText("Sally")); } public void test105AddByName(){ t.clickOnMenuItem("Add Book..."); t.clickOnText("Add by Name"); t.assertCurrentActivity("Expected BookISBNSearch activity", "BookISBNSearch"); //setup fields EditText author = t.getEditText(0); EditText title = t.getEditText(1); //Search for an ISBN t.clearEditText(author); t.clearEditText(title); t.enterText(author, "Terry Pratchett"); t.enterText(title, "Nation"); t.clickOnButton("Search"); t.sleep(10000); //wait 10 seconds for the page to search and load t.assertCurrentActivity("Expected BookEdit activity", "BookEdit"); assertTrue("Expected populated title", t.searchEditText("Nation")); assertTrue("Expected populated author", t.searchText("Terry Pratchett")); assertTrue("Expected populated ISBN", t.searchEditText("9780552557795")); t.clickOnButton("Add Book"); t.sleep(1000); t.assertCurrentActivity("Expected BookEdit activity", "BookEdit"); t.clickOnButton("Save Book"); t.assertCurrentActivity("Expected BookISBNSearch activity", "BookISBNSearch"); t.goBack(); assertTrue("Expected populated title", t.searchText("Nation")); assertTrue("Expected populated author", t.searchText("Pratchett, Terry")); } public void test106AddBook(){ t.clickOnMenuItem("Add Book..."); t.clickOnText("Add Book", 2); t.assertCurrentActivity("Expected BookEdit activity", "BookEdit"); //add author t.clickOnText("Set Authors"); t.assertCurrentActivity("Expected EditAuthorList activity", "EditAuthorList"); EditText author = t.getEditText(0); t.enterText(author, "XXX"); t.clickOnText("Add"); assertFalse("The author textbox is not blank", t.searchEditText("XXX")); assertTrue("XXX was not added", t.searchText("XXX")); //add and delete author t.enterText(author, "Isaac Asimov"); t.clickOnText("Add"); assertFalse("The author textbox is not blank", t.searchEditText("Isaac Asimov")); assertTrue("Isaac Asimov was not added", t.searchText("Isaac Asimov")); t.clickOnImage(0); assertFalse("XXX was not deleted", t.searchText("XXX")); t.clickOnText("Save"); //setup fields t.enterText(0, "I Robot"); assertTrue("Title was not entered", t.searchText("I Robot")); t.enterText(2, "Publisher"); t.clickOnText("Date Published"); t.clickOnText("Set"); assertFalse("Date not set", t.searchText("Not Set")); //TODO: BROKEN //t.scrollUp(); //t.sleep(1000); //t.drag(100, 100, 1000, 600, 6); //t.sleep(1000); //t.clickOnText("Select Bookshelves", 0, true); //t.sleep(1000); //t.clickOnCheckBox(0); //t.clickOnCheckBox(1); //t.clickOnText("OK"); t.clickOnText("Add Book", 3); t.assertCurrentActivity("Expected BookEdit activity", "BookEdit"); t.clickOnButton("Save Book"); t.assertCurrentActivity("Expected BookCatalogue activity", "BookCatalogue"); assertTrue("Expected populated author", t.searchText("Asimov, Isaac")); if (t.searchText("I Robot") == false) { //it may be closed t.clickOnText("Asimov, Isaac"); assertTrue("Expected populated title", t.searchText("I Robot")); } } public void test107EditNotes(){ if (t.searchText("I Robot") == false) { //it may be closed t.clickOnText("Asimov, Isaac"); assertTrue("Expected populated title", t.searchText("I Robot")); } t.clickLongOnText("I Robot"); t.clickOnText("Your Comments"); t.assertCurrentActivity("Expected BookEdit activity", "BookEdit"); //save book t.clickOnText("Have you read this book?"); t.enterText(0, "My Notes"); assertTrue("Notes were not entered", t.searchText("My Notes", true)); //check that persistance works t.clickOnText("Edit Book"); t.assertCurrentActivity("Expected BookEditFields activity", "BookEditFields"); //assertFalse("Notes still visible", t.searchText("My Notes", true)); t.clickOnText("Your Comments"); t.assertCurrentActivity("Expected BookEditNotes activity", "BookEditNotes"); assertTrue("Notes not visible", t.searchText("My Notes", true)); t.clickOnText("Has this book been signed"); t.scrollDown(); t.clickOnText("Date started"); t.clickOnText("Set"); t.clickOnText("Date finished"); t.clickOnText("Set"); //EditText location = t.getEditText("Location of the book"); //t.enterText(location, "My Location"); //assertTrue("Location not entered", t.searchText("My Location")); t.clickOnText("Save Book"); t.assertCurrentActivity("Expected BookCatalogue activity", "BookCatalogue"); } public void test201AdminHelp() { t.clickOnMenuItem("Help & Admin"); t.assertCurrentActivity("Expected Administration activity", "Administration"); assertTrue("Expected help link", t.searchText("https://github.com/eleybourn/Book-Catalogue/wiki/Help")); } public void test202AdminBookshelves() { t.clickOnMenuItem("Help & Admin"); t.assertCurrentActivity("Expected Administration activity", "Administration"); t.clickOnText("Administration Functions"); t.assertCurrentActivity("Expected AdministrationFunctions activity", "AdministrationFunctions"); t.clickOnText("Manage Bookshelves"); t.assertCurrentActivity("Expected Bookshelf activity", "Bookshelf"); //add 3x bookshelves t.clickOnMenuItem("Create Bookshelf"); t.assertCurrentActivity("Expected BookshelfEdit activity", "BookshelfEdit"); EditText bookshelf = (EditText) t.getCurrentActivity().findViewById(com.eleybourn.bookcatalogue.R.id.bookshelf); t.clearEditText(bookshelf); t.enterText(bookshelf, "A1"); t.clickOnButton("Add Bookshelf"); t.assertCurrentActivity("Expected Bookshelf activity", "Bookshelf"); t.clickOnMenuItem("Create Bookshelf"); bookshelf = (EditText) t.getCurrentActivity().findViewById(com.eleybourn.bookcatalogue.R.id.bookshelf); t.clearEditText(bookshelf); t.enterText(bookshelf, "A2"); t.clickOnButton("Add Bookshelf"); t.clickOnMenuItem("Create Bookshelf"); bookshelf = (EditText) t.getCurrentActivity().findViewById(com.eleybourn.bookcatalogue.R.id.bookshelf); t.clearEditText(bookshelf); t.enterText(bookshelf, "A3"); t.clickOnButton("Add Bookshelf"); //Edit bookshelf t.clickOnText("A2"); t.assertCurrentActivity("Expected BookshelfEdit activity", "BookshelfEdit"); t.clickOnEditText(0); //A1 t.goBack(); t.enterText(0, "x2"); t.clickOnButton("Save Bookshelf"); t.assertCurrentActivity("Expected Bookshelf activity", "Bookshelf"); //Delete bookshelf t.clickLongInList(0); t.clickOnText("Delete Bookshelf"); assertFalse(t.searchText("A1")); } /*public void test203AdminBackupDatabase() { //weak test t.clickOnMenuItem("Help & Admin"); t.assertCurrentActivity("Expected Administration activity", "Administration"); t.clickOnText("Administration Functions"); t.assertCurrentActivity("Expected AdministrationFunctions activity", "AdministrationFunctions"); t.clickOnText("Backup Database"); t.sleep(1000); String filename = com.eleybourn.bookcatalogue.Utils.EXTERNAL_FILE_PATH + "/bookCatalogueDbExport.db"; Log.e("BC", filename); File file = new File(filename); assertTrue("Backup file does not exist", file.exists()); }*/ public void test204AdminFieldInvisibility() { t.clickOnMenuItem("Help & Admin"); t.assertCurrentActivity("Expected Administration activity", "Administration"); t.clickOnText("Administration Functions"); t.assertCurrentActivity("Expected AdministrationFunctions activity", "AdministrationFunctions"); t.clickOnText("Manage Field Visibility"); t.assertCurrentActivity("Expected FieldVisibility activity", "FieldVisibility"); //set all as true (reset) ArrayList<CheckBox> fields = t.getCurrentCheckBoxes(); for (int i = 0; i<fields.size(); i++) { CheckBox field = fields.get(i); if (!field.isChecked()) { t.clickOnCheckBox(i); } } //set known fields (will need to be updated for each new field) t.scrollUp(); t.scrollUp(); t.scrollUp(); t.scrollUp(); t.clickOnText("Cover Thumbnail"); t.clickOnText("ISBN"); t.clickOnText("Series"); t.clickOnText("#"); t.clickOnText("Publisher"); t.clickOnText("Date Published"); t.clickOnText("Pages"); t.clickOnText("List Price"); t.clickOnText("Have you read this book?"); t.clickOnText("Rating"); t.clickOnText("Notes"); t.clickOnText("Anthology"); t.clickOnText("Location of the book"); t.clickOnText("Date started reading"); t.clickOnText("Date finished reading"); t.clickOnText("Format"); t.clickOnText("Has this book been signed"); t.clickOnText("Description"); t.clickOnText("Genre"); //goto book t.goBack(); t.assertCurrentActivity("Expected Administration activity", "Administration"); t.goBack(); t.assertCurrentActivity("Expected BookCatalogue activity", "BookCatalogue"); t.clickOnText("Complete Robot"); //check assertTrue("Author is not visible", t.searchText("Isaac Asimov", true)); assertTrue("Title is not visible", t.searchText("Complete Robot", true)); ImageView thumb = (ImageView) t.getCurrentActivity().findViewById(com.eleybourn.bookcatalogue.R.id.row_img); boolean thumb_visi = false; if (thumb == null) { assertFalse(thumb_visi); } else { if (thumb.getVisibility() == 0) { thumb_visi = true; } assertFalse(thumb_visi); } assertFalse("ISBN is visible", t.searchText("9780586057247", true)); assertFalse("Series is visible", t.searchText("Robot Series", true)); assertFalse("Series # is visible", t.searchText("0.3", true)); assertFalse("Publisher is visible", t.searchText("Harpercollins", true)); assertFalse("Published Date is visible", t.searchText("Date Published", true)); assertTrue("Bookshelf is not visible", t.searchText("Default, ", true)); assertFalse("Pages is visible", t.searchText("688", true)); assertFalse("List Price is visible", t.searchText("List Price", true)); assertFalse("Format is visible", t.searchText("Paperback", true)); assertFalse("Genre is visible", t.searchText("Science Fiction", true)); assertFalse("Description is visible", t.searchText("stunning visions", true)); assertFalse("Anthology is visible", t.searchText("Is this book an Anthology", true)); t.clickOnText("Your Comments"); assertFalse("Read is visible", t.searchText("Have you read this book?", true)); assertFalse("Rating is visible", t.searchText("Rating", true)); assertFalse("Notes is visible", t.searchText("Notes", true)); assertFalse("Signedis visible", t.searchText("Has this book been signed", true)); assertFalse("Date started is visible", t.searchText("Date started reading", true)); assertFalse("Date finished is visible", t.searchText("Date finished reading", true)); assertFalse("Location is visible", t.searchText("Location of the book", true)); } public void test205AdminFieldVisibility() { t.clickOnMenuItem("Help & Admin"); t.assertCurrentActivity("Expected Administration activity", "Administration"); t.clickOnText("Administration Functions"); t.assertCurrentActivity("Expected AdministrationFunctions activity", "AdministrationFunctions"); t.clickOnText("Manage Field Visibility"); t.assertCurrentActivity("Expected FieldVisibility activity", "FieldVisibility"); //set all as true (reset) //ArrayList<CheckBox> fields = t.getCurrentCheckBoxes(); //for (int i = 0; i<fields.size(); i++) { // CheckBox field = fields.get(i); // if (!field.isChecked()) { // t.clickOnCheckBox(i); // } //} //set known fields (will need to be updated for each new field) t.scrollUp(); t.scrollUp(); t.scrollUp(); t.scrollUp(); t.clickOnText("Cover Thumbnail"); t.clickOnText("ISBN"); t.clickOnText("Series"); t.clickOnText("#"); t.clickOnText("Publisher"); t.clickOnText("Date Published"); t.clickOnText("Pages"); t.clickOnText("List Price"); t.clickOnText("Have you read this book?"); t.clickOnText("Rating"); t.clickOnText("Notes"); t.clickOnText("Anthology"); t.clickOnText("Location of the book"); t.clickOnText("Date started reading"); t.clickOnText("Date finished reading"); t.clickOnText("Format"); t.clickOnText("Has this book been signed"); t.clickOnText("Description"); t.clickOnText("Genre"); //goto book t.goBack(); t.assertCurrentActivity("Expected Administration activity", "Administration"); t.goBack(); t.assertCurrentActivity("Expected BookCatalogue activity", "BookCatalogue"); t.clickOnText("Complete Robot"); //check assertTrue("Author is not visible", t.searchText("Isaac Asimov", true)); assertTrue("Title is not visible", t.searchText("Complete Robot", true)); ImageView thumb = (ImageView) t.getCurrentActivity().findViewById(com.eleybourn.bookcatalogue.R.id.row_img); boolean thumb_visi = false; if (thumb == null) { assertFalse(thumb_visi); } else { if (thumb.getVisibility() == 0) { thumb_visi = true; } assertFalse(thumb_visi); } assertTrue("ISBN is not visible", t.searchText("9780586057247", true)); assertTrue("Series is not visible", t.searchText("Robot Series", true)); assertTrue("Series # is not visible", t.searchText("0.3", true)); assertTrue("Publisher is not visible", t.searchText("Harpercollins", true)); assertTrue("Published Date is not visible", t.searchText("Date Published", true)); assertTrue("Bookshelf is not visible", t.searchText("Default, ", true)); assertTrue("Pages is not visible", t.searchText("688", true)); //assertTrue("List Price is not visible", t.searchText("List Price", true)); assertTrue("Format is not visible", t.searchText("Paperback", true)); assertTrue("Genre is not visible", t.searchText("Science Fiction", true)); assertTrue("Description is not visible", t.searchText("stunning visions", true)); assertTrue("Anthology is not visible", t.searchText("Anthology?", true)); t.clickOnText("Your Comments"); assertTrue("Read is not visible", t.searchText("Have you read this book?", true)); assertTrue("Rating is not visible", t.searchText("Rating", true)); //assertTrue("Notes is not visible", t.searchText("Notes", true)); assertTrue("Signedis not visible", t.searchText("Has this book been signed", true)); assertTrue("Date started is not visible", t.searchText("Date started reading", true)); assertTrue("Date finished is not visible", t.searchText("Date finished reading", true)); //assertTrue("Location is not visible", t.searchText("Location of the book", true)); } /*public void test206AdminExport() { t.clickOnText("Nation"); //check assertTrue("Author is not visible", t.searchText("Terry Pratchett", true)); t.clickOnText("Nation"); EditText title = t.getEditText(0); t.clearEditText(title); t.enterText(title, "'$5,\",\"\",\"'"); t.clickOnText("Save Book"); //delete export file String mFileName = Utils.EXTERNAL_FILE_PATH + "/export.csv"; File export = new File(mFileName); export.delete(); export = new File(mFileName); assertFalse("File was not deleted", export.exists()); //export t.clickOnMenuItem("Help & Admin"); t.assertCurrentActivity("Expected Administration activity", "Administration"); t.clickOnText("Administration Functions"); t.assertCurrentActivity("Expected AdministrationFunctions activity", "AdministrationFunctions"); t.clickOnText("Export Books"); t.sleep(10000); export = new File(mFileName); assertTrue("File does not exist", export.exists()); }*/ public void test207AdminImport() { //delete book t.clickLongOnText("5"); t.clickOnText("Delete Book"); t.clickOnText("OK"); assertFalse("Book was not deleted", t.searchText("5", true)); //rename book t.clickOnText("Complete Robot, The"); EditText title = t.getEditText(0); t.clearEditText(title); t.enterText(title, "Foobar"); t.clickOnText("Save Book"); assertTrue("Book was not renamed", t.searchText("Foobar", true)); //import t.clickOnMenuItem("Help & Admin"); t.assertCurrentActivity("Expected Administration activity", "Administration"); t.clickOnText("Administration Functions"); t.assertCurrentActivity("Expected AdministrationFunctions activity", "AdministrationFunctions"); t.clickOnText("Import Books"); t.clickOnText("OK"); t.sleep(10000); t.goBack(); assertTrue("Book was not restored", t.searchText("Complete Robot, The", true)); assertTrue("Book was not restored", t.searchText("5", true)); } public void test208AdminAutoUpdate(){ t.clickOnMenuItem("Add Book..."); t.clickOnText("Add Book"); t.assertCurrentActivity("Expected BookEdit activity", "BookEdit"); //add author t.clickOnText("Set Authors"); EditText author = t.getEditText(0); t.enterText(author, "Fred Bloggs"); t.clickOnText("Add"); t.clickOnText("Save"); //setup fields t.enterText(0, "Demonstorm"); assertTrue("Title was not entered", t.searchText("Demonstorm")); t.enterText(1, "9780575073333"); t.clickOnText("Add Book", 3); t.clickOnButton("Save Book"); assertTrue("Expected populated author", t.searchText("Bloggs, Fred")); //automatically update t.clickOnMenuItem("Help & Admin"); t.assertCurrentActivity("Expected Administration activity", "Administration"); t.clickOnText("Administration Functions"); t.assertCurrentActivity("Expected AdministrationFunctions activity", "AdministrationFunctions"); t.clickOnText("Automatically Update Fields"); //leave everything default t.clickOnButton("Update"); t.sleep(30000); t.goBack(); assertTrue("Expected populated author", t.searchText("Barclay, James")); } public void test209AdminLinks() { t.clickOnMenuItem("Help & Admin"); t.assertCurrentActivity("Expected Administration activity", "Administration"); t.clickOnText("Donate"); t.assertCurrentActivity("Expected AdministrationDonate activity", "AdministrationDonate"); assertTrue("Expected wishlist link", t.searchText("Amazon Wishlist", 2)); //t.clickOnImage(0); //donate //t.sleep(3000); //t.goBack(); //expected to have gone somewhere. I don't know the WEB Activity name, so not checking //t.assertCurrentActivity("Expected AdministrationDonate activity", "AdministrationDonate"); // This will fail if we don't return from the webpage t.clickOnText("About this App"); t.assertCurrentActivity("Expected AdministrationAbout activity", "AdministrationAbout"); assertTrue("Expected wiki link", t.searchText("https://wiki.github.com/eleybourn/Book-Catalogue")); //t.clickOnText("https://wiki.github.com/eleybourn/Book-Catalogue"); //t.sleep(3000); //t.goBack(); //expected to have gone somewhere. I don't know the WEB Activity name, so not checking //t.assertCurrentActivity("Expected AdministrationAbout activity", "AdministrationAbout"); // This will fail if we don't return from the webpage assertTrue("Expected source link", t.searchText("https://github.com/eleybourn/Book-Catalogue")); //t.clickOnText("https://github.com/eleybourn/Book-Catalogue"); //t.sleep(3000); //t.goBack(); //expected to have gone somewhere. I don't know the WEB Activity name, so not checking //t.assertCurrentActivity("Expected AdministrationAbout activity", "AdministrationAbout"); // This will fail if we don't return from the webpage assertTrue("Expected email link", t.searchText("eleybourn@gmail.com")); //t.clickOnText("eleybourn@gmail.com"); //t.sleep(3000); //t.goBack(); //expected to have gone somewhere. I don't know the EMAIL Activity name, so not checking //t.assertCurrentActivity("Expected AdministrationAbout activity", "AdministrationAbout"); // This will fail if we don't return from the webpage } @Override public void tearDown() throws Exception { try { t.finalize(); } catch (Throwable e) { e.printStackTrace(); } getActivity().finish(); super.tearDown(); } }