eintopf.info@v0.13.16/service/place/indexer_test.go (about)

     1  // Copyright (C) 2022 The Eintopf authors
     2  //
     3  // This program is free software: you can redistribute it and/or modify
     4  // it under the terms of the GNU Affero General Public License as
     5  // published by the Free Software Foundation, either version 3 of the
     6  // License, or (at your option) any later version.
     7  //
     8  // This program is distributed in the hope that it will be useful,
     9  // but WITHOUT ANY WARRANTY; without even the implied warranty of
    10  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    11  // GNU Affero General Public License for more details.
    12  //
    13  // You should have received a copy of the GNU Affero General Public License
    14  // along with this program.  If not, see <https://www.gnu.org/licenses/>.
    15  
    16  package place_test
    17  
    18  // import (
    19  // 	"context"
    20  // 	"fmt"
    21  // 	"testing"
    22  // 	"time"
    23  
    24  // 	"github.com/petergtz/pegomock"
    25  // 	"eintopf.info/internal/mock"
    26  // 	"eintopf.info/service/place"
    27  // )
    28  
    29  // func TestIndexerCreate(t *testing.T) {
    30  // 	for _, test := range []struct {
    31  // 		name       string
    32  // 		place      *place.NewPlace
    33  // 		err        bool
    34  // 		callsIndex bool
    35  // 	}{
    36  // 		{
    37  // 			name:       "Error->Abort",
    38  // 			err:        true,
    39  // 			callsIndex: false,
    40  // 		}, {
    41  // 			name:       "NotPublished->Nothing",
    42  // 			place:      &place.NewPlace{Published: false},
    43  // 			err:        false,
    44  // 			callsIndex: false,
    45  // 		}, {
    46  // 			name:       "Published->Index",
    47  // 			place:      &place.NewPlace{Published: true},
    48  // 			err:        false,
    49  // 			callsIndex: true,
    50  // 		},
    51  // 	} {
    52  // 		t.Run(test.name, func(tt *testing.T) {
    53  // 			pegomock.RegisterMockTestingT(tt)
    54  // 			ctx := context.Background()
    55  
    56  // 			mockedService := mock.NewPlaceService()
    57  // 			mockedSearch := mock.NewSearchService()
    58  // 			indexer := place.NewIndexer(mockedService, mockedSearch)
    59  
    60  // 			g := &place.Place{}
    61  // 			if test.place != nil {
    62  // 				g.Published = test.place.Published
    63  // 			}
    64  // 			if test.err {
    65  // 				pegomock.When(mockedService.Create(ctx, nil)).
    66  // 					ThenReturn(nil, fmt.Errorf("error"))
    67  // 			} else {
    68  // 				pegomock.When(mockedService.Create(ctx, test.place)).
    69  // 					ThenReturn(g, nil)
    70  // 			}
    71  
    72  // 			indexer.Create(context.Background(), test.place)
    73  
    74  // 			// Allow the goroutine to be called.
    75  // 			time.Sleep(time.Millisecond)
    76  
    77  // 			if test.callsIndex {
    78  // 				mockedSearch.VerifyWasCalledOnce().Index(g)
    79  // 			} else {
    80  // 				mockedSearch.VerifyWasCalled(pegomock.Never()).Index(g)
    81  // 			}
    82  // 		})
    83  // 	}
    84  // }
    85  
    86  // func TestIndexerUpdate(t *testing.T) {
    87  // 	for _, test := range []struct {
    88  // 		name        string
    89  // 		place       *place.Place
    90  // 		err         bool
    91  // 		callsIndex  bool
    92  // 		callsDelete bool
    93  // 	}{
    94  // 		{
    95  // 			name:        "Error->Abort",
    96  // 			place:       &place.Place{},
    97  // 			err:         true,
    98  // 			callsIndex:  false,
    99  // 			callsDelete: false,
   100  // 		}, {
   101  // 			name:        "NotPublished->Delete",
   102  // 			place:       &place.Place{ID: "foo", Published: false},
   103  // 			err:         false,
   104  // 			callsIndex:  false,
   105  // 			callsDelete: true,
   106  // 		}, {
   107  // 			name:        "Published->Index",
   108  // 			place:       &place.Place{Published: true},
   109  // 			err:         false,
   110  // 			callsIndex:  true,
   111  // 			callsDelete: false,
   112  // 		},
   113  // 	} {
   114  // 		t.Run(test.name, func(tt *testing.T) {
   115  // 			pegomock.RegisterMockTestingT(tt)
   116  // 			ctx := context.Background()
   117  
   118  // 			mockedService := mock.NewPlaceService()
   119  // 			mockedSearch := mock.NewSearchService()
   120  // 			indexer := place.NewIndexer(mockedService, mockedSearch)
   121  
   122  // 			if test.err {
   123  // 				pegomock.When(mockedService.Update(ctx, nil)).
   124  // 					ThenReturn(nil, fmt.Errorf("error"))
   125  // 			} else {
   126  // 				pegomock.When(mockedService.Update(ctx, test.place)).
   127  // 					ThenReturn(test.place, nil)
   128  // 			}
   129  
   130  // 			indexer.Update(context.Background(), test.place)
   131  
   132  // 			// Allow the goroutine to be called.
   133  // 			time.Sleep(time.Millisecond)
   134  
   135  // 			if test.callsIndex {
   136  // 				mockedSearch.VerifyWasCalledOnce().Index(test.place)
   137  // 			} else {
   138  // 				mockedSearch.VerifyWasCalled(pegomock.Never()).Index(test.place)
   139  // 			}
   140  // 			if test.callsDelete {
   141  // 				mockedSearch.VerifyWasCalledOnce().Delete("place", test.place.ID)
   142  // 			} else {
   143  // 				mockedSearch.VerifyWasCalled(pegomock.Never()).Delete("place", test.place.ID)
   144  // 			}
   145  // 		})
   146  // 	}
   147  // }
   148  
   149  // func TestIndexerDelete(t *testing.T) {
   150  // 	for _, test := range []struct {
   151  // 		name        string
   152  // 		id          string
   153  // 		err         bool
   154  // 		callsDelete bool
   155  // 	}{
   156  // 		{
   157  // 			name:        "Error->Abort",
   158  // 			err:         true,
   159  // 			callsDelete: false,
   160  // 		}, {
   161  // 			name:        "NoError->Delete",
   162  // 			id:          "foo",
   163  // 			err:         false,
   164  // 			callsDelete: true,
   165  // 		},
   166  // 	} {
   167  // 		t.Run(test.name, func(tt *testing.T) {
   168  // 			pegomock.RegisterMockTestingT(tt)
   169  // 			ctx := context.Background()
   170  
   171  // 			mockedService := mock.NewPlaceService()
   172  // 			mockedSearch := mock.NewSearchService()
   173  // 			indexer := place.NewIndexer(mockedService, mockedSearch)
   174  
   175  // 			if test.err {
   176  // 				pegomock.When(mockedService.Delete(ctx, test.id)).
   177  // 					ThenReturn(fmt.Errorf("error"))
   178  // 			} else {
   179  // 				pegomock.When(mockedService.Delete(ctx, test.id)).
   180  // 					ThenReturn(nil)
   181  // 			}
   182  
   183  // 			indexer.Delete(context.Background(), test.id)
   184  
   185  // 			// Allow the goroutine to be called.
   186  // 			time.Sleep(time.Millisecond)
   187  
   188  // 			if test.callsDelete {
   189  // 				mockedSearch.VerifyWasCalledOnce().Delete("place", test.id)
   190  // 			} else {
   191  // 				mockedSearch.VerifyWasCalled(pegomock.Never()).Delete("place", test.id)
   192  // 			}
   193  // 		})
   194  // 	}
   195  // }