Skip to content

Instantly share code, notes, and snippets.

@laser
Created January 10, 2012 16:32
Show Gist options
  • Save laser/1589891 to your computer and use it in GitHub Desktop.
Save laser/1589891 to your computer and use it in GitHub Desktop.
TC_CampaignMVC
function CampaignOverviewViewGoldenPath() {
return new YAHOO.tool.TestCase({
name : "CampaignOverviewViewGoldenPath",
setUp : function () {
this.container = document.createElement("div");
this.modal = new MockGenericModalController();
this.resourceBundler = new MockResourceBundleUtil();
this.service = new MockCampaignService();
this.controller = new CampaignOverviewController(this.service, this.resourceBundler, this.modal, this.container, null);
this.mockData = {
getCampaignById : {
"campaign":{"campaignId":"28","createdDate":"2011-05-23 08:12:16","createdDateFormatted":"May 23, 2011 8:12:16 AM PDT","createdDateFormattedWithoutTime":"May 23, 2011","createdDateMillis":1306163536000,"name":"Guy doesn't want to talk to me","active":false,"type":"INTERVAL","canActivate":true,"userCanModify":true,"isPreBuilt":false,"showWarningIcon":false,"showInactiveIcon":true,"archived":false,"parentCampaignId":0,"contacts":[2949,34053,2952,34052],"groups":[],"events":[{"eventId":108,"eventName":"Test, with a comma?","active":true,"canActivate":true,"canPreview":true,"sendTimeFormatted":"12:00:00 AM PST","sendTime":"00:00:00","nextTimeToProcess":1326182400000,"willRunInFuture":true,"ageDays":4,"emailSubject":"Test, with a comma?","type":"BMS","projectId":1489,"flashTemplate":0,"designPrototypeId":1106,"designName":"RW_ENEWSLETTER_001","designMedium":"html","designVersion":1,"designMergeable":false,"totalPages":1,"thumbUrl":"/designs/email/RW_ENEWSLETTER_001/RW_ENEWSLETTER_001_THUMB.jpg","canSelectDesign":true}],"eventsDeleted":[],"canDelete":true},"status":"success"
},
getContactInfoPaginatedForCampaign: {
"addressBookEnabled":true,"totalRows":4,"startIndex":0,"rows":[{"contactId":2952,"dateAddedToCampaign":"2011-05-23","firstName":"Cathy","lastName":"Lee","email":"test_user_1006@example.com"},{"contactId":2949,"dateAddedToCampaign":"2011-05-23","firstName":"Cathy","lastName":"Lee","email":"test_user_1005@example.com"},{"contactId":34052,"dateAddedToCampaign":"2011-05-23","firstName":"Joe WWWWWW WWWWWWWWWWWWWWWWWWW","lastName":"QPublic","email":"esh@bitmechanic.com"},{"contactId":34053,"dateAddedToCampaign":"2011-05-23","firstName":"Never","lastName":"Never","email":"hippipp@hotmail.com"}],"status":"success"
},
getCampaignDistributionSummaryJSON: {
"addressBookEnabled":true,"totalRows":0,"startIndex":0,"rows":[],"status":"success"
}
};
},
tearDown : function () {
delete this.container;
delete this.modal;
delete this.resourceBundler;
delete this.service;
delete this.controller;
delete this.mockData;
},
testCampaignOverviewViewRenders : function () {
var eventsWithNoProjectsData,
contactInfoPaginatedData,
campaignDistributionSummaryData,
childNodes;
eventsWithNoProjectsData = this.mockData.getCampaignById;
contactInfoPaginatedData = this.mockData.getContactInfoPaginatedForCampaign;
campaignDistributionSummaryData = this.mockData.getCampaignDistributionSummaryJSON
///////////////////////////////////////////////
// SET UP MOCK SERVER RESPONSES
this.service.getCampaignById = function(campaignId, onSuccess, onError) {
onSuccess(eventsWithNoProjectsData);
};
this.service.getContactInfoPaginatedForCampaignDataSource = function() {
var ds;
ds = new YAHOO.util.LocalDataSource(contactInfoPaginatedData);
ds.responseType = YAHOO.util.DataSource.TYPE_JSON;
ds.responseSchema = {
resultsList: "rows",
fields: [
{key:"contactId"},
{key:"dateAddedToCampaign"},
{key:"firstName"},
{key:"lastName"},
{key:"email"}
],
metaFields: {
addressBookEnabled: "addressBookEnabled",
totalRecords: "totalRows"
}
};
return ds;
}
this.service.getCampaignDistributionSummaryJSONDataSource = function() {
var ds;
ds = new YAHOO.util.LocalDataSource(campaignDistributionSummaryData);
ds.responseType = YAHOO.util.DataSource.TYPE_JSON;
ds.responseSchema = {
resultsList: "rows",
fields: [
{key:"date"},
{key:"dateFormatted"},
{key:"type"},
{key:"typeLabel"},
{key:"eventName"},
{key:"eventId"},
{key:"contacts"},
{key:"bmsMailingId"},
{key:"distributionHistoryId"},
{key:"printMailJobId"}
],
metaFields: {
addressBookEnabled: "addressBookEnabled",
totalRecords: "totalRows" // Access to value in the server response
}
};
return ds;
};
///////////////////////////////////////////////
// RUN MAIN METHOD
this.controller.start();
///////////////////////////////////////////////
// MAKE ASSERTIONS
childNodes = YAHOO.util.Dom.getChildren(this.container);
YAHOO.util.Assert.isNotNull(this.container.innerHTML, "Container innerHTML property should not be null if view has rendered correctly.");
YAHOO.util.Assert.areEqual(childNodes.length, 6, "Should have 6 child nodes (head, error, metadata/buttons, contact summary, contact history, and events");
YAHOO.util.Assert.isTrue(YAHOO.util.Dom.hasClass(childNodes[0], "head"));
YAHOO.util.Assert.isTrue(YAHOO.util.Dom.hasClass(childNodes[1], "errorChunk"));
YAHOO.util.Assert.isTrue(YAHOO.util.Dom.hasClass(childNodes[2], "metadataAndButtonsWrapper"));
YAHOO.util.Assert.isTrue(YAHOO.util.Dom.hasClass(childNodes[3], "contactSummary"));
YAHOO.util.Assert.isTrue(YAHOO.util.Dom.hasClass(childNodes[4], "contactHistory"));
YAHOO.util.Assert.isTrue(YAHOO.util.Dom.hasClass(childNodes[5], "events"));
}
});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment