Skip to content

Commit

Permalink
Revert "Revert "Moveon main plus reassign all plus message review opt…
Browse files Browse the repository at this point in the history
…out plus set message validity""

This reverts commit 74938ff.
  • Loading branch information
lperson committed Dec 3, 2018
1 parent 7598a7a commit 01f7e2e
Show file tree
Hide file tree
Showing 74 changed files with 1,633 additions and 620 deletions.
2 changes: 1 addition & 1 deletion .eslintrc
Expand Up @@ -11,5 +11,5 @@
"semi": ["error", "never"],
"react/require-extension": "off",
},
"env": { "jest": true, "node": true, "browser": true }
"env": { "jest": true, "node": true, "browser": true, "jasmine": true }
}
20 changes: 4 additions & 16 deletions __test__/containers/AssignmentTexterContact.test.js
Expand Up @@ -59,28 +59,17 @@ const propsWithEnforcedTextingHoursCampaign = {
},
campaign: campaign,
contacts: [
{
id: 19,
customFields: "{}"
},
{
id: 20,
customFields: "{}"
}
],
allContacts: [
{
id: 19
},
{
id: 20
}
],
allContactsCount: 2,
},
refreshData: jest.fn(),
data: {
loading: false,
contact: {
contact: {
id: 19,
assignmentId: 9,
firstName: "larry",
Expand All @@ -101,7 +90,6 @@ const propsWithEnforcedTextingHoursCampaign = {
},
messageStatus: "needsMessage",
messages: []
}
}
}

Expand All @@ -121,7 +109,7 @@ describe('when contact is not within texting hours...', () => {
campaign={campaign}
assignment={propsWithEnforcedTextingHoursCampaign.assignment}
refreshData={propsWithEnforcedTextingHoursCampaign.refreshData}
data={propsWithEnforcedTextingHoursCampaign.data}
contact={propsWithEnforcedTextingHoursCampaign.contact}
/>
</MuiThemeProvider>
)
Expand All @@ -144,7 +132,7 @@ describe('when contact is within texting hours...', () => {
campaign={campaign}
assignment={propsWithEnforcedTextingHoursCampaign.assignment}
refreshData={propsWithEnforcedTextingHoursCampaign.refreshData}
data={propsWithEnforcedTextingHoursCampaign.data}
contact={propsWithEnforcedTextingHoursCampaign.contact}
/>
</MuiThemeProvider>
)
Expand Down
142 changes: 119 additions & 23 deletions __test__/e2e/basic_text_manager.test.js
@@ -1,47 +1,143 @@
import { selenium } from './util/helpers'
import STRINGS from './data/strings'
import { login, invite, campaigns, people } from './page-functions/index'
import { campaigns, login, main, people, texter } from './page-functions/index'

// Instantiate browser(s)
const driver = selenium.buildDriver()
const driverTexter = selenium.buildDriver()
jasmine.getEnv().addReporter(selenium.reporter)

describe('Basic Text Manager Workflow', () => {
// Instantiate browser(s)
const driverAdmin = selenium.buildDriver({ name: 'Spoke E2E Tests - Chrome - Basic Text Manager Workflow - Admin' })
const driverTexter = selenium.buildDriver({ name: 'Spoke E2E Tests - Chrome - Basic Text Manager Workflow - Texter' })

describe('Basic text manager workflow', () => {
const CAMPAIGN = STRINGS.campaigns.existingTexter
beforeAll(() => {
global.e2e = {}
})

/**
* Test Suite Sequence:
* Setup Admin and Texter Users
* Create Campaign (No Existing Texter)
* Create Campaign (Existing Texter)
* Create Campaign (No Existing Texter with Opt-Out)
* Create Campaign (Existing Texter with Opt-Out)
*/

afterAll(async () => {
await selenium.quitDriver(driver)
await selenium.quitDriver(driverAdmin)
await selenium.quitDriver(driverTexter)
})

describe('(As Admin) Open Landing Page', () => {
login.landing(driver)
})
describe('Setup Admin User', () => {
describe('(As Admin) Open Landing Page', () => {
login.landing(driverAdmin)
})

describe('(As Admin) Log In an admin to Spoke', () => {
login.tryLoginThenSignUp(driverAdmin, STRINGS.users.admin0)
})

describe('(As Admin) Log In an admin to Spoke', () => {
login.tryLoginThenSignUp(driver, CAMPAIGN.admin)
describe('(As Admin) Create a New Organization / Team', () => {
main.createOrg(driverAdmin, STRINGS.org)
})
})

describe('(As Admin) Create a New Organization / Team', () => {
invite.createOrg(driver, STRINGS.org)
describe('Create Campaign (No Existing Texter)', () => {
const CAMPAIGN = STRINGS.campaigns.noExistingTexter

describe('(As Admin) Create a New Campaign', () => {
campaigns.startCampaign(driverAdmin, CAMPAIGN)
})

describe('(As Texter) Follow the Invite URL', () => {
texter.viewInvite(driverTexter)
login.tryLoginThenSignUp(driverTexter, CAMPAIGN.texter)
})

describe('(As Texter) Verify Todos', () => {
texter.viewSendFirstTexts(driverTexter)
})

describe('(As Texter) Log Out', () => {
main.logOutUser(driverTexter)
})
})

describe('(As Admin) Invite a new User', () => {
people.invite(driver)
describe('Create Campaign (Existing Texter)', () => {
const CAMPAIGN = STRINGS.campaigns.existingTexter

describe('(As Admin) Invite a new Texter', () => {
people.invite(driverAdmin)
})

describe('(As Texter) Follow the Invite URL', () => {
texter.viewInvite(driverTexter)
login.tryLoginThenSignUp(driverTexter, CAMPAIGN.texter)
})

describe('(As Admin) Create a New Campaign', () => {
campaigns.startCampaign(driverAdmin, CAMPAIGN)
})

describe('(As Texter) Send Texts', () => {
texter.sendTexts(driverTexter, CAMPAIGN)
})

describe('(As Admin) Send Replies', () => {
campaigns.sendReplies(driverAdmin, CAMPAIGN)
})

describe('(As Texter) View Replies', () => {
texter.viewReplies(driverTexter, CAMPAIGN)
})

describe('(As Texter) Opt Out Contact', () => {
texter.optOutContact(driverTexter)
})

describe('(As Texter) Log Out', () => {
main.logOutUser(driverTexter)
})
})

describe('(As Texter) Follow the Invite URL', () => {
describe('should follow the link to the invite', async () => {
it('should follow the link to the invite', async () => {
await driverTexter.get(global.e2e.joinUrl)
})
describe('Create Campaign (No Existing Texter with Opt-Out)', () => {
const CAMPAIGN = STRINGS.campaigns.noExistingTexterOptOut

describe('(As Admin) Create a New Campaign', () => {
campaigns.startCampaign(driverAdmin, CAMPAIGN)
})

describe('(As Texter) Follow the Invite URL', () => {
texter.viewInvite(driverTexter)
login.tryLoginThenSignUp(driverTexter, CAMPAIGN.texter)
})

describe('(As Texter) Verify Todos', () => {
texter.viewSendFirstTexts(driverTexter)
})

describe('(As Texter) Log Out', () => {
main.logOutUser(driverTexter)
})
})

describe('(As Admin) Create a New Campaign', () => {
campaigns.startCampaign(driver, CAMPAIGN)
describe('Create Campaign (Existing Texters with Opt-Out)', () => {
const CAMPAIGN = STRINGS.campaigns.existingTexterOptOut

describe('(As Admin) Invite a new Texter', () => {
people.invite(driverAdmin)
})

describe('(As Texter) Follow the Invite URL', () => {
texter.viewInvite(driverTexter)
login.tryLoginThenSignUp(driverTexter, CAMPAIGN.texter)
})

describe('(As Admin) Create a New Campaign', () => {
campaigns.startCampaign(driverAdmin, CAMPAIGN)
})

describe('(As Texter) Verify Todos', () => {
texter.viewSendFirstTexts(driverTexter)
})
})
})
50 changes: 50 additions & 0 deletions __test__/e2e/create_copy_campaign.test.js
@@ -0,0 +1,50 @@
import { selenium } from './util/helpers'
import STRINGS from './data/strings'
import { campaigns, login, main, people, texter } from './page-functions/index'

jasmine.getEnv().addReporter(selenium.reporter)

describe('Create and Copy Campaign', () => {
// Instantiate browser(s)
const driverAdmin = selenium.buildDriver({ name: 'Spoke E2E Tests - Chrome - Create and Copy Campaign - Admin' })
const driverTexter = selenium.buildDriver({ name: 'Spoke E2E Tests - Chrome - Create and Copy Campaign - Texter' })
const CAMPAIGN = STRINGS.campaigns.copyCampaign

beforeAll(() => {
global.e2e = {}
})

afterAll(async () => {
await selenium.quitDriver(driverAdmin)
await selenium.quitDriver(driverTexter)
})

describe('(As Admin) Open Landing Page', () => {
login.landing(driverAdmin)
})

describe('(As Admin) Log In an admin to Spoke', () => {
login.tryLoginThenSignUp(driverAdmin, CAMPAIGN.admin)
})

describe('(As Admin) Create a New Organization / Team', () => {
main.createOrg(driverAdmin, STRINGS.org)
})

describe('(As Admin) Invite a new User', () => {
people.invite(driverAdmin)
})

describe('(As Texter) Follow the Invite URL', () => {
texter.viewInvite(driverTexter)
login.tryLoginThenSignUp(driverTexter, CAMPAIGN.texter)
})

describe('(As Admin) Create a New Campaign', () => {
campaigns.startCampaign(driverAdmin, CAMPAIGN)
})

describe('(As Admin) Copy Campaign', () => {
campaigns.copyCampaign(driverAdmin, CAMPAIGN)
})
})
39 changes: 39 additions & 0 deletions __test__/e2e/create_edit_campaign.test.js
@@ -0,0 +1,39 @@
import { selenium } from './util/helpers'
import STRINGS from './data/strings'
import { campaigns, login, main } from './page-functions/index'

jasmine.getEnv().addReporter(selenium.reporter)

describe('Create and Edit Campaign', () => {
// Instantiate browser(s)
const driver = selenium.buildDriver({ name: 'Spoke E2E Tests - Chrome - Create and Edit Campaign - Admin' })
const CAMPAIGN = STRINGS.campaigns.editCampaign

beforeAll(() => {
global.e2e = {}
})

afterAll(async () => {
await selenium.quitDriver(driver)
})

describe('(As Admin) Open Landing Page', () => {
login.landing(driver)
})

describe('(As Admin) Log In an admin to Spoke', () => {
login.tryLoginThenSignUp(driver, CAMPAIGN.admin)
})

describe('(As Admin) Create a New Organization / Team', () => {
main.createOrg(driver, STRINGS.org)
})

describe('(As Admin) Create a New Campaign', () => {
campaigns.startCampaign(driver, CAMPAIGN)
})

describe('(As Admin) Edit Campaign', () => {
campaigns.editCampaign(driver, CAMPAIGN)
})
})

0 comments on commit 01f7e2e

Please sign in to comment.