Add test case for loading & saving
[evehomescreen] / tests / main.cpp
1 #include <QtCore/QCoreApplication>
2 #include <QtTest/QtTest>
3 #include "eveaccount.h"
4 #include "evemodel.h"
5 #include "eveskilltraining.h"
6 #include "skilltree.h"
7 #include "widget.h"
8 #include <QFile>
9 #include <QSettings>
10 class EveModelTest: public QObject
11 {
12     Q_OBJECT
13 private slots:
14     void testXml();
15     void testSkills();
16     void testSkillTree();
17     void testSave();
18 };
19
20 void EveModelTest::testXml()
21 {
22     EveModel model;
23     model.fetchAccounts();
24     QSignalSpy spy(&model,SIGNAL(accountsReady()));
25     QTest::qWait(1000);
26     QCOMPARE(spy.length(),1);
27     QCOMPARE(model.characters().length(),2);
28     EveCharacter e;
29     foreach (e,model.characters()) {
30         qDebug() << e.name << ":" << e.characterId;
31     }
32     e = model.characters()[0];
33     qDebug() << "e assigned";
34     QSignalSpy imagespy(&e,SIGNAL(imageLoaded()));
35     qDebug() << "spy installed";
36     e.fetchImage();
37     qDebug() << "fetchImage called";
38     QTest::qWait(3000);
39     qDebug() << "waited";
40     qDebug() << e.characterIcon;
41     QVERIFY(imagespy.length() == 1);
42     qDebug() << "Test done";
43 }
44
45 void EveModelTest::testSkills()
46 {
47     EveModel model;
48
49     model.fetchAccounts();
50     QTest::qWait(1000);
51     EveCharacter e = model.characters()[0];
52     EveSkillTraining skill;
53     skill.setCharacter(&e);
54     skill.setAccount(&model);
55     skill.fetchInfo();
56     QTest::qWait(1000);
57     qDebug() << skill.startTime
58             << skill.endTime
59             << skill.typeId
60             << skill.startSkillpoints
61             << skill.destSkillpoints
62             << skill.level;
63 }
64
65 void EveModelTest::testSkillTree()
66 {
67     SkillTree stree;
68     QSignalSpy spy(&stree,SIGNAL(skillsLoaded()));
69     stree.loadSkills();
70     QTest::qWait(5000);
71     QCOMPARE(spy.count(),1);
72     QCOMPARE(stree.skillName(3442),QString("Drone Interfacing"));
73     stree.save();
74     QVERIFY(QFile::exists("/var/tmp/skillCache"));
75     QFile::remove("/var/tmp/skillCache");
76 }
77
78 void EveModelTest::testSave()
79 {
80     EveModel model;
81     model.loadSettings();
82     // Verify that the unsaved data is doesn't exist
83     QVERIFY(model.apiKey().isNull());
84     QVERIFY(model.userId() == 0);
85     QVERIFY(model.selectedCharacter() == NULL);
86     model.setApiKey("f");
87     model.setUserId(1);
88     model.fetchAccounts();
89     QTest::qWait(1000);
90     model.saveSettings();
91     EveModel result;
92     result.loadSettings();
93     QCOMPARE(result.apiKey(),QString("1"));
94     QCOMPARE(result.userId(),1);
95     QVERIFY(result.selectedCharacter() == NULL);
96     QSettings temp("net.korjaussarja","evehomescreen");
97     temp.clear();
98 }
99
100 QTEST_MAIN(EveModelTest)
101
102 #include "main.moc"