Advertisement
Guest User

Untitled

a guest
Jan 17th, 2018
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Go 3.71 KB | None | 0 0
  1. func TestBuildInternalTasks(t *testing.T) {
  2.     taskFieldsToCheck := []string{
  3.         "Schedule",
  4.         "Regularity",
  5.         "Trigger",
  6.         "Type",
  7.         "Parameters",
  8.         "TaskLocation",
  9.     }
  10.  
  11.     templateFieldsToCheck := []string{
  12.         "Name",
  13.         "Description",
  14.         "OriginID",
  15.     }
  16.  
  17.     checkFields := func(t *testing.T, list []string, val1, val2 interface{}) {
  18.         for _, field := range taskFieldsToCheck {
  19.             got := reflect.ValueOf(val1).Field(0).FieldByName(field)
  20.             want := reflect.ValueOf(val2).Field(0).FieldByName(field)
  21.  
  22.             if got.Kind().String() == "int" && got.Int() != want.Int() {
  23.                 t.Fatalf("Mismatched %v value, got %v, want %v", field, got.Int(), want.Int())
  24.                 continue
  25.             }
  26.  
  27.             if got.Type().String() == "gocql.UUID" &&
  28.                 got.Interface().(gocql.UUID) != want.Interface().(gocql.UUID) {
  29.                 t.Fatalf("Mismatched %s: got %v, want %v", field, got, want)
  30.                 continue
  31.             }
  32.  
  33.             if got.String() != want.String() {
  34.                 t.Fatalf("Mismatched %s: got %v, want %v", field, got, want)
  35.             }
  36.         }
  37.     }
  38.    
  39.     tests := []struct {
  40.         name              string
  41.         task              *models.TaskInput
  42.         template          models.TemplateDetails
  43.         partnerID         string
  44.         initiatedBy       string
  45.         wantInternalTasks []models.TaskInternal
  46.         wantErr           bool
  47.     }{
  48.         {
  49.             name: `good1`,
  50.             task: &models.TaskInput{
  51.                 TaskCommonFields: modelMocks.DefaultTasks[1].TaskCommonFields,
  52.                 Targets:          []string{modelMocks.DefaultTasks[1].Target},
  53.             },
  54.             template:          modelMocks.DefaultTemplatesDetails[1],
  55.             partnerID:         modelMocks.DefaultTasks[1].PartnerID,
  56.             initiatedBy:       "me",
  57.             wantInternalTasks: []models.TaskInternal{modelMocks.DefaultTasks[1]},
  58.             wantErr:           false,
  59.         },
  60.         {
  61.             name: `good2`,
  62.             task: &models.TaskInput{
  63.                 TaskCommonFields: modelMocks.DefaultTasks[2].TaskCommonFields,
  64.                 Targets:          []string{modelMocks.DefaultTasks[2].Target},
  65.             },
  66.             template:          modelMocks.DefaultTemplatesDetails[2],
  67.             partnerID:         modelMocks.DefaultTasks[2].PartnerID,
  68.             initiatedBy:       "me",
  69.             wantInternalTasks: []models.TaskInternal{modelMocks.DefaultTasks[2]},
  70.             wantErr:           false,
  71.         },
  72.         {
  73.             name: `bad`,
  74.             task: &models.TaskInput{
  75.                 TaskCommonFields: models.TaskCommonFields{
  76.                     TaskLocation: "### INVALID LOCATION $$$",
  77.                 },
  78.             },
  79.             template:          models.TemplateDetails{},
  80.             partnerID:         "",
  81.             initiatedBy:       "",
  82.             wantInternalTasks: []models.TaskInternal{},
  83.             wantErr:           true,
  84.         },
  85.     }
  86.     for _, tt := range tests {
  87.         t.Run(tt.name, func(t *testing.T) {
  88.             gotInternalTasks, err := buildInternalTasks(tt.task, tt.template, tt.partnerID, tt.initiatedBy)
  89.             if (err != nil) != tt.wantErr {
  90.                 t.Errorf("buildInternalTasks() error = %v, wantErr %v", err, tt.wantErr)
  91.                 return
  92.             }
  93.            
  94.             for _, gotTask := range gotInternalTasks {
  95.                 testInternalTask := models.TaskInternal{
  96.                     TaskCommonFields: models.TaskCommonFields{
  97.                         ID:               gocql.UUID{},
  98.                         Name:             tt.template.Name,
  99.                         Description:      tt.template.Description,
  100.                         Schedule:         tt.task.Schedule,
  101.                         CreatedAt:        time.Now().Truncate(time.Millisecond).UTC(),
  102.                         CreatedBy:        tt.initiatedBy,
  103.                         PartnerID:        tt.partnerID,
  104.                         OriginID:         tt.template.OriginID,
  105.                         State:            models.TaskStateActive,
  106.                         Regularity:       tt.task.Regularity,
  107.                         Trigger:          tt.task.Trigger,
  108.                         Type:             tt.task.Type,
  109.                         Parameters:       tt.task.Parameters,
  110.                         TaskLocation:     tt.task.TaskLocation,
  111.                     },
  112.                 }
  113.                
  114.                 checkFields(t, taskFieldsToCheck, gotTask, testInternalTask)
  115.                 checkFields(t, templateFieldsToCheck, gotTask, testInternalTask)
  116.             }
  117.         })
  118.     }
  119. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement