高章伟
2022-02-18 8b5f4c6c281cfa548f92de52c8021e37aa81901e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
public with sharing class GettingStartedController {
 
public Survey__c testSurvey {get;set;}
public Boolean testSurveyAvailable {get;set;}
public List<String>  questionIds {get;set;}
 
public GettingStartedController()
{
// make sure getting started survey doesn't already exist
    questionIds = new List<String>();
    try
    {
        testSurvey = [select Id, Name From Survey__c where Name='SurveyForce Sample Survey' LIMIT 1];
        testSurveyAvailable = true;
    }
    catch (Exception e)
    {
        testSurveyAvailable = false;
    }
    
}
 
public void makeTestSurvey()
{
    
    testSurvey = new Survey__c();
    testSurvey.Name = 'SurveyForce Sample Survey';
    testSurvey.Submit_Response__c = 'empty'; 
    testSurvey.Survey_Container_CSS__c = '#survey_container{ margin: 0 auto; width: 600px; box-shadow: 0 0 14px #CCCCCC; -moz-box-shadow: 0 0 14px #CCCCCC; -webkit-box-shadow: 0 0 14px #CCCCCC; }';
    insert testSurvey;
    
    questionIds.add(createQuestion(0));
    questionIds.add(createQuestion(1));
    questionIds.add(createQuestion(2));
    questionIds.add(createQuestion(3));
    
    createResponses();
 
    testSurveyAvailable = true;
    
}
 
public PageReference viewSurvey()
{
    return new PageReference('/Apex/SurveyManagerPage?id=' + testSurvey.Id);
}
 
public PageReference takeSurvey()
{
    return new PageReference('/Apex/TakeSurvey?id=' + testSurvey.Id + '&cId=none&caId=none');
}
 
public PageReference viewResults()
{
    ReportFinderUtil rfu = new ReportFinderUtil();
    String reportId = rfu.findReportId('Survey with Questions and Responses');  
    
    String surveyId = testSurvey.Id;
    surveyId = surveyId.substring(0,15);
    
    return new PageReference('/' + reportId + '?pv0=' + surveyId);
}
 
  private String createQuestion(Integer i){
    Survey_Question__c q = new Survey_Question__c();
    q.Name = 'Testing Question';
    q.Survey__c = testSurvey.Id;
    q.Type__c = getType(i);
    q.Choices__c = getChoices(i);
    q.Question__c = 'Testing Question question' + i;
    q.OrderNumber__c = i;
    q.Required__c = true;
    insert q;
    return q.id;        
  }
  
  private String getType(Integer i){
    if      (i==1)
     return 'Multi-Select--Vertical';
    else if (i==2)
     return 'Single Select--Vertical';
    else if (i==3)
     return 'Free Text';
    else
     return 'Single Select--Horizontal';
  }
  private String getChoices(Integer i){
    if (i == 0)
        return 'one\ntwo\nthree\n';
    if (i == 1)
        return 'four\nfive\nsix\n';
    if (i == 2)
        return 'seven\neight\nnine\n';
 
        
    return '';
  }  
  
  private void createResponses()
  {
    Contact c = new Contact();
    try{
        c = [Select Id From Contact where Email=:'surveyForceAppUser@survey.force'];
    }
    catch (Exception e)
    {
    c.LastName = 'Doe';
    c.FirstName = 'Jane';
    c.Email = 'surveyForceAppUser@survey.force';
    insert c;       
    }
    
    SurveyTaker__c st = new SurveyTaker__c();
    st.Contact__c = c.Id;
    st.Survey__c = testSurvey.Id;
    st.Taken__c = 'false';
    insert st;
    
    for (Integer i = 0; i < 4; i ++)
    {
        SurveyQuestionResponse__c r = new SurveyQuestionResponse__c();
        if (i == 0) {
            r.Response__c = 'two';
        } else if (i == 1) {
            r.Response__c = 'four';
        } else if (i == 2) {
            r.Response__c = 'nine';
        } else {
            r.Response__c = 'This is a response.';
        }
        Survey_Question__c sq = [Select id from Survey_Question__c where id=: questionIds[i] limit 1];
        r.Survey_Question__c = sq.id;
        r.SurveyTaker__c = st.Id;
        insert r;   
    }
 
  }
  
  private static testmethod void testGettingStarted()
  {
      List<Survey__c> surveys = [select Id, Name From Survey__c where Name='SurveyForce Sample Survey'];
      GettingStartedController gsc = new GettingStartedController();
      if (surveys.size() >=1)
      {
        System.assertEquals(true,gsc.testSurveyAvailable);
      }
      else
      {
        System.assertEquals(false,gsc.testSurveyAvailable);
      }
      gsc.makeTestSurvey();
      gsc.takeSurvey();
      gsc.viewResults();
      gsc.viewSurvey();
      
      
      List<Survey__c> surveys2  = [select Id, Name From Survey__c where Name='SurveyForce Sample Survey'];
      System.assertEquals(surveys.size() + 1, surveys2.size());
      System.assertEquals(true,gsc.testSurveyAvailable);
     
      
  }
 
}