qualtrics 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.env.example +3 -0
- data/.gitignore +23 -0
- data/.rspec +1 -0
- data/Gemfile +7 -0
- data/LICENSE.txt +22 -0
- data/README.md +29 -0
- data/Rakefile +7 -0
- data/lib/qualtrics.rb +52 -0
- data/lib/qualtrics/configuration.rb +17 -0
- data/lib/qualtrics/distribution.rb +90 -0
- data/lib/qualtrics/entity.rb +55 -0
- data/lib/qualtrics/mailer.rb +111 -0
- data/lib/qualtrics/message.rb +75 -0
- data/lib/qualtrics/operation.rb +77 -0
- data/lib/qualtrics/panel.rb +69 -0
- data/lib/qualtrics/panel_import.rb +41 -0
- data/lib/qualtrics/panel_import_file.rb +28 -0
- data/lib/qualtrics/recipient.rb +109 -0
- data/lib/qualtrics/recipient_import_row.rb +40 -0
- data/lib/qualtrics/response.rb +35 -0
- data/lib/qualtrics/survey.rb +80 -0
- data/lib/qualtrics/survey_import.rb +26 -0
- data/lib/qualtrics/transaction.rb +70 -0
- data/lib/qualtrics/version.rb +3 -0
- data/qualtrics.gemspec +34 -0
- data/spec/fixtures/sample_survey.xml +2 -0
- data/spec/fixtures/vcr_cassettes/Qualtrics_Distribution/creating_to_qualtrics/can_retrieve_a_panel_of_distributions_in_qualtrics.yml +655 -0
- data/spec/fixtures/vcr_cassettes/Qualtrics_Distribution/creating_to_qualtrics/can_update_itself.yml +599 -0
- data/spec/fixtures/vcr_cassettes/Qualtrics_Mailer/creating_to_qualtrics/sends_a_reminder_to_a_distribution.yml +493 -0
- data/spec/fixtures/vcr_cassettes/Qualtrics_Mailer/creating_to_qualtrics/sends_a_survey_to_a_panel_and_creates_a_distribution.yml +441 -0
- data/spec/fixtures/vcr_cassettes/Qualtrics_Mailer/creating_to_qualtrics/sends_a_survey_to_an_individual_and_creates_a_distribution.yml +441 -0
- data/spec/fixtures/vcr_cassettes/Qualtrics_Message/creating_to_qualtrics/persists_to_qualtrics.yml +56 -0
- data/spec/fixtures/vcr_cassettes/Qualtrics_Message/creating_to_qualtrics/populates_the_message_id_when_successful.yml +56 -0
- data/spec/fixtures/vcr_cassettes/Qualtrics_Message/creating_to_qualtrics/populates_the_success_attribute.yml +56 -0
- data/spec/fixtures/vcr_cassettes/Qualtrics_Message/retrieves_an_array_of_all_panels_in_a_library.yml +115 -0
- data/spec/fixtures/vcr_cassettes/Qualtrics_Panel/creating_to_qualtrics/persists_to_qualtrics.yml +107 -0
- data/spec/fixtures/vcr_cassettes/Qualtrics_Panel/creating_to_qualtrics/populates_the_panel_id_when_successful.yml +107 -0
- data/spec/fixtures/vcr_cassettes/Qualtrics_Panel/creating_to_qualtrics/populates_the_success_attribute.yml +107 -0
- data/spec/fixtures/vcr_cassettes/Qualtrics_Panel/destroys_a_panel_that_returns_true_when_successful.yml +107 -0
- data/spec/fixtures/vcr_cassettes/Qualtrics_Panel/raises_an_error_when_you_attempt_to_save_an_already_presisted_panel.yml +55 -0
- data/spec/fixtures/vcr_cassettes/Qualtrics_Panel/retrieves_an_array_of_all_panels_in_a_library.yml +704 -0
- data/spec/fixtures/vcr_cassettes/Qualtrics_PanelImport/transmits_to_qualtrics.yml +72 -0
- data/spec/fixtures/vcr_cassettes/Qualtrics_Recipient/creating_to_qualtrics/persists_to_qualtrics.yml +159 -0
- data/spec/fixtures/vcr_cassettes/Qualtrics_Recipient/creating_to_qualtrics/populates_the_recipient_id_when_successful.yml +159 -0
- data/spec/fixtures/vcr_cassettes/Qualtrics_Recipient/creating_to_qualtrics/populates_the_success_attribute.yml +159 -0
- data/spec/fixtures/vcr_cassettes/Qualtrics_Recipient/creating_to_qualtrics/raises_an_error_when_a_recipient_is_created_without_specifying_a_panel_id.yml +107 -0
- data/spec/fixtures/vcr_cassettes/Qualtrics_Recipient/recipient_made_in_qualtrics/can_delete_itself_in_qualtrics.yml +311 -0
- data/spec/fixtures/vcr_cassettes/Qualtrics_Recipient/recipient_made_in_qualtrics/can_update_itself_in_qualtrics.yml +313 -0
- data/spec/fixtures/vcr_cassettes/Qualtrics_Recipient/recipient_made_in_qualtrics/gets_its_information_in_qualtrics.yml +209 -0
- data/spec/fixtures/vcr_cassettes/Qualtrics_Survey/creating_to_qualtrics/can_be_activated_or_deactivated.yml +232 -0
- data/spec/fixtures/vcr_cassettes/Qualtrics_Survey/creating_to_qualtrics/destroys_a_survey_that_returns_true_when_successful.yml +128 -0
- data/spec/fixtures/vcr_cassettes/Qualtrics_Survey/creating_to_qualtrics/populates_the_survey_id_when_successful.yml +128 -0
- data/spec/fixtures/vcr_cassettes/Qualtrics_Survey/creating_to_qualtrics/retrieves_an_array_of_all_surveys.yml +203 -0
- data/spec/fixtures/vcr_cassettes/Qualtrics_SurveyImport/transmits_to_qualtrics.yml +128 -0
- data/spec/qualtrics/configuration_spec.rb +53 -0
- data/spec/qualtrics/distribution_spec.rb +144 -0
- data/spec/qualtrics/mailer_spec.rb +127 -0
- data/spec/qualtrics/message_spec.rb +105 -0
- data/spec/qualtrics/panel_import_file_spec.rb +26 -0
- data/spec/qualtrics/panel_import_spec.rb +43 -0
- data/spec/qualtrics/panel_spec.rb +80 -0
- data/spec/qualtrics/recipient_import_row_spec.rb +62 -0
- data/spec/qualtrics/recipient_spec.rb +185 -0
- data/spec/qualtrics/response_spec.rb +41 -0
- data/spec/qualtrics/survey_import_spec.rb +44 -0
- data/spec/qualtrics/survey_spec.rb +125 -0
- data/spec/spec_helper.rb +11 -0
- data/spec/support/_dotenv.rb +2 -0
- data/spec/support/qualtrics.rb +5 -0
- data/spec/support/vcr.rb +11 -0
- metadata +330 -0
@@ -0,0 +1,53 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Qualtrics::Configuration do
|
4
|
+
it 'has a version' do
|
5
|
+
version = '2.3'
|
6
|
+
configuration = Qualtrics::Configuration.new do |config|
|
7
|
+
config.version = version
|
8
|
+
end
|
9
|
+
expect(configuration.version).to eq(version)
|
10
|
+
end
|
11
|
+
|
12
|
+
it 'defaults to latest version' do
|
13
|
+
configuration = Qualtrics::Configuration.new
|
14
|
+
expect(configuration.version).to eq(Qualtrics::Configuration::DEFAULT_VERSION)
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'has a user' do
|
18
|
+
user = 'fake@example.com'
|
19
|
+
configuration = Qualtrics::Configuration.new do |config|
|
20
|
+
config.user = user
|
21
|
+
end
|
22
|
+
expect(configuration.user).to eq(user)
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'has a token' do
|
26
|
+
token = '12341234'
|
27
|
+
configuration = Qualtrics::Configuration.new do |config|
|
28
|
+
config.token = token
|
29
|
+
end
|
30
|
+
expect(configuration.token).to eq(token)
|
31
|
+
end
|
32
|
+
|
33
|
+
it 'has an endpoint' do
|
34
|
+
endpoint = 'https://co1.qualtrics.com/WRAPI/ControlPanel/api.php'
|
35
|
+
configuration = Qualtrics::Configuration.new do |config|
|
36
|
+
config.endpoint = endpoint
|
37
|
+
end
|
38
|
+
expect(configuration.endpoint).to eq(endpoint)
|
39
|
+
end
|
40
|
+
|
41
|
+
it 'has a default endpoint' do
|
42
|
+
configuration = Qualtrics::Configuration.new
|
43
|
+
expect(configuration.endpoint).to eq(Qualtrics::Configuration::DEFAULT_ENDPOINT)
|
44
|
+
end
|
45
|
+
|
46
|
+
it 'has a default library id' do
|
47
|
+
library_id = 1
|
48
|
+
configuration = Qualtrics::Configuration.new do |config|
|
49
|
+
config.default_library_id = library_id
|
50
|
+
end
|
51
|
+
expect(configuration.default_library_id).to eql(library_id)
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,144 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Qualtrics::Distribution, vcr: true do
|
4
|
+
it 'has a id' do
|
5
|
+
id = 'JOASNDOANSd'
|
6
|
+
distribution = Qualtrics::Distribution.new({
|
7
|
+
id: id
|
8
|
+
})
|
9
|
+
expect(distribution.id).to eq(id)
|
10
|
+
end
|
11
|
+
|
12
|
+
it 'has a survey id' do
|
13
|
+
survey_id = 'survey123'
|
14
|
+
distribution = Qualtrics::Distribution.new({
|
15
|
+
survey_id: survey_id
|
16
|
+
})
|
17
|
+
expect(distribution.survey_id).to eq(survey_id)
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'has a message id' do
|
21
|
+
message_id = 'message123'
|
22
|
+
distribution = Qualtrics::Distribution.new({
|
23
|
+
message_id: message_id
|
24
|
+
})
|
25
|
+
expect(distribution.message_id).to eq(message_id)
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'has response data' do
|
29
|
+
emails_sent = '1'
|
30
|
+
emails_failed = '2'
|
31
|
+
emails_responded = '3'
|
32
|
+
emails_bounced = '4'
|
33
|
+
emails_opened = '5'
|
34
|
+
emails_skipped = '6'
|
35
|
+
|
36
|
+
distribution = Qualtrics::Distribution.new({
|
37
|
+
emails_sent: emails_sent,
|
38
|
+
emails_failed: emails_failed,
|
39
|
+
emails_responded: emails_responded,
|
40
|
+
emails_bounced: emails_bounced,
|
41
|
+
emails_opened: emails_opened,
|
42
|
+
emails_skipped: emails_skipped
|
43
|
+
})
|
44
|
+
|
45
|
+
expect(distribution.emails_sent).to eq(emails_sent)
|
46
|
+
expect(distribution.emails_failed).to eq(emails_failed)
|
47
|
+
expect(distribution.emails_responded).to eq(emails_responded)
|
48
|
+
expect(distribution.emails_bounced).to eq(emails_bounced)
|
49
|
+
expect(distribution.emails_opened).to eq(emails_opened)
|
50
|
+
expect(distribution.emails_skipped).to eq(emails_skipped)
|
51
|
+
end
|
52
|
+
|
53
|
+
context 'creating to qualtrics' do
|
54
|
+
let(:panel) do
|
55
|
+
Qualtrics::Panel.new({
|
56
|
+
name: 'Newest Panel',
|
57
|
+
category: 'Great Category'
|
58
|
+
})
|
59
|
+
end
|
60
|
+
|
61
|
+
let(:survey_import) do
|
62
|
+
survey_import = Qualtrics::SurveyImport.new({
|
63
|
+
survey_name: 'Complex survey',
|
64
|
+
survey_data_location: 'spec/fixtures/sample_survey.xml'
|
65
|
+
})
|
66
|
+
end
|
67
|
+
|
68
|
+
let(:survey) { survey_import.survey }
|
69
|
+
|
70
|
+
|
71
|
+
let(:recipient) do
|
72
|
+
Qualtrics::Recipient.new({
|
73
|
+
panel_id: panel.id,
|
74
|
+
email: 'working@hard.com'
|
75
|
+
})
|
76
|
+
end
|
77
|
+
|
78
|
+
let(:recipient2) do
|
79
|
+
Qualtrics::Recipient.new({
|
80
|
+
panel_id: panel.id,
|
81
|
+
email: 'notworking@hard.com'
|
82
|
+
})
|
83
|
+
end
|
84
|
+
|
85
|
+
let(:message) do
|
86
|
+
Qualtrics::Message.new({
|
87
|
+
name: 'Newest Message',
|
88
|
+
category: 'InviteEmails',
|
89
|
+
body: 'Welcome'
|
90
|
+
})
|
91
|
+
end
|
92
|
+
|
93
|
+
let(:mailer) do
|
94
|
+
mailer = Qualtrics::Mailer.new({
|
95
|
+
from_email: 'example@example.com',
|
96
|
+
from_name: 'yes_qualtrics',
|
97
|
+
subject: 'game convention'
|
98
|
+
})
|
99
|
+
end
|
100
|
+
|
101
|
+
before(:each) do
|
102
|
+
panel.save
|
103
|
+
recipient.save
|
104
|
+
recipient2.save
|
105
|
+
survey_import.save
|
106
|
+
message.save
|
107
|
+
end
|
108
|
+
|
109
|
+
after(:each) do
|
110
|
+
recipient.delete
|
111
|
+
recipient2.delete
|
112
|
+
panel.destroy
|
113
|
+
survey.destroy
|
114
|
+
end
|
115
|
+
|
116
|
+
it 'can retrieve a panel of distributions in qualtrics' do
|
117
|
+
mailer.send_survey_to_individual(recipient, message, survey)
|
118
|
+
mailer.send_survey_to_individual(recipient2, message, survey)
|
119
|
+
|
120
|
+
distributions = Qualtrics::Distribution.get_distribution_with_panel(panel, survey)
|
121
|
+
expect(distributions.length).to eql (2)
|
122
|
+
|
123
|
+
first_distribution = distributions[0]
|
124
|
+
expect(first_distribution.survey_id).to eql (survey.id)
|
125
|
+
|
126
|
+
expect(first_distribution.valid?).to be true
|
127
|
+
expect(first_distribution.emails_responded).to_not be_nil
|
128
|
+
expect(first_distribution.emails_sent ).to_not be_nil
|
129
|
+
expect(first_distribution.emails_failed ).to_not be_nil
|
130
|
+
expect(first_distribution.emails_responded).to_not be_nil
|
131
|
+
expect(first_distribution.emails_bounced ).to_not be_nil
|
132
|
+
expect(first_distribution.emails_opened ).to_not be_nil
|
133
|
+
expect(first_distribution.emails_skipped ).to_not be_nil
|
134
|
+
end
|
135
|
+
|
136
|
+
it 'can update itself' do
|
137
|
+
distribution = mailer.send_survey_to_individual(recipient, message, survey)
|
138
|
+
expect(distribution.emails_responded).to be_nil
|
139
|
+
|
140
|
+
expect(distribution.refresh).to be true
|
141
|
+
expect(distribution.emails_responded).to_not be_nil
|
142
|
+
end
|
143
|
+
end
|
144
|
+
end
|
@@ -0,0 +1,127 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Qualtrics::Mailer, :vcr do
|
4
|
+
|
5
|
+
it 'has a send date' do
|
6
|
+
send_date = Time.now.strftime('%Y-%m-%d %H:%M:%S')
|
7
|
+
mailer = Qualtrics::Mailer.new({
|
8
|
+
send_date: send_date
|
9
|
+
})
|
10
|
+
expect(mailer.send_date).to eq(send_date)
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'has a default send date' do
|
14
|
+
send_date = Time.now.utc.in_time_zone(Qualtrics::Mailer::QUALTRICS_POST_TIMEZONE).strftime("%Y-%m-%d %H:%M:%S")
|
15
|
+
mailer = Qualtrics::Mailer.new({})
|
16
|
+
expect(mailer.send_date).to eq(send_date)
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'has a from email' do
|
20
|
+
from_email = 'having_fun@isnthard.com'
|
21
|
+
mailer = Qualtrics::Mailer.new({
|
22
|
+
from_email: from_email
|
23
|
+
})
|
24
|
+
expect(mailer.from_email).to eq(from_email)
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'has a from name' do
|
28
|
+
from_name = 'Pinkberry'
|
29
|
+
mailer = Qualtrics::Mailer.new({
|
30
|
+
from_name: from_name
|
31
|
+
})
|
32
|
+
expect(mailer.from_name).to eq(from_name)
|
33
|
+
end
|
34
|
+
|
35
|
+
it 'has a subject' do
|
36
|
+
subject = 'party invitation'
|
37
|
+
mailer = Qualtrics::Mailer.new({
|
38
|
+
subject: subject
|
39
|
+
})
|
40
|
+
expect(mailer.subject).to eq(subject)
|
41
|
+
end
|
42
|
+
|
43
|
+
it 'has a sent from email' do
|
44
|
+
sent_from_address = 'sent_here@gmail.com'
|
45
|
+
mailer = Qualtrics::Mailer.new({
|
46
|
+
sent_from_address: sent_from_address
|
47
|
+
})
|
48
|
+
expect(mailer.sent_from_address).to eq(sent_from_address)
|
49
|
+
end
|
50
|
+
|
51
|
+
let(:panel) do
|
52
|
+
Qualtrics::Panel.new({
|
53
|
+
name: 'Newest Panel',
|
54
|
+
category: 'Great Category'
|
55
|
+
})
|
56
|
+
end
|
57
|
+
|
58
|
+
let(:recipient) do
|
59
|
+
Qualtrics::Recipient.new({
|
60
|
+
panel_id: panel.id,
|
61
|
+
email: 'working@hard.com'
|
62
|
+
})
|
63
|
+
end
|
64
|
+
|
65
|
+
let(:message) do
|
66
|
+
Qualtrics::Message.new({
|
67
|
+
name: 'Newest Message',
|
68
|
+
category: 'InviteEmails',
|
69
|
+
body: 'Welcome'
|
70
|
+
})
|
71
|
+
end
|
72
|
+
|
73
|
+
let(:survey_import) do
|
74
|
+
survey_import = Qualtrics::SurveyImport.new({
|
75
|
+
survey_name: 'Complex survey',
|
76
|
+
survey_data_location: 'spec/fixtures/sample_survey.xml'
|
77
|
+
})
|
78
|
+
end
|
79
|
+
|
80
|
+
let(:survey) { survey_import.survey }
|
81
|
+
|
82
|
+
context 'creating to qualtrics' do
|
83
|
+
let(:from_name) { 'yes_qualtrics' }
|
84
|
+
let(:from_email) { 'example@example.com' }
|
85
|
+
let(:subject) { 'game convention' }
|
86
|
+
let(:mailer) do
|
87
|
+
mailer = Qualtrics::Mailer.new({
|
88
|
+
from_email: from_email,
|
89
|
+
from_name: from_name,
|
90
|
+
subject: subject
|
91
|
+
})
|
92
|
+
end
|
93
|
+
|
94
|
+
before(:each) do
|
95
|
+
|
96
|
+
panel.save
|
97
|
+
recipient.save
|
98
|
+
survey_import.save
|
99
|
+
message.save
|
100
|
+
end
|
101
|
+
|
102
|
+
after(:each) do
|
103
|
+
recipient.delete
|
104
|
+
panel.destroy
|
105
|
+
survey.destroy
|
106
|
+
end
|
107
|
+
|
108
|
+
it 'sends a survey to an individual and creates a distribution' do
|
109
|
+
qualtrics_distribution = mailer.send_survey_to_individual(recipient, message, survey)
|
110
|
+
expect(qualtrics_distribution.survey_id).to equal(survey.id)
|
111
|
+
expect(qualtrics_distribution.id).to_not be_nil
|
112
|
+
end
|
113
|
+
|
114
|
+
it 'sends a reminder to a distribution' do
|
115
|
+
qualtrics_distribution = mailer.send_survey_to_individual(recipient, message, survey)
|
116
|
+
reminder_distribution = mailer.send_reminder(qualtrics_distribution, message)
|
117
|
+
expect(reminder_distribution.survey_id).to equal(survey.id)
|
118
|
+
expect(reminder_distribution.id).to_not be_nil
|
119
|
+
end
|
120
|
+
|
121
|
+
it 'sends a survey to a panel and creates a distribution' do
|
122
|
+
qualtrics_distribution = mailer.send_survey_to_panel(panel, message, survey)
|
123
|
+
expect(qualtrics_distribution.survey_id).to equal(survey.id)
|
124
|
+
expect(qualtrics_distribution.id).to_not be_nil
|
125
|
+
end
|
126
|
+
end
|
127
|
+
end
|
@@ -0,0 +1,105 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Qualtrics::Message, vcr: true do
|
4
|
+
it 'has a name' do
|
5
|
+
name = 'New message'
|
6
|
+
message = Qualtrics::Message.new({
|
7
|
+
name: name
|
8
|
+
})
|
9
|
+
expect(message.name).to eq(name)
|
10
|
+
end
|
11
|
+
|
12
|
+
it 'has a category' do
|
13
|
+
category = 'InviteEmails'
|
14
|
+
message = Qualtrics::Message.new({
|
15
|
+
category: category
|
16
|
+
})
|
17
|
+
expect(message.category).to eq(category)
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'only accepts valid categories' do
|
21
|
+
category = 'Not real category'
|
22
|
+
message = Qualtrics::Message.new({
|
23
|
+
category: category
|
24
|
+
})
|
25
|
+
|
26
|
+
expect(message.save).to be false
|
27
|
+
expect(message.errors[:category]).to_not be_blank
|
28
|
+
end
|
29
|
+
|
30
|
+
it 'has a body' do
|
31
|
+
body = 'Hi take my survey'
|
32
|
+
message = Qualtrics::Message.new({
|
33
|
+
body: body
|
34
|
+
})
|
35
|
+
expect(message.body).to eq(body)
|
36
|
+
end
|
37
|
+
|
38
|
+
it 'has a language' do
|
39
|
+
language = 'FR'
|
40
|
+
message = Qualtrics::Message.new({
|
41
|
+
language: language
|
42
|
+
})
|
43
|
+
expect(message.language).to eq(language)
|
44
|
+
end
|
45
|
+
|
46
|
+
it 'defaults to the configured language when none is specified' do
|
47
|
+
message = Qualtrics::Message.new
|
48
|
+
expect(message.language).to eq('EN')
|
49
|
+
end
|
50
|
+
|
51
|
+
it 'has a library id' do
|
52
|
+
library_id = '1'
|
53
|
+
message = Qualtrics::Message.new({
|
54
|
+
library_id: library_id
|
55
|
+
})
|
56
|
+
expect(message.library_id).to eq(library_id)
|
57
|
+
end
|
58
|
+
|
59
|
+
it 'defaults to the configured library id when none is specified' do
|
60
|
+
message = Qualtrics::Message.new
|
61
|
+
expect(message.library_id).to eq(Qualtrics.configuration.default_library_id)
|
62
|
+
end
|
63
|
+
|
64
|
+
let(:message) do
|
65
|
+
Qualtrics::Message.new({
|
66
|
+
name: 'Newest Message',
|
67
|
+
category: 'InviteEmails',
|
68
|
+
body: 'Welcome'
|
69
|
+
})
|
70
|
+
end
|
71
|
+
|
72
|
+
context 'creating to qualtrics' do
|
73
|
+
# before(:each) do
|
74
|
+
# Qualtrics.begin_transaction!
|
75
|
+
# end
|
76
|
+
#
|
77
|
+
# after(:each) do
|
78
|
+
# Qualtrics.rollback_transaction!
|
79
|
+
# end
|
80
|
+
|
81
|
+
it 'persists to qualtrics' do
|
82
|
+
expect(message.save).to be true
|
83
|
+
end
|
84
|
+
|
85
|
+
it 'populates the message_id when successful' do
|
86
|
+
message.save
|
87
|
+
expect(message.id).to_not be_nil
|
88
|
+
end
|
89
|
+
|
90
|
+
it 'populates the success attribute' do
|
91
|
+
message.save
|
92
|
+
expect(message).to be_success
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
# it 'destroys a message that returns true when successful' do
|
97
|
+
# message.save
|
98
|
+
# expect(message.destroy).to be true
|
99
|
+
# end
|
100
|
+
|
101
|
+
it 'retrieves an array of all panels in a library' do
|
102
|
+
message.save
|
103
|
+
expect(Qualtrics::Message.all.map{|m| m.id}).to include(message.id)
|
104
|
+
end
|
105
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Qualtrics::PanelImportFile do
|
4
|
+
let(:email) { 'user@example.com' }
|
5
|
+
let(:recipients) {[Qualtrics::Recipient.new(email: email), Qualtrics::Recipient.new] }
|
6
|
+
let(:panel_import_file) do
|
7
|
+
Qualtrics::PanelImportFile.new(recipients)
|
8
|
+
end
|
9
|
+
|
10
|
+
it 'has a list of recipients' do
|
11
|
+
expect(panel_import_file.recipients).to eql(recipients)
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'writes a temp file' do
|
15
|
+
expect(panel_import_file.temp_file).to_not be_nil
|
16
|
+
expect(FileTest.exists?(panel_import_file.temp_file)).to be true
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'contains a header' do
|
20
|
+
expect(File.read(panel_import_file.temp_file)).to include("first_name")
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'contains a row of recipients' do
|
24
|
+
expect(File.read(panel_import_file.temp_file)).to include(email)
|
25
|
+
end
|
26
|
+
end
|