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 // }